diff --git a/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap b/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap index d37c62e147b..d8b58b8a7f2 100644 --- a/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap +++ b/packages/cli/ete-tests/src/tests/ir/__snapshots__/ir.test.ts.snap @@ -293,7 +293,191 @@ exports[`ir {"fixtureName":"simple","language":"java","audiences":["test"]} 1`] "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] } ], "errors": [], @@ -966,6 +1150,327 @@ exports[`ir {"fixtureName":"simple","language":"java","audiences":["test"]} 1`] }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] } @@ -1416,7 +1921,214 @@ exports[`ir {"fixtureName":"simple","language":"java"} 1`] = ` ] } ], - "examples": [] + "examples": [ + { + "name": "GeorgeExample", + "jsonExample": { + "name": "George the Director", + "age": 20 + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -1487,7 +2199,25 @@ exports[`ir {"fixtureName":"simple","language":"java"} 1`] = ` "_type": "alias" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": 20, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + } + } + ] }, { "availability": { @@ -1572,6 +2302,94 @@ exports[`ir {"fixtureName":"simple","language":"java"} 1`] = ` "referencedTypes": [], "examples": [] }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CurrencyAmount", + "nameV2": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "safeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + } + } + }, + "shape": { + "aliasOf": { + "primitive": "STRING", + "_type": "primitive" + }, + "resolvedType": { + "primitive": "STRING", + "_type": "primitive" + }, + "_type": "alias" + }, + "referencedTypes": [], + "examples": [ + { + "jsonExample": "$4.50", + "shape": { + "value": { + "shape": { + "primitive": { + "string": "$4.50", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "$4.50" + }, + "type": "alias" + } + } + ] + }, { "availability": { "status": "GENERAL_AVAILABILITY" @@ -2440,7 +3258,781 @@ exports[`ir {"fixtureName":"simple","language":"java"} 1`] = ` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] + }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + }, + "shape": { + "extends": [], + "properties": [ + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR", + "wireValue": "director" + }, + "nameV2": { + "name": { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "wireValue": "director" + }, + "valueType": { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "_type": "named" + } + } + ], + "_type": "object" + }, + "referencedTypes": [ + { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + }, + { + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + } + ], + "examples": [ + { + "jsonExample": { + "director": { + "name": "George the Director", + "age": 20 + } + }, + "shape": { + "properties": [ + { + "wireKey": "director", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "name": "George the Director", + "age": 20 + } + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -5626,6 +7218,327 @@ exports[`ir {"fixtureName":"simple","language":"java"} 1`] = ` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] }, @@ -7291,7 +9204,191 @@ exports[`ir {"fixtureName":"simple","language":"python","audiences":["test"]} 1` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] } ], "errors": [], @@ -7964,6 +10061,327 @@ exports[`ir {"fixtureName":"simple","language":"python","audiences":["test"]} 1` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] } @@ -8414,7 +10832,214 @@ exports[`ir {"fixtureName":"simple","language":"python"} 1`] = ` ] } ], - "examples": [] + "examples": [ + { + "name": "GeorgeExample", + "jsonExample": { + "name": "George the Director", + "age": 20 + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -8485,7 +11110,25 @@ exports[`ir {"fixtureName":"simple","language":"python"} 1`] = ` "_type": "alias" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": 20, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + } + } + ] }, { "availability": { @@ -8570,6 +11213,94 @@ exports[`ir {"fixtureName":"simple","language":"python"} 1`] = ` "referencedTypes": [], "examples": [] }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CurrencyAmount", + "nameV2": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "safeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + } + } + }, + "shape": { + "aliasOf": { + "primitive": "STRING", + "_type": "primitive" + }, + "resolvedType": { + "primitive": "STRING", + "_type": "primitive" + }, + "_type": "alias" + }, + "referencedTypes": [], + "examples": [ + { + "jsonExample": "$4.50", + "shape": { + "value": { + "shape": { + "primitive": { + "string": "$4.50", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "$4.50" + }, + "type": "alias" + } + } + ] + }, { "availability": { "status": "GENERAL_AVAILABILITY" @@ -9438,7 +12169,781 @@ exports[`ir {"fixtureName":"simple","language":"python"} 1`] = ` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] + }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + }, + "shape": { + "extends": [], + "properties": [ + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR", + "wireValue": "director" + }, + "nameV2": { + "name": { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "wireValue": "director" + }, + "valueType": { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "_type": "named" + } + } + ], + "_type": "object" + }, + "referencedTypes": [ + { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + }, + { + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + } + ], + "examples": [ + { + "jsonExample": { + "director": { + "name": "George the Director", + "age": 20 + } + }, + "shape": { + "properties": [ + { + "wireKey": "director", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "name": "George the Director", + "age": 20 + } + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -12624,6 +16129,327 @@ exports[`ir {"fixtureName":"simple","language":"python"} 1`] = ` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] }, @@ -14289,7 +18115,191 @@ exports[`ir {"fixtureName":"simple","language":"typescript","audiences":["test"] "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] } ], "errors": [], @@ -14962,6 +18972,327 @@ exports[`ir {"fixtureName":"simple","language":"typescript","audiences":["test"] }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] } @@ -15412,7 +19743,214 @@ exports[`ir {"fixtureName":"simple","language":"typescript"} 1`] = ` ] } ], - "examples": [] + "examples": [ + { + "name": "GeorgeExample", + "jsonExample": { + "name": "George the Director", + "age": 20 + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -15483,7 +20021,25 @@ exports[`ir {"fixtureName":"simple","language":"typescript"} 1`] = ` "_type": "alias" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": 20, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + } + } + ] }, { "availability": { @@ -15568,6 +20124,94 @@ exports[`ir {"fixtureName":"simple","language":"typescript"} 1`] = ` "referencedTypes": [], "examples": [] }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CurrencyAmount", + "nameV2": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "safeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + } + } + }, + "shape": { + "aliasOf": { + "primitive": "STRING", + "_type": "primitive" + }, + "resolvedType": { + "primitive": "STRING", + "_type": "primitive" + }, + "_type": "alias" + }, + "referencedTypes": [], + "examples": [ + { + "jsonExample": "$4.50", + "shape": { + "value": { + "shape": { + "primitive": { + "string": "$4.50", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "$4.50" + }, + "type": "alias" + } + } + ] + }, { "availability": { "status": "GENERAL_AVAILABILITY" @@ -16436,7 +21080,781 @@ exports[`ir {"fixtureName":"simple","language":"typescript"} 1`] = ` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] + }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + }, + "shape": { + "extends": [], + "properties": [ + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR", + "wireValue": "director" + }, + "nameV2": { + "name": { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "wireValue": "director" + }, + "valueType": { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "_type": "named" + } + } + ], + "_type": "object" + }, + "referencedTypes": [ + { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + }, + { + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + } + ], + "examples": [ + { + "jsonExample": { + "director": { + "name": "George the Director", + "age": 20 + } + }, + "shape": { + "properties": [ + { + "wireKey": "director", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "name": "George the Director", + "age": 20 + } + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -19622,6 +25040,327 @@ exports[`ir {"fixtureName":"simple","language":"typescript"} 1`] = ` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] }, @@ -21281,7 +27020,214 @@ exports[`ir {"fixtureName":"simple"} 1`] = ` ] } ], - "examples": [] + "examples": [ + { + "name": "GeorgeExample", + "jsonExample": { + "name": "George the Director", + "age": 20 + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -21352,7 +27298,25 @@ exports[`ir {"fixtureName":"simple"} 1`] = ` "_type": "alias" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": 20, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + } + } + ] }, { "availability": { @@ -21437,6 +27401,94 @@ exports[`ir {"fixtureName":"simple"} 1`] = ` "referencedTypes": [], "examples": [] }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CurrencyAmount", + "nameV2": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "safeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + } + } + }, + "shape": { + "aliasOf": { + "primitive": "STRING", + "_type": "primitive" + }, + "resolvedType": { + "primitive": "STRING", + "_type": "primitive" + }, + "_type": "alias" + }, + "referencedTypes": [], + "examples": [ + { + "jsonExample": "$4.50", + "shape": { + "value": { + "shape": { + "primitive": { + "string": "$4.50", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "$4.50" + }, + "type": "alias" + } + } + ] + }, { "availability": { "status": "GENERAL_AVAILABILITY" @@ -22305,7 +28357,781 @@ exports[`ir {"fixtureName":"simple"} 1`] = ` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] + }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + }, + "shape": { + "extends": [], + "properties": [ + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR", + "wireValue": "director" + }, + "nameV2": { + "name": { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "wireValue": "director" + }, + "valueType": { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "_type": "named" + } + } + ], + "_type": "object" + }, + "referencedTypes": [ + { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + }, + { + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + } + ], + "examples": [ + { + "jsonExample": { + "director": { + "name": "George the Director", + "age": 20 + } + }, + "shape": { + "properties": [ + { + "wireKey": "director", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "name": "George the Director", + "age": 20 + } + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -25491,6 +32317,327 @@ exports[`ir {"fixtureName":"simple"} 1`] = ` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] }, @@ -27150,7 +34297,214 @@ exports[`ir {"fixtureName":"simple"} 2`] = ` ] } ], - "examples": [] + "examples": [ + { + "name": "GeorgeExample", + "jsonExample": { + "name": "George the Director", + "age": 20 + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -27221,7 +34575,25 @@ exports[`ir {"fixtureName":"simple"} 2`] = ` "_type": "alias" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": 20, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + } + } + ] }, { "availability": { @@ -27306,6 +34678,94 @@ exports[`ir {"fixtureName":"simple"} 2`] = ` "referencedTypes": [], "examples": [] }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CurrencyAmount", + "nameV2": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + }, + "safeName": { + "originalValue": "CurrencyAmount", + "camelCase": "currencyAmount", + "snakeCase": "currency_amount", + "pascalCase": "CurrencyAmount", + "screamingSnakeCase": "CURRENCY_AMOUNT" + } + } + }, + "shape": { + "aliasOf": { + "primitive": "STRING", + "_type": "primitive" + }, + "resolvedType": { + "primitive": "STRING", + "_type": "primitive" + }, + "_type": "alias" + }, + "referencedTypes": [], + "examples": [ + { + "jsonExample": "$4.50", + "shape": { + "value": { + "shape": { + "primitive": { + "string": "$4.50", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "$4.50" + }, + "type": "alias" + } + } + ] + }, { "availability": { "status": "GENERAL_AVAILABILITY" @@ -28174,7 +35634,781 @@ exports[`ir {"fixtureName":"simple"} 2`] = ` "_type": "object" }, "referencedTypes": [], - "examples": [] + "examples": [ + { + "name": "Example1", + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + } + } + ] + }, + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + }, + "shape": { + "extends": [], + "properties": [ + { + "availability": { + "status": "GENERAL_AVAILABILITY" + }, + "name": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR", + "wireValue": "director" + }, + "nameV2": { + "name": { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "wireValue": "director" + }, + "valueType": { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "_type": "named" + } + } + ], + "_type": "object" + }, + "referencedTypes": [ + { + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + }, + { + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + }, + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ] + } + ], + "examples": [ + { + "jsonExample": { + "director": { + "name": "George the Director", + "age": 20 + } + }, + "shape": { + "properties": [ + { + "wireKey": "director", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "name", + "value": { + "shape": { + "primitive": { + "string": "George the Director", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "George the Director" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + }, + { + "wireKey": "age", + "value": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Age", + "nameV2": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + }, + "safeName": { + "originalValue": "Age", + "camelCase": "age", + "snakeCase": "age", + "pascalCase": "Age", + "screamingSnakeCase": "AGE" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "integer": 20, + "type": "integer" + }, + "type": "primitive" + }, + "jsonExample": 20 + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": 20 + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + ], + "name": "Director", + "nameV2": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "nameV3": { + "unsafeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + }, + "safeName": { + "originalValue": "Director", + "camelCase": "director", + "snakeCase": "director", + "pascalCase": "Director", + "screamingSnakeCase": "DIRECTOR" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "name": "George the Director", + "age": 20 + } + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "DirectorWrapper", + "nameV2": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "nameV3": { + "unsafeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + }, + "safeName": { + "originalValue": "DirectorWrapper", + "camelCase": "directorWrapper", + "snakeCase": "director_wrapper", + "pascalCase": "DirectorWrapper", + "screamingSnakeCase": "DIRECTOR_WRAPPER" + } + } + } + } + ], + "type": "object" + } + } + ] }, { "availability": { @@ -31360,6 +39594,327 @@ exports[`ir {"fixtureName":"simple"} 2`] = ` }, "type": "ok" } + }, + { + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + }, + "shape": { + "properties": [ + { + "wireKey": "title", + "value": { + "shape": { + "primitive": { + "string": "Winnie the Pooh", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "Winnie the Pooh" + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + }, + { + "wireKey": "ratings", + "value": { + "shape": { + "container": { + "list": [ + { + "shape": { + "primitive": { + "double": 1, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 1 + }, + { + "shape": { + "primitive": { + "double": 2, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 2 + }, + { + "shape": { + "primitive": { + "double": 3, + "type": "double" + }, + "type": "primitive" + }, + "jsonExample": 3 + } + ], + "type": "list" + }, + "type": "container" + }, + "jsonExample": [ + 1, + 2, + 3 + ] + }, + "originalTypeDeclaration": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "CreateMovieRequest", + "nameV2": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "nameV3": { + "unsafeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + }, + "safeName": { + "originalValue": "CreateMovieRequest", + "camelCase": "createMovieRequest", + "snakeCase": "create_movie_request", + "pascalCase": "CreateMovieRequest", + "screamingSnakeCase": "CREATE_MOVIE_REQUEST" + } + } + } + } + ], + "type": "object" + }, + "type": "named" + }, + "jsonExample": { + "title": "Winnie the Pooh", + "ratings": [ + 1, + 2, + 3 + ] + }, + "type": "reference" + }, + "response": { + "body": { + "shape": { + "typeName": { + "fernFilepath": [ + { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + ], + "fernFilepathV2": [ + { + "unsafeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + }, + "safeName": { + "originalValue": "imdb", + "camelCase": "imdb", + "snakeCase": "imdb", + "pascalCase": "Imdb", + "screamingSnakeCase": "IMDB" + } + } + ], + "name": "MovieId", + "nameV2": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "nameV3": { + "unsafeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + }, + "safeName": { + "originalValue": "MovieId", + "camelCase": "movieId", + "snakeCase": "movie_id", + "pascalCase": "MovieId", + "screamingSnakeCase": "MOVIE_ID" + } + } + }, + "shape": { + "value": { + "shape": { + "primitive": { + "string": "shrek-123", + "type": "string" + }, + "type": "primitive" + }, + "jsonExample": "shrek-123" + }, + "type": "alias" + }, + "type": "named" + }, + "jsonExample": "shrek-123" + }, + "type": "ok" + } } ] }, diff --git a/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/director.yml b/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/director.yml index d5577e6bd9c..9e3e27ad6a2 100644 --- a/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/director.yml +++ b/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/director.yml @@ -3,6 +3,14 @@ types: properties: name: string age: Age + examples: + - name: GeorgeExample + value: + name: George the Director + age: $Age.Example1 Age: type: integer + examples: + - name: Example1 + value: 20 LiteralString: literal<"hello"> diff --git a/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/imdb.yml b/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/imdb.yml index 52da837ec15..892ea752f15 100644 --- a/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/imdb.yml +++ b/packages/cli/ete-tests/src/tests/ir/fixtures/simple/fern/api/definition/imdb.yml @@ -1,6 +1,10 @@ imports: director: director.yml types: + CurrencyAmount: + type: string + examples: + - value: \$4.50 MovieId: type: string examples: @@ -21,6 +25,17 @@ types: properties: title: string ratings: list + examples: + - name: Example1 + value: + title: Winnie the Pooh + ratings: [1, 2, 3] + DirectorWrapper: + properties: + director: director.Director + examples: + - value: + director: $director.Director.GeorgeExample Person: union: actor: ActorId @@ -80,6 +95,9 @@ services: ratings: [10, 10, 10, 10] response: body: shrek-123 + - request: $CreateMovieRequest.Example1 + response: + body: shrek-123 getMovie: method: GET display-name: "Get Movie by Id" diff --git a/packages/cli/generation/ir-generator/src/converters/services/convertExampleEndpointCall.ts b/packages/cli/generation/ir-generator/src/converters/services/convertExampleEndpointCall.ts index 05894fdfb86..772339fd186 100644 --- a/packages/cli/generation/ir-generator/src/converters/services/convertExampleEndpointCall.ts +++ b/packages/cli/generation/ir-generator/src/converters/services/convertExampleEndpointCall.ts @@ -10,6 +10,7 @@ import { } from "@fern-fern/ir-model/services/http"; import { FernFileContext } from "../../FernFileContext"; import { ErrorResolver } from "../../resolvers/ErrorResolver"; +import { ExampleResolver } from "../../resolvers/ExampleResolver"; import { TypeResolver } from "../../resolvers/TypeResolver"; import { parseTypeName } from "../../utils/parseTypeName"; import { @@ -23,6 +24,7 @@ export function convertExampleEndpointCall({ example, typeResolver, errorResolver, + exampleResolver, file, }: { service: RawSchemas.HttpServiceSchema; @@ -30,13 +32,14 @@ export function convertExampleEndpointCall({ example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; errorResolver: ErrorResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): ExampleEndpointCall { return { name: example.name, docs: example.docs, - ...convertPathParameters({ service, endpoint, example, typeResolver, file }), - ...convertHeaders({ service, endpoint, example, typeResolver, file }), + ...convertPathParameters({ service, endpoint, example, typeResolver, exampleResolver, file }), + ...convertHeaders({ service, endpoint, example, typeResolver, exampleResolver, file }), queryParameters: example["query-parameters"] != null ? Object.entries(example["query-parameters"]).map(([wireKey, value]) => { @@ -56,13 +59,14 @@ export function convertExampleEndpointCall({ ? queryParameterDeclaration : queryParameterDeclaration.type, typeResolver, + exampleResolver, file, }), }; }) : [], - request: convertExampleRequestBody({ endpoint, example, typeResolver, file }), - response: convertExampleResponse({ endpoint, example, typeResolver, errorResolver, file }), + request: convertExampleRequestBody({ endpoint, example, typeResolver, exampleResolver, file }), + response: convertExampleResponse({ endpoint, example, typeResolver, errorResolver, exampleResolver, file }), }; } @@ -71,12 +75,14 @@ function convertPathParameters({ endpoint, example, typeResolver, + exampleResolver, file, }: { service: RawSchemas.HttpServiceSchema; endpoint: RawSchemas.HttpEndpointSchema; example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): Pick { const servicePathParameters: ExamplePathParameter[] = []; @@ -96,6 +102,7 @@ function convertPathParameters({ ? endpointPathParameterDeclaration : endpointPathParameterDeclaration.type, typeResolver, + exampleResolver, file, }), }); @@ -109,6 +116,7 @@ function convertPathParameters({ ? servicePathParameterDeclaration : servicePathParameterDeclaration.type, typeResolver, + exampleResolver, file, }), }); @@ -129,12 +137,14 @@ function convertHeaders({ endpoint, example, typeResolver, + exampleResolver, file, }: { service: RawSchemas.HttpServiceSchema; endpoint: RawSchemas.HttpEndpointSchema; example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): Pick { const serviceHeaders: ExampleHeader[] = []; @@ -155,6 +165,7 @@ function convertHeaders({ ? endpointHeaderDeclaration : endpointHeaderDeclaration.type, typeResolver, + exampleResolver, file, }), }); @@ -168,6 +179,7 @@ function convertHeaders({ ? serviceHeaderDeclaration : serviceHeaderDeclaration.type, typeResolver, + exampleResolver, file, }), }); @@ -187,11 +199,13 @@ function convertExampleRequestBody({ endpoint, example, typeResolver, + exampleResolver, file, }: { endpoint: RawSchemas.HttpEndpointSchema; example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): ExampleRequestBody | undefined { const requestType = typeof endpoint.request !== "string" ? endpoint.request?.body : endpoint.request; @@ -204,6 +218,7 @@ function convertExampleRequestBody({ example: example.request, rawTypeBeingExemplified: typeof requestType !== "string" ? requestType.type : requestType, typeResolver, + exampleResolver, file, }) ); @@ -226,6 +241,7 @@ function convertExampleRequestBody({ ? inlinedRequestPropertyDeclaration.type : inlinedRequestPropertyDeclaration, typeResolver, + exampleResolver, file, }), originalTypeDeclaration: undefined, @@ -249,6 +265,7 @@ function convertExampleRequestBody({ ? originalTypeDeclaration.rawPropertyType : originalTypeDeclaration.rawPropertyType.type, typeResolver, + exampleResolver, file, }), originalTypeDeclaration: originalTypeDeclaration.typeName, @@ -257,7 +274,8 @@ function convertExampleRequestBody({ } return ExampleRequestBody.inlinedRequestBody({ - jsonExample: example.request, + jsonExample: exampleResolver.resolveAllReferencesInExampleOrThrow({ example: example.request, file }) + .resolvedExample, properties: exampleProperties, }); } @@ -267,12 +285,14 @@ function convertExampleResponse({ example, typeResolver, errorResolver, + exampleResolver, file, }: { endpoint: RawSchemas.HttpEndpointSchema; example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; errorResolver: ErrorResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): ExampleResponse { if (example.response?.error != null) { @@ -288,6 +308,7 @@ function convertExampleResponse({ example: example.response.body, rawTypeBeingExemplified: errorDeclaration.declaration.type, typeResolver, + exampleResolver, file: errorDeclaration.file, }) : undefined, @@ -295,7 +316,7 @@ function convertExampleResponse({ } return ExampleResponse.ok({ - body: convertExampleResponseBody({ endpoint, example, typeResolver, file }), + body: convertExampleResponseBody({ endpoint, example, typeResolver, exampleResolver, file }), }); } @@ -303,11 +324,13 @@ function convertExampleResponseBody({ endpoint, example, typeResolver, + exampleResolver, file, }: { endpoint: RawSchemas.HttpEndpointSchema; example: RawSchemas.ExampleEndpointCallSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }) { const responseBodyType = typeof endpoint.response !== "string" ? endpoint.response?.type : endpoint.response; @@ -318,6 +341,7 @@ function convertExampleResponseBody({ example: example.response?.body, rawTypeBeingExemplified: responseBodyType, typeResolver, + exampleResolver, file, }); } diff --git a/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts b/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts index 8f8127025f0..c6e26546d90 100644 --- a/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts +++ b/packages/cli/generation/ir-generator/src/converters/services/convertHttpService.ts @@ -3,6 +3,7 @@ import { RawSchemas } from "@fern-api/yaml-schema"; import { HttpEndpoint, HttpHeader, HttpMethod, HttpService, PathParameter } from "@fern-fern/ir-model/services/http"; import { FernFileContext } from "../../FernFileContext"; import { ErrorResolver } from "../../resolvers/ErrorResolver"; +import { ExampleResolver } from "../../resolvers/ExampleResolver"; import { TypeResolver } from "../../resolvers/TypeResolver"; import { convertDeclaration } from "../convertDeclaration"; import { constructHttpPath } from "./constructHttpPath"; @@ -19,12 +20,14 @@ export function convertHttpService({ file, errorResolver, typeResolver, + exampleResolver, }: { serviceDefinition: RawSchemas.HttpServiceSchema; serviceId: string; file: FernFileContext; errorResolver: ErrorResolver; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; }): HttpService { return { ...convertDeclaration(serviceDefinition), @@ -116,6 +119,7 @@ export function convertHttpService({ example, typeResolver, errorResolver, + exampleResolver, file, }) ) diff --git a/packages/cli/generation/ir-generator/src/converters/type-declarations/convertExampleType.ts b/packages/cli/generation/ir-generator/src/converters/type-declarations/convertExampleType.ts index cfeff84088d..0a34f988503 100644 --- a/packages/cli/generation/ir-generator/src/converters/type-declarations/convertExampleType.ts +++ b/packages/cli/generation/ir-generator/src/converters/type-declarations/convertExampleType.ts @@ -16,8 +16,8 @@ import { ExampleTypeShape, PrimitiveType, } from "@fern-fern/ir-model/types"; -import { isArray } from "lodash-es"; import { FernFileContext } from "../../FernFileContext"; +import { ExampleResolver } from "../../resolvers/ExampleResolver"; import { TypeResolver } from "../../resolvers/TypeResolver"; import { getSingleUnionTypeProperties, getUnionDiscriminant } from "./convertUnionTypeDeclaration"; @@ -26,12 +26,14 @@ export function convertTypeExample({ typeDeclaration, example, typeResolver, + exampleResolver, file, }: { typeName: DeclaredTypeName; typeDeclaration: RawSchemas.TypeDeclarationSchema; example: RawSchemas.ExampleTypeValueSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): ExampleTypeShape { return visitRawTypeDeclaration(typeDeclaration, { @@ -42,6 +44,7 @@ export function convertTypeExample({ rawTypeBeingExemplified: typeof rawAlias === "string" ? rawAlias : rawAlias.type, file, typeResolver, + exampleResolver, }), }); }, @@ -52,6 +55,7 @@ export function convertTypeExample({ example, file, typeResolver, + exampleResolver, }); }, union: (rawUnion) => { @@ -81,6 +85,7 @@ export function convertTypeExample({ rawSingleUnionType, file, typeResolver, + exampleResolver, example, discriminant, }), @@ -101,13 +106,20 @@ export function convertTypeReferenceExample({ example, rawTypeBeingExemplified, typeResolver, + exampleResolver, file, }: { example: RawSchemas.ExampleTypeReferenceSchema; rawTypeBeingExemplified: string; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; }): ExampleTypeReference { + example = exampleResolver.resolveAllReferencesInExampleOrThrow({ + example, + file, + }).resolvedExample; + const shape = visitRawTypeReference(rawTypeBeingExemplified, { primitive: (primitive) => { return convertPrimitiveExample({ @@ -126,12 +138,14 @@ export function convertTypeReferenceExample({ example: key, rawTypeBeingExemplified: keyType, typeResolver, + exampleResolver, file, }), value: convertTypeReferenceExample({ example: value, rawTypeBeingExemplified: valueType, typeResolver, + exampleResolver, file, }), })) @@ -139,7 +153,7 @@ export function convertTypeReferenceExample({ ); }, list: (itemType) => { - if (!isArray(example)) { + if (!Array.isArray(example)) { throw new Error("Example is not a list"); } return ExampleTypeReferenceShape.container( @@ -149,6 +163,7 @@ export function convertTypeReferenceExample({ example: exampleItem, rawTypeBeingExemplified: itemType, typeResolver, + exampleResolver, file, }) ) @@ -156,7 +171,7 @@ export function convertTypeReferenceExample({ ); }, set: (itemType) => { - if (!isArray(example)) { + if (!Array.isArray(example)) { throw new Error("Example is not a list"); } return ExampleTypeReferenceShape.container( @@ -166,6 +181,7 @@ export function convertTypeReferenceExample({ example: exampleItem, rawTypeBeingExemplified: itemType, typeResolver, + exampleResolver, file, }) ) @@ -179,6 +195,7 @@ export function convertTypeReferenceExample({ example, rawTypeBeingExemplified: itemType, typeResolver, + exampleResolver, file, }) ) @@ -211,6 +228,7 @@ export function convertTypeReferenceExample({ file: typeDeclaration.file, example, typeResolver, + exampleResolver, }), }); }, @@ -221,6 +239,7 @@ export function convertTypeReferenceExample({ throw new Error("Examples are not supported for void"); }, }); + return { shape, jsonExample: example, @@ -289,12 +308,14 @@ function convertObject({ example, file, typeResolver, + exampleResolver, }: { typeName: DeclaredTypeName; rawObject: RawSchemas.ObjectSchema; example: RawSchemas.ExampleTypeValueSchema; file: FernFileContext; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; }): ExampleTypeShape { if (!isPlainObject(example)) { throw new Error("Example is not an object"); @@ -323,6 +344,7 @@ function convertObject({ ? originalTypeDeclaration.rawPropertyType : originalTypeDeclaration.rawPropertyType.type, typeResolver, + exampleResolver, file, }), originalTypeDeclaration: originalTypeDeclaration.typeName, @@ -403,6 +425,7 @@ function convertUnionProperties({ rawSingleUnionType, file, typeResolver, + exampleResolver, example, discriminant, }: { @@ -410,6 +433,7 @@ function convertUnionProperties({ rawSingleUnionType: RawSchemas.SingleUnionTypeSchema; file: FernFileContext; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; example: RawSchemas.ExampleTypeValueSchema; discriminant: string; }): ExampleSingleUnionTypeProperties { @@ -435,6 +459,7 @@ function convertUnionProperties({ example: example[parsedSingleUnionTypeProperties.nameV2.wireValue], rawTypeBeingExemplified: rawValueType, typeResolver, + exampleResolver, file, }) ); @@ -465,6 +490,7 @@ function convertUnionProperties({ example: nonDiscriminantPropertiesFromExample, file: rawDeclaration.file, typeResolver, + exampleResolver, typeName, }), }); diff --git a/packages/cli/generation/ir-generator/src/converters/type-declarations/convertTypeDeclaration.ts b/packages/cli/generation/ir-generator/src/converters/type-declarations/convertTypeDeclaration.ts index 2369f69d07a..72e1e22bb15 100644 --- a/packages/cli/generation/ir-generator/src/converters/type-declarations/convertTypeDeclaration.ts +++ b/packages/cli/generation/ir-generator/src/converters/type-declarations/convertTypeDeclaration.ts @@ -1,6 +1,7 @@ import { RawSchemas, visitRawTypeDeclaration } from "@fern-api/yaml-schema"; import { Type, TypeDeclaration } from "@fern-fern/ir-model/types"; import { FernFileContext } from "../../FernFileContext"; +import { ExampleResolver } from "../../resolvers/ExampleResolver"; import { TypeResolver } from "../../resolvers/TypeResolver"; import { convertDeclaration } from "../convertDeclaration"; import { convertAliasTypeDeclaration } from "./convertAliasTypeDeclaration"; @@ -15,11 +16,13 @@ export function convertTypeDeclaration({ typeDeclaration, file, typeResolver, + exampleResolver, }: { typeName: string; typeDeclaration: RawSchemas.TypeDeclarationSchema; file: FernFileContext; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; }): TypeDeclaration { const declaration = convertDeclaration(typeDeclaration); const declaredTypeName = { @@ -39,11 +42,15 @@ export function convertTypeDeclaration({ ? typeDeclaration.examples.map((example) => ({ name: example.name, docs: example.docs, - jsonExample: example.value, + jsonExample: exampleResolver.resolveAllReferencesInExampleOrThrow({ + example: example.value, + file, + }).resolvedExample, shape: convertTypeExample({ typeName: declaredTypeName, example: example.value, typeResolver, + exampleResolver, typeDeclaration, file, }), diff --git a/packages/cli/generation/ir-generator/src/generateIntermediateRepresentation.ts b/packages/cli/generation/ir-generator/src/generateIntermediateRepresentation.ts index 2f0b5151b6e..048c10caff5 100644 --- a/packages/cli/generation/ir-generator/src/generateIntermediateRepresentation.ts +++ b/packages/cli/generation/ir-generator/src/generateIntermediateRepresentation.ts @@ -17,6 +17,7 @@ import { constructFernFileContext, FernFileContext } from "./FernFileContext"; import { AudienceIrGraph } from "./filtered-ir/AudienceIrGraph"; import { Language } from "./language"; import { ErrorResolverImpl } from "./resolvers/ErrorResolver"; +import { ExampleResolverImpl } from "./resolvers/ExampleResolver"; import { TypeResolverImpl } from "./resolvers/TypeResolver"; export async function generateIntermediateRepresentation({ @@ -75,6 +76,7 @@ export async function generateIntermediateRepresentation({ const typeResolver = new TypeResolverImpl(workspace); const errorResolver = new ErrorResolverImpl(workspace); + const exampleResolver = new ExampleResolverImpl(typeResolver); const visitServiceFile = async ({ file, schema }: { file: FernFileContext; schema: ServiceFileSchema }) => { await visitObject(schema, { @@ -91,6 +93,7 @@ export async function generateIntermediateRepresentation({ typeDeclaration, file, typeResolver, + exampleResolver, }); intermediateRepresentation.types.push(convertedTypeDeclaration); @@ -133,6 +136,7 @@ export async function generateIntermediateRepresentation({ file, errorResolver, typeResolver, + exampleResolver, }); intermediateRepresentation.services.http.push(convertedHttpService); diff --git a/packages/cli/generation/ir-generator/src/index.ts b/packages/cli/generation/ir-generator/src/index.ts index 70f9b789ab1..0a25b5d7434 100644 --- a/packages/cli/generation/ir-generator/src/index.ts +++ b/packages/cli/generation/ir-generator/src/index.ts @@ -16,6 +16,7 @@ export { constructFernFileContext, type FernFileContext } from "./FernFileContex export { generateIntermediateRepresentation } from "./generateIntermediateRepresentation"; export { Language } from "./language"; export { ErrorResolverImpl, type ErrorResolver } from "./resolvers/ErrorResolver"; +export { ExampleResolverImpl, type ExampleResolver } from "./resolvers/ExampleResolver"; export { type ResolvedContainerType, type ResolvedType } from "./resolvers/ResolvedType"; export { TypeResolverImpl, type TypeResolver } from "./resolvers/TypeResolver"; export { getResolvedPathOfImportedFile } from "./utils/getResolvedPathOfImportedFile"; diff --git a/packages/cli/generation/ir-generator/src/resolvers/ExampleResolver.ts b/packages/cli/generation/ir-generator/src/resolvers/ExampleResolver.ts new file mode 100644 index 00000000000..9f3c708d254 --- /dev/null +++ b/packages/cli/generation/ir-generator/src/resolvers/ExampleResolver.ts @@ -0,0 +1,160 @@ +import { isPlainObject } from "@fern-api/core-utils"; +import { EXAMPLE_REFERENCE_PREFIX } from "@fern-api/yaml-schema"; +import { FernFileContext } from "../FernFileContext"; +import { TypeResolver } from "./TypeResolver"; + +export interface ExampleResolver { + resolveAllReferencesInExample: (args: { + example: unknown; + file: FernFileContext; + }) => { resolvedExample: unknown } | undefined; + resolveAllReferencesInExampleOrThrow: (args: { example: unknown; file: FernFileContext }) => { + resolvedExample: unknown; + }; + resolveExample: (args: { + referenceToExample: string; + file: FernFileContext; + }) => { resolvedExample: unknown; file: FernFileContext } | undefined; + resolveExampleOrThrow: (args: { referenceToExample: string; file: FernFileContext }) => { + resolvedExample: unknown; + file: FernFileContext; + }; + parseExampleReference: (exampleReference: string) => { rawTypeReference: string; exampleName: string } | undefined; +} + +export class ExampleResolverImpl implements ExampleResolver { + constructor(private readonly typeResolver: TypeResolver) {} + + public resolveAllReferencesInExample({ + example, + file, + }: { + example: unknown; + file: FernFileContext; + }): { resolvedExample: unknown } | undefined { + if (typeof example === "string") { + if (example.startsWith(EXAMPLE_REFERENCE_PREFIX)) { + const resolvedExample = this.resolveExample({ + referenceToExample: example, + file, + }); + if (resolvedExample == null) { + return undefined; + } + return this.resolveAllReferencesInExample({ + example: resolvedExample.resolvedExample, + file: resolvedExample.file, + }); + } + + // handle escaping \ + if (example.startsWith(`\\${EXAMPLE_REFERENCE_PREFIX}`)) { + // remove backslash + return { + resolvedExample: example.slice(1), + }; + } + } else if (isPlainObject(example)) { + const newExample: typeof example = {}; + for (const [exampleKey, exampleValue] of Object.entries(example)) { + const resolvedExampleValue = this.resolveAllReferencesInExample({ example: exampleValue, file }); + if (resolvedExampleValue == null) { + return undefined; + } + newExample[exampleKey] = resolvedExampleValue.resolvedExample; + } + return { resolvedExample: newExample }; + } else if (Array.isArray(example)) { + const newExample = []; + for (const exampleItem of example) { + const resolvedExampleItem = this.resolveAllReferencesInExample({ example: exampleItem, file }); + if (resolvedExampleItem == null) { + return undefined; + } + newExample.push(resolvedExampleItem.resolvedExample); + } + return { resolvedExample: newExample }; + } + + return { resolvedExample: example }; + } + + public resolveAllReferencesInExampleOrThrow({ example, file }: { example: unknown; file: FernFileContext }): { + resolvedExample: unknown; + } { + const resolvedExample = this.resolveAllReferencesInExample({ example, file }); + if (resolvedExample == null) { + throw new Error("Failed to resolve examples"); + } + return resolvedExample; + } + + public resolveExample({ + referenceToExample, + file, + }: { + referenceToExample: string; + file: FernFileContext; + }): { resolvedExample: unknown; file: FernFileContext } | undefined { + const parsedExampleReference = this.parseExampleReference(referenceToExample); + if (parsedExampleReference == null) { + return undefined; + } + + const typeDeclaration = this.typeResolver.getDeclarationOfNamedType({ + referenceToNamedType: parsedExampleReference.rawTypeReference, + file, + }); + if ( + typeDeclaration == null || + typeof typeDeclaration.declaration === "string" || + typeDeclaration.declaration.examples == null + ) { + return undefined; + } + + const resolvedExample = typeDeclaration.declaration.examples.find( + (otherExample) => otherExample.name === parsedExampleReference.exampleName + ); + if (resolvedExample == null) { + return undefined; + } + return { resolvedExample: resolvedExample.value, file: typeDeclaration.file }; + } + + public resolveExampleOrThrow({ referenceToExample, file }: { referenceToExample: string; file: FernFileContext }): { + resolvedExample: unknown; + file: FernFileContext; + } { + const resolvedExample = this.resolveExample({ referenceToExample, file }); + if (resolvedExample == null) { + throw new Error("Cannot resolve example: " + referenceToExample); + } + return resolvedExample; + } + + public parseExampleReference( + exampleReference: string + ): { rawTypeReference: string; exampleName: string } | undefined { + const [first, second, third, ...rest] = exampleReference.split("."); + + if (first == null || second == null || rest.length > 0) { + return undefined; + } + + // if third is null, then the reference is to a $Type.Example in the + // same file + if (third == null) { + return { + rawTypeReference: first.slice(EXAMPLE_REFERENCE_PREFIX.length), + exampleName: second, + }; + } + + // otherwise, the reference is $imported.Type.Example + return { + rawTypeReference: `${first}.${second}`.slice(EXAMPLE_REFERENCE_PREFIX.length), + exampleName: third, + }; + } +} diff --git a/packages/cli/yaml/validator/src/createServiceFileAstVisitorForRules.ts b/packages/cli/yaml/validator/src/createServiceFileAstVisitorForRules.ts index 3a47fd4093a..bfa28536fb1 100644 --- a/packages/cli/yaml/validator/src/createServiceFileAstVisitorForRules.ts +++ b/packages/cli/yaml/validator/src/createServiceFileAstVisitorForRules.ts @@ -60,6 +60,7 @@ export function createServiceFileAstVisitorForRules({ ...createAstNodeVisitor("errorDeclaration"), ...createAstNodeVisitor("errorReference"), ...createAstNodeVisitor("exampleType"), + ...createAstNodeVisitor("exampleTypeReference"), ...createAstNodeVisitor("exampleHttpEndpointCall"), ...createAstNodeVisitor("exampleHeaders"), ...createAstNodeVisitor("examplePathParameters"), diff --git a/packages/cli/yaml/validator/src/getAllRules.ts b/packages/cli/yaml/validator/src/getAllRules.ts index 417cc9aac67..af651f3ffb0 100644 --- a/packages/cli/yaml/validator/src/getAllRules.ts +++ b/packages/cli/yaml/validator/src/getAllRules.ts @@ -6,6 +6,7 @@ import NoConflictingEndpointParametersRule from "./rules/no-conflicting-endpoint import NoConflictingRequestWrapperPropertiesRule from "./rules/no-conflicting-request-wrapper-properties"; import NoDuplicateDeclarationsRule from "./rules/no-duplicate-declarations"; import NoDuplicateEnumValuesRule from "./rules/no-duplicate-enum-values"; +import NoDuplicateExampleNamesRule from "./rules/no-duplicate-example-names"; import NoDuplicateFieldNamesRule from "./rules/no-duplicate-field-names"; import NoErrorStatusCodeConflict from "./rules/no-error-status-code-conflict"; import NoGetRequestBody from "./rules/no-get-request-body"; @@ -14,6 +15,7 @@ import NoMissingErrorDiscriminant from "./rules/no-missing-error-discriminant"; import NoMissingRequestNameRule from "./rules/no-missing-request-name"; import NoObjectSinglePropertyKey from "./rules/no-object-single-property-key"; import NoUndefinedErrorReferenceRule from "./rules/no-undefined-error-reference"; +import NoUndefinedExampleReferenceRule from "./rules/no-undefined-example-reference"; import NoUndefinedPathParametersRule from "./rules/no-undefined-path-parameters"; import NoUndefinedTypeReferenceRule from "./rules/no-undefined-type-reference"; import ValidDefaultEnvironmentRule from "./rules/valid-default-environment"; @@ -44,6 +46,8 @@ export function getAllRules(): Rule[] { NoConflictingEndpointParametersRule, NoConflictingRequestWrapperPropertiesRule, ValidExampleEndpointCallRule, + NoDuplicateExampleNamesRule, + NoUndefinedExampleReferenceRule, ]; } diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/1.yml b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/1.yml new file mode 100644 index 00000000000..436db7a10c0 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/1.yml @@ -0,0 +1,29 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/fern-api/fern/main/fern.schema.json + +types: + MyObject: + type: string + examples: + - name: Example1 + value: hello world + - name: Example2 + value: hello world + - name: Example3 + value: hello world + - name: Example2 + value: hello world + +services: + http: + MyService: + base-path: / + auth: true + endpoints: + get: + path: / + method: GET + examples: + - name: Example1 + - name: Example2 + - name: Example3 + - name: Example2 diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/api.yml b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/api.yml new file mode 100644 index 00000000000..eee3f038239 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/definition/api.yml @@ -0,0 +1 @@ +name: simple-api diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/generators.yml b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/fixtures/simple/generators.yml @@ -0,0 +1 @@ +{} diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/no-duplicate-example-names.test.ts b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/no-duplicate-example-names.test.ts new file mode 100644 index 00000000000..1d8b32771dc --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/__test__/no-duplicate-example-names.test.ts @@ -0,0 +1,27 @@ +import { AbsoluteFilePath, join } from "@fern-api/fs-utils"; +import { getViolationsForRule } from "../../../testing-utils/getViolationsForRule"; +import { NoDuplicateExampleNamesRule } from "../no-duplicate-example-names"; + +describe("no-duplicate-example-names", () => { + it("simple", async () => { + const violations = await getViolationsForRule({ + rule: NoDuplicateExampleNamesRule, + absolutePathToWorkspace: join(AbsoluteFilePath.of(__dirname), "fixtures", "simple"), + }); + + expect(violations).toEqual([ + { + message: "Duplicate example name: Example2", + nodePath: ["types", "MyObject"], + relativeFilepath: "1.yml", + severity: "error", + }, + { + message: "Duplicate example name: Example2", + nodePath: ["services", "http", "MyService", "endpoints", "get"], + relativeFilepath: "1.yml", + severity: "error", + }, + ]); + }); +}); diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/index.ts b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/index.ts new file mode 100644 index 00000000000..09521cdd3f0 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/index.ts @@ -0,0 +1 @@ +export { NoDuplicateExampleNamesRule as default } from "./no-duplicate-example-names"; diff --git a/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/no-duplicate-example-names.ts b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/no-duplicate-example-names.ts new file mode 100644 index 00000000000..4cdee08cdc1 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-duplicate-example-names/no-duplicate-example-names.ts @@ -0,0 +1,33 @@ +import { isNonNullish } from "@fern-api/core-utils"; +import { Rule } from "../../Rule"; +import { getDuplicates } from "../../utils/getDuplicates"; + +export const NoDuplicateExampleNamesRule: Rule = { + name: "no-duplicate-example-names", + create: async () => { + return { + serviceFile: { + typeDeclaration: ({ declaration }) => { + if (typeof declaration === "string" || declaration.examples == null) { + return []; + } + const allNames = declaration.examples.map((example) => example.name).filter(isNonNullish); + return getDuplicates(allNames).map((duplicate) => ({ + severity: "error", + message: `Duplicate example name: ${duplicate}`, + })); + }, + httpEndpoint: ({ endpoint }) => { + if (endpoint.examples == null) { + return []; + } + const allNames = endpoint.examples.map((example) => example.name).filter(isNonNullish); + return getDuplicates(allNames).map((duplicate) => ({ + severity: "error", + message: `Duplicate example name: ${duplicate}`, + })); + }, + }, + }; + }, +}; diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/a.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/a.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/a.yml @@ -0,0 +1 @@ +{} diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/api.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/api.yml new file mode 100644 index 00000000000..eee3f038239 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/api.yml @@ -0,0 +1 @@ +name: simple-api diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/b.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/b.yml new file mode 100644 index 00000000000..7199eeb9e82 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/b.yml @@ -0,0 +1,14 @@ +imports: + a: a.yml + nested: folder/nested.yml +types: + MyType: + properties: + alpha: string + bravo: string + nested: nested.NestedType + examples: + - value: + alpha: $malformed-example + brave: $a.MissingType.Example + nested: $nested.NestedType.NestedExample1 diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/nested.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/nested.yml new file mode 100644 index 00000000000..5fdd33e64c3 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/nested.yml @@ -0,0 +1,12 @@ +imports: + other: other.yml +types: + NestedType: + properties: + foo: string + bar: string + examples: + - name: NestedExample1 + value: + foo: $other.OtherType.OtherExample1 + bar: $other.OtherType.OtherExample2 diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/other.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/other.yml new file mode 100644 index 00000000000..d559acded86 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/folder/other.yml @@ -0,0 +1,6 @@ +types: + OtherType: + type: string + examples: + - name: OtherExample1 + value: hello world diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/users.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/users.yml new file mode 100644 index 00000000000..3bec19ddefb --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/definition/users.yml @@ -0,0 +1,21 @@ +types: + UserId: + type: integer + examples: + - name: UserIdExample1 + value: user-id-123 + +services: + http: + UserService: + base-path: /users + auth: true + endpoints: + getUser: + method: GET + path: /{userId} + path-parameters: + userId: UserId + examples: + - path-parameters: + userId: $UserId.UserIdExample1 diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/generators.yml b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/generators.yml new file mode 100644 index 00000000000..0967ef424bc --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/fixtures/simple/generators.yml @@ -0,0 +1 @@ +{} diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/no-undefined-example-reference.test.ts b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/no-undefined-example-reference.test.ts new file mode 100644 index 00000000000..89c687208a1 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/__test__/no-undefined-example-reference.test.ts @@ -0,0 +1,55 @@ +import { AbsoluteFilePath, join } from "@fern-api/fs-utils"; +import { getViolationsForRule } from "../../../testing-utils/getViolationsForRule"; +import { NoUndefinedExampleReferenceRule } from "../no-undefined-example-reference"; + +describe("no-undefined-example-reference", () => { + it("simple", async () => { + const violations = await getViolationsForRule({ + rule: NoUndefinedExampleReferenceRule, + absolutePathToWorkspace: join(AbsoluteFilePath.of(__dirname), "fixtures", "simple"), + }); + + expect(violations).toEqual([ + { + message: + "Example $malformed-example is malformed. Examples should be formatted like $YourType.ExampleName", + nodePath: [ + "types", + "MyType", + { + arrayIndex: 0, + key: "examples", + }, + ], + relativeFilepath: "b.yml", + severity: "error", + }, + { + message: "Example $a.MissingType.Example is not defined.", + nodePath: [ + "types", + "MyType", + { + arrayIndex: 0, + key: "examples", + }, + ], + relativeFilepath: "b.yml", + severity: "error", + }, + { + message: "Example $other.OtherType.OtherExample2 is not defined.", + nodePath: [ + "types", + "NestedType", + { + arrayIndex: 0, + key: "examples", + }, + ], + relativeFilepath: "folder/nested.yml", + severity: "error", + }, + ]); + }); +}); diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/index.ts b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/index.ts new file mode 100644 index 00000000000..4d6b90d3780 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/index.ts @@ -0,0 +1 @@ +export { NoUndefinedExampleReferenceRule as default } from "./no-undefined-example-reference"; diff --git a/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/no-undefined-example-reference.ts b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/no-undefined-example-reference.ts new file mode 100644 index 00000000000..92250b7c306 --- /dev/null +++ b/packages/cli/yaml/validator/src/rules/no-undefined-example-reference/no-undefined-example-reference.ts @@ -0,0 +1,51 @@ +import { constructFernFileContext, ExampleResolverImpl, TypeResolverImpl } from "@fern-api/ir-generator"; +import chalk from "chalk"; +import { Rule } from "../../Rule"; +import { CASINGS_GENERATOR } from "../../utils/casingsGenerator"; + +export const NoUndefinedExampleReferenceRule: Rule = { + name: "no-undefined-example-reference", + create: async ({ workspace }) => { + const exampleResolver = new ExampleResolverImpl(new TypeResolverImpl(workspace)); + + return { + serviceFile: { + exampleTypeReference: (exampleReference, { relativeFilepath, contents }) => { + if (exampleResolver.parseExampleReference(exampleReference) == null) { + return [ + { + severity: "error", + message: `Example ${chalk.bold( + exampleReference + )} is malformed. Examples should be formatted like ${chalk.bold( + "$YourType.ExampleName" + )}`, + }, + ]; + } + + const doesExist = + exampleResolver.resolveExample({ + referenceToExample: exampleReference, + file: constructFernFileContext({ + relativeFilepath, + serviceFile: contents, + casingsGenerator: CASINGS_GENERATOR, + }), + }) != null; + + if (doesExist) { + return []; + } else { + return [ + { + severity: "error", + message: `Example ${chalk.bold(exampleReference)} is not defined.`, + }, + ]; + } + }, + }, + }; + }, +}; diff --git a/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/valid-example-endpoint-call.ts b/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/valid-example-endpoint-call.ts index 73c3434de34..2a14e45535f 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/valid-example-endpoint-call.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/valid-example-endpoint-call.ts @@ -1,4 +1,9 @@ -import { constructFernFileContext, ErrorResolverImpl, TypeResolverImpl } from "@fern-api/ir-generator"; +import { + constructFernFileContext, + ErrorResolverImpl, + ExampleResolverImpl, + TypeResolverImpl, +} from "@fern-api/ir-generator"; import { Rule } from "../../Rule"; import { CASINGS_GENERATOR } from "../../utils/casingsGenerator"; import { validateExampleEndpointCallParameters } from "./validateExampleEndpointCallParameters"; @@ -10,6 +15,7 @@ export const ValidExampleEndpointCallRule: Rule = { create: ({ workspace }) => { const typeResolver = new TypeResolverImpl(workspace); const errorResolver = new ErrorResolverImpl(workspace); + const exampleResolver = new ExampleResolverImpl(typeResolver); return { serviceFile: { @@ -22,6 +28,7 @@ export const ValidExampleEndpointCallRule: Rule = { examples, parameterDisplayName: "header", typeResolver, + exampleResolver, workspace, file: constructFernFileContext({ relativeFilepath, @@ -42,6 +49,7 @@ export const ValidExampleEndpointCallRule: Rule = { examples, parameterDisplayName: "path parameter", typeResolver, + exampleResolver, workspace, file: constructFernFileContext({ relativeFilepath, @@ -57,6 +65,7 @@ export const ValidExampleEndpointCallRule: Rule = { examples, parameterDisplayName: "query parameter", typeResolver, + exampleResolver, workspace, file: constructFernFileContext({ relativeFilepath, @@ -70,6 +79,7 @@ export const ValidExampleEndpointCallRule: Rule = { example, endpoint, typeResolver, + exampleResolver, file: constructFernFileContext({ relativeFilepath, serviceFile, @@ -83,6 +93,7 @@ export const ValidExampleEndpointCallRule: Rule = { example, endpoint, typeResolver, + exampleResolver, file: constructFernFileContext({ relativeFilepath, serviceFile, diff --git a/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/validateExampleEndpointCallParameters.ts b/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/validateExampleEndpointCallParameters.ts index 8831fa039f6..8b20be58006 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/validateExampleEndpointCallParameters.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-endpoint-call/validateExampleEndpointCallParameters.ts @@ -1,4 +1,4 @@ -import { FernFileContext, TypeResolver } from "@fern-api/ir-generator"; +import { ExampleResolver, FernFileContext, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; import { RawSchemas } from "@fern-api/yaml-schema"; import { RuleViolation } from "../../Rule"; @@ -9,6 +9,7 @@ export function validateExampleEndpointCallParameters | undefined; parameterDisplayName: string; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; workspace: Workspace; file: FernFileContext; }): RuleViolation[] { @@ -62,6 +64,7 @@ export function validateExampleEndpointCallParameters { nodePath: ["types", "Object1", { key: "examples", arrayIndex: 7 }], }, + // references.yml + { + message: "Expected example to be: string. Example is $MyNumberAlias.Example1.", + nodePath: [ + "types", + "MyAlias", + { + arrayIndex: 1, + key: "examples", + }, + ], + relativeFilepath: "references.yml", + severity: "error", + }, + { + severity: "error", + relativeFilepath: "references.yml", + message: "Expected example to be a string. Example is: 123", + nodePath: ["types", "MyStringAlias", { key: "examples", arrayIndex: 0 }], + }, + // union.yml { severity: "error", diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/valid-example-type.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/valid-example-type.ts index b2e7c78e1bc..d604b5b58f0 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/valid-example-type.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/valid-example-type.ts @@ -1,4 +1,4 @@ -import { constructFernFileContext, TypeResolverImpl } from "@fern-api/ir-generator"; +import { constructFernFileContext, ExampleResolverImpl, TypeResolverImpl } from "@fern-api/ir-generator"; import { Rule } from "../../Rule"; import { CASINGS_GENERATOR } from "../../utils/casingsGenerator"; import { validateTypeExample } from "./validateTypeExample"; @@ -7,6 +7,7 @@ export const ValidExampleTypeRule: Rule = { name: "valid-example-type", create: ({ workspace }) => { const typeResolver = new TypeResolverImpl(workspace); + const exampleResolver = new ExampleResolverImpl(typeResolver); return { serviceFile: { @@ -21,6 +22,7 @@ export const ValidExampleTypeRule: Rule = { casingsGenerator: CASINGS_GENERATOR, }), typeResolver, + exampleResolver, workspace, }); }, diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/validateAliasExample.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/validateAliasExample.ts index e20696bccb9..0469d5ef6a8 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/validateAliasExample.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/validateAliasExample.ts @@ -1,4 +1,4 @@ -import { FernFileContext, TypeResolver } from "@fern-api/ir-generator"; +import { ExampleResolver, FernFileContext, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; import { RawSchemas } from "@fern-api/yaml-schema"; import { RuleViolation } from "../../Rule"; @@ -9,12 +9,14 @@ export function validateAliasExample({ example, file, typeResolver, + exampleResolver, workspace, }: { rawAlias: string | RawSchemas.AliasSchema; example: RawSchemas.ExampleTypeValueSchema; file: FernFileContext; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; workspace: Workspace; }): RuleViolation[] { return validateTypeReferenceExample({ @@ -22,6 +24,7 @@ export function validateAliasExample({ example, file, typeResolver, + exampleResolver, workspace, }); } diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/validateObjectExample.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/validateObjectExample.ts index a46236f9225..ce2aa4d02b6 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/validateObjectExample.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/validateObjectExample.ts @@ -1,5 +1,5 @@ import { isPlainObject } from "@fern-api/core-utils"; -import { constructFernFileContext, FernFileContext, TypeResolver } from "@fern-api/ir-generator"; +import { constructFernFileContext, ExampleResolver, FernFileContext, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; import { RawSchemas } from "@fern-api/yaml-schema"; import { keyBy } from "lodash-es"; @@ -17,6 +17,7 @@ export function validateObjectExample({ rawObject, file, typeResolver, + exampleResolver, workspace, example, }: { @@ -27,6 +28,7 @@ export function validateObjectExample({ file: FernFileContext; example: RawSchemas.ExampleTypeValueSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; workspace: Workspace; }): RuleViolation[] { if (!isPlainObject(example)) { @@ -92,6 +94,7 @@ export function validateObjectExample({ }), workspace, typeResolver, + exampleResolver, }) ); } diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeExample.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeExample.ts index 9860fd858a0..28d838fa2b0 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeExample.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeExample.ts @@ -1,4 +1,4 @@ -import { FernFileContext, TypeResolver } from "@fern-api/ir-generator"; +import { ExampleResolver, FernFileContext, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; import { RawSchemas, visitRawTypeDeclaration } from "@fern-api/yaml-schema"; import { RuleViolation } from "../../Rule"; @@ -12,6 +12,7 @@ export function validateTypeExample({ typeDeclaration, file, typeResolver, + exampleResolver, example, workspace, }: { @@ -19,6 +20,7 @@ export function validateTypeExample({ typeDeclaration: RawSchemas.TypeDeclarationSchema; file: FernFileContext; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; example: RawSchemas.ExampleTypeValueSchema; workspace: Workspace; }): RuleViolation[] { @@ -28,6 +30,7 @@ export function validateTypeExample({ rawAlias, file, typeResolver, + exampleResolver, example, workspace, }); @@ -46,6 +49,7 @@ export function validateTypeExample({ example, file, typeResolver, + exampleResolver, workspace, }); }, @@ -56,6 +60,7 @@ export function validateTypeExample({ example, file, typeResolver, + exampleResolver, workspace, }); }, diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeReferenceExample.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeReferenceExample.ts index e46f375345f..7d4f2822d8b 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeReferenceExample.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/validateTypeReferenceExample.ts @@ -1,9 +1,8 @@ -import { isPlainObject } from "@fern-api/core-utils"; -import { FernFileContext, TypeResolver } from "@fern-api/ir-generator"; +import { assertNever, isPlainObject } from "@fern-api/core-utils"; +import { ExampleResolver, FernFileContext, ResolvedType, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; -import { RawSchemas, visitRawTypeReference } from "@fern-api/yaml-schema"; +import { EXAMPLE_REFERENCE_PREFIX, RawSchemas, visitRawTypeReference } from "@fern-api/yaml-schema"; import { PrimitiveType } from "@fern-fern/ir-model/types"; -import { isArray } from "lodash-es"; import { RuleViolation } from "../../Rule"; import { getDuplicates } from "../../utils/getDuplicates"; import { getRuleViolationsForMisshapenExample } from "./getRuleViolationsForMisshapenExample"; @@ -20,15 +19,56 @@ export function validateTypeReferenceExample({ rawTypeReference, example, typeResolver, + exampleResolver, file, workspace, }: { rawTypeReference: string; example: RawSchemas.ExampleTypeReferenceSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; workspace: Workspace; }): RuleViolation[] { + if (typeof example === "string" && example.startsWith(EXAMPLE_REFERENCE_PREFIX)) { + // if it's a reference to another example, we just need to compare the + // expected type with the referenced type + const resolvedExpectedType = typeResolver.resolveType({ + type: rawTypeReference, + file, + }); + // invalid reference. will be caught by another rule + if (resolvedExpectedType == null) { + return []; + } + + const parsedExampleReference = exampleResolver.parseExampleReference(example); + + // invalid reference. will be caught by another rule + if (parsedExampleReference == null) { + return []; + } + const resolvedActualType = typeResolver.resolveNamedType({ + referenceToNamedType: parsedExampleReference.rawTypeReference, + file, + }); + // invalid reference. will be caught by another rule + if (resolvedActualType == null) { + return []; + } + + if (areResolvedTypesEquivalent(resolvedExpectedType, resolvedActualType)) { + return []; + } else { + return [ + { + severity: "error", + message: `Expected example to be: ${rawTypeReference}. Example is ${example}.`, + }, + ]; + } + } + return visitRawTypeReference(rawTypeReference, { primitive: (primitiveType) => validatePrimitiveExample({ primitiveType, example }), named: (referenceToNamedType) => { @@ -48,6 +88,7 @@ export function validateTypeReferenceExample({ file: declaration.file, example, typeResolver, + exampleResolver, workspace, }); }, @@ -60,6 +101,7 @@ export function validateTypeReferenceExample({ rawTypeReference: keyType, example: exampleKey, typeResolver, + exampleResolver, file, workspace, }), @@ -67,13 +109,14 @@ export function validateTypeReferenceExample({ rawTypeReference: valueType, example: exampleValue, typeResolver, + exampleResolver, file, workspace, }), ]); }, list: (itemType) => { - if (!isArray(example)) { + if (!Array.isArray(example)) { return getRuleViolationsForMisshapenExample(example, "a list"); } return example.flatMap((exampleItem) => @@ -81,13 +124,14 @@ export function validateTypeReferenceExample({ rawTypeReference: itemType, example: exampleItem, typeResolver, + exampleResolver, file, workspace, }) ); }, set: (itemType) => { - if (!isArray(example)) { + if (!Array.isArray(example)) { return getRuleViolationsForMisshapenExample(example, "a list"); } @@ -108,6 +152,7 @@ export function validateTypeReferenceExample({ rawTypeReference: itemType, example: exampleItem, typeResolver, + exampleResolver, file, workspace, }) @@ -121,6 +166,7 @@ export function validateTypeReferenceExample({ rawTypeReference: itemType, example, typeResolver, + exampleResolver, file, workspace, }); @@ -180,3 +226,45 @@ function createValidator( return getRuleViolationsForMisshapenExample(example, expectedTypeIncludingArticle); }; } + +function areResolvedTypesEquivalent(a: ResolvedType, b: ResolvedType): boolean { + if (a._type === "unknown" || a._type === "void") { + return true; + } + if (a._type === "primitive") { + return b._type === "primitive" && a.primitive === b.primitive; + } + if (a._type === "container") { + if (b._type !== "container") { + return false; + } + switch (a.container._type) { + case "list": + case "set": + case "optional": + return ( + b.container._type === a.container._type && + areResolvedTypesEquivalent(a.container.itemType, b.container.itemType) + ); + case "map": + return ( + b.container._type === a.container._type && + areResolvedTypesEquivalent(a.container.keyType, b.container.keyType) && + areResolvedTypesEquivalent(a.container.valueType, b.container.valueType) + ); + case "literal": + return ( + b.container._type === a.container._type && a.container.literal.string === b.container.literal.string + ); + default: + assertNever(a.container); + } + } + + // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition + if (a._type === "named") { + return b._type === "named" && b.filepath === a.filepath && b.rawName === a.rawName; + } + + assertNever(a); +} diff --git a/packages/cli/yaml/validator/src/rules/valid-example-type/validateUnionExample.ts b/packages/cli/yaml/validator/src/rules/valid-example-type/validateUnionExample.ts index 1d0457f9789..683991c8f0c 100644 --- a/packages/cli/yaml/validator/src/rules/valid-example-type/validateUnionExample.ts +++ b/packages/cli/yaml/validator/src/rules/valid-example-type/validateUnionExample.ts @@ -1,5 +1,5 @@ import { isPlainObject } from "@fern-api/core-utils"; -import { FernFileContext, getUnionDiscriminant, TypeResolver } from "@fern-api/ir-generator"; +import { ExampleResolver, FernFileContext, getUnionDiscriminant, TypeResolver } from "@fern-api/ir-generator"; import { Workspace } from "@fern-api/workspace-loader"; import { isRawObjectDefinition, RawPrimitiveType, RawSchemas } from "@fern-api/yaml-schema"; import { RuleViolation } from "../../Rule"; @@ -12,6 +12,7 @@ export function validateUnionExample({ rawUnion, example, typeResolver, + exampleResolver, file, workspace, }: { @@ -19,6 +20,7 @@ export function validateUnionExample({ rawUnion: RawSchemas.UnionSchema; example: RawSchemas.ExampleTypeValueSchema; typeResolver: TypeResolver; + exampleResolver: ExampleResolver; file: FernFileContext; workspace: Workspace; }): RuleViolation[] { @@ -81,6 +83,7 @@ export function validateUnionExample({ file: resolvedType.file, example: nonDiscriminantPropertyExamples, typeResolver, + exampleResolver, workspace, }); } @@ -109,6 +112,7 @@ export function validateUnionExample({ rawTypeReference: type, example: singlePropertyExample, typeResolver, + exampleResolver, file, workspace, }) diff --git a/packages/cli/yaml/yaml-schema/src/ast/FernServiceFileAstVisitor.ts b/packages/cli/yaml/yaml-schema/src/ast/FernServiceFileAstVisitor.ts index fd401e9804a..5ebb14c8a36 100644 --- a/packages/cli/yaml/yaml-schema/src/ast/FernServiceFileAstVisitor.ts +++ b/packages/cli/yaml/yaml-schema/src/ast/FernServiceFileAstVisitor.ts @@ -22,6 +22,7 @@ export interface FernServiceFileAstNodeTypes { import: { importPath: string; importedAs: string }; typeDeclaration: { typeName: string; declaration: TypeDeclarationSchema }; exampleType: { typeName: string; typeDeclaration: TypeDeclarationSchema; example: ExampleTypeSchema }; + exampleTypeReference: string; typeReference: string; typeName: string; httpService: { serviceName: string; service: HttpServiceSchema }; diff --git a/packages/cli/yaml/yaml-schema/src/ast/visitors/services/visitHttpService.ts b/packages/cli/yaml/yaml-schema/src/ast/visitors/services/visitHttpService.ts index 27c91019f20..54fd880bfa8 100644 --- a/packages/cli/yaml/yaml-schema/src/ast/visitors/services/visitHttpService.ts +++ b/packages/cli/yaml/yaml-schema/src/ast/visitors/services/visitHttpService.ts @@ -1,9 +1,11 @@ import { noop, visitObject } from "@fern-api/core-utils"; +import { RawSchemas } from "../../.."; import { HttpEndpointSchema, HttpHeaderSchema, HttpPathParameterSchema, HttpServiceSchema } from "../../../schemas"; import { isInlineRequestBody } from "../../../utils/isInlineRequestBody"; import { FernServiceFileAstVisitor } from "../../FernServiceFileAstVisitor"; import { NodePath } from "../../NodePath"; import { createDocsVisitor } from "../utils/createDocsVisitor"; +import { visitAllReferencesInExample } from "../utils/visitAllReferencesInExample"; import { visitTypeDeclaration } from "../visitTypeDeclarations"; export async function visitHttpService({ @@ -187,67 +189,137 @@ async function visitEndpoint({ return; } for (const [index, example] of examples.entries()) { - const nodePathForExample: NodePath = [...nodePathForEndpoint, { key: "examples", arrayIndex: index }]; - await visitor.exampleHttpEndpointCall?.( - { - service, - endpoint, - example, - }, - nodePathForExample - ); - await visitor.exampleHeaders?.( - { - service, - endpoint, - examples: example.headers, - }, - [...nodePathForExample, "headers"] - ); - await visitor.examplePathParameters?.( - { - service, - endpoint, - examples: example["path-parameters"], - }, - [...nodePathForExample, "path-parameters"] - ); - await visitor.exampleQueryParameters?.( - { - service, - endpoint, - examples: example["query-parameters"], - }, - [...nodePathForExample, "query-parameters"] - ); - await visitor.exampleRequest?.( - { - service, - endpoint, - example: example.request, - }, - [...nodePathForExample, "request"] - ); - await visitor.exampleResponse?.( - { - service, - endpoint, - example: example.response, - }, - [...nodePathForExample, "response"] - ); - - if (example.response != null) { - const nodePathForResponse = [...nodePathForExample, "response"]; - if (example.response.error != null) { - await visitor.errorReference?.(example.response.error, [...nodePathForResponse, "error"]); - } - } + await visitExampleEndpointCall({ + nodePathForExample: [...nodePathForEndpoint, { key: "examples", arrayIndex: index }], + visitor, + service, + endpoint, + example, + }); } }, }); } +async function visitExampleEndpointCall({ + nodePathForExample, + visitor, + service, + endpoint, + example, +}: { + nodePathForExample: NodePath; + visitor: Partial; + service: RawSchemas.HttpServiceSchema; + endpoint: RawSchemas.HttpEndpointSchema; + example: RawSchemas.ExampleEndpointCallSchema; +}): Promise { + await visitor.exampleHttpEndpointCall?.( + { + service, + endpoint, + example, + }, + nodePathForExample + ); + + const nodePathForHeaders = [...nodePathForExample, "headers"]; + await visitor.exampleHeaders?.( + { + service, + endpoint, + examples: example.headers, + }, + nodePathForHeaders + ); + if (example.headers != null) { + for (const exampleHeader of Object.values(example.headers)) { + await visitAllReferencesInExample({ + example: exampleHeader, + visitor, + nodePath: nodePathForHeaders, + }); + } + } + + const nodePathForPathParameters = [...nodePathForExample, "path-parameters"]; + await visitor.examplePathParameters?.( + { + service, + endpoint, + examples: example["path-parameters"], + }, + nodePathForPathParameters + ); + if (example["path-parameters"] != null) { + for (const examplePathParameter of Object.values(example["path-parameters"])) { + await visitAllReferencesInExample({ + example: examplePathParameter, + visitor, + nodePath: nodePathForPathParameters, + }); + } + } + + const nodePathForQueryParameters = [...nodePathForExample, "query-parameters"]; + await visitor.exampleQueryParameters?.( + { + service, + endpoint, + examples: example["query-parameters"], + }, + nodePathForQueryParameters + ); + if (example["query-parameters"] != null) { + for (const exampleQueryParameter of Object.values(example["query-parameters"])) { + await visitAllReferencesInExample({ + example: exampleQueryParameter, + visitor, + nodePath: nodePathForQueryParameters, + }); + } + } + + const nodePathForRequest = [...nodePathForExample, "request"]; + await visitor.exampleRequest?.( + { + service, + endpoint, + example: example.request, + }, + nodePathForRequest + ); + if (example.request != null) { + await visitAllReferencesInExample({ + example: example.request, + visitor, + nodePath: nodePathForRequest, + }); + } + + const nodePathForResponse = [...nodePathForExample, "response"]; + await visitor.exampleResponse?.( + { + service, + endpoint, + example: example.response, + }, + nodePathForResponse + ); + if (example.response != null) { + if (example.response.body != null) { + await visitAllReferencesInExample({ + example: example.response.body, + visitor, + nodePath: nodePathForResponse, + }); + } + if (example.response.error != null) { + await visitor.errorReference?.(example.response.error, [...nodePathForResponse, "error"]); + } + } +} + async function visitPathParameters({ pathParameters, visitor, diff --git a/packages/cli/yaml/yaml-schema/src/ast/visitors/utils/visitAllReferencesInExample.ts b/packages/cli/yaml/yaml-schema/src/ast/visitors/utils/visitAllReferencesInExample.ts new file mode 100644 index 00000000000..8214da7406c --- /dev/null +++ b/packages/cli/yaml/yaml-schema/src/ast/visitors/utils/visitAllReferencesInExample.ts @@ -0,0 +1,36 @@ +import { isPlainObject } from "@fern-api/core-utils"; +import { EXAMPLE_REFERENCE_PREFIX } from "../../../constants"; +import { FernServiceFileAstVisitor } from "../../FernServiceFileAstVisitor"; +import { NodePath } from "../../NodePath"; + +export async function visitAllReferencesInExample({ + example, + visitor, + nodePath, +}: { + example: unknown; + visitor: Partial; + nodePath: NodePath; +}): Promise { + if (typeof example === "string") { + if (example.startsWith(EXAMPLE_REFERENCE_PREFIX)) { + await visitor.exampleTypeReference?.(example, nodePath); + } + } else if (isPlainObject(example)) { + for (const exampleValue of Object.values(example)) { + await visitAllReferencesInExample({ + example: exampleValue, + visitor, + nodePath, + }); + } + } else if (Array.isArray(example)) { + for (const exampleItem of example) { + await visitAllReferencesInExample({ + example: exampleItem, + visitor, + nodePath, + }); + } + } +} diff --git a/packages/cli/yaml/yaml-schema/src/ast/visitors/visitTypeDeclarations.ts b/packages/cli/yaml/yaml-schema/src/ast/visitors/visitTypeDeclarations.ts index b50f1122265..7c0cc454537 100644 --- a/packages/cli/yaml/yaml-schema/src/ast/visitors/visitTypeDeclarations.ts +++ b/packages/cli/yaml/yaml-schema/src/ast/visitors/visitTypeDeclarations.ts @@ -4,6 +4,7 @@ import { visitRawTypeDeclaration } from "../../utils/visitRawTypeDeclaration"; import { FernServiceFileAstVisitor } from "../FernServiceFileAstVisitor"; import { NodePath } from "../NodePath"; import { createDocsVisitor } from "./utils/createDocsVisitor"; +import { visitAllReferencesInExample } from "./utils/visitAllReferencesInExample"; export async function visitTypeDeclarations({ typeDeclarations, @@ -42,10 +43,13 @@ export async function visitTypeDeclaration({ return; } for (const [arrayIndex, example] of examples.entries()) { - await visitor.exampleType?.({ typeName, typeDeclaration: declaration, example }, [ - ...nodePathForType, - { key: "examples", arrayIndex }, - ]); + const nodePathForExample = [...nodePathForType, { key: "examples", arrayIndex }]; + await visitor.exampleType?.({ typeName, typeDeclaration: declaration, example }, nodePathForExample); + await visitAllReferencesInExample({ + example: example.value, + nodePath: nodePathForExample, + visitor, + }); } }; diff --git a/packages/cli/yaml/yaml-schema/src/constants.ts b/packages/cli/yaml/yaml-schema/src/constants.ts new file mode 100644 index 00000000000..a524a9921a0 --- /dev/null +++ b/packages/cli/yaml/yaml-schema/src/constants.ts @@ -0,0 +1 @@ +export const EXAMPLE_REFERENCE_PREFIX = "$"; diff --git a/packages/cli/yaml/yaml-schema/src/index.ts b/packages/cli/yaml/yaml-schema/src/index.ts index d8a7ed94471..6fd6ac75dc0 100644 --- a/packages/cli/yaml/yaml-schema/src/index.ts +++ b/packages/cli/yaml/yaml-schema/src/index.ts @@ -11,6 +11,7 @@ export { export { type NodePath } from "./ast/NodePath"; export { visitFernRootApiFileYamlAst } from "./ast/visitFernRootApiFileYamlAst"; export { visitFernServiceFileYamlAst } from "./ast/visitFernServiceFileYamlAst"; +export { EXAMPLE_REFERENCE_PREFIX } from "./constants"; export * as RawSchemas from "./schemas"; export * from "./schemas/file-schemas"; export { isInlineRequestBody } from "./utils/isInlineRequestBody"; diff --git a/packages/commons/core-utils/src/index.ts b/packages/commons/core-utils/src/index.ts index 4aee8958660..59226f34f26 100644 --- a/packages/commons/core-utils/src/index.ts +++ b/packages/commons/core-utils/src/index.ts @@ -4,6 +4,7 @@ export { delay } from "./delay/delay"; export { withMinimumTime } from "./delay/withMinimumTime"; export { EMPTY_ARRAY, EMPTY_OBJECT } from "./empty"; export { identity } from "./identity"; +export { isNonNullish } from "./isNonNullish"; export { noop } from "./noop"; export { visitObject, type ObjectPropertiesVisitor } from "./ObjectPropertiesVisitor"; export { entries, type Entries } from "./objects/entries"; diff --git a/packages/commons/core-utils/src/isNonNullish.ts b/packages/commons/core-utils/src/isNonNullish.ts new file mode 100644 index 00000000000..a13ecf5769f --- /dev/null +++ b/packages/commons/core-utils/src/isNonNullish.ts @@ -0,0 +1,3 @@ +export function isNonNullish(x: T | null | undefined): x is T { + return x != null; +} diff --git a/packages/docs/mintlify/definition/services.mdx b/packages/docs/mintlify/definition/endpoints.mdx similarity index 89% rename from packages/docs/mintlify/definition/services.mdx rename to packages/docs/mintlify/definition/endpoints.mdx index dd163114fc3..dd35a83c0c9 100644 --- a/packages/docs/mintlify/definition/services.mdx +++ b/packages/docs/mintlify/definition/endpoints.mdx @@ -1,8 +1,10 @@ --- -title: "Services" -description: "A Service is a collection of related endpoints" +title: "Endpoints" --- +In Fern, you organize related endpoints into a **Service.** This grouping +improves clarity and makes the generated SDKs more idiomatic. + ## Service Definition Each service defines: @@ -295,3 +297,31 @@ errors: UserNotFoundError: status-code: 404 ``` + +#### Referencing examples from types + +To avoid duplication, you can reference examples from types using `$`. + +```yaml +services: + http: + UserService: + base-path: /users + auth: true + endpoints: + getUser: + method: GET + path: /{userId} + path-parameters: + userId: UserId + examples: + - path-parameters: + userId: $UserId.Example1 # <--- + +types: + UserId: + type: integer + examples: + - name: Example1 + value: user-id-123 +``` diff --git a/packages/docs/mintlify/definition/types.mdx b/packages/docs/mintlify/definition/types.mdx index 7bb603626cf..967df146e32 100644 --- a/packages/docs/mintlify/definition/types.mdx +++ b/packages/docs/mintlify/definition/types.mdx @@ -197,7 +197,7 @@ types: docs: A unique identifier for a user type: string examples: - - user-id-123 + - value: user-id-123 ``` ```typescript Generated TypeScript SDK @@ -217,5 +217,28 @@ types: UserId: type: integer examples: - - hello # not an integer + - value: hello # not an integer +``` + +#### Referencing examples from other types + +Just like types, you can compose examples. To reference an example from another +type, use `$`. + +```yaml +types: + UserId: + type: integer + examples: + - name: Example1 + value: user-id-123 + + User: + properties: + id: UserId + name: string + examples: + - value: + id: $UserId.Example1 # <--- + name: Jane Smith ``` diff --git a/packages/docs/mintlify/mint.json b/packages/docs/mintlify/mint.json index a873b640dfe..8dfaddff303 100644 --- a/packages/docs/mintlify/mint.json +++ b/packages/docs/mintlify/mint.json @@ -51,7 +51,7 @@ "pages": [ "definition", "definition/types", - "definition/services", + "definition/endpoints", "definition/errors", "definition/imports", "definition/api-yml" diff --git a/packages/scripts/src/checkReleaseBlockers.ts b/packages/scripts/src/checkReleaseBlockers.ts index c30e776222f..8a40e13087c 100644 --- a/packages/scripts/src/checkReleaseBlockers.ts +++ b/packages/scripts/src/checkReleaseBlockers.ts @@ -3,7 +3,6 @@ import chalk from "chalk"; import { readFile } from "fs/promises"; import yaml from "js-yaml"; -import { isArray } from "lodash-es"; import path from "path"; const FILENAME = "release-blockers.yml"; @@ -34,7 +33,7 @@ export async function checkReleaseBlockers(): Promise { process.exit(1); } - if (!isArray(releaseBlockers)) { + if (!Array.isArray(releaseBlockers)) { console.error(chalk.red(`'release-blockers' is not an array in ${FILENAME}`)); process.exit(1); }