From af0b72e1bdf2d9e759bb08637fa105e12e592dcb Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 1 Oct 2024 17:34:15 +0200 Subject: [PATCH 1/7] Implement GO response sample --- src/lib/code-sample/go.ts | 236 +++++++++++++++++++++++++++++++++++--- 1 file changed, 221 insertions(+), 15 deletions(-) diff --git a/src/lib/code-sample/go.ts b/src/lib/code-sample/go.ts index 3a7d202..8481356 100644 --- a/src/lib/code-sample/go.ts +++ b/src/lib/code-sample/go.ts @@ -2,7 +2,6 @@ import { pascalCase } from 'change-case' import type { Json, NonNullJson } from 'lib/json.js' -import { createJsonResponse } from './json.js' import type { CodeSampleDefinition, Context } from './schema.js' const defaultGoPackageName = 'api' @@ -10,7 +9,7 @@ const goPackageBasePath = 'github.com/seamapi/go' export const createGoRequest = ( { request }: CodeSampleDefinition, - context: Context, + _context: Context, ): string => { const isReqWithParams = Object.keys(request.parameters).length !== 0 const goPackageName = getGoPackageName(request.path) @@ -21,8 +20,7 @@ export const createGoRequest = ( }) const requestStructName = getRequestStructName(request.path) - const formattedArgs = formatGoArgs(request.parameters, { - ...context, + const formattedArgs = formatGoRequestArgs(request.parameters, { goPackageName, requestStructName, }) @@ -86,20 +84,27 @@ const getRequestStructName = (path: string): string => { const removeUntilSecondSlash = (str: string): string => str.replace(/^\/[^/]*/, '') -interface GoContext extends Context { +interface GoContext { goPackageName: string requestStructName: string } -const formatGoArgs = (jsonParams: NonNullJson, context: GoContext): string => +const formatGoRequestArgs = ( + jsonParams: NonNullJson, + context: GoContext, +): string => Object.entries(jsonParams as Record) .map(([paramKey, paramValue]) => { - const formattedValue = formatGoValue(paramKey, paramValue, context) + const formattedValue = formatGoRequestArgValue( + paramKey, + paramValue, + context, + ) return `${pascalCase(paramKey)}: ${formattedValue}` }) .join(', ') -const formatGoValue = ( +const formatGoRequestArgValue = ( key: string, value: Json, context: GoContext, @@ -113,17 +118,17 @@ const formatGoValue = ( return `${defaultGoPackageName}.Float64(${value})` if (Array.isArray(value)) { - return formatGoArray(key, value, context) + return formatGoRequestArrayValue(key, value, context) } if (typeof value === 'object') { - return formatGoObject(key, value, context) + return formatGoRequestObjectValue(key, value, context) } throw new Error(`Unsupported type: ${typeof value}`) } -const formatGoArray = ( +const formatGoRequestArrayValue = ( key: string, value: Json[], context: GoContext, @@ -134,7 +139,9 @@ const formatGoArray = ( return 'nil' } - const formattedItems = value.map((v) => formatGoValue(key, v, context)) + const formattedItems = value.map((v) => + formatGoRequestArgValue(key, v, context), + ) const item = value[0] if (item == null) { throw new Error(`Null value in response array for '${key}'`) @@ -163,7 +170,7 @@ const getPrimitiveTypeName = (value: string | number | boolean): string => { } } -const formatGoObject = ( +const formatGoRequestObjectValue = ( key: string, value: Record, context: GoContext, @@ -175,7 +182,7 @@ const formatGoObject = ( const formattedEntries = Object.entries(value) .map( ([objKey, val]) => - `${pascalCase(objKey)}: ${formatGoValue(objKey, val, context)}`, + `${pascalCase(objKey)}: ${formatGoRequestArgValue(objKey, val, context)}`, ) .join(', ') @@ -184,4 +191,203 @@ const formatGoObject = ( return `${goPackageName}.${pascalCase(`${requestStructName} ${key}`)}{${formattedEntries}}` } -export const createGoResponse = createJsonResponse +export const createGoResponse = ( + { response, title }: CodeSampleDefinition, + context: Context, +): string => { + const { endpoint } = context + + if (endpoint.response.responseType === 'void') return 'nil' + + const { responseKey, resourceType } = endpoint.response + const responseValue = response?.body?.[responseKey] + + if (responseValue == null) { + throw new Error(`Missing ${responseKey} for '${title}'`) + } + + const responseResourceGoStructName = pascalCase(resourceType) + + return Array.isArray(responseValue) + ? formatGoArrayResponse( + { + responseArray: responseValue, + responseResourceGoStructName, + title, + }, + context, + ) + : formatGoResponse(responseValue, responseResourceGoStructName, context) +} + +const formatGoArrayResponse = ( + { + responseArray, + responseResourceGoStructName, + title, + }: { + responseArray: Json[] + responseResourceGoStructName: string + title: string + }, + context: Context, +): string => { + const formattedItems = responseArray + .map((v) => { + if (v == null) { + throw new Error(`Null value in response array for '${title}'`) + } + return formatGoResponse(v, responseResourceGoStructName, context) + }) + .join(', ') + + return `[]${defaultGoPackageName}.${responseResourceGoStructName}{${formattedItems}}` +} + +const formatGoResponse = ( + responseParams: NonNullJson, + responseResourceGoStructName: string, + context: Context, +): string => { + const params = formatGoResponseParams(responseParams, context) + return `${defaultGoPackageName}.${responseResourceGoStructName}{${params}}` +} + +const formatGoResponseParams = ( + jsonParams: NonNullJson, + context: Context, +): string => + Object.entries(jsonParams as Record) + .map(([paramKey, paramValue]) => { + const formattedValue = formatGoResponseParamValue( + { + key: paramKey, + value: paramValue, + propertyChain: [], + }, + context, + ) + return `${pascalCase(paramKey)}: ${formattedValue}` + }) + .join(', ') + +const formatGoResponseParamValue = ( + { + key, + value, + propertyChain, + }: { key: string; value: Json; propertyChain: string[] }, + context: Context, +): string => { + if (value === null) return 'nil' + if (typeof value === 'boolean') return value.toString() + if (typeof value === 'number') return value.toString() + if (typeof value === 'string') return `"${value}"` + + if (Array.isArray(value)) { + return formatGoResponseArrayValue({ key, value, propertyChain }, context) + } + + if (typeof value === 'object') { + return formatGoResponseObjectValue({ key, value, propertyChain }, context) + } + + throw new Error(`Unsupported type: ${typeof value}`) +} + +const formatGoResponseArrayValue = ( + { + key, + value, + propertyChain, + }: { key: string; value: Json[]; propertyChain: string[] }, + context: Context, +): string => { + if (value.length === 0) { + return 'nil' + } + + const item = value[0] + if (item == null) { + throw new Error(`Null value in response array for '${key}'`) + } + + const updatedPropertyChain = [...propertyChain, key] + + if (isPrimitiveValue(item)) { + const arrayType = getPrimitiveTypeName(item) + const formattedItems = value + .map((v) => + formatGoResponseParamValue( + { + key, + value: v, + propertyChain: updatedPropertyChain, + }, + context, + ), + ) + .join(', ') + return `[]${arrayType}{${formattedItems}}` + } else { + const formattedItems = value + .map((v) => + formatGoResponseParamValue( + { + key, + value: v, + propertyChain: updatedPropertyChain, + }, + context, + ), + ) + .join(', ') + const structName = getStructName(updatedPropertyChain, context) + + return `[]${structName}{${formattedItems}}` + } +} + +const formatGoResponseObjectValue = ( + { + key, + value, + propertyChain, + }: { key: string; value: Record; propertyChain: string[] }, + context: Context, +): string => { + if (Object.keys(value).length === 0) { + return 'struct{}{}' + } + + const updatedPropertyChain = [...propertyChain, key] + const structName = getStructName(updatedPropertyChain, context) + + const formattedEntries = Object.entries(value) + .map( + ([objKey, val]) => + `${pascalCase(objKey)}: ${formatGoResponseParamValue( + { + key: objKey, + value: val, + propertyChain: updatedPropertyChain, + }, + context, + )}`, + ) + .join(', ') + + return `${defaultGoPackageName}.${structName}{${formattedEntries}}` +} + +const getStructName = (propertyChain: string[], context: Context): string => { + const { endpoint } = context + + let resourceType + if (endpoint.response.responseType !== 'void') { + resourceType = endpoint.response.resourceType + } + + const fullPropertyChain = [resourceType, ...propertyChain] + return pascalCase(fullPropertyChain.filter(Boolean).join('_')) +} From b5db29c73f52356670da9897239561abb3816d26 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Tue, 1 Oct 2024 15:34:40 +0000 Subject: [PATCH 2/7] ci: Generate code --- test/snapshots/blueprint.test.ts.md | 312 ++++++++++++++++---------- test/snapshots/blueprint.test.ts.snap | Bin 20361 -> 20760 bytes 2 files changed, 192 insertions(+), 120 deletions(-) diff --git a/test/snapshots/blueprint.test.ts.md b/test/snapshots/blueprint.test.ts.md index 7b941ae..537a43a 100644 --- a/test/snapshots/blueprint.test.ts.md +++ b/test/snapshots/blueprint.test.ts.md @@ -136,7 +136,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -235,7 +235,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -330,14 +330,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -345,28 +347,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -375,7 +377,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -427,14 +433,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -442,28 +450,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -472,7 +480,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -528,7 +540,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -627,7 +639,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -722,14 +734,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -737,28 +751,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -767,7 +781,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -819,14 +837,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -834,28 +854,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -864,7 +884,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -920,7 +944,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -1019,7 +1043,7 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, @@ -1114,14 +1138,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -1129,28 +1155,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -1159,7 +1185,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -1211,14 +1241,16 @@ Generated by [AVA](https://avajs.dev). { code: { go: { - request: 'client.Foos.List(context.Background())', + request: `import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', - response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', + response: '[]api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}', response_syntax: 'json', title: 'Go', }, javascript: { - request: 'await seam.foos.list()', + request: 'await seam.foos.list({"object_prop":{"foo":"bar"}})', request_syntax: 'javascript', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -1226,28 +1258,28 @@ Generated by [AVA](https://avajs.dev). }, php: { request: `foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: '[["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]', response_syntax: 'php', title: 'PHP', }, python: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop={"foo":"bar"})', request_syntax: 'python', response: '[Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]', response_syntax: 'python', title: 'Python', }, ruby: { - request: 'seam.foos.list()', + request: 'seam.foos.list(object_prop: {"foo":"bar"})', request_syntax: 'ruby', response: '[{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { - request: 'seam foos list ', + request: 'seam foos list --object_prop {"foo":"bar"}', request_syntax: 'bash', response: '[{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]', response_syntax: 'json', @@ -1256,7 +1288,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -1320,7 +1356,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Transport.Air.Planes.List(context.Background())', request_syntax: 'go', - response: '[{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]', + response: '[]api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}', response_syntax: 'json', title: 'Go', }, @@ -1408,7 +1444,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Transport.Air.Planes.List(context.Background())', request_syntax: 'go', - response: '[{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]', + response: '[]api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}', response_syntax: 'json', title: 'Go', }, @@ -1496,7 +1532,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Transport.Air.Planes.List(context.Background())', request_syntax: 'go', - response: '[{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]', + response: '[]api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}', response_syntax: 'json', title: 'Go', }, @@ -1598,7 +1634,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Deprecated.Undocumented.Endpoint(context.Background())', request_syntax: 'go', - response: '{}', + response: 'nil', response_syntax: 'json', title: 'Go', }, @@ -1677,7 +1713,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Deprecated.Undocumented.Endpoint(context.Background())', request_syntax: 'go', - response: '{}', + response: 'nil', response_syntax: 'json', title: 'Go', }, @@ -1756,7 +1792,7 @@ Generated by [AVA](https://avajs.dev). go: { request: 'client.Deprecated.Undocumented.Endpoint(context.Background())', request_syntax: 'go', - response: '{}', + response: 'nil', response_syntax: 'json', title: 'Go', }, @@ -1978,7 +2014,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2089,7 +2125,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2195,16 +2231,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2214,7 +2252,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -2223,7 +2261,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -2232,7 +2270,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -2241,7 +2279,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2251,7 +2289,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -2304,16 +2346,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2323,7 +2367,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -2332,7 +2376,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -2341,7 +2385,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -2350,7 +2394,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2360,7 +2404,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -2418,7 +2466,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2529,7 +2577,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2635,16 +2683,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2654,7 +2704,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -2663,7 +2713,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -2672,7 +2722,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -2681,7 +2731,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2691,7 +2741,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -2744,16 +2798,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2763,7 +2819,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -2772,7 +2828,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -2781,7 +2837,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -2790,7 +2846,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -2800,7 +2856,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -2858,7 +2918,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2969,7 +3029,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -3075,16 +3135,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -3094,7 +3156,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -3103,7 +3165,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -3112,7 +3174,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -3121,7 +3183,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -3131,7 +3193,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -3184,16 +3250,18 @@ Generated by [AVA](https://avajs.dev). code: { go: { request: `// go␊ - client.Foos.List(context.Background())`, + import api "github.com/seamapi/go"␊ + ␊ + client.Foos.List(context.Background(), api.FoosListRequest(ObjectProp: api.FoosListRequestObjectProp{Foo: api.String("bar")}))`, request_syntax: 'go', response: `// json␊ - [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, + []api.Foo{api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}}`, response_syntax: 'json', title: 'Go', }, javascript: { request: `// javascript␊ - await seam.foos.list()`, + await seam.foos.list({"object_prop":{"foo":"bar"}})`, request_syntax: 'javascript', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -3203,7 +3271,7 @@ Generated by [AVA](https://avajs.dev). php: { request: `// php␊ foos->list()`, + $seam->foos->list(object_prop:{"foo":"bar"})`, request_syntax: 'php', response: `// php␊ [["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]]`, @@ -3212,7 +3280,7 @@ Generated by [AVA](https://avajs.dev). }, python: { request: `// python␊ - seam.foos.list()`, + seam.foos.list(object_prop={"foo":"bar"})`, request_syntax: 'python', response: `// python␊ [Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])]`, @@ -3221,7 +3289,7 @@ Generated by [AVA](https://avajs.dev). }, ruby: { request: `// ruby␊ - seam.foos.list()`, + seam.foos.list(object_prop: {"foo":"bar"})`, request_syntax: 'ruby', response: `// ruby␊ [{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}]`, @@ -3230,7 +3298,7 @@ Generated by [AVA](https://avajs.dev). }, seam_cli: { request: `// bash␊ - seam foos list `, + seam foos list --object_prop {"foo":"bar"}`, request_syntax: 'bash', response: `// json␊ [{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}]`, @@ -3240,7 +3308,11 @@ Generated by [AVA](https://avajs.dev). }, description: 'This is the way to list foos', request: { - parameters: {}, + parameters: { + object_prop: { + foo: 'bar', + }, + }, path: '/foos/list', }, response: { @@ -3306,7 +3378,7 @@ Generated by [AVA](https://avajs.dev). client.Transport.Air.Planes.List(context.Background())`, request_syntax: 'go', response: `// json␊ - [{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]`, + []api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}`, response_syntax: 'json', title: 'Go', }, @@ -3406,7 +3478,7 @@ Generated by [AVA](https://avajs.dev). client.Transport.Air.Planes.List(context.Background())`, request_syntax: 'go', response: `// json␊ - [{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]`, + []api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}`, response_syntax: 'json', title: 'Go', }, @@ -3506,7 +3578,7 @@ Generated by [AVA](https://avajs.dev). client.Transport.Air.Planes.List(context.Background())`, request_syntax: 'go', response: `// json␊ - [{"plane_id":"9d3163f9-9185-40d3-a0ce-a03d3c7ce402","name":"Woosh"}]`, + []api.Plane{api.Plane{PlaneId: "9d3163f9-9185-40d3-a0ce-a03d3c7ce402", Name: "Woosh"}}`, response_syntax: 'json', title: 'Go', }, @@ -3620,7 +3692,7 @@ Generated by [AVA](https://avajs.dev). client.Deprecated.Undocumented.Endpoint(context.Background())`, request_syntax: 'go', response: `// json␊ - {}`, + nil`, response_syntax: 'json', title: 'Go', }, @@ -3711,7 +3783,7 @@ Generated by [AVA](https://avajs.dev). client.Deprecated.Undocumented.Endpoint(context.Background())`, request_syntax: 'go', response: `// json␊ - {}`, + nil`, response_syntax: 'json', title: 'Go', }, @@ -3802,7 +3874,7 @@ Generated by [AVA](https://avajs.dev). client.Deprecated.Undocumented.Endpoint(context.Background())`, request_syntax: 'go', response: `// json␊ - {}`, + nil`, response_syntax: 'json', title: 'Go', }, diff --git a/test/snapshots/blueprint.test.ts.snap b/test/snapshots/blueprint.test.ts.snap index 3c8daa2f833b851318106688cf01f94c4a56cd67..3ea48cda00735c65f1620f2d760233569ca612c8 100644 GIT binary patch literal 20760 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 literal 20361 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 From 3140bb5a3ef294b2d5dc1a34b9714012dae4e320 Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 1 Oct 2024 17:39:41 +0200 Subject: [PATCH 3/7] Add nested response obj sample to test the implementation --- test/fixtures/types/code-sample-definitions.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/fixtures/types/code-sample-definitions.ts b/test/fixtures/types/code-sample-definitions.ts index fa74597..044b909 100644 --- a/test/fixtures/types/code-sample-definitions.ts +++ b/test/fixtures/types/code-sample-definitions.ts @@ -17,6 +17,9 @@ export default [ number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, array_prop: ['foo', 'bar'], }, From e4652c8baa6c13242e13724a350f26ff3d5a65f3 Mon Sep 17 00:00:00 2001 From: Seam Bot Date: Tue, 1 Oct 2024 15:40:26 +0000 Subject: [PATCH 4/7] ci: Generate code --- test/snapshots/blueprint.test.ts.md | 180 +++++++++++++++----------- test/snapshots/blueprint.test.ts.snap | Bin 20760 -> 20965 bytes 2 files changed, 108 insertions(+), 72 deletions(-) diff --git a/test/snapshots/blueprint.test.ts.md b/test/snapshots/blueprint.test.ts.md index 537a43a..9425855 100644 --- a/test/snapshots/blueprint.test.ts.md +++ b/test/snapshots/blueprint.test.ts.md @@ -136,14 +136,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -151,28 +151,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -197,6 +197,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -235,14 +238,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -250,28 +253,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -296,6 +299,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -540,14 +546,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -555,28 +561,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -601,6 +607,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -639,14 +648,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -654,28 +663,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -700,6 +709,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -944,14 +956,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -959,28 +971,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -1005,6 +1017,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -1043,14 +1058,14 @@ Generated by [AVA](https://avajs.dev). ␊ client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', - response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}', + response: 'api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}', response_syntax: 'json', title: 'Go', }, javascript: { request: 'await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})', request_syntax: 'javascript', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'JavaScript', }, @@ -1058,28 +1073,28 @@ Generated by [AVA](https://avajs.dev). request: `foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', - response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]', + response: '["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]', response_syntax: 'php', title: 'PHP', }, python: { request: 'seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'python', - response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])', + response: 'Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])', response_syntax: 'python', title: 'Python', }, ruby: { request: 'seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")', request_syntax: 'ruby', - response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}', + response: '{"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}', response_syntax: 'ruby', title: 'Ruby', }, seam_cli: { request: 'seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"', request_syntax: 'bash', - response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}', + response: '{"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}', response_syntax: 'json', title: 'Seam CLI', }, @@ -1104,6 +1119,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -2014,7 +2032,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2023,7 +2041,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -2033,7 +2051,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -2042,7 +2060,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -2051,7 +2069,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -2060,7 +2078,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -2085,6 +2103,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -2125,7 +2146,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2134,7 +2155,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -2144,7 +2165,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -2153,7 +2174,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -2162,7 +2183,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -2171,7 +2192,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -2196,6 +2217,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -2466,7 +2490,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2475,7 +2499,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -2485,7 +2509,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -2494,7 +2518,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -2503,7 +2527,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -2512,7 +2536,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -2537,6 +2561,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -2577,7 +2604,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2586,7 +2613,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -2596,7 +2623,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -2605,7 +2632,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -2614,7 +2641,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -2623,7 +2650,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -2648,6 +2675,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -2918,7 +2948,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -2927,7 +2957,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -2937,7 +2967,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -2946,7 +2976,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -2955,7 +2985,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -2964,7 +2994,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -2989,6 +3019,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, @@ -3029,7 +3062,7 @@ Generated by [AVA](https://avajs.dev). client.Foos.Get(context.Background(), api.FoosGetRequest(FooId: api.String("8d7e0b3a-b889-49a7-9164-4b71a0506a33")))`, request_syntax: 'go', response: `// json␊ - api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar"}, ArrayProp: []string{"foo", "bar"}}`, + api.Foo{FooId: "8d7e0b3a-b889-49a7-9164-4b71a0506a33", Name: "Best foo", NullableProp: nil, NumberProp: 10, ObjectProp: api.FooObjectProp{Foo: "bar", NestedObjectProp: api.FooObjectPropNestedObjectProp{Foo: "bar"}}, ArrayProp: []string{"foo", "bar"}}`, response_syntax: 'json', title: 'Go', }, @@ -3038,7 +3071,7 @@ Generated by [AVA](https://avajs.dev). await seam.foos.get({"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33"})`, request_syntax: 'javascript', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'JavaScript', }, @@ -3048,7 +3081,7 @@ Generated by [AVA](https://avajs.dev). $seam->foos->get(foo_id:"8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'php', response: `// php␊ - ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar"],"array_prop" => ["foo", "bar"]]`, + ["foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => null,"number_prop" => 10,"object_prop" => ["foo" => "bar", "nested_object_prop" => ["foo" => "bar"]],"array_prop" => ["foo", "bar"]]`, response_syntax: 'php', title: 'PHP', }, @@ -3057,7 +3090,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'python', response: `// python␊ - Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar"}, array_prop=["foo","bar"])`, + Foo(foo_id="8d7e0b3a-b889-49a7-9164-4b71a0506a33", name="Best foo", nullable_prop=None, number_prop=10, object_prop={"foo":"bar","nested_object_prop":{"foo":"bar"}}, array_prop=["foo","bar"])`, response_syntax: 'python', title: 'Python', }, @@ -3066,7 +3099,7 @@ Generated by [AVA](https://avajs.dev). seam.foos.get(foo_id: "8d7e0b3a-b889-49a7-9164-4b71a0506a33")`, request_syntax: 'ruby', response: `// ruby␊ - {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar"},"array_prop" => ["foo","bar"]}`, + {"foo_id" => "8d7e0b3a-b889-49a7-9164-4b71a0506a33","name" => "Best foo","nullable_prop" => nil,"number_prop" => 10,"object_prop" => {"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop" => ["foo","bar"]}`, response_syntax: 'ruby', title: 'Ruby', }, @@ -3075,7 +3108,7 @@ Generated by [AVA](https://avajs.dev). seam foos get --foo_id "8d7e0b3a-b889-49a7-9164-4b71a0506a33"`, request_syntax: 'bash', response: `// json␊ - {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar"},"array_prop":["foo","bar"]}`, + {"foo_id":"8d7e0b3a-b889-49a7-9164-4b71a0506a33","name":"Best foo","nullable_prop":null,"number_prop":10,"object_prop":{"foo":"bar","nested_object_prop":{"foo":"bar"}},"array_prop":["foo","bar"]}`, response_syntax: 'json', title: 'Seam CLI', }, @@ -3100,6 +3133,9 @@ Generated by [AVA](https://avajs.dev). number_prop: 10, object_prop: { foo: 'bar', + nested_object_prop: { + foo: 'bar', + }, }, }, }, diff --git a/test/snapshots/blueprint.test.ts.snap b/test/snapshots/blueprint.test.ts.snap index 3ea48cda00735c65f1620f2d760233569ca612c8..e767e15793d638c4819164c10bc6aefcd219f023 100644 GIT binary patch literal 20965 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 literal 20760 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 From 3ba5cfa5d390e911d1cbdabc6d2a01496a648c2b Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 1 Oct 2024 17:45:51 +0200 Subject: [PATCH 5/7] Improve code structure --- src/lib/code-sample/go.ts | 90 +++++++++++++++------------------------ 1 file changed, 35 insertions(+), 55 deletions(-) diff --git a/src/lib/code-sample/go.ts b/src/lib/code-sample/go.ts index 8481356..3d20c8a 100644 --- a/src/lib/code-sample/go.ts +++ b/src/lib/code-sample/go.ts @@ -210,26 +210,18 @@ export const createGoResponse = ( return Array.isArray(responseValue) ? formatGoArrayResponse( - { - responseArray: responseValue, - responseResourceGoStructName, - title, - }, + responseValue, + responseResourceGoStructName, + title, context, ) : formatGoResponse(responseValue, responseResourceGoStructName, context) } const formatGoArrayResponse = ( - { - responseArray, - responseResourceGoStructName, - title, - }: { - responseArray: Json[] - responseResourceGoStructName: string - title: string - }, + responseArray: Json[], + responseResourceGoStructName: string, + title: string, context: Context, ): string => { const formattedItems = responseArray @@ -316,35 +308,23 @@ const formatGoResponseArrayValue = ( if (isPrimitiveValue(item)) { const arrayType = getPrimitiveTypeName(item) - const formattedItems = value - .map((v) => - formatGoResponseParamValue( - { - key, - value: v, - propertyChain: updatedPropertyChain, - }, - context, - ), - ) - .join(', ') - return `[]${arrayType}{${formattedItems}}` + const formattedItems = value.map((v) => + formatGoResponseParamValue( + { key, value: v, propertyChain: updatedPropertyChain }, + context, + ), + ) + return `[]${arrayType}{${formattedItems.join(', ')}}` } else { - const formattedItems = value - .map((v) => - formatGoResponseParamValue( - { - key, - value: v, - propertyChain: updatedPropertyChain, - }, - context, - ), - ) - .join(', ') + const formattedItems = value.map((v) => + formatGoResponseParamValue( + { key, value: v, propertyChain: updatedPropertyChain }, + context, + ), + ) const structName = getStructName(updatedPropertyChain, context) - return `[]${structName}{${formattedItems}}` + return `[]${structName}{${formattedItems.join(', ')}}` } } @@ -364,17 +344,17 @@ const formatGoResponseObjectValue = ( const structName = getStructName(updatedPropertyChain, context) const formattedEntries = Object.entries(value) - .map( - ([objKey, val]) => - `${pascalCase(objKey)}: ${formatGoResponseParamValue( - { - key: objKey, - value: val, - propertyChain: updatedPropertyChain, - }, - context, - )}`, - ) + .map(([objKey, val]) => { + const formattedValue = formatGoResponseParamValue( + { + key: objKey, + value: val, + propertyChain: updatedPropertyChain, + }, + context, + ) + return `${pascalCase(objKey)}: ${formattedValue}` + }) .join(', ') return `${defaultGoPackageName}.${structName}{${formattedEntries}}` @@ -383,10 +363,10 @@ const formatGoResponseObjectValue = ( const getStructName = (propertyChain: string[], context: Context): string => { const { endpoint } = context - let resourceType - if (endpoint.response.responseType !== 'void') { - resourceType = endpoint.response.resourceType - } + const resourceType = + endpoint.response.responseType !== 'void' + ? endpoint.response.resourceType + : undefined const fullPropertyChain = [resourceType, ...propertyChain] return pascalCase(fullPropertyChain.filter(Boolean).join('_')) From cbad86a3b7a5b21dbbc8c874b89cad2f8a7d6744 Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Tue, 1 Oct 2024 17:50:23 +0200 Subject: [PATCH 6/7] Pass responseResourceGoStructName around instead of the whole context --- src/lib/code-sample/go.ts | 70 +++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 33 deletions(-) diff --git a/src/lib/code-sample/go.ts b/src/lib/code-sample/go.ts index 3d20c8a..f1966be 100644 --- a/src/lib/code-sample/go.ts +++ b/src/lib/code-sample/go.ts @@ -209,27 +209,21 @@ export const createGoResponse = ( const responseResourceGoStructName = pascalCase(resourceType) return Array.isArray(responseValue) - ? formatGoArrayResponse( - responseValue, - responseResourceGoStructName, - title, - context, - ) - : formatGoResponse(responseValue, responseResourceGoStructName, context) + ? formatGoArrayResponse(responseValue, responseResourceGoStructName, title) + : formatGoResponse(responseValue, responseResourceGoStructName) } const formatGoArrayResponse = ( responseArray: Json[], responseResourceGoStructName: string, title: string, - context: Context, ): string => { const formattedItems = responseArray .map((v) => { if (v == null) { throw new Error(`Null value in response array for '${title}'`) } - return formatGoResponse(v, responseResourceGoStructName, context) + return formatGoResponse(v, responseResourceGoStructName) }) .join(', ') @@ -239,15 +233,17 @@ const formatGoArrayResponse = ( const formatGoResponse = ( responseParams: NonNullJson, responseResourceGoStructName: string, - context: Context, ): string => { - const params = formatGoResponseParams(responseParams, context) + const params = formatGoResponseParams( + responseParams, + responseResourceGoStructName, + ) return `${defaultGoPackageName}.${responseResourceGoStructName}{${params}}` } const formatGoResponseParams = ( jsonParams: NonNullJson, - context: Context, + responseResourceGoStructName: string, ): string => Object.entries(jsonParams as Record) .map(([paramKey, paramValue]) => { @@ -257,7 +253,7 @@ const formatGoResponseParams = ( value: paramValue, propertyChain: [], }, - context, + responseResourceGoStructName, ) return `${pascalCase(paramKey)}: ${formattedValue}` }) @@ -269,7 +265,7 @@ const formatGoResponseParamValue = ( value, propertyChain, }: { key: string; value: Json; propertyChain: string[] }, - context: Context, + responseResourceGoStructName: string, ): string => { if (value === null) return 'nil' if (typeof value === 'boolean') return value.toString() @@ -277,11 +273,17 @@ const formatGoResponseParamValue = ( if (typeof value === 'string') return `"${value}"` if (Array.isArray(value)) { - return formatGoResponseArrayValue({ key, value, propertyChain }, context) + return formatGoResponseArrayValue( + { key, value, propertyChain }, + responseResourceGoStructName, + ) } if (typeof value === 'object') { - return formatGoResponseObjectValue({ key, value, propertyChain }, context) + return formatGoResponseObjectValue( + { key, value, propertyChain }, + responseResourceGoStructName, + ) } throw new Error(`Unsupported type: ${typeof value}`) @@ -293,7 +295,7 @@ const formatGoResponseArrayValue = ( value, propertyChain, }: { key: string; value: Json[]; propertyChain: string[] }, - context: Context, + responseResourceGoStructName: string, ): string => { if (value.length === 0) { return 'nil' @@ -311,7 +313,7 @@ const formatGoResponseArrayValue = ( const formattedItems = value.map((v) => formatGoResponseParamValue( { key, value: v, propertyChain: updatedPropertyChain }, - context, + responseResourceGoStructName, ), ) return `[]${arrayType}{${formattedItems.join(', ')}}` @@ -319,10 +321,13 @@ const formatGoResponseArrayValue = ( const formattedItems = value.map((v) => formatGoResponseParamValue( { key, value: v, propertyChain: updatedPropertyChain }, - context, + responseResourceGoStructName, ), ) - const structName = getStructName(updatedPropertyChain, context) + const structName = getStructName( + updatedPropertyChain, + responseResourceGoStructName, + ) return `[]${structName}{${formattedItems.join(', ')}}` } @@ -334,14 +339,17 @@ const formatGoResponseObjectValue = ( value, propertyChain, }: { key: string; value: Record; propertyChain: string[] }, - context: Context, + responseResourceGoStructName: string, ): string => { if (Object.keys(value).length === 0) { return 'struct{}{}' } const updatedPropertyChain = [...propertyChain, key] - const structName = getStructName(updatedPropertyChain, context) + const structName = getStructName( + updatedPropertyChain, + responseResourceGoStructName, + ) const formattedEntries = Object.entries(value) .map(([objKey, val]) => { @@ -351,7 +359,7 @@ const formatGoResponseObjectValue = ( value: val, propertyChain: updatedPropertyChain, }, - context, + responseResourceGoStructName, ) return `${pascalCase(objKey)}: ${formattedValue}` }) @@ -360,14 +368,10 @@ const formatGoResponseObjectValue = ( return `${defaultGoPackageName}.${structName}{${formattedEntries}}` } -const getStructName = (propertyChain: string[], context: Context): string => { - const { endpoint } = context - - const resourceType = - endpoint.response.responseType !== 'void' - ? endpoint.response.resourceType - : undefined - - const fullPropertyChain = [resourceType, ...propertyChain] - return pascalCase(fullPropertyChain.filter(Boolean).join('_')) +const getStructName = ( + propertyChain: string[], + responseResourceGoStructName: string, +): string => { + const fullPropertyChain = [responseResourceGoStructName, ...propertyChain] + return pascalCase(fullPropertyChain.join('_')) } From d37b42d95ee219eaccab93da27200b4350bc4b4a Mon Sep 17 00:00:00 2001 From: Andrii Balitskyi <10balian10@gmail.com> Date: Thu, 3 Oct 2024 11:46:56 +0200 Subject: [PATCH 7/7] Improve formatGoResponseArrayValue --- src/lib/code-sample/go.ts | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/lib/code-sample/go.ts b/src/lib/code-sample/go.ts index f1966be..19517f3 100644 --- a/src/lib/code-sample/go.ts +++ b/src/lib/code-sample/go.ts @@ -301,29 +301,25 @@ const formatGoResponseArrayValue = ( return 'nil' } - const item = value[0] - if (item == null) { + const rawItem = value[0] + if (rawItem == null) { throw new Error(`Null value in response array for '${key}'`) } const updatedPropertyChain = [...propertyChain, key] - if (isPrimitiveValue(item)) { - const arrayType = getPrimitiveTypeName(item) - const formattedItems = value.map((v) => - formatGoResponseParamValue( - { key, value: v, propertyChain: updatedPropertyChain }, - responseResourceGoStructName, - ), - ) + const formattedItems = value.map((v) => + formatGoResponseParamValue( + { key, value: v, propertyChain: updatedPropertyChain }, + responseResourceGoStructName, + ), + ) + + if (isPrimitiveValue(rawItem)) { + const arrayType = getPrimitiveTypeName(rawItem) + return `[]${arrayType}{${formattedItems.join(', ')}}` } else { - const formattedItems = value.map((v) => - formatGoResponseParamValue( - { key, value: v, propertyChain: updatedPropertyChain }, - responseResourceGoStructName, - ), - ) const structName = getStructName( updatedPropertyChain, responseResourceGoStructName,