From da8f7cb17427a4a518fecc003737e836fa397274 Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Thu, 5 Sep 2024 12:07:01 -0400 Subject: [PATCH 1/4] fix(go): Format long type examples --- generators/go/Makefile | 6 +-- generators/go/internal/generator/snippet.go | 2 +- generators/go/sdk/versions.yml | 8 ++++ .../examples/.mock/definition/types.yml | 2 + .../src/SeedExamples/Types/ExtendedMovie.cs | 3 ++ .../examples/src/SeedExamples/Types/Movie.cs | 3 ++ .../.mock/definition/types.yml | 2 + .../examples/no-custom-config/reference.md | 1 + .../examples/no-custom-config/snippet.json | 2 +- .../Unit/Serialization/MovieTest.cs | 3 +- .../src/SeedExamples/Service/ServiceClient.cs | 1 + .../SeedExamples/Types/Types/ExtendedMovie.cs | 3 ++ .../src/SeedExamples/Types/Types/Movie.cs | 3 ++ .../readme-config/.mock/definition/types.yml | 2 + .../examples/readme-config/README.md | 1 + .../examples/readme-config/reference.md | 1 + .../examples/readme-config/snippet.json | 2 +- .../Unit/Serialization/MovieTest.cs | 3 +- .../src/SeedExamples/Service/ServiceClient.cs | 1 + .../SeedExamples/Types/Types/ExtendedMovie.cs | 3 ++ .../src/SeedExamples/Types/Types/Movie.cs | 3 ++ .../examples/.mock/definition/types.yml | 2 + .../examples/resources/types/types/movie.py | 2 + .../examples/.mock/definition/types.yml | 2 + seed/go-fiber/examples/types.go | 2 + .../examples/.mock/definition/types.yml | 2 + seed/go-model/examples/types.go | 2 + .../.mock/definition/types.yml | 2 + .../snippet.json | 2 +- .../always-send-required-properties/types.go | 2 + .../.mock/definition/types.yml | 2 + .../examples/no-custom-config/snippet.json | 2 +- .../go-sdk/examples/no-custom-config/types.go | 2 + .../examples/.mock/definition/types.yml | 2 + .../examples/model/types/ExtendedMovie.java | 35 ++++++++++++-- .../com/seed/examples/model/types/IMovie.java | 2 + .../com/seed/examples/model/types/Movie.java | 48 ++++++++++++++++--- .../examples/.mock/definition/types.yml | 2 + seed/java-sdk/examples/snippet-templates.json | 0 seed/java-sdk/examples/snippet.json | 0 .../core/ResponseBodyInputStream.java | 45 +++++++++++++++++ .../examples/core/ResponseBodyReader.java | 44 +++++++++++++++++ .../resources/types/types/ExtendedMovie.java | 36 ++++++++++++-- .../resources/types/types/IMovie.java | 2 + .../examples/resources/types/types/Movie.java | 46 +++++++++++++++--- .../examples/.mock/definition/types.yml | 2 + .../resources/types/types/ExtendedMovie.java | 37 +++++++++++--- .../resources/types/types/IMovie.java | 2 + .../examples/resources/types/types/Movie.java | 37 +++++++++++--- .../examples/.mock/definition/types.yml | 2 + seed/openapi/examples/openapi.yml | 7 +++ .../examples/.mock/definition/types.yml | 2 + seed/postman/examples/collection.json | 10 ++-- .../examples/.mock/definition/types.yml | 2 + .../seed/examples/resources/types/movie.py | 2 + .../.mock/definition/types.yml | 2 + .../examples/client-filename/reference.md | 9 ++++ .../client-filename/snippet-templates.json | 32 +++++++++++++ .../examples/client-filename/snippet.json | 6 +-- .../src/seed/service/client.py | 10 ++++ .../src/seed/types/types/movie.py | 2 + .../client-filename/tests/test_service.py | 4 ++ .../.mock/definition/types.yml | 2 + .../examples/no-custom-config/reference.md | 9 ++++ .../no-custom-config/snippet-templates.json | 32 +++++++++++++ .../examples/no-custom-config/snippet.json | 6 +-- .../src/seed/service/client.py | 10 ++++ .../src/seed/types/types/movie.py | 2 + .../no-custom-config/tests/test_service.py | 4 ++ .../readme/.mock/definition/types.yml | 2 + seed/python-sdk/examples/readme/README.md | 2 + seed/python-sdk/examples/readme/reference.md | 9 ++++ .../examples/readme/snippet-templates.json | 32 +++++++++++++ seed/python-sdk/examples/readme/snippet.json | 6 +-- .../readme/src/seed/service/client.py | 10 ++++ .../readme/src/seed/types/types/movie.py | 2 + .../examples/readme/tests/test_service.py | 4 ++ .../examples/.mock/definition/types.yml | 2 + .../types/types/extended_movie.rb | 12 ++++- .../seed_examples_client/types/types/movie.rb | 12 ++++- .../examples/.mock/definition/types.yml | 2 + .../lib/fern_examples/service/client.rb | 6 ++- .../types/types/extended_movie.rb | 12 ++++- .../lib/fern_examples/types/types/movie.rb | 12 ++++- seed/ruby-sdk/examples/snippet.json | 4 +- .../examples/.mock/definition/types.yml | 2 + .../api/resources/types/types/Movie.ts | 4 +- .../resources/types/types/Movie.ts | 2 + .../.mock/definition/types.yml | 2 + .../examples-with-api-reference/README.md | 1 + .../examples-with-api-reference/reference.md | 1 + .../snippet-templates.json | 16 +++++++ .../examples-with-api-reference/snippet.json | 2 +- .../api/resources/service/client/Client.ts | 3 +- .../src/api/resources/types/types/Movie.ts | 4 +- .../resources/types/types/Movie.ts | 2 + .../.mock/definition/types.yml | 2 + .../retain-original-casing/reference.md | 1 + .../snippet-templates.json | 16 +++++++ .../retain-original-casing/snippet.json | 2 +- .../api/resources/service/client/Client.ts | 3 +- .../src/api/resources/types/types/Movie.ts | 4 +- .../resources/types/types/Movie.ts | 2 + .../fern/apis/examples/definition/types.yml | 2 + 104 files changed, 696 insertions(+), 78 deletions(-) create mode 100644 seed/java-sdk/examples/snippet-templates.json create mode 100644 seed/java-sdk/examples/snippet.json create mode 100644 seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyInputStream.java create mode 100644 seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyReader.java diff --git a/generators/go/Makefile b/generators/go/Makefile index ce2abb82a77..678d102baaf 100644 --- a/generators/go/Makefile +++ b/generators/go/Makefile @@ -1,8 +1,8 @@ .PHONY: build build: - docker build -f ./docker/Dockerfile.model -t fernapi/fern-go-model . - docker build -f ./docker/Dockerfile.sdk -t fernapi/fern-go-sdk . - docker build -f ./docker/Dockerfile.fiber -t fernapi/fern-go-fiber . + docker build -f ./model/Dockerfile -t fernapi/fern-go-model . + docker build -f ./sdk/Dockerfile -t fernapi/fern-go-sdk . + docker build -f ./fiber/Dockerfile -t fernapi/fern-go-fiber . docker tag fernapi/fern-go-sdk fernapi/fern-go-sdk:0.0.0 .PHONY: generate diff --git a/generators/go/internal/generator/snippet.go b/generators/go/internal/generator/snippet.go index 24fbc9fe5ce..9c89eaac689 100644 --- a/generators/go/internal/generator/snippet.go +++ b/generators/go/internal/generator/snippet.go @@ -463,7 +463,7 @@ func (s *SnippetWriter) getSnippetForPrimitive( } case "long": return &ast.BasicLit{ - Value: strconv.FormatInt(exampleTypeReference.Long, 64), + Value: strconv.FormatInt(exampleTypeReference.Long, 10), } case "datetime": return &ast.CallExpr{ diff --git a/generators/go/sdk/versions.yml b/generators/go/sdk/versions.yml index 40316052174..ef4143ff206 100644 --- a/generators/go/sdk/versions.yml +++ b/generators/go/sdk/versions.yml @@ -1,3 +1,11 @@ +- version: 0.23.5 + created_at: '2024-09-05' + changelog_entry: + - type: fix + summary: >- + Fix an issue where `long` type examples (generated as `int64` in Go) were not + successfully converted to their equivalent `string` representation for snippets. + ir_version: 40 - version: 0.23.4 created_at: '2024-08-30' changelog_entry: diff --git a/seed/csharp-model/examples/.mock/definition/types.yml b/seed/csharp-model/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/csharp-model/examples/.mock/definition/types.yml +++ b/seed/csharp-model/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/csharp-model/examples/src/SeedExamples/Types/ExtendedMovie.cs b/seed/csharp-model/examples/src/SeedExamples/Types/ExtendedMovie.cs index 6810a4e20ff..394e9668152 100644 --- a/seed/csharp-model/examples/src/SeedExamples/Types/ExtendedMovie.cs +++ b/seed/csharp-model/examples/src/SeedExamples/Types/ExtendedMovie.cs @@ -40,6 +40,9 @@ public record ExtendedMovie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/csharp-model/examples/src/SeedExamples/Types/Movie.cs b/seed/csharp-model/examples/src/SeedExamples/Types/Movie.cs index c1e8177d705..942cf8a4ff6 100644 --- a/seed/csharp-model/examples/src/SeedExamples/Types/Movie.cs +++ b/seed/csharp-model/examples/src/SeedExamples/Types/Movie.cs @@ -37,6 +37,9 @@ public record Movie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml b/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml +++ b/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/csharp-sdk/examples/no-custom-config/reference.md b/seed/csharp-sdk/examples/no-custom-config/reference.md index 5b1f474aa41..3be9c11370b 100644 --- a/seed/csharp-sdk/examples/no-custom-config/reference.md +++ b/seed/csharp-sdk/examples/no-custom-config/reference.md @@ -316,6 +316,7 @@ await client.Service.CreateMovieAsync( new Dictionary() { { "imdb", 7.6 }, { "rottenTomatoes", 97 } } }, }, + Revenue = 1000000, } ); ``` diff --git a/seed/csharp-sdk/examples/no-custom-config/snippet.json b/seed/csharp-sdk/examples/no-custom-config/snippet.json index 7dbf3ed32a0..da73fad8898 100644 --- a/seed/csharp-sdk/examples/no-custom-config/snippet.json +++ b/seed/csharp-sdk/examples/no-custom-config/snippet.json @@ -94,7 +94,7 @@ }, "snippet": { "type": "typescript", - "client": "using SeedExamples;\n\nvar client = new SeedExamplesClient(\"TOKEN\");\nawait client.Service.CreateMovieAsync(\n new Movie\n {\n Id = \"movie-c06a4ad7\",\n Prequel = \"movie-cv9b914f\",\n Title = \"The Boy and the Heron\",\n From = \"Hayao Miyazaki\",\n Rating = 8,\n Type = \"movie\",\n Tag = \"tag-wf9as23d\",\n Metadata = new Dictionary()\n {\n {\n \"actors\",\n new List() { \"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\" }\n },\n { \"releaseDate\", \"2023-12-08\" },\n {\n \"ratings\",\n new Dictionary() { { \"imdb\", 7.6 }, { \"rottenTomatoes\", 97 } }\n },\n },\n }\n);\n" + "client": "using SeedExamples;\n\nvar client = new SeedExamplesClient(\"TOKEN\");\nawait client.Service.CreateMovieAsync(\n new Movie\n {\n Id = \"movie-c06a4ad7\",\n Prequel = \"movie-cv9b914f\",\n Title = \"The Boy and the Heron\",\n From = \"Hayao Miyazaki\",\n Rating = 8,\n Type = \"movie\",\n Tag = \"tag-wf9as23d\",\n Metadata = new Dictionary()\n {\n {\n \"actors\",\n new List() { \"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\" }\n },\n { \"releaseDate\", \"2023-12-08\" },\n {\n \"ratings\",\n new Dictionary() { { \"imdb\", 7.6 }, { \"rottenTomatoes\", 97 } }\n },\n },\n Revenue = 1000000,\n }\n);\n" } }, { diff --git a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs index 779b0e005b5..ec13e70ba70 100644 --- a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs +++ b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs @@ -36,7 +36,8 @@ public void TestSerialization() ""rottenTomatoes"": 97, ""imdb"": 7.6 } - } + }, + ""revenue"": 1000000 } "; diff --git a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Service/ServiceClient.cs b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Service/ServiceClient.cs index bf57ec178f7..c655a738f33 100644 --- a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Service/ServiceClient.cs +++ b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Service/ServiceClient.cs @@ -81,6 +81,7 @@ public async Task GetMovieAsync( /// new Dictionary() { { "imdb", 7.6 }, { "rottenTomatoes", 97 } } /// }, /// }, + /// Revenue = 1000000, /// } /// ); /// diff --git a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/ExtendedMovie.cs b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/ExtendedMovie.cs index 6810a4e20ff..394e9668152 100644 --- a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/ExtendedMovie.cs +++ b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/ExtendedMovie.cs @@ -40,6 +40,9 @@ public record ExtendedMovie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/Movie.cs b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/Movie.cs index c1e8177d705..942cf8a4ff6 100644 --- a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/Movie.cs +++ b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples/Types/Types/Movie.cs @@ -37,6 +37,9 @@ public record Movie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml b/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml +++ b/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/csharp-sdk/examples/readme-config/README.md b/seed/csharp-sdk/examples/readme-config/README.md index f5cbf3f1ce8..ba8d21b45db 100644 --- a/seed/csharp-sdk/examples/readme-config/README.md +++ b/seed/csharp-sdk/examples/readme-config/README.md @@ -47,6 +47,7 @@ await client.Service.CreateMovieAsync( new Dictionary() { { "imdb", 7.6 }, { "rottenTomatoes", 97 } } }, }, + Revenue = 1000000, } ); ``` diff --git a/seed/csharp-sdk/examples/readme-config/reference.md b/seed/csharp-sdk/examples/readme-config/reference.md index 5b1f474aa41..3be9c11370b 100644 --- a/seed/csharp-sdk/examples/readme-config/reference.md +++ b/seed/csharp-sdk/examples/readme-config/reference.md @@ -316,6 +316,7 @@ await client.Service.CreateMovieAsync( new Dictionary() { { "imdb", 7.6 }, { "rottenTomatoes", 97 } } }, }, + Revenue = 1000000, } ); ``` diff --git a/seed/csharp-sdk/examples/readme-config/snippet.json b/seed/csharp-sdk/examples/readme-config/snippet.json index 7dbf3ed32a0..da73fad8898 100644 --- a/seed/csharp-sdk/examples/readme-config/snippet.json +++ b/seed/csharp-sdk/examples/readme-config/snippet.json @@ -94,7 +94,7 @@ }, "snippet": { "type": "typescript", - "client": "using SeedExamples;\n\nvar client = new SeedExamplesClient(\"TOKEN\");\nawait client.Service.CreateMovieAsync(\n new Movie\n {\n Id = \"movie-c06a4ad7\",\n Prequel = \"movie-cv9b914f\",\n Title = \"The Boy and the Heron\",\n From = \"Hayao Miyazaki\",\n Rating = 8,\n Type = \"movie\",\n Tag = \"tag-wf9as23d\",\n Metadata = new Dictionary()\n {\n {\n \"actors\",\n new List() { \"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\" }\n },\n { \"releaseDate\", \"2023-12-08\" },\n {\n \"ratings\",\n new Dictionary() { { \"imdb\", 7.6 }, { \"rottenTomatoes\", 97 } }\n },\n },\n }\n);\n" + "client": "using SeedExamples;\n\nvar client = new SeedExamplesClient(\"TOKEN\");\nawait client.Service.CreateMovieAsync(\n new Movie\n {\n Id = \"movie-c06a4ad7\",\n Prequel = \"movie-cv9b914f\",\n Title = \"The Boy and the Heron\",\n From = \"Hayao Miyazaki\",\n Rating = 8,\n Type = \"movie\",\n Tag = \"tag-wf9as23d\",\n Metadata = new Dictionary()\n {\n {\n \"actors\",\n new List() { \"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\" }\n },\n { \"releaseDate\", \"2023-12-08\" },\n {\n \"ratings\",\n new Dictionary() { { \"imdb\", 7.6 }, { \"rottenTomatoes\", 97 } }\n },\n },\n Revenue = 1000000,\n }\n);\n" } }, { diff --git a/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs b/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs index 779b0e005b5..ec13e70ba70 100644 --- a/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs +++ b/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/MovieTest.cs @@ -36,7 +36,8 @@ public void TestSerialization() ""rottenTomatoes"": 97, ""imdb"": 7.6 } - } + }, + ""revenue"": 1000000 } "; diff --git a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Service/ServiceClient.cs b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Service/ServiceClient.cs index bf57ec178f7..c655a738f33 100644 --- a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Service/ServiceClient.cs +++ b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Service/ServiceClient.cs @@ -81,6 +81,7 @@ public async Task GetMovieAsync( /// new Dictionary() { { "imdb", 7.6 }, { "rottenTomatoes", 97 } } /// }, /// }, + /// Revenue = 1000000, /// } /// ); /// diff --git a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/ExtendedMovie.cs b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/ExtendedMovie.cs index 6810a4e20ff..394e9668152 100644 --- a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/ExtendedMovie.cs +++ b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/ExtendedMovie.cs @@ -40,6 +40,9 @@ public record ExtendedMovie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/Movie.cs b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/Movie.cs index c1e8177d705..942cf8a4ff6 100644 --- a/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/Movie.cs +++ b/seed/csharp-sdk/examples/readme-config/src/SeedExamples/Types/Types/Movie.cs @@ -37,6 +37,9 @@ public record Movie [JsonPropertyName("metadata")] public object Metadata { get; set; } = new Dictionary(); + [JsonPropertyName("revenue")] + public required long Revenue { get; set; } + public override string ToString() { return JsonUtils.Serialize(this); diff --git a/seed/fastapi/examples/.mock/definition/types.yml b/seed/fastapi/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/fastapi/examples/.mock/definition/types.yml +++ b/seed/fastapi/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/fastapi/examples/resources/types/types/movie.py b/seed/fastapi/examples/resources/types/types/movie.py index 69d804768c1..f6c24a4edfc 100644 --- a/seed/fastapi/examples/resources/types/types/movie.py +++ b/seed/fastapi/examples/resources/types/types/movie.py @@ -28,6 +28,7 @@ class Movie(UniversalBaseModel): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ @@ -44,6 +45,7 @@ class Movie(UniversalBaseModel): tag: Tag book: typing.Optional[str] = None metadata: typing.Dict[str, typing.Optional[typing.Any]] + revenue: int if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict( diff --git a/seed/go-fiber/examples/.mock/definition/types.yml b/seed/go-fiber/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/go-fiber/examples/.mock/definition/types.yml +++ b/seed/go-fiber/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/go-fiber/examples/types.go b/seed/go-fiber/examples/types.go index 1460208a62d..a150071d708 100644 --- a/seed/go-fiber/examples/types.go +++ b/seed/go-fiber/examples/types.go @@ -478,6 +478,7 @@ type ExtendedMovie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` Cast []string `json:"cast,omitempty" url:"cast,omitempty"` type_ string @@ -803,6 +804,7 @@ type Movie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` type_ string extraProperties map[string]interface{} diff --git a/seed/go-model/examples/.mock/definition/types.yml b/seed/go-model/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/go-model/examples/.mock/definition/types.yml +++ b/seed/go-model/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/go-model/examples/types.go b/seed/go-model/examples/types.go index 1460208a62d..a150071d708 100644 --- a/seed/go-model/examples/types.go +++ b/seed/go-model/examples/types.go @@ -478,6 +478,7 @@ type ExtendedMovie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` Cast []string `json:"cast,omitempty" url:"cast,omitempty"` type_ string @@ -803,6 +804,7 @@ type Movie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` type_ string extraProperties map[string]interface{} diff --git a/seed/go-sdk/examples/always-send-required-properties/.mock/definition/types.yml b/seed/go-sdk/examples/always-send-required-properties/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/go-sdk/examples/always-send-required-properties/.mock/definition/types.yml +++ b/seed/go-sdk/examples/always-send-required-properties/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/go-sdk/examples/always-send-required-properties/snippet.json b/seed/go-sdk/examples/always-send-required-properties/snippet.json index 7b091124783..dbcef55f4e0 100644 --- a/seed/go-sdk/examples/always-send-required-properties/snippet.json +++ b/seed/go-sdk/examples/always-send-required-properties/snippet.json @@ -63,7 +63,7 @@ }, "snippet": { "type": "go", - "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/examples/fern\"\n\tfernclient \"github.com/examples/fern/client\"\n\toption \"github.com/examples/fern/option\"\n)\n\nclient := fernclient.NewClient(\n\toption.WithToken(\n\t\t\"\u003cYOUR_AUTH_TOKEN\u003e\",\n\t),\n\toption.WithBaseURL(\n\t\tfern.Environments.Production,\n\t),\n)\nresponse, err := client.Service.CreateMovie(\n\tcontext.TODO(),\n\t\u0026fern.Movie{\n\t\tId: \"movie-c06a4ad7\",\n\t\tPrequel: fern.String(\n\t\t\t\"movie-cv9b914f\",\n\t\t),\n\t\tTitle: \"The Boy and the Heron\",\n\t\tFrom: \"Hayao Miyazaki\",\n\t\tRating: 8,\n\t\tTag: \"tag-wf9as23d\",\n\t\tMetadata: map[string]interface{}{\n\t\t\t\"actors\": []interface{}{\n\t\t\t\t\"Christian Bale\",\n\t\t\t\t\"Florence Pugh\",\n\t\t\t\t\"Willem Dafoe\",\n\t\t\t},\n\t\t\t\"releaseDate\": \"2023-12-08\",\n\t\t\t\"ratings\": map[string]interface{}{\n\t\t\t\t\"imdb\": 7.6,\n\t\t\t\t\"rottenTomatoes\": 97,\n\t\t\t},\n\t\t},\n\t},\n)\n" + "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/examples/fern\"\n\tfernclient \"github.com/examples/fern/client\"\n\toption \"github.com/examples/fern/option\"\n)\n\nclient := fernclient.NewClient(\n\toption.WithToken(\n\t\t\"\u003cYOUR_AUTH_TOKEN\u003e\",\n\t),\n\toption.WithBaseURL(\n\t\tfern.Environments.Production,\n\t),\n)\nresponse, err := client.Service.CreateMovie(\n\tcontext.TODO(),\n\t\u0026fern.Movie{\n\t\tId: \"movie-c06a4ad7\",\n\t\tPrequel: fern.String(\n\t\t\t\"movie-cv9b914f\",\n\t\t),\n\t\tTitle: \"The Boy and the Heron\",\n\t\tFrom: \"Hayao Miyazaki\",\n\t\tRating: 8,\n\t\tTag: \"tag-wf9as23d\",\n\t\tMetadata: map[string]interface{}{\n\t\t\t\"actors\": []interface{}{\n\t\t\t\t\"Christian Bale\",\n\t\t\t\t\"Florence Pugh\",\n\t\t\t\t\"Willem Dafoe\",\n\t\t\t},\n\t\t\t\"releaseDate\": \"2023-12-08\",\n\t\t\t\"ratings\": map[string]interface{}{\n\t\t\t\t\"imdb\": 7.6,\n\t\t\t\t\"rottenTomatoes\": 97,\n\t\t\t},\n\t\t},\n\t\tRevenue: 1000000,\n\t},\n)\n" } }, { diff --git a/seed/go-sdk/examples/always-send-required-properties/types.go b/seed/go-sdk/examples/always-send-required-properties/types.go index 4c9933eea7e..6e60f5f1deb 100644 --- a/seed/go-sdk/examples/always-send-required-properties/types.go +++ b/seed/go-sdk/examples/always-send-required-properties/types.go @@ -520,6 +520,7 @@ type ExtendedMovie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata" url:"metadata"` + Revenue int64 `json:"revenue" url:"revenue"` Cast []string `json:"cast" url:"cast"` type_ string @@ -873,6 +874,7 @@ type Movie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata" url:"metadata"` + Revenue int64 `json:"revenue" url:"revenue"` type_ string extraProperties map[string]interface{} diff --git a/seed/go-sdk/examples/no-custom-config/.mock/definition/types.yml b/seed/go-sdk/examples/no-custom-config/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/go-sdk/examples/no-custom-config/.mock/definition/types.yml +++ b/seed/go-sdk/examples/no-custom-config/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/go-sdk/examples/no-custom-config/snippet.json b/seed/go-sdk/examples/no-custom-config/snippet.json index 7b091124783..dbcef55f4e0 100644 --- a/seed/go-sdk/examples/no-custom-config/snippet.json +++ b/seed/go-sdk/examples/no-custom-config/snippet.json @@ -63,7 +63,7 @@ }, "snippet": { "type": "go", - "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/examples/fern\"\n\tfernclient \"github.com/examples/fern/client\"\n\toption \"github.com/examples/fern/option\"\n)\n\nclient := fernclient.NewClient(\n\toption.WithToken(\n\t\t\"\u003cYOUR_AUTH_TOKEN\u003e\",\n\t),\n\toption.WithBaseURL(\n\t\tfern.Environments.Production,\n\t),\n)\nresponse, err := client.Service.CreateMovie(\n\tcontext.TODO(),\n\t\u0026fern.Movie{\n\t\tId: \"movie-c06a4ad7\",\n\t\tPrequel: fern.String(\n\t\t\t\"movie-cv9b914f\",\n\t\t),\n\t\tTitle: \"The Boy and the Heron\",\n\t\tFrom: \"Hayao Miyazaki\",\n\t\tRating: 8,\n\t\tTag: \"tag-wf9as23d\",\n\t\tMetadata: map[string]interface{}{\n\t\t\t\"actors\": []interface{}{\n\t\t\t\t\"Christian Bale\",\n\t\t\t\t\"Florence Pugh\",\n\t\t\t\t\"Willem Dafoe\",\n\t\t\t},\n\t\t\t\"releaseDate\": \"2023-12-08\",\n\t\t\t\"ratings\": map[string]interface{}{\n\t\t\t\t\"imdb\": 7.6,\n\t\t\t\t\"rottenTomatoes\": 97,\n\t\t\t},\n\t\t},\n\t},\n)\n" + "client": "import (\n\tcontext \"context\"\n\tfern \"github.com/examples/fern\"\n\tfernclient \"github.com/examples/fern/client\"\n\toption \"github.com/examples/fern/option\"\n)\n\nclient := fernclient.NewClient(\n\toption.WithToken(\n\t\t\"\u003cYOUR_AUTH_TOKEN\u003e\",\n\t),\n\toption.WithBaseURL(\n\t\tfern.Environments.Production,\n\t),\n)\nresponse, err := client.Service.CreateMovie(\n\tcontext.TODO(),\n\t\u0026fern.Movie{\n\t\tId: \"movie-c06a4ad7\",\n\t\tPrequel: fern.String(\n\t\t\t\"movie-cv9b914f\",\n\t\t),\n\t\tTitle: \"The Boy and the Heron\",\n\t\tFrom: \"Hayao Miyazaki\",\n\t\tRating: 8,\n\t\tTag: \"tag-wf9as23d\",\n\t\tMetadata: map[string]interface{}{\n\t\t\t\"actors\": []interface{}{\n\t\t\t\t\"Christian Bale\",\n\t\t\t\t\"Florence Pugh\",\n\t\t\t\t\"Willem Dafoe\",\n\t\t\t},\n\t\t\t\"releaseDate\": \"2023-12-08\",\n\t\t\t\"ratings\": map[string]interface{}{\n\t\t\t\t\"imdb\": 7.6,\n\t\t\t\t\"rottenTomatoes\": 97,\n\t\t\t},\n\t\t},\n\t\tRevenue: 1000000,\n\t},\n)\n" } }, { diff --git a/seed/go-sdk/examples/no-custom-config/types.go b/seed/go-sdk/examples/no-custom-config/types.go index c005f1affc5..bfb2b875d83 100644 --- a/seed/go-sdk/examples/no-custom-config/types.go +++ b/seed/go-sdk/examples/no-custom-config/types.go @@ -520,6 +520,7 @@ type ExtendedMovie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` Cast []string `json:"cast,omitempty" url:"cast,omitempty"` type_ string @@ -873,6 +874,7 @@ type Movie struct { Tag commons.Tag `json:"tag" url:"tag"` Book *string `json:"book,omitempty" url:"book,omitempty"` Metadata map[string]interface{} `json:"metadata,omitempty" url:"metadata,omitempty"` + Revenue int64 `json:"revenue" url:"revenue"` type_ string extraProperties map[string]interface{} diff --git a/seed/java-model/examples/.mock/definition/types.yml b/seed/java-model/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/java-model/examples/.mock/definition/types.yml +++ b/seed/java-model/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/ExtendedMovie.java b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/ExtendedMovie.java index 13943a377cf..a170ce05bbf 100644 --- a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/ExtendedMovie.java +++ b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/ExtendedMovie.java @@ -36,6 +36,8 @@ public final class ExtendedMovie implements IMovie { private final Map metadata; + private final long revenue; + private final List cast; private ExtendedMovie( @@ -47,6 +49,7 @@ private ExtendedMovie( String tag, Optional book, Map metadata, + long revenue, List cast) { this.id = id; this.prequel = prequel; @@ -56,6 +59,7 @@ private ExtendedMovie( this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; this.cast = cast; } @@ -116,6 +120,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @JsonProperty("cast") public List getCast() { return cast; @@ -136,6 +146,7 @@ private boolean equalTo(ExtendedMovie other) { && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata) + && revenue == other.revenue && cast.equals(other.cast); } @@ -150,6 +161,7 @@ public int hashCode() { this.tag, this.book, this.metadata, + this.revenue, this.cast); } @@ -181,7 +193,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(String tag); + RevenueStage tag(String tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -209,7 +225,8 @@ public interface _FinalStage { } @JsonIgnoreProperties(ignoreUnknown = true) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder + implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private String id; private String title; @@ -220,6 +237,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private String tag; + private long revenue; + private List cast = new ArrayList<>(); private Map metadata = new LinkedHashMap<>(); @@ -240,6 +259,7 @@ public Builder from(ExtendedMovie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); cast(other.getCast()); return this; } @@ -278,11 +298,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(String tag) { + public RevenueStage tag(String tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage addAllCast(List cast) { this.cast.addAll(cast); @@ -351,7 +378,7 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public ExtendedMovie build() { - return new ExtendedMovie(id, prequel, title, from, rating, tag, book, metadata, cast); + return new ExtendedMovie(id, prequel, title, from, rating, tag, book, metadata, revenue, cast); } } } diff --git a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/IMovie.java b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/IMovie.java index a0671bf736d..4805f13b142 100644 --- a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/IMovie.java +++ b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/IMovie.java @@ -24,4 +24,6 @@ public interface IMovie { Optional getBook(); Map getMetadata(); + + long getRevenue(); } diff --git a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/Movie.java b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/Movie.java index 434673ba277..24bd90fef7e 100644 --- a/seed/java-model/examples/src/main/java/com/seed/examples/model/types/Movie.java +++ b/seed/java-model/examples/src/main/java/com/seed/examples/model/types/Movie.java @@ -34,6 +34,8 @@ public final class Movie implements IMovie { private final Map metadata; + private final long revenue; + private Movie( String id, Optional prequel, @@ -42,7 +44,8 @@ private Movie( double rating, String tag, Optional book, - Map metadata) { + Map metadata, + long revenue) { this.id = id; this.prequel = prequel; this.title = title; @@ -51,6 +54,7 @@ private Movie( this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; } @JsonProperty("id") @@ -110,6 +114,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @java.lang.Override public boolean equals(Object other) { if (this == other) return true; @@ -124,13 +134,22 @@ private boolean equalTo(Movie other) { && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) - && metadata.equals(other.metadata); + && metadata.equals(other.metadata) + && revenue == other.revenue; } @java.lang.Override public int hashCode() { return Objects.hash( - this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata); + this.id, + this.prequel, + this.title, + this.from, + this.rating, + this.tag, + this.book, + this.metadata, + this.revenue); } @java.lang.Override @@ -161,7 +180,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(String tag); + RevenueStage tag(String tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -183,7 +206,8 @@ public interface _FinalStage { } @JsonIgnoreProperties(ignoreUnknown = true) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder + implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private String id; private String title; @@ -194,6 +218,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private String tag; + private long revenue; + private Map metadata = new LinkedHashMap<>(); private Optional book = Optional.empty(); @@ -212,6 +238,7 @@ public Builder from(Movie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); return this; } @@ -249,11 +276,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(String tag) { + public RevenueStage tag(String tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage metadata(String key, Object value) { this.metadata.put(key, value); @@ -302,7 +336,7 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public Movie build() { - return new Movie(id, prequel, title, from, rating, tag, book, metadata); + return new Movie(id, prequel, title, from, rating, tag, book, metadata, revenue); } } } diff --git a/seed/java-sdk/examples/.mock/definition/types.yml b/seed/java-sdk/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/java-sdk/examples/.mock/definition/types.yml +++ b/seed/java-sdk/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/java-sdk/examples/snippet-templates.json b/seed/java-sdk/examples/snippet-templates.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-sdk/examples/snippet.json b/seed/java-sdk/examples/snippet.json new file mode 100644 index 00000000000..e69de29bb2d diff --git a/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyInputStream.java b/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyInputStream.java new file mode 100644 index 00000000000..009848a609e --- /dev/null +++ b/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyInputStream.java @@ -0,0 +1,45 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.examples.core; + +import java.io.FilterInputStream; +import java.io.IOException; +import okhttp3.Response; + +/** + * A custom InputStream that wraps the InputStream from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the stream is closed. + * + * This class extends FilterInputStream and takes an OkHttp Response object as a parameter. + * It retrieves the InputStream from the Response and overrides the close method to close + * both the InputStream and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyInputStream extends FilterInputStream { + private final Response response; + + /** + * Constructs a ResponseBodyInputStream that wraps the InputStream from the given OkHttp + * Response object. + * + * @param response the OkHttp Response object from which the InputStream is retrieved + * @throws IOException if an I/O error occurs while retrieving the InputStream + */ + public ResponseBodyInputStream(Response response) throws IOException { + super(response.body().byteStream()); + this.response = response; + } + + /** + * Closes the InputStream and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the stream is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the stream is closed + } +} diff --git a/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyReader.java b/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyReader.java new file mode 100644 index 00000000000..0da14c2f519 --- /dev/null +++ b/seed/java-sdk/examples/src/main/java/com/seed/examples/core/ResponseBodyReader.java @@ -0,0 +1,44 @@ +/** + * This file was auto-generated by Fern from our API Definition. + */ +package com.seed.examples.core; + +import java.io.FilterReader; +import java.io.IOException; +import okhttp3.Response; + +/** + * A custom Reader that wraps the Reader from the OkHttp Response and ensures that the + * OkHttp Response object is properly closed when the reader is closed. + * + * This class extends FilterReader and takes an OkHttp Response object as a parameter. + * It retrieves the Reader from the Response and overrides the close method to close + * both the Reader and the Response object, ensuring proper resource management and preventing + * premature closure of the underlying HTTP connection. + */ +public class ResponseBodyReader extends FilterReader { + private final Response response; + + /** + * Constructs a ResponseBodyReader that wraps the Reader from the given OkHttp Response object. + * + * @param response the OkHttp Response object from which the Reader is retrieved + * @throws IOException if an I/O error occurs while retrieving the Reader + */ + public ResponseBodyReader(Response response) throws IOException { + super(response.body().charStream()); + this.response = response; + } + + /** + * Closes the Reader and the associated OkHttp Response object. This ensures that the + * underlying HTTP connection is properly closed after the reader is no longer needed. + * + * @throws IOException if an I/O error occurs + */ + @Override + public void close() throws IOException { + super.close(); + response.close(); // Ensure the response is closed when the reader is closed + } +} diff --git a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/ExtendedMovie.java b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/ExtendedMovie.java index 597cbacb2a5..0443d8951cf 100644 --- a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/ExtendedMovie.java +++ b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/ExtendedMovie.java @@ -39,6 +39,8 @@ public final class ExtendedMovie implements IMovie { private final Map metadata; + private final long revenue; + private final List cast; private final Map additionalProperties; @@ -52,6 +54,7 @@ private ExtendedMovie( String tag, Optional book, Map metadata, + long revenue, List cast, Map additionalProperties) { this.id = id; @@ -62,6 +65,7 @@ private ExtendedMovie( this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; this.cast = cast; this.additionalProperties = additionalProperties; } @@ -123,6 +127,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @JsonProperty("cast") public List getCast() { return cast; @@ -148,6 +158,7 @@ private boolean equalTo(ExtendedMovie other) { && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata) + && revenue == other.revenue && cast.equals(other.cast); } @@ -162,6 +173,7 @@ public int hashCode() { this.tag, this.book, this.metadata, + this.revenue, this.cast); } @@ -193,7 +205,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(String tag); + RevenueStage tag(String tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -221,7 +237,8 @@ public interface _FinalStage { } @JsonIgnoreProperties(ignoreUnknown = true) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder + implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private String id; private String title; @@ -232,6 +249,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private String tag; + private long revenue; + private List cast = new ArrayList<>(); private Map metadata = new LinkedHashMap<>(); @@ -255,6 +274,7 @@ public Builder from(ExtendedMovie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); cast(other.getCast()); return this; } @@ -293,11 +313,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(String tag) { + public RevenueStage tag(String tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage addAllCast(List cast) { this.cast.addAll(cast); @@ -366,7 +393,8 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public ExtendedMovie build() { - return new ExtendedMovie(id, prequel, title, from, rating, tag, book, metadata, cast, additionalProperties); + return new ExtendedMovie( + id, prequel, title, from, rating, tag, book, metadata, revenue, cast, additionalProperties); } } } diff --git a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/IMovie.java b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/IMovie.java index 8c39a075313..871a9a2de3f 100644 --- a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/IMovie.java +++ b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/IMovie.java @@ -24,4 +24,6 @@ public interface IMovie { Optional getBook(); Map getMetadata(); + + long getRevenue(); } diff --git a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/Movie.java b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/Movie.java index 0b3c667a34a..a0ec9552e85 100644 --- a/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/Movie.java +++ b/seed/java-sdk/examples/src/main/java/com/seed/examples/resources/types/types/Movie.java @@ -37,6 +37,8 @@ public final class Movie implements IMovie { private final Map metadata; + private final long revenue; + private final Map additionalProperties; private Movie( @@ -48,6 +50,7 @@ private Movie( String tag, Optional book, Map metadata, + long revenue, Map additionalProperties) { this.id = id; this.prequel = prequel; @@ -57,6 +60,7 @@ private Movie( this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; this.additionalProperties = additionalProperties; } @@ -117,6 +121,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @java.lang.Override public boolean equals(Object other) { if (this == other) return true; @@ -136,13 +146,22 @@ private boolean equalTo(Movie other) { && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) - && metadata.equals(other.metadata); + && metadata.equals(other.metadata) + && revenue == other.revenue; } @java.lang.Override public int hashCode() { return Objects.hash( - this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata); + this.id, + this.prequel, + this.title, + this.from, + this.rating, + this.tag, + this.book, + this.metadata, + this.revenue); } @java.lang.Override @@ -173,7 +192,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(String tag); + RevenueStage tag(String tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -195,7 +218,8 @@ public interface _FinalStage { } @JsonIgnoreProperties(ignoreUnknown = true) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder + implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private String id; private String title; @@ -206,6 +230,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private String tag; + private long revenue; + private Map metadata = new LinkedHashMap<>(); private Optional book = Optional.empty(); @@ -227,6 +253,7 @@ public Builder from(Movie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); return this; } @@ -264,11 +291,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(String tag) { + public RevenueStage tag(String tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage metadata(String key, Object value) { this.metadata.put(key, value); @@ -317,7 +351,7 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public Movie build() { - return new Movie(id, prequel, title, from, rating, tag, book, metadata, additionalProperties); + return new Movie(id, prequel, title, from, rating, tag, book, metadata, revenue, additionalProperties); } } } diff --git a/seed/java-spring/examples/.mock/definition/types.yml b/seed/java-spring/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/java-spring/examples/.mock/definition/types.yml +++ b/seed/java-spring/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/java-spring/examples/resources/types/types/ExtendedMovie.java b/seed/java-spring/examples/resources/types/types/ExtendedMovie.java index 30b17d780a0..474de3af74b 100644 --- a/seed/java-spring/examples/resources/types/types/ExtendedMovie.java +++ b/seed/java-spring/examples/resources/types/types/ExtendedMovie.java @@ -42,10 +42,12 @@ public final class ExtendedMovie implements IMovie { private final Map metadata; + private final long revenue; + private final List cast; private ExtendedMovie(MovieId id, Optional prequel, String title, String from, - double rating, Tag tag, Optional book, Map metadata, + double rating, Tag tag, Optional book, Map metadata, long revenue, List cast) { this.id = id; this.prequel = prequel; @@ -55,6 +57,7 @@ private ExtendedMovie(MovieId id, Optional prequel, String title, Strin this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; this.cast = cast; } @@ -115,6 +118,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @JsonProperty("cast") public List getCast() { return cast; @@ -127,12 +136,12 @@ public boolean equals(Object other) { } private boolean equalTo(ExtendedMovie other) { - return id.equals(other.id) && prequel.equals(other.prequel) && title.equals(other.title) && from.equals(other.from) && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata) && cast.equals(other.cast); + return id.equals(other.id) && prequel.equals(other.prequel) && title.equals(other.title) && from.equals(other.from) && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata) && revenue == other.revenue && cast.equals(other.cast); } @java.lang.Override public int hashCode() { - return Objects.hash(this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata, this.cast); + return Objects.hash(this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata, this.revenue, this.cast); } @java.lang.Override @@ -163,7 +172,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(Tag tag); + RevenueStage tag(Tag tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -193,7 +206,7 @@ public interface _FinalStage { @JsonIgnoreProperties( ignoreUnknown = true ) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private MovieId id; private String title; @@ -204,6 +217,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private Tag tag; + private long revenue; + private List cast = new ArrayList<>(); private Map metadata = new LinkedHashMap<>(); @@ -225,6 +240,7 @@ public Builder from(ExtendedMovie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); cast(other.getCast()); return this; } @@ -263,11 +279,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(Tag tag) { + public RevenueStage tag(Tag tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage addAllCast(List cast) { this.cast.addAll(cast); @@ -348,7 +371,7 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public ExtendedMovie build() { - return new ExtendedMovie(id, prequel, title, from, rating, tag, book, metadata, cast); + return new ExtendedMovie(id, prequel, title, from, rating, tag, book, metadata, revenue, cast); } } } diff --git a/seed/java-spring/examples/resources/types/types/IMovie.java b/seed/java-spring/examples/resources/types/types/IMovie.java index 80f50abf1e3..93538c490c5 100644 --- a/seed/java-spring/examples/resources/types/types/IMovie.java +++ b/seed/java-spring/examples/resources/types/types/IMovie.java @@ -28,4 +28,6 @@ public interface IMovie { Optional getBook(); Map getMetadata(); + + long getRevenue(); } diff --git a/seed/java-spring/examples/resources/types/types/Movie.java b/seed/java-spring/examples/resources/types/types/Movie.java index 0ba2eaa1321..ce1bf64584b 100644 --- a/seed/java-spring/examples/resources/types/types/Movie.java +++ b/seed/java-spring/examples/resources/types/types/Movie.java @@ -40,8 +40,10 @@ public final class Movie implements IMovie { private final Map metadata; + private final long revenue; + private Movie(MovieId id, Optional prequel, String title, String from, double rating, - Tag tag, Optional book, Map metadata) { + Tag tag, Optional book, Map metadata, long revenue) { this.id = id; this.prequel = prequel; this.title = title; @@ -50,6 +52,7 @@ private Movie(MovieId id, Optional prequel, String title, String from, this.tag = tag; this.book = book; this.metadata = metadata; + this.revenue = revenue; } @JsonProperty("id") @@ -109,6 +112,12 @@ public Map getMetadata() { return metadata; } + @JsonProperty("revenue") + @java.lang.Override + public long getRevenue() { + return revenue; + } + @java.lang.Override public boolean equals(Object other) { if (this == other) return true; @@ -116,12 +125,12 @@ public boolean equals(Object other) { } private boolean equalTo(Movie other) { - return id.equals(other.id) && prequel.equals(other.prequel) && title.equals(other.title) && from.equals(other.from) && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata); + return id.equals(other.id) && prequel.equals(other.prequel) && title.equals(other.title) && from.equals(other.from) && rating == other.rating && tag.equals(other.tag) && book.equals(other.book) && metadata.equals(other.metadata) && revenue == other.revenue; } @java.lang.Override public int hashCode() { - return Objects.hash(this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata); + return Objects.hash(this.id, this.prequel, this.title, this.from, this.rating, this.tag, this.book, this.metadata, this.revenue); } @java.lang.Override @@ -152,7 +161,11 @@ public interface RatingStage { } public interface TagStage { - _FinalStage tag(Tag tag); + RevenueStage tag(Tag tag); + } + + public interface RevenueStage { + _FinalStage revenue(long revenue); } public interface _FinalStage { @@ -176,7 +189,7 @@ public interface _FinalStage { @JsonIgnoreProperties( ignoreUnknown = true ) - public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, _FinalStage { + public static final class Builder implements IdStage, TitleStage, FromStage, RatingStage, TagStage, RevenueStage, _FinalStage { private MovieId id; private String title; @@ -187,6 +200,8 @@ public static final class Builder implements IdStage, TitleStage, FromStage, Rat private Tag tag; + private long revenue; + private Map metadata = new LinkedHashMap<>(); private Optional book = Optional.empty(); @@ -206,6 +221,7 @@ public Builder from(Movie other) { tag(other.getTag()); book(other.getBook()); metadata(other.getMetadata()); + revenue(other.getRevenue()); return this; } @@ -243,11 +259,18 @@ public TagStage rating(double rating) { @java.lang.Override @JsonSetter("tag") - public _FinalStage tag(Tag tag) { + public RevenueStage tag(Tag tag) { this.tag = tag; return this; } + @java.lang.Override + @JsonSetter("revenue") + public _FinalStage revenue(long revenue) { + this.revenue = revenue; + return this; + } + @java.lang.Override public _FinalStage metadata(String key, Object value) { this.metadata.put(key, value); @@ -305,7 +328,7 @@ public _FinalStage prequel(Optional prequel) { @java.lang.Override public Movie build() { - return new Movie(id, prequel, title, from, rating, tag, book, metadata); + return new Movie(id, prequel, title, from, rating, tag, book, metadata, revenue); } } } diff --git a/seed/openapi/examples/.mock/definition/types.yml b/seed/openapi/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/openapi/examples/.mock/definition/types.yml +++ b/seed/openapi/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/openapi/examples/openapi.yml b/seed/openapi/examples/openapi.yml index fad44a4ebf5..3011460e86a 100644 --- a/seed/openapi/examples/openapi.yml +++ b/seed/openapi/examples/openapi.yml @@ -174,6 +174,7 @@ paths: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 /movie: post: operationId: service_createMovie @@ -215,6 +216,7 @@ paths: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 /metadata: get: operationId: service_getMetadata @@ -431,6 +433,10 @@ components: metadata: type: object additionalProperties: true + revenue: + type: integer + format: int64 + example: 1000000 required: - id - title @@ -439,6 +445,7 @@ components: - type - tag - metadata + - revenue CastMember: title: CastMember oneOf: diff --git a/seed/postman/examples/.mock/definition/types.yml b/seed/postman/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/postman/examples/.mock/definition/types.yml +++ b/seed/postman/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/postman/examples/collection.json b/seed/postman/examples/collection.json index e7fb1e81479..094a61d405e 100644 --- a/seed/postman/examples/collection.json +++ b/seed/postman/examples/collection.json @@ -728,7 +728,7 @@ "body": null }, "description": null, - "body": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n}", + "body": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n \"revenue\": 1000000\n}", "_postman_previewlanguage": "json" }, { @@ -767,7 +767,7 @@ "body": null }, "description": null, - "body": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n}", + "body": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n \"revenue\": 1000000\n}", "_postman_previewlanguage": "json" } ] @@ -799,7 +799,7 @@ "auth": null, "body": { "mode": "raw", - "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n}", + "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n \"revenue\": 1000000\n}", "options": { "raw": { "language": "json" @@ -836,7 +836,7 @@ "auth": null, "body": { "mode": "raw", - "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n}", + "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n \"revenue\": 1000000\n}", "options": { "raw": { "language": "json" @@ -876,7 +876,7 @@ "auth": null, "body": { "mode": "raw", - "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n}", + "raw": "{\n \"id\": \"movie-c06a4ad7\",\n \"prequel\": \"movie-cv9b914f\",\n \"title\": \"The Boy and the Heron\",\n \"from\": \"Hayao Miyazaki\",\n \"rating\": 8,\n \"type\": \"movie\",\n \"tag\": \"tag-wf9as23d\",\n \"metadata\": {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n \"revenue\": 1000000\n}", "options": { "raw": { "language": "json" diff --git a/seed/pydantic/examples/.mock/definition/types.yml b/seed/pydantic/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/pydantic/examples/.mock/definition/types.yml +++ b/seed/pydantic/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/pydantic/examples/src/seed/examples/resources/types/movie.py b/seed/pydantic/examples/src/seed/examples/resources/types/movie.py index 273b5ee2d9c..b10661ac423 100644 --- a/seed/pydantic/examples/src/seed/examples/resources/types/movie.py +++ b/seed/pydantic/examples/src/seed/examples/resources/types/movie.py @@ -28,6 +28,7 @@ class Movie(UniversalBaseModel): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ @@ -44,6 +45,7 @@ class Movie(UniversalBaseModel): tag: Tag book: typing.Optional[str] = None metadata: typing.Dict[str, typing.Optional[typing.Any]] + revenue: int if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow") # type: ignore # Pydantic v2 diff --git a/seed/python-sdk/examples/client-filename/.mock/definition/types.yml b/seed/python-sdk/examples/client-filename/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/python-sdk/examples/client-filename/.mock/definition/types.yml +++ b/seed/python-sdk/examples/client-filename/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/python-sdk/examples/client-filename/reference.md b/seed/python-sdk/examples/client-filename/reference.md index fcc0f28a276..a16bbd9b439 100644 --- a/seed/python-sdk/examples/client-filename/reference.md +++ b/seed/python-sdk/examples/client-filename/reference.md @@ -424,6 +424,7 @@ client.service.create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) ``` @@ -488,6 +489,14 @@ client.service.create_movie(
+**revenue:** `int` + +
+
+ +
+
+ **prequel:** `typing.Optional[MovieId]`
diff --git a/seed/python-sdk/examples/client-filename/snippet-templates.json b/seed/python-sdk/examples/client-filename/snippet-templates.json index a80884b0774..44a9f9938b8 100644 --- a/seed/python-sdk/examples/client-filename/snippet-templates.json +++ b/seed/python-sdk/examples/client-filename/snippet-templates.json @@ -871,6 +871,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", @@ -1064,6 +1080,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", diff --git a/seed/python-sdk/examples/client-filename/snippet.json b/seed/python-sdk/examples/client-filename/snippet.json index 7b7618c8f6d..5f5ec4dcc0c 100644 --- a/seed/python-sdk/examples/client-filename/snippet.json +++ b/seed/python-sdk/examples/client-filename/snippet.json @@ -6,7 +6,7 @@ "type_commons/types:Data": "from seed.commons.types import Data_String\n\nData_String(value=\"data\")\n", "type_file/service:Filename": "\"file.txt\"\n", "type_types:MovieId": "\"movie-c06a4ad7\"\n", - "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", @@ -125,8 +125,8 @@ "identifier_override": "endpoint_service.createMovie" }, "snippet": { - "sync_client": "from seed import SeedExhaustive\nfrom seed.environment import SeedExhaustiveEnvironment\n\nclient = SeedExhaustive(\n token=\"YOUR_TOKEN\",\n environment=SeedExhaustiveEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", - "async_client": "import asyncio\n\nfrom seed import AsyncSeedExhaustive\nfrom seed.environment import SeedExhaustiveEnvironment\n\nclient = AsyncSeedExhaustive(\n token=\"YOUR_TOKEN\",\n environment=SeedExhaustiveEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n )\n\n\nasyncio.run(main())\n", + "sync_client": "from seed import SeedExhaustive\nfrom seed.environment import SeedExhaustiveEnvironment\n\nclient = SeedExhaustive(\n token=\"YOUR_TOKEN\",\n environment=SeedExhaustiveEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", + "async_client": "import asyncio\n\nfrom seed import AsyncSeedExhaustive\nfrom seed.environment import SeedExhaustiveEnvironment\n\nclient = AsyncSeedExhaustive(\n token=\"YOUR_TOKEN\",\n environment=SeedExhaustiveEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n )\n\n\nasyncio.run(main())\n", "type": "python" } }, diff --git a/seed/python-sdk/examples/client-filename/src/seed/service/client.py b/seed/python-sdk/examples/client-filename/src/seed/service/client.py index 3f1065e31d0..0c90270c297 100644 --- a/seed/python-sdk/examples/client-filename/src/seed/service/client.py +++ b/seed/python-sdk/examples/client-filename/src/seed/service/client.py @@ -76,6 +76,7 @@ def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -96,6 +97,8 @@ def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -128,6 +131,7 @@ def create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ _response = self._client_wrapper.httpx_client.request( @@ -142,6 +146,7 @@ def create_movie( "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, @@ -334,6 +339,7 @@ async def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -354,6 +360,8 @@ async def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -391,6 +399,7 @@ async def main() -> None: "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) @@ -408,6 +417,7 @@ async def main() -> None: "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, diff --git a/seed/python-sdk/examples/client-filename/src/seed/types/types/movie.py b/seed/python-sdk/examples/client-filename/src/seed/types/types/movie.py index 1dfd40dae4e..4fba3570898 100644 --- a/seed/python-sdk/examples/client-filename/src/seed/types/types/movie.py +++ b/seed/python-sdk/examples/client-filename/src/seed/types/types/movie.py @@ -28,6 +28,7 @@ class Movie(UniversalBaseModel): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ @@ -44,6 +45,7 @@ class Movie(UniversalBaseModel): tag: Tag book: typing.Optional[str] = None metadata: typing.Dict[str, typing.Optional[typing.Any]] + revenue: int if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/seed/python-sdk/examples/client-filename/tests/test_service.py b/seed/python-sdk/examples/client-filename/tests/test_service.py index 001e6b284b5..999b62c5842 100644 --- a/seed/python-sdk/examples/client-filename/tests/test_service.py +++ b/seed/python-sdk/examples/client-filename/tests/test_service.py @@ -20,6 +20,7 @@ async def test_get_movie(client: SeedExhaustive, async_client: AsyncSeedExhausti "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + "revenue": 1000000, } expected_types: typing.Any = { "id": None, @@ -30,6 +31,7 @@ async def test_get_movie(client: SeedExhaustive, async_client: AsyncSeedExhausti "type": None, "tag": None, "metadata": ("dict", {0: (None, None), 1: (None, None), 2: (None, None)}), + "revenue": None, } response = client.service.get_movie(movie_id="movie-c06a4ad7") validate_response(response, expected_response, expected_types) @@ -53,6 +55,7 @@ async def test_create_movie(client: SeedExhaustive, async_client: AsyncSeedExhau "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(response, expected_response, expected_types) @@ -68,6 +71,7 @@ async def test_create_movie(client: SeedExhaustive, async_client: AsyncSeedExhau "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(async_response, expected_response, expected_types) diff --git a/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml b/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml +++ b/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/python-sdk/examples/no-custom-config/reference.md b/seed/python-sdk/examples/no-custom-config/reference.md index aca45a5c5c4..124f61316a2 100644 --- a/seed/python-sdk/examples/no-custom-config/reference.md +++ b/seed/python-sdk/examples/no-custom-config/reference.md @@ -424,6 +424,7 @@ client.service.create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) ``` @@ -488,6 +489,14 @@ client.service.create_movie(
+**revenue:** `int` + +
+
+ +
+
+ **prequel:** `typing.Optional[MovieId]`
diff --git a/seed/python-sdk/examples/no-custom-config/snippet-templates.json b/seed/python-sdk/examples/no-custom-config/snippet-templates.json index abe6cbdf1e7..5523e67f6f9 100644 --- a/seed/python-sdk/examples/no-custom-config/snippet-templates.json +++ b/seed/python-sdk/examples/no-custom-config/snippet-templates.json @@ -871,6 +871,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", @@ -1064,6 +1080,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", diff --git a/seed/python-sdk/examples/no-custom-config/snippet.json b/seed/python-sdk/examples/no-custom-config/snippet.json index 4dc37c20cc8..593b4005eb4 100644 --- a/seed/python-sdk/examples/no-custom-config/snippet.json +++ b/seed/python-sdk/examples/no-custom-config/snippet.json @@ -6,7 +6,7 @@ "type_commons/types:Data": "from seed.commons.types import Data_String\n\nData_String(value=\"data\")\n", "type_file/service:Filename": "\"file.txt\"\n", "type_types:MovieId": "\"movie-c06a4ad7\"\n", - "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", @@ -125,8 +125,8 @@ "identifier_override": "endpoint_service.createMovie" }, "snippet": { - "sync_client": "from seed import SeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = SeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", - "async_client": "import asyncio\n\nfrom seed import AsyncSeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = AsyncSeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n )\n\n\nasyncio.run(main())\n", + "sync_client": "from seed import SeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = SeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", + "async_client": "import asyncio\n\nfrom seed import AsyncSeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = AsyncSeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n )\n\n\nasyncio.run(main())\n", "type": "python" } }, diff --git a/seed/python-sdk/examples/no-custom-config/src/seed/service/client.py b/seed/python-sdk/examples/no-custom-config/src/seed/service/client.py index db96021bfa8..caa7bacc0e2 100644 --- a/seed/python-sdk/examples/no-custom-config/src/seed/service/client.py +++ b/seed/python-sdk/examples/no-custom-config/src/seed/service/client.py @@ -76,6 +76,7 @@ def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -96,6 +97,8 @@ def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -128,6 +131,7 @@ def create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ _response = self._client_wrapper.httpx_client.request( @@ -142,6 +146,7 @@ def create_movie( "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, @@ -334,6 +339,7 @@ async def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -354,6 +360,8 @@ async def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -391,6 +399,7 @@ async def main() -> None: "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) @@ -408,6 +417,7 @@ async def main() -> None: "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, diff --git a/seed/python-sdk/examples/no-custom-config/src/seed/types/types/movie.py b/seed/python-sdk/examples/no-custom-config/src/seed/types/types/movie.py index 1dfd40dae4e..4fba3570898 100644 --- a/seed/python-sdk/examples/no-custom-config/src/seed/types/types/movie.py +++ b/seed/python-sdk/examples/no-custom-config/src/seed/types/types/movie.py @@ -28,6 +28,7 @@ class Movie(UniversalBaseModel): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ @@ -44,6 +45,7 @@ class Movie(UniversalBaseModel): tag: Tag book: typing.Optional[str] = None metadata: typing.Dict[str, typing.Optional[typing.Any]] + revenue: int if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/seed/python-sdk/examples/no-custom-config/tests/test_service.py b/seed/python-sdk/examples/no-custom-config/tests/test_service.py index c66c5cb884a..010f2bb546a 100644 --- a/seed/python-sdk/examples/no-custom-config/tests/test_service.py +++ b/seed/python-sdk/examples/no-custom-config/tests/test_service.py @@ -20,6 +20,7 @@ async def test_get_movie(client: SeedExamples, async_client: AsyncSeedExamples) "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + "revenue": 1000000, } expected_types: typing.Any = { "id": None, @@ -30,6 +31,7 @@ async def test_get_movie(client: SeedExamples, async_client: AsyncSeedExamples) "type": None, "tag": None, "metadata": ("dict", {0: (None, None), 1: (None, None), 2: (None, None)}), + "revenue": None, } response = client.service.get_movie(movie_id="movie-c06a4ad7") validate_response(response, expected_response, expected_types) @@ -53,6 +55,7 @@ async def test_create_movie(client: SeedExamples, async_client: AsyncSeedExample "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(response, expected_response, expected_types) @@ -68,6 +71,7 @@ async def test_create_movie(client: SeedExamples, async_client: AsyncSeedExample "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(async_response, expected_response, expected_types) diff --git a/seed/python-sdk/examples/readme/.mock/definition/types.yml b/seed/python-sdk/examples/readme/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/python-sdk/examples/readme/.mock/definition/types.yml +++ b/seed/python-sdk/examples/readme/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/python-sdk/examples/readme/README.md b/seed/python-sdk/examples/readme/README.md index 1d59fc8cbb8..f80e7634274 100644 --- a/seed/python-sdk/examples/readme/README.md +++ b/seed/python-sdk/examples/readme/README.md @@ -41,6 +41,7 @@ client.service.create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) ``` @@ -94,6 +95,7 @@ async def main() -> None: "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) diff --git a/seed/python-sdk/examples/readme/reference.md b/seed/python-sdk/examples/readme/reference.md index aca45a5c5c4..124f61316a2 100644 --- a/seed/python-sdk/examples/readme/reference.md +++ b/seed/python-sdk/examples/readme/reference.md @@ -424,6 +424,7 @@ client.service.create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) ``` @@ -488,6 +489,14 @@ client.service.create_movie(
+**revenue:** `int` + +
+
+ +
+
+ **prequel:** `typing.Optional[MovieId]`
diff --git a/seed/python-sdk/examples/readme/snippet-templates.json b/seed/python-sdk/examples/readme/snippet-templates.json index abe6cbdf1e7..5523e67f6f9 100644 --- a/seed/python-sdk/examples/readme/snippet-templates.json +++ b/seed/python-sdk/examples/readme/snippet-templates.json @@ -871,6 +871,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", @@ -1064,6 +1080,22 @@ }, "type": "dict" } + }, + { + "type": "template", + "value": { + "imports": [], + "isOptional": true, + "templateString": "revenue=$FERN_INPUT", + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + } } ], "inputDelimiter": ",\n\t", diff --git a/seed/python-sdk/examples/readme/snippet.json b/seed/python-sdk/examples/readme/snippet.json index 4dc37c20cc8..593b4005eb4 100644 --- a/seed/python-sdk/examples/readme/snippet.json +++ b/seed/python-sdk/examples/readme/snippet.json @@ -6,7 +6,7 @@ "type_commons/types:Data": "from seed.commons.types import Data_String\n\nData_String(value=\"data\")\n", "type_file/service:Filename": "\"file.txt\"\n", "type_types:MovieId": "\"movie-c06a4ad7\"\n", - "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", @@ -125,8 +125,8 @@ "identifier_override": "endpoint_service.createMovie" }, "snippet": { - "sync_client": "from seed import SeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = SeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", - "async_client": "import asyncio\n\nfrom seed import AsyncSeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = AsyncSeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n )\n\n\nasyncio.run(main())\n", + "sync_client": "from seed import SeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = SeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\nclient.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", + "async_client": "import asyncio\n\nfrom seed import AsyncSeedExamples\nfrom seed.environment import SeedExamplesEnvironment\n\nclient = AsyncSeedExamples(\n token=\"YOUR_TOKEN\",\n environment=SeedExamplesEnvironment.PRODUCTION,\n)\n\n\nasync def main() -> None:\n await client.service.create_movie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n )\n\n\nasyncio.run(main())\n", "type": "python" } }, diff --git a/seed/python-sdk/examples/readme/src/seed/service/client.py b/seed/python-sdk/examples/readme/src/seed/service/client.py index db96021bfa8..caa7bacc0e2 100644 --- a/seed/python-sdk/examples/readme/src/seed/service/client.py +++ b/seed/python-sdk/examples/readme/src/seed/service/client.py @@ -76,6 +76,7 @@ def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -96,6 +97,8 @@ def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -128,6 +131,7 @@ def create_movie( "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ _response = self._client_wrapper.httpx_client.request( @@ -142,6 +146,7 @@ def create_movie( "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, @@ -334,6 +339,7 @@ async def create_movie( rating: float, tag: Tag, metadata: typing.Dict[str, typing.Optional[typing.Any]], + revenue: int, prequel: typing.Optional[MovieId] = OMIT, book: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, @@ -354,6 +360,8 @@ async def create_movie( metadata : typing.Dict[str, typing.Optional[typing.Any]] + revenue : int + prequel : typing.Optional[MovieId] book : typing.Optional[str] @@ -391,6 +399,7 @@ async def main() -> None: "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) @@ -408,6 +417,7 @@ async def main() -> None: "tag": tag, "book": book, "metadata": metadata, + "revenue": revenue, "type": "movie", }, request_options=request_options, diff --git a/seed/python-sdk/examples/readme/src/seed/types/types/movie.py b/seed/python-sdk/examples/readme/src/seed/types/types/movie.py index 1dfd40dae4e..4fba3570898 100644 --- a/seed/python-sdk/examples/readme/src/seed/types/types/movie.py +++ b/seed/python-sdk/examples/readme/src/seed/types/types/movie.py @@ -28,6 +28,7 @@ class Movie(UniversalBaseModel): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ @@ -44,6 +45,7 @@ class Movie(UniversalBaseModel): tag: Tag book: typing.Optional[str] = None metadata: typing.Dict[str, typing.Optional[typing.Any]] + revenue: int if IS_PYDANTIC_V2: model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 diff --git a/seed/python-sdk/examples/readme/tests/test_service.py b/seed/python-sdk/examples/readme/tests/test_service.py index c66c5cb884a..010f2bb546a 100644 --- a/seed/python-sdk/examples/readme/tests/test_service.py +++ b/seed/python-sdk/examples/readme/tests/test_service.py @@ -20,6 +20,7 @@ async def test_get_movie(client: SeedExamples, async_client: AsyncSeedExamples) "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + "revenue": 1000000, } expected_types: typing.Any = { "id": None, @@ -30,6 +31,7 @@ async def test_get_movie(client: SeedExamples, async_client: AsyncSeedExamples) "type": None, "tag": None, "metadata": ("dict", {0: (None, None), 1: (None, None), 2: (None, None)}), + "revenue": None, } response = client.service.get_movie(movie_id="movie-c06a4ad7") validate_response(response, expected_response, expected_types) @@ -53,6 +55,7 @@ async def test_create_movie(client: SeedExamples, async_client: AsyncSeedExample "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(response, expected_response, expected_types) @@ -68,6 +71,7 @@ async def test_create_movie(client: SeedExamples, async_client: AsyncSeedExample "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) validate_response(async_response, expected_response, expected_types) diff --git a/seed/ruby-model/examples/.mock/definition/types.yml b/seed/ruby-model/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/ruby-model/examples/.mock/definition/types.yml +++ b/seed/ruby-model/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/ruby-model/examples/lib/seed_examples_client/types/types/extended_movie.rb b/seed/ruby-model/examples/lib/seed_examples_client/types/types/extended_movie.rb index 561f786ebfc..7e50af6ac59 100644 --- a/seed/ruby-model/examples/lib/seed_examples_client/types/types/extended_movie.rb +++ b/seed/ruby-model/examples/lib/seed_examples_client/types/types/extended_movie.rb @@ -26,6 +26,8 @@ class ExtendedMovie attr_reader :book # @return [Hash{String => Object}] attr_reader :metadata + # @return [Long] + attr_reader :revenue # @return [OpenStruct] Additional properties unmapped to the current class definition attr_reader :additional_properties # @return [Object] @@ -44,9 +46,10 @@ class ExtendedMovie # @param tag [String] # @param book [String] # @param metadata [Hash{String => Object}] + # @param revenue [Long] # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition # @return [SeedExamplesClient::Types::ExtendedMovie] - def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMIT, book: OMIT, + def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, revenue:, prequel: OMIT, book: OMIT, additional_properties: nil) @cast = cast @id = id @@ -58,6 +61,7 @@ def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequ @tag = tag @book = book if book != OMIT @metadata = metadata + @revenue = revenue @additional_properties = additional_properties @_field_set = { "cast": cast, @@ -69,7 +73,8 @@ def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequ "type": type, "tag": tag, "book": book, - "metadata": metadata + "metadata": metadata, + "revenue": revenue }.reject do |_k, v| v == OMIT end @@ -92,6 +97,7 @@ def self.from_json(json_object:) tag = parsed_json["tag"] book = parsed_json["book"] metadata = parsed_json["metadata"] + revenue = parsed_json["revenue"] new( cast: cast, id: id, @@ -103,6 +109,7 @@ def self.from_json(json_object:) tag: tag, book: book, metadata: metadata, + revenue: revenue, additional_properties: struct ) end @@ -131,6 +138,7 @@ def self.validate_raw(obj:) obj.tag.is_a?(String) != false || raise("Passed value for field obj.tag is not the expected type, validation failed.") obj.book&.is_a?(String) != false || raise("Passed value for field obj.book is not the expected type, validation failed.") obj.metadata.is_a?(Hash) != false || raise("Passed value for field obj.metadata is not the expected type, validation failed.") + obj.revenue.is_a?(Long) != false || raise("Passed value for field obj.revenue is not the expected type, validation failed.") end end end diff --git a/seed/ruby-model/examples/lib/seed_examples_client/types/types/movie.rb b/seed/ruby-model/examples/lib/seed_examples_client/types/types/movie.rb index e5e95abdd41..29d16a7847c 100644 --- a/seed/ruby-model/examples/lib/seed_examples_client/types/types/movie.rb +++ b/seed/ruby-model/examples/lib/seed_examples_client/types/types/movie.rb @@ -24,6 +24,8 @@ class Movie attr_reader :book # @return [Hash{String => Object}] attr_reader :metadata + # @return [Long] + attr_reader :revenue # @return [OpenStruct] Additional properties unmapped to the current class definition attr_reader :additional_properties # @return [Object] @@ -41,9 +43,10 @@ class Movie # @param tag [String] # @param book [String] # @param metadata [Hash{String => Object}] + # @param revenue [Long] # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition # @return [SeedExamplesClient::Types::Movie] - def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMIT, book: OMIT, + def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, revenue:, prequel: OMIT, book: OMIT, additional_properties: nil) @id = id @prequel = prequel if prequel != OMIT @@ -54,6 +57,7 @@ def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMI @tag = tag @book = book if book != OMIT @metadata = metadata + @revenue = revenue @additional_properties = additional_properties @_field_set = { "id": id, @@ -64,7 +68,8 @@ def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMI "type": type, "tag": tag, "book": book, - "metadata": metadata + "metadata": metadata, + "revenue": revenue }.reject do |_k, v| v == OMIT end @@ -86,6 +91,7 @@ def self.from_json(json_object:) tag = parsed_json["tag"] book = parsed_json["book"] metadata = parsed_json["metadata"] + revenue = parsed_json["revenue"] new( id: id, prequel: prequel, @@ -96,6 +102,7 @@ def self.from_json(json_object:) tag: tag, book: book, metadata: metadata, + revenue: revenue, additional_properties: struct ) end @@ -123,6 +130,7 @@ def self.validate_raw(obj:) obj.tag.is_a?(String) != false || raise("Passed value for field obj.tag is not the expected type, validation failed.") obj.book&.is_a?(String) != false || raise("Passed value for field obj.book is not the expected type, validation failed.") obj.metadata.is_a?(Hash) != false || raise("Passed value for field obj.metadata is not the expected type, validation failed.") + obj.revenue.is_a?(Long) != false || raise("Passed value for field obj.revenue is not the expected type, validation failed.") end end end diff --git a/seed/ruby-sdk/examples/.mock/definition/types.yml b/seed/ruby-sdk/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/ruby-sdk/examples/.mock/definition/types.yml +++ b/seed/ruby-sdk/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/ruby-sdk/examples/lib/fern_examples/service/client.rb b/seed/ruby-sdk/examples/lib/fern_examples/service/client.rb index f28c8aea372..15e0b864385 100644 --- a/seed/ruby-sdk/examples/lib/fern_examples/service/client.rb +++ b/seed/ruby-sdk/examples/lib/fern_examples/service/client.rb @@ -54,11 +54,12 @@ def get_movie(movie_id:, request_options: nil) # * :tag (String) # * :book (String) # * :metadata (Hash{String => Object}) + # * :revenue (Long) # @param request_options [SeedExamplesClient::RequestOptions] # @return [String] # @example # examples = SeedExamplesClient::Client.new(base_url: "https://api.example.com", token: "YOUR_AUTH_TOKEN") - # examples.service.create_movie(request: { id: "movie-c06a4ad7", prequel: "movie-cv9b914f", title: "The Boy and the Heron", from: "Hayao Miyazaki", rating: 8, type: "movie", tag: "tag-wf9as23d", metadata: { "actors": ["Christian Bale","Florence Pugh","Willem Dafoe"], "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes":97,"imdb":7.6} } }) + # examples.service.create_movie(request: { id: "movie-c06a4ad7", prequel: "movie-cv9b914f", title: "The Boy and the Heron", from: "Hayao Miyazaki", rating: 8, type: "movie", tag: "tag-wf9as23d", metadata: { "actors": ["Christian Bale","Florence Pugh","Willem Dafoe"], "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes":97,"imdb":7.6} }, revenue: 1000000 }) def create_movie(request:, request_options: nil) response = @request_client.conn.post do |req| req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil? @@ -182,11 +183,12 @@ def get_movie(movie_id:, request_options: nil) # * :tag (String) # * :book (String) # * :metadata (Hash{String => Object}) + # * :revenue (Long) # @param request_options [SeedExamplesClient::RequestOptions] # @return [String] # @example # examples = SeedExamplesClient::Client.new(base_url: "https://api.example.com", token: "YOUR_AUTH_TOKEN") - # examples.service.create_movie(request: { id: "movie-c06a4ad7", prequel: "movie-cv9b914f", title: "The Boy and the Heron", from: "Hayao Miyazaki", rating: 8, type: "movie", tag: "tag-wf9as23d", metadata: { "actors": ["Christian Bale","Florence Pugh","Willem Dafoe"], "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes":97,"imdb":7.6} } }) + # examples.service.create_movie(request: { id: "movie-c06a4ad7", prequel: "movie-cv9b914f", title: "The Boy and the Heron", from: "Hayao Miyazaki", rating: 8, type: "movie", tag: "tag-wf9as23d", metadata: { "actors": ["Christian Bale","Florence Pugh","Willem Dafoe"], "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes":97,"imdb":7.6} }, revenue: 1000000 }) def create_movie(request:, request_options: nil) Async do response = @request_client.conn.post do |req| diff --git a/seed/ruby-sdk/examples/lib/fern_examples/types/types/extended_movie.rb b/seed/ruby-sdk/examples/lib/fern_examples/types/types/extended_movie.rb index 561f786ebfc..7e50af6ac59 100644 --- a/seed/ruby-sdk/examples/lib/fern_examples/types/types/extended_movie.rb +++ b/seed/ruby-sdk/examples/lib/fern_examples/types/types/extended_movie.rb @@ -26,6 +26,8 @@ class ExtendedMovie attr_reader :book # @return [Hash{String => Object}] attr_reader :metadata + # @return [Long] + attr_reader :revenue # @return [OpenStruct] Additional properties unmapped to the current class definition attr_reader :additional_properties # @return [Object] @@ -44,9 +46,10 @@ class ExtendedMovie # @param tag [String] # @param book [String] # @param metadata [Hash{String => Object}] + # @param revenue [Long] # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition # @return [SeedExamplesClient::Types::ExtendedMovie] - def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMIT, book: OMIT, + def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, revenue:, prequel: OMIT, book: OMIT, additional_properties: nil) @cast = cast @id = id @@ -58,6 +61,7 @@ def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequ @tag = tag @book = book if book != OMIT @metadata = metadata + @revenue = revenue @additional_properties = additional_properties @_field_set = { "cast": cast, @@ -69,7 +73,8 @@ def initialize(cast:, id:, title:, from:, rating:, type:, tag:, metadata:, prequ "type": type, "tag": tag, "book": book, - "metadata": metadata + "metadata": metadata, + "revenue": revenue }.reject do |_k, v| v == OMIT end @@ -92,6 +97,7 @@ def self.from_json(json_object:) tag = parsed_json["tag"] book = parsed_json["book"] metadata = parsed_json["metadata"] + revenue = parsed_json["revenue"] new( cast: cast, id: id, @@ -103,6 +109,7 @@ def self.from_json(json_object:) tag: tag, book: book, metadata: metadata, + revenue: revenue, additional_properties: struct ) end @@ -131,6 +138,7 @@ def self.validate_raw(obj:) obj.tag.is_a?(String) != false || raise("Passed value for field obj.tag is not the expected type, validation failed.") obj.book&.is_a?(String) != false || raise("Passed value for field obj.book is not the expected type, validation failed.") obj.metadata.is_a?(Hash) != false || raise("Passed value for field obj.metadata is not the expected type, validation failed.") + obj.revenue.is_a?(Long) != false || raise("Passed value for field obj.revenue is not the expected type, validation failed.") end end end diff --git a/seed/ruby-sdk/examples/lib/fern_examples/types/types/movie.rb b/seed/ruby-sdk/examples/lib/fern_examples/types/types/movie.rb index e5e95abdd41..29d16a7847c 100644 --- a/seed/ruby-sdk/examples/lib/fern_examples/types/types/movie.rb +++ b/seed/ruby-sdk/examples/lib/fern_examples/types/types/movie.rb @@ -24,6 +24,8 @@ class Movie attr_reader :book # @return [Hash{String => Object}] attr_reader :metadata + # @return [Long] + attr_reader :revenue # @return [OpenStruct] Additional properties unmapped to the current class definition attr_reader :additional_properties # @return [Object] @@ -41,9 +43,10 @@ class Movie # @param tag [String] # @param book [String] # @param metadata [Hash{String => Object}] + # @param revenue [Long] # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition # @return [SeedExamplesClient::Types::Movie] - def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMIT, book: OMIT, + def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, revenue:, prequel: OMIT, book: OMIT, additional_properties: nil) @id = id @prequel = prequel if prequel != OMIT @@ -54,6 +57,7 @@ def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMI @tag = tag @book = book if book != OMIT @metadata = metadata + @revenue = revenue @additional_properties = additional_properties @_field_set = { "id": id, @@ -64,7 +68,8 @@ def initialize(id:, title:, from:, rating:, type:, tag:, metadata:, prequel: OMI "type": type, "tag": tag, "book": book, - "metadata": metadata + "metadata": metadata, + "revenue": revenue }.reject do |_k, v| v == OMIT end @@ -86,6 +91,7 @@ def self.from_json(json_object:) tag = parsed_json["tag"] book = parsed_json["book"] metadata = parsed_json["metadata"] + revenue = parsed_json["revenue"] new( id: id, prequel: prequel, @@ -96,6 +102,7 @@ def self.from_json(json_object:) tag: tag, book: book, metadata: metadata, + revenue: revenue, additional_properties: struct ) end @@ -123,6 +130,7 @@ def self.validate_raw(obj:) obj.tag.is_a?(String) != false || raise("Passed value for field obj.tag is not the expected type, validation failed.") obj.book&.is_a?(String) != false || raise("Passed value for field obj.book is not the expected type, validation failed.") obj.metadata.is_a?(Hash) != false || raise("Passed value for field obj.metadata is not the expected type, validation failed.") + obj.revenue.is_a?(Long) != false || raise("Passed value for field obj.revenue is not the expected type, validation failed.") end end end diff --git a/seed/ruby-sdk/examples/snippet.json b/seed/ruby-sdk/examples/snippet.json index 3fa68182dd7..724d18ce368 100644 --- a/seed/ruby-sdk/examples/snippet.json +++ b/seed/ruby-sdk/examples/snippet.json @@ -194,7 +194,7 @@ "identifierOverride": "endpoint_service.createMovie" }, "snippet": { - "client": "require \"fern_examples\"\n\nexamples = SeedExamplesClient::Client.new(base_url: \"https://api.example.com\", token: \"YOUR_AUTH_TOKEN\")\nexamples.service.create_movie(request: { id: \"movie-c06a4ad7\", prequel: \"movie-cv9b914f\", title: \"The Boy and the Heron\", from: \"Hayao Miyazaki\", rating: 8, type: \"movie\", tag: \"tag-wf9as23d\", metadata: { \"actors\": [\"Christian Bale\",\"Florence Pugh\",\"Willem Dafoe\"], \"releaseDate\": \"2023-12-08\", \"ratings\": {\"rottenTomatoes\":97,\"imdb\":7.6} } })", + "client": "require \"fern_examples\"\n\nexamples = SeedExamplesClient::Client.new(base_url: \"https://api.example.com\", token: \"YOUR_AUTH_TOKEN\")\nexamples.service.create_movie(request: { id: \"movie-c06a4ad7\", prequel: \"movie-cv9b914f\", title: \"The Boy and the Heron\", from: \"Hayao Miyazaki\", rating: 8, type: \"movie\", tag: \"tag-wf9as23d\", metadata: { \"actors\": [\"Christian Bale\",\"Florence Pugh\",\"Willem Dafoe\"], \"releaseDate\": \"2023-12-08\", \"ratings\": {\"rottenTomatoes\":97,\"imdb\":7.6} }, revenue: 1000000 })", "type": "ruby" } }, @@ -238,7 +238,7 @@ "identifierOverride": "endpoint_service.createMovie" }, "snippet": { - "client": "require \"fern_examples\"\n\nexamples = SeedExamplesClient::Client.new(base_url: \"https://api.example.com\", token: \"YOUR_AUTH_TOKEN\")\nexamples.service.create_movie(request: { id: \"movie-c06a4ad7\", prequel: \"movie-cv9b914f\", title: \"The Boy and the Heron\", from: \"Hayao Miyazaki\", rating: 8, type: \"movie\", tag: \"tag-wf9as23d\", metadata: { \"actors\": [\"Christian Bale\",\"Florence Pugh\",\"Willem Dafoe\"], \"releaseDate\": \"2023-12-08\", \"ratings\": {\"rottenTomatoes\":97,\"imdb\":7.6} } })", + "client": "require \"fern_examples\"\n\nexamples = SeedExamplesClient::Client.new(base_url: \"https://api.example.com\", token: \"YOUR_AUTH_TOKEN\")\nexamples.service.create_movie(request: { id: \"movie-c06a4ad7\", prequel: \"movie-cv9b914f\", title: \"The Boy and the Heron\", from: \"Hayao Miyazaki\", rating: 8, type: \"movie\", tag: \"tag-wf9as23d\", metadata: { \"actors\": [\"Christian Bale\",\"Florence Pugh\",\"Willem Dafoe\"], \"releaseDate\": \"2023-12-08\", \"ratings\": {\"rottenTomatoes\":97,\"imdb\":7.6} }, revenue: 1000000 })", "type": "ruby" } }, diff --git a/seed/ts-express/examples/.mock/definition/types.yml b/seed/ts-express/examples/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/ts-express/examples/.mock/definition/types.yml +++ b/seed/ts-express/examples/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/ts-express/examples/api/resources/types/types/Movie.ts b/seed/ts-express/examples/api/resources/types/types/Movie.ts index af9320cdf75..290068f4d3b 100644 --- a/seed/ts-express/examples/api/resources/types/types/Movie.ts +++ b/seed/ts-express/examples/api/resources/types/types/Movie.ts @@ -25,7 +25,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface Movie { @@ -39,4 +40,5 @@ export interface Movie { tag: SeedExamples.commons.Tag; book?: string; metadata: Record; + revenue: number; } diff --git a/seed/ts-express/examples/serialization/resources/types/types/Movie.ts b/seed/ts-express/examples/serialization/resources/types/types/Movie.ts index 9b27b4a1ee8..77596b96e47 100644 --- a/seed/ts-express/examples/serialization/resources/types/types/Movie.ts +++ b/seed/ts-express/examples/serialization/resources/types/types/Movie.ts @@ -17,6 +17,7 @@ export const Movie: core.serialization.ObjectSchema serializers.commons.Tag), book: core.serialization.string().optional(), metadata: core.serialization.record(core.serialization.string(), core.serialization.unknown()), + revenue: core.serialization.number(), }); export declare namespace Movie { @@ -30,5 +31,6 @@ export declare namespace Movie { tag: serializers.commons.Tag.Raw; book?: string | null; metadata: Record; + revenue: number; } } diff --git a/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml b/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml +++ b/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/ts-sdk/examples/examples-with-api-reference/README.md b/seed/ts-sdk/examples/examples-with-api-reference/README.md index 0f69eea38a2..002c6ad5e15 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/README.md +++ b/seed/ts-sdk/examples/examples-with-api-reference/README.md @@ -41,6 +41,7 @@ await client.service.createMovie({ imdb: 7.6, }, }, + revenue: 1000000, }); ``` diff --git a/seed/ts-sdk/examples/examples-with-api-reference/reference.md b/seed/ts-sdk/examples/examples-with-api-reference/reference.md index f567f64c747..63ca28b9df7 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/reference.md +++ b/seed/ts-sdk/examples/examples-with-api-reference/reference.md @@ -374,6 +374,7 @@ await client.service.createMovie({ imdb: 7.6, }, }, + revenue: 1000000, }); ``` diff --git a/seed/ts-sdk/examples/examples-with-api-reference/snippet-templates.json b/seed/ts-sdk/examples/examples-with-api-reference/snippet-templates.json index 9c6013a9dc9..406892d2a99 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/snippet-templates.json +++ b/seed/ts-sdk/examples/examples-with-api-reference/snippet-templates.json @@ -800,6 +800,22 @@ "type": "dict" }, "type": "template" + }, + { + "value": { + "imports": [], + "templateString": "revenue: $FERN_INPUT", + "isOptional": true, + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + }, + "type": "template" } ], "type": "generic" diff --git a/seed/ts-sdk/examples/examples-with-api-reference/snippet.json b/seed/ts-sdk/examples/examples-with-api-reference/snippet.json index 128d2beb83f..f3a3ea52a13 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/snippet.json +++ b/seed/ts-sdk/examples/examples-with-api-reference/snippet.json @@ -88,7 +88,7 @@ }, "snippet": { "type": "typescript", - "client": "import { SeedExamplesEnvironment, SeedExamplesClient } from \"@fern/examples\";\n\nconst client = new SeedExamplesClient({ environment: SeedExamplesEnvironment.Production, token: \"YOUR_TOKEN\" });\nawait client.service.createMovie({\n id: \"movie-c06a4ad7\",\n prequel: \"movie-cv9b914f\",\n title: \"The Boy and the Heron\",\n from: \"Hayao Miyazaki\",\n rating: 8,\n type: \"movie\",\n tag: \"tag-wf9as23d\",\n metadata: {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n});\n" + "client": "import { SeedExamplesEnvironment, SeedExamplesClient } from \"@fern/examples\";\n\nconst client = new SeedExamplesClient({ environment: SeedExamplesEnvironment.Production, token: \"YOUR_TOKEN\" });\nawait client.service.createMovie({\n id: \"movie-c06a4ad7\",\n prequel: \"movie-cv9b914f\",\n title: \"The Boy and the Heron\",\n from: \"Hayao Miyazaki\",\n rating: 8,\n type: \"movie\",\n tag: \"tag-wf9as23d\",\n metadata: {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n revenue: 1000000\n});\n" } }, { diff --git a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/service/client/Client.ts b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/service/client/Client.ts index 5192612b55f..0ddc287491e 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/service/client/Client.ts +++ b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/service/client/Client.ts @@ -115,7 +115,8 @@ export class Service { * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * }) */ public async createMovie( diff --git a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/Movie.ts b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/Movie.ts index af9320cdf75..290068f4d3b 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/Movie.ts +++ b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/Movie.ts @@ -25,7 +25,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface Movie { @@ -39,4 +40,5 @@ export interface Movie { tag: SeedExamples.commons.Tag; book?: string; metadata: Record; + revenue: number; } diff --git a/seed/ts-sdk/examples/examples-with-api-reference/src/serialization/resources/types/types/Movie.ts b/seed/ts-sdk/examples/examples-with-api-reference/src/serialization/resources/types/types/Movie.ts index 297c432cb3f..b80dd66d5a0 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/src/serialization/resources/types/types/Movie.ts +++ b/seed/ts-sdk/examples/examples-with-api-reference/src/serialization/resources/types/types/Movie.ts @@ -19,6 +19,7 @@ export const Movie: core.serialization.ObjectSchema; + revenue: number; } } diff --git a/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml b/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml +++ b/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false diff --git a/seed/ts-sdk/examples/retain-original-casing/reference.md b/seed/ts-sdk/examples/retain-original-casing/reference.md index 15de9f8c65f..90cf8eab407 100644 --- a/seed/ts-sdk/examples/retain-original-casing/reference.md +++ b/seed/ts-sdk/examples/retain-original-casing/reference.md @@ -374,6 +374,7 @@ await client.service.createMovie({ imdb: 7.6, }, }, + revenue: 1000000, }); ``` diff --git a/seed/ts-sdk/examples/retain-original-casing/snippet-templates.json b/seed/ts-sdk/examples/retain-original-casing/snippet-templates.json index 98dbff3a757..02b57fdb50a 100644 --- a/seed/ts-sdk/examples/retain-original-casing/snippet-templates.json +++ b/seed/ts-sdk/examples/retain-original-casing/snippet-templates.json @@ -800,6 +800,22 @@ "type": "dict" }, "type": "template" + }, + { + "value": { + "imports": [], + "templateString": "revenue: $FERN_INPUT", + "isOptional": true, + "templateInputs": [ + { + "location": "BODY", + "path": "revenue", + "type": "payload" + } + ], + "type": "generic" + }, + "type": "template" } ], "type": "generic" diff --git a/seed/ts-sdk/examples/retain-original-casing/snippet.json b/seed/ts-sdk/examples/retain-original-casing/snippet.json index b82de076dab..793378c07dd 100644 --- a/seed/ts-sdk/examples/retain-original-casing/snippet.json +++ b/seed/ts-sdk/examples/retain-original-casing/snippet.json @@ -88,7 +88,7 @@ }, "snippet": { "type": "typescript", - "client": "import { SeedExamplesEnvironment, SeedExamplesClient } from \"@fern/examples\";\n\nconst client = new SeedExamplesClient({ environment: SeedExamplesEnvironment.Production, token: \"YOUR_TOKEN\" });\nawait client.service.createMovie({\n id: \"movie-c06a4ad7\",\n prequel: \"movie-cv9b914f\",\n title: \"The Boy and the Heron\",\n from: \"Hayao Miyazaki\",\n rating: 8,\n type: \"movie\",\n tag: \"tag-wf9as23d\",\n metadata: {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n }\n});\n" + "client": "import { SeedExamplesEnvironment, SeedExamplesClient } from \"@fern/examples\";\n\nconst client = new SeedExamplesClient({ environment: SeedExamplesEnvironment.Production, token: \"YOUR_TOKEN\" });\nawait client.service.createMovie({\n id: \"movie-c06a4ad7\",\n prequel: \"movie-cv9b914f\",\n title: \"The Boy and the Heron\",\n from: \"Hayao Miyazaki\",\n rating: 8,\n type: \"movie\",\n tag: \"tag-wf9as23d\",\n metadata: {\n \"actors\": [\n \"Christian Bale\",\n \"Florence Pugh\",\n \"Willem Dafoe\"\n ],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\n \"rottenTomatoes\": 97,\n \"imdb\": 7.6\n }\n },\n revenue: 1000000\n});\n" } }, { diff --git a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/service/client/Client.ts b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/service/client/Client.ts index 7c84f5f2595..ef75f7dacdb 100644 --- a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/service/client/Client.ts +++ b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/service/client/Client.ts @@ -115,7 +115,8 @@ export class Service { * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * }) */ public async createMovie( diff --git a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/Movie.ts b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/Movie.ts index af9320cdf75..290068f4d3b 100644 --- a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/Movie.ts +++ b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/Movie.ts @@ -25,7 +25,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface Movie { @@ -39,4 +40,5 @@ export interface Movie { tag: SeedExamples.commons.Tag; book?: string; metadata: Record; + revenue: number; } diff --git a/seed/ts-sdk/examples/retain-original-casing/src/serialization/resources/types/types/Movie.ts b/seed/ts-sdk/examples/retain-original-casing/src/serialization/resources/types/types/Movie.ts index 297c432cb3f..b80dd66d5a0 100644 --- a/seed/ts-sdk/examples/retain-original-casing/src/serialization/resources/types/types/Movie.ts +++ b/seed/ts-sdk/examples/retain-original-casing/src/serialization/resources/types/types/Movie.ts @@ -19,6 +19,7 @@ export const Movie: core.serialization.ObjectSchema; + revenue: number; } } diff --git a/test-definitions/fern/apis/examples/definition/types.yml b/test-definitions/fern/apis/examples/definition/types.yml index 88e8b970f26..e8c78043e3b 100644 --- a/test-definitions/fern/apis/examples/definition/types.yml +++ b/test-definitions/fern/apis/examples/definition/types.yml @@ -27,6 +27,7 @@ types: tag: commons.Tag book: optional metadata: map + revenue: long examples: - name: One value: @@ -46,6 +47,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 CastMember: discriminated: false From 883eecf12a4294a4199aa615b8d2bb15766a6ebe Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Thu, 5 Sep 2024 12:39:21 -0400 Subject: [PATCH 2/4] Fix 'fern check' --- test-definitions/fern/apis/examples/definition/types.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/test-definitions/fern/apis/examples/definition/types.yml b/test-definitions/fern/apis/examples/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/test-definitions/fern/apis/examples/definition/types.yml +++ b/test-definitions/fern/apis/examples/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: From 5a4b86dcd2c557186b748b09aa02b2cfb8d24d21 Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Thu, 5 Sep 2024 15:04:56 -0400 Subject: [PATCH 3/4] Update seed snapshots --- .../multi-url-generators-yml.test.ts.snap | 4 ---- .../__test__/__snapshots__/vellum.test.ts.snap | 6 ++++++ .../__snapshots__/convertIrToFdrApi.test.ts.snap | 15 +++++++++++++++ pnpm-lock.yaml | 4 ++++ .../no-custom-config/.mock/definition/types.yml | 1 + .../Unit/Serialization/ExtendedMovieTest.cs | 3 ++- .../readme-config/.mock/definition/types.yml | 1 + .../Unit/Serialization/ExtendedMovieTest.cs | 3 ++- seed/fastapi/examples/.mock/definition/types.yml | 1 + .../resources/types/types/extended_movie.py | 1 + seed/pydantic/examples/.mock/definition/types.yml | 1 + .../examples/resources/types/extended_movie.py | 1 + .../client-filename/.mock/definition/types.yml | 1 + .../examples/client-filename/snippet.json | 2 +- .../src/seed/types/types/extended_movie.py | 1 + .../no-custom-config/.mock/definition/types.yml | 1 + .../examples/no-custom-config/snippet.json | 2 +- .../src/seed/types/types/extended_movie.py | 1 + .../examples/readme/.mock/definition/types.yml | 1 + seed/python-sdk/examples/readme/snippet.json | 2 +- .../readme/src/seed/types/types/extended_movie.py | 1 + .../examples/.mock/definition/types.yml | 1 + .../api/resources/types/types/ExtendedMovie.ts | 3 ++- .../.mock/definition/types.yml | 1 + .../api/resources/types/types/ExtendedMovie.ts | 3 ++- .../.mock/definition/types.yml | 1 + .../api/resources/types/types/ExtendedMovie.ts | 3 ++- 27 files changed, 53 insertions(+), 12 deletions(-) diff --git a/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap b/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap index d25f4d66b79..65fa78fe5b5 100644 --- a/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap +++ b/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap @@ -60,7 +60,6 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > docs 1`] = ` "docs": "Successful response", "type": "Token", }, - "url": "auth", }, "getUserInformation": { "auth": false, @@ -95,7 +94,6 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > docs 1`] = ` "docs": "Successful response", "type": "User", }, - "url": "user", }, "listUsers": { "auth": false, @@ -221,7 +219,6 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > simple 1`] = ` "docs": "Successful response", "type": "Token", }, - "url": "auth", }, "getUserInformation": { "auth": false, @@ -256,7 +253,6 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > simple 1`] = ` "docs": "Successful response", "type": "User", }, - "url": "user", }, "listUsers": { "auth": false, diff --git a/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap b/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap index 8d9ebeea434..9a78dd2030a 100644 --- a/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap +++ b/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap @@ -1318,6 +1318,7 @@ Executes a deployed Workflow and streams back its results.", "server": [ { "audiences": null, + "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -1604,6 +1605,7 @@ Generate a completion using a previously defined deployment. "server": [ { "audiences": null, + "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -1781,6 +1783,7 @@ Generate a stream of completions using a previously defined deployment. "server": [ { "audiences": null, + "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -3443,6 +3446,7 @@ Perform a search against a document index. "server": [ { "audiences": null, + "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -3601,6 +3605,7 @@ Used to submit feedback regarding the quality of previously generated completion "server": [ { "audiences": null, + "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -4279,6 +4284,7 @@ Upload a document to be indexed and used for search. "server": [ { "audiences": null, + "description": null, "name": "Documents", "url": "https://documents.vellum.ai", }, diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/convertIrToFdrApi.test.ts.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/convertIrToFdrApi.test.ts.snap index de97819c01e..23626549329 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/convertIrToFdrApi.test.ts.snap +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/convertIrToFdrApi.test.ts.snap @@ -4978,6 +4978,7 @@ exports[`fdr test definitions > examples 1`] = ` }, "prequel": "movie-cv9b914f", "rating": 8, + "revenue": 1000000, "tag": "tag-wf9as23d", "title": "The Boy and the Heron", "type": "movie", @@ -5001,6 +5002,7 @@ exports[`fdr test definitions > examples 1`] = ` }, "prequel": "movie-cv9b914f", "rating": 8, + "revenue": 1000000, "tag": "tag-wf9as23d", "title": "The Boy and the Heron", "type": "movie", @@ -5100,6 +5102,7 @@ exports[`fdr test definitions > examples 1`] = ` }, "prequel": "movie-cv9b914f", "rating": 8, + "revenue": 1000000, "tag": "tag-wf9as23d", "title": "The Boy and the Heron", "type": "movie", @@ -5123,6 +5126,7 @@ exports[`fdr test definitions > examples 1`] = ` }, "prequel": "movie-cv9b914f", "rating": 8, + "revenue": 1000000, "tag": "tag-wf9as23d", "title": "The Boy and the Heron", "type": "movie", @@ -6533,6 +6537,17 @@ exports[`fdr test definitions > examples 1`] = ` }, }, }, + { + "availability": undefined, + "description": undefined, + "key": "revenue", + "valueType": { + "type": "primitive", + "value": { + "type": "long", + }, + }, + }, ], "type": "object", }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 79fce47f59b..c49be95013e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3102,6 +3102,10 @@ importers: specifier: ^2.0.5 version: 2.0.5(@types/node@18.7.18)(jsdom@20.0.3)(sass@1.72.0)(terser@5.31.5) + packages/cli/cli/dist/dev: {} + + packages/cli/cli/dist/prod: {} + packages/cli/configuration: dependencies: '@fern-api/core-utils': diff --git a/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml b/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml +++ b/seed/csharp-sdk/examples/no-custom-config/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs index 568a4664c99..ead2269dd92 100644 --- a/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs +++ b/seed/csharp-sdk/examples/no-custom-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs @@ -37,7 +37,8 @@ public void TestSerialization() ""rottenTomatoes"": 97, ""imdb"": 7.6 } - } + }, + ""revenue"": 1000000 } "; diff --git a/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml b/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml +++ b/seed/csharp-sdk/examples/readme-config/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs b/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs index 568a4664c99..ead2269dd92 100644 --- a/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs +++ b/seed/csharp-sdk/examples/readme-config/src/SeedExamples.Test/Unit/Serialization/ExtendedMovieTest.cs @@ -37,7 +37,8 @@ public void TestSerialization() ""rottenTomatoes"": 97, ""imdb"": 7.6 } - } + }, + ""revenue"": 1000000 } "; diff --git a/seed/fastapi/examples/.mock/definition/types.yml b/seed/fastapi/examples/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/fastapi/examples/.mock/definition/types.yml +++ b/seed/fastapi/examples/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/fastapi/examples/resources/types/types/extended_movie.py b/seed/fastapi/examples/resources/types/types/extended_movie.py index 413a5b39bbd..968102ce529 100644 --- a/seed/fastapi/examples/resources/types/types/extended_movie.py +++ b/seed/fastapi/examples/resources/types/types/extended_movie.py @@ -24,6 +24,7 @@ class ExtendedMovie(Movie): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ diff --git a/seed/pydantic/examples/.mock/definition/types.yml b/seed/pydantic/examples/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/pydantic/examples/.mock/definition/types.yml +++ b/seed/pydantic/examples/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/pydantic/examples/src/seed/examples/resources/types/extended_movie.py b/seed/pydantic/examples/src/seed/examples/resources/types/extended_movie.py index 83c02deb9cd..d270932a554 100644 --- a/seed/pydantic/examples/src/seed/examples/resources/types/extended_movie.py +++ b/seed/pydantic/examples/src/seed/examples/resources/types/extended_movie.py @@ -24,6 +24,7 @@ class ExtendedMovie(Movie): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ diff --git a/seed/python-sdk/examples/client-filename/.mock/definition/types.yml b/seed/python-sdk/examples/client-filename/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/python-sdk/examples/client-filename/.mock/definition/types.yml +++ b/seed/python-sdk/examples/client-filename/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/python-sdk/examples/client-filename/snippet.json b/seed/python-sdk/examples/client-filename/snippet.json index 5f5ec4dcc0c..83a775fa837 100644 --- a/seed/python-sdk/examples/client-filename/snippet.json +++ b/seed/python-sdk/examples/client-filename/snippet.json @@ -9,7 +9,7 @@ "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", - "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:Moment": "import datetime\nimport uuid\n\nfrom seed.types import Moment\n\nMoment(\n id=uuid.UUID(\n \"656f12d6-f592-444c-a1d3-a3cfd46d5b39\",\n ),\n date=datetime.date.fromisoformat(\n \"1994-01-01\",\n ),\n datetime=datetime.datetime.fromisoformat(\n \"1994-01-01 01:01:01+00:00\",\n ),\n)\n", "type_types:File": "from seed.types import File\n\nFile(\n name=\"file.txt\",\n contents=\"...\",\n)\n", "type_types:Directory": "from seed.types import Directory, File\n\nDirectory(\n name=\"root\",\n files=[\n File(\n name=\"file.txt\",\n contents=\"...\",\n )\n ],\n directories=[\n Directory(\n name=\"tmp\",\n files=[\n File(\n name=\"another_file.txt\",\n contents=\"...\",\n )\n ],\n )\n ],\n)\n", diff --git a/seed/python-sdk/examples/client-filename/src/seed/types/types/extended_movie.py b/seed/python-sdk/examples/client-filename/src/seed/types/types/extended_movie.py index 5ab0eba720a..368acce08e3 100644 --- a/seed/python-sdk/examples/client-filename/src/seed/types/types/extended_movie.py +++ b/seed/python-sdk/examples/client-filename/src/seed/types/types/extended_movie.py @@ -24,6 +24,7 @@ class ExtendedMovie(Movie): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ diff --git a/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml b/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml +++ b/seed/python-sdk/examples/no-custom-config/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/python-sdk/examples/no-custom-config/snippet.json b/seed/python-sdk/examples/no-custom-config/snippet.json index 593b4005eb4..43b6164d0ac 100644 --- a/seed/python-sdk/examples/no-custom-config/snippet.json +++ b/seed/python-sdk/examples/no-custom-config/snippet.json @@ -9,7 +9,7 @@ "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", - "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:Moment": "import datetime\nimport uuid\n\nfrom seed.types import Moment\n\nMoment(\n id=uuid.UUID(\n \"656f12d6-f592-444c-a1d3-a3cfd46d5b39\",\n ),\n date=datetime.date.fromisoformat(\n \"1994-01-01\",\n ),\n datetime=datetime.datetime.fromisoformat(\n \"1994-01-01 01:01:01+00:00\",\n ),\n)\n", "type_types:File": "from seed.types import File\n\nFile(\n name=\"file.txt\",\n contents=\"...\",\n)\n", "type_types:Directory": "from seed.types import Directory, File\n\nDirectory(\n name=\"root\",\n files=[\n File(\n name=\"file.txt\",\n contents=\"...\",\n )\n ],\n directories=[\n Directory(\n name=\"tmp\",\n files=[\n File(\n name=\"another_file.txt\",\n contents=\"...\",\n )\n ],\n )\n ],\n)\n", diff --git a/seed/python-sdk/examples/no-custom-config/src/seed/types/types/extended_movie.py b/seed/python-sdk/examples/no-custom-config/src/seed/types/types/extended_movie.py index 5ab0eba720a..368acce08e3 100644 --- a/seed/python-sdk/examples/no-custom-config/src/seed/types/types/extended_movie.py +++ b/seed/python-sdk/examples/no-custom-config/src/seed/types/types/extended_movie.py @@ -24,6 +24,7 @@ class ExtendedMovie(Movie): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ diff --git a/seed/python-sdk/examples/readme/.mock/definition/types.yml b/seed/python-sdk/examples/readme/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/python-sdk/examples/readme/.mock/definition/types.yml +++ b/seed/python-sdk/examples/readme/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/python-sdk/examples/readme/snippet.json b/seed/python-sdk/examples/readme/snippet.json index 593b4005eb4..43b6164d0ac 100644 --- a/seed/python-sdk/examples/readme/snippet.json +++ b/seed/python-sdk/examples/readme/snippet.json @@ -9,7 +9,7 @@ "type_types:Movie": "from seed.types import Movie\n\nMovie(\n id=\"movie-c06a4ad7\",\n prequel=\"movie-cv9b914f\",\n title=\"The Boy and the Heron\",\n from_=\"Hayao Miyazaki\",\n rating=8.0,\n tag=\"tag-wf9as23d\",\n metadata={\n \"actors\": [\"Christian Bale\", \"Florence Pugh\", \"Willem Dafoe\"],\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:CastMember": "from seed.types import Actor\n\nActor(\n id=\"actor_123\",\n name=\"Brad Pitt\",\n)\n", "type_types:Actress": "from seed.types import Actress\n\nActress(\n name=\"Jennifer Lawrence\",\n id=\"actor_456\",\n)\n", - "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n)\n", + "type_types:ExtendedMovie": "from seed.types import ExtendedMovie\n\nExtendedMovie(\n id=\"movie-sda231x\",\n title=\"Pulp Fiction\",\n from_=\"Quentin Tarantino\",\n rating=8.5,\n tag=\"tag-12efs9dv\",\n cast=[\"John Travolta\", \"Samuel L. Jackson\", \"Uma Thurman\", \"Bruce Willis\"],\n metadata={\n \"academyAward\": true,\n \"releaseDate\": \"2023-12-08\",\n \"ratings\": {\"rottenTomatoes\": 97, \"imdb\": 7.6},\n },\n revenue=1000000,\n)\n", "type_types:Moment": "import datetime\nimport uuid\n\nfrom seed.types import Moment\n\nMoment(\n id=uuid.UUID(\n \"656f12d6-f592-444c-a1d3-a3cfd46d5b39\",\n ),\n date=datetime.date.fromisoformat(\n \"1994-01-01\",\n ),\n datetime=datetime.datetime.fromisoformat(\n \"1994-01-01 01:01:01+00:00\",\n ),\n)\n", "type_types:File": "from seed.types import File\n\nFile(\n name=\"file.txt\",\n contents=\"...\",\n)\n", "type_types:Directory": "from seed.types import Directory, File\n\nDirectory(\n name=\"root\",\n files=[\n File(\n name=\"file.txt\",\n contents=\"...\",\n )\n ],\n directories=[\n Directory(\n name=\"tmp\",\n files=[\n File(\n name=\"another_file.txt\",\n contents=\"...\",\n )\n ],\n )\n ],\n)\n", diff --git a/seed/python-sdk/examples/readme/src/seed/types/types/extended_movie.py b/seed/python-sdk/examples/readme/src/seed/types/types/extended_movie.py index 5ab0eba720a..368acce08e3 100644 --- a/seed/python-sdk/examples/readme/src/seed/types/types/extended_movie.py +++ b/seed/python-sdk/examples/readme/src/seed/types/types/extended_movie.py @@ -24,6 +24,7 @@ class ExtendedMovie(Movie): "releaseDate": "2023-12-08", "ratings": {"rottenTomatoes": 97, "imdb": 7.6}, }, + revenue=1000000, ) """ diff --git a/seed/ts-express/examples/.mock/definition/types.yml b/seed/ts-express/examples/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/ts-express/examples/.mock/definition/types.yml +++ b/seed/ts-express/examples/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/ts-express/examples/api/resources/types/types/ExtendedMovie.ts b/seed/ts-express/examples/api/resources/types/types/ExtendedMovie.ts index 8a5389595be..30cf16d5157 100644 --- a/seed/ts-express/examples/api/resources/types/types/ExtendedMovie.ts +++ b/seed/ts-express/examples/api/resources/types/types/ExtendedMovie.ts @@ -21,7 +21,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface ExtendedMovie extends SeedExamples.Movie { diff --git a/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml b/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml +++ b/seed/ts-sdk/examples/examples-with-api-reference/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/ExtendedMovie.ts b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/ExtendedMovie.ts index 8a5389595be..30cf16d5157 100644 --- a/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/ExtendedMovie.ts +++ b/seed/ts-sdk/examples/examples-with-api-reference/src/api/resources/types/types/ExtendedMovie.ts @@ -21,7 +21,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface ExtendedMovie extends SeedExamples.Movie { diff --git a/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml b/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml index e8c78043e3b..cc1a9b845ba 100644 --- a/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml +++ b/seed/ts-sdk/examples/retain-original-casing/.mock/definition/types.yml @@ -106,6 +106,7 @@ types: ratings: rottenTomatoes: 97 imdb: 7.6 + revenue: 1000000 Moment: properties: diff --git a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/ExtendedMovie.ts b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/ExtendedMovie.ts index 8a5389595be..30cf16d5157 100644 --- a/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/ExtendedMovie.ts +++ b/seed/ts-sdk/examples/retain-original-casing/src/api/resources/types/types/ExtendedMovie.ts @@ -21,7 +21,8 @@ import * as SeedExamples from "../../../index"; * "rottenTomatoes": 97, * "imdb": 7.6 * } - * } + * }, + * revenue: 1000000 * } */ export interface ExtendedMovie extends SeedExamples.Movie { From 22bda7bf4d1d721540623c8d70a631af3257bc32 Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Thu, 5 Sep 2024 15:28:22 -0400 Subject: [PATCH 4/4] Update snapshots --- .../__test__/test-definitions/examples.json | 752 +++++++++++++++++- .../multi-url-generators-yml.test.ts.snap | 4 + .../__snapshots__/vellum.test.ts.snap | 6 - 3 files changed, 713 insertions(+), 49 deletions(-) diff --git a/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json b/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json index 30c81c74249..a9b03de56c6 100644 --- a/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json +++ b/packages/cli/generation/ir-generator/src/__test__/test-definitions/examples.json @@ -3961,6 +3961,39 @@ }, "availability": null, "docs": null + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "valueType": { + "_type": "primitive", + "primitive": { + "v1": "LONG", + "v2": null + } + }, + "availability": null, + "docs": null } ], "extra-properties": false, @@ -5246,6 +5279,105 @@ }, "typeId": "type_types:Movie" } + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + }, + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "typeId": "type_types:Movie" + } } ] }, @@ -5268,7 +5400,8 @@ "rottenTomatoes": 97, "imdb": 7.6 } - } + }, + "revenue": 1000000 }, "docs": null } @@ -7654,6 +7787,39 @@ }, "availability": null, "docs": null + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "valueType": { + "_type": "primitive", + "primitive": { + "v1": "LONG", + "v2": null + } + }, + "availability": null, + "docs": null } ] }, @@ -8820,6 +8986,105 @@ }, "typeId": "type_types:Movie" } + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + }, + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "typeId": "type_types:Movie" + } } ] }, @@ -8843,7 +9108,8 @@ "rottenTomatoes": 97, "imdb": 7.6 } - } + }, + "revenue": 1000000 }, "docs": null } @@ -25251,42 +25517,142 @@ } } } - } - ] - } - }, - "jsonExample": { - "id": "movie-c06a4ad7", - "prequel": "movie-cv9b914f", - "title": "The Boy and the Heron", - "from": "Hayao Miyazaki", - "rating": 8, - "type": "movie", - "tag": "tag-wf9as23d", - "metadata": { - "actors": [ - "Christian Bale", - "Florence Pugh", - "Willem Dafoe" - ], - "releaseDate": "2023-12-08", - "ratings": { - "rottenTomatoes": 97, - "imdb": 7.6 - } - } - } - } - } - }, - "docs": null - }, - "codeSamples": null - } - ], - "autogeneratedExamples": [ - { - "example": { + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "typeId": "type_types:Movie", + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + } + } + } + ] + } + }, + "jsonExample": { + "id": "movie-c06a4ad7", + "prequel": "movie-cv9b914f", + "title": "The Boy and the Heron", + "from": "Hayao Miyazaki", + "rating": 8, + "type": "movie", + "tag": "tag-wf9as23d", + "metadata": { + "actors": [ + "Christian Bale", + "Florence Pugh", + "Willem Dafoe" + ], + "releaseDate": "2023-12-08", + "ratings": { + "rottenTomatoes": 97, + "imdb": 7.6 + } + }, + "revenue": 1000000 + } + } + } + }, + "docs": null + }, + "codeSamples": null + } + ], + "autogeneratedExamples": [ + { + "example": { "url": "/movie/movie-c06a4ad7", "rootPathParameters": [], "servicePathParameters": [], @@ -26726,6 +27092,105 @@ } } } + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "typeId": "type_types:Movie", + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + } + } } ] } @@ -26749,12 +27214,13 @@ "rottenTomatoes": 97, "imdb": 7.6 } - } + }, + "revenue": 1000000 } } } }, - "id": "42eb658f5996f846dace6ba51552eb6fdae09e9e", + "id": "5344c28b65585253cd86636676e7e2db572db68c", "docs": null } } @@ -28382,6 +28848,105 @@ } } } + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "typeId": "type_types:Movie", + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + } + } } ] } @@ -28405,7 +28970,8 @@ "rottenTomatoes": 97, "imdb": 7.6 } - } + }, + "revenue": 1000000 } }, "response": { @@ -29834,6 +30400,105 @@ } } } + }, + { + "name": { + "name": { + "originalName": "revenue", + "camelCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "snakeCase": { + "unsafeName": "revenue", + "safeName": "revenue" + }, + "screamingSnakeCase": { + "unsafeName": "REVENUE", + "safeName": "REVENUE" + }, + "pascalCase": { + "unsafeName": "Revenue", + "safeName": "Revenue" + } + }, + "wireValue": "revenue" + }, + "value": { + "shape": { + "type": "primitive", + "primitive": { + "type": "long", + "long": 1000000 + } + }, + "jsonExample": 1000000 + }, + "originalTypeDeclaration": { + "typeId": "type_types:Movie", + "fernFilepath": { + "allParts": [ + { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + ], + "packagePath": [], + "file": { + "originalName": "types", + "camelCase": { + "unsafeName": "types", + "safeName": "types" + }, + "snakeCase": { + "unsafeName": "types", + "safeName": "types" + }, + "screamingSnakeCase": { + "unsafeName": "TYPES", + "safeName": "TYPES" + }, + "pascalCase": { + "unsafeName": "Types", + "safeName": "Types" + } + } + }, + "name": { + "originalName": "Movie", + "camelCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "snakeCase": { + "unsafeName": "movie", + "safeName": "movie" + }, + "screamingSnakeCase": { + "unsafeName": "MOVIE", + "safeName": "MOVIE" + }, + "pascalCase": { + "unsafeName": "Movie", + "safeName": "Movie" + } + } + } } ] } @@ -29857,7 +30522,8 @@ "rottenTomatoes": 97, "imdb": 7.6 } - } + }, + "revenue": 1000000 } }, "name": null, @@ -29953,7 +30619,7 @@ } } }, - "id": "a96cdf4822974425fa31b5efc26b9eac10272bf8", + "id": "af85e2648f0be46c854af598a495582af5f4bd47", "docs": null } } diff --git a/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap b/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap index 65fa78fe5b5..d25f4d66b79 100644 --- a/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap +++ b/packages/cli/openapi-ir-to-fern/src/__test__/__snapshots__/multi-url-generators-yml.test.ts.snap @@ -60,6 +60,7 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > docs 1`] = ` "docs": "Successful response", "type": "Token", }, + "url": "auth", }, "getUserInformation": { "auth": false, @@ -94,6 +95,7 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > docs 1`] = ` "docs": "Successful response", "type": "User", }, + "url": "user", }, "listUsers": { "auth": false, @@ -219,6 +221,7 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > simple 1`] = ` "docs": "Successful response", "type": "Token", }, + "url": "auth", }, "getUserInformation": { "auth": false, @@ -253,6 +256,7 @@ exports[`multi-url-generators-yml > multi-url-generators-yml > simple 1`] = ` "docs": "Successful response", "type": "User", }, + "url": "user", }, "listUsers": { "auth": false, diff --git a/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap b/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap index 9a78dd2030a..8d9ebeea434 100644 --- a/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap +++ b/packages/cli/openapi-parser/src/__test__/__snapshots__/vellum.test.ts.snap @@ -1318,7 +1318,6 @@ Executes a deployed Workflow and streams back its results.", "server": [ { "audiences": null, - "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -1605,7 +1604,6 @@ Generate a completion using a previously defined deployment. "server": [ { "audiences": null, - "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -1783,7 +1781,6 @@ Generate a stream of completions using a previously defined deployment. "server": [ { "audiences": null, - "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -3446,7 +3443,6 @@ Perform a search against a document index. "server": [ { "audiences": null, - "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -3605,7 +3601,6 @@ Used to submit feedback regarding the quality of previously generated completion "server": [ { "audiences": null, - "description": null, "name": "Predict", "url": "https://predict.vellum.ai", }, @@ -4284,7 +4279,6 @@ Upload a document to be indexed and used for search. "server": [ { "audiences": null, - "description": null, "name": "Documents", "url": "https://documents.vellum.ai", },