diff --git a/fern/products/sdks/overview/dotnet/changelog.mdx b/fern/products/sdks/overview/dotnet/changelog.mdx deleted file mode 100644 index c282cc41d..000000000 --- a/fern/products/sdks/overview/dotnet/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: .NET Changelog -description: Changelog for the Fern .NET SDK. ---- - -Stay up to date with the latest changes and updates to the Fern .NET SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/csharp). diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-10.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-10.mdx new file mode 100644 index 000000000..5eacaf8df --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-10.mdx @@ -0,0 +1,14 @@ +## 0.0.9 +**`(fix):`** When an inlined request body is entirely made up of request body properties, the entire request can now be serialized as the request body. + +## 0.0.8 +**`(fix):`** Several bug fixes. + +### What's new +- Support for arbitrary nested clients +- Query parameter serialization + +### What's changed +- Property naming for async methods +- Properly formatted solution files + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-15.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-15.mdx new file mode 100644 index 000000000..cb17add62 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-15.mdx @@ -0,0 +1,3 @@ +## 0.0.10 +**`(feat):`** The generated SDK now publishes GitHub Actions to build and publish the generated package to NuGet. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-20.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-20.mdx new file mode 100644 index 000000000..db54f40bf --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-20.mdx @@ -0,0 +1,3 @@ +## 0.0.11 +**`(feat):`** The C# generator now generates a proper `.csproj` file with version, GitHub URL, and a reference to the SDK README. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-22.mdx new file mode 100644 index 000000000..e720a4c59 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-22.mdx @@ -0,0 +1,6 @@ +## 0.0.13 +**`(feat):`** If a LICENSE is specified, the generator now packages the license in the .csproj file. + +## 0.0.12 +**`(feat):`** The C# generator now generates an `Environments.cs` file containing URLs for different environments. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-23.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-23.mdx new file mode 100644 index 000000000..1d9a31530 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-23.mdx @@ -0,0 +1,14 @@ +## 0.0.16 +**`(fix):`** Miscellaneous fixes. + +### What's been fixed +- .csproj indentation +- Setting X-Fern-SDK-Name to the top-level namespace +- Passing through serializer options when serializing JSON messages + +## 0.0.15 +**`(fix):`** Inlined requests that are strictly bodies are JSON serializable. + +## 0.0.14 +**`(feat):`** The SDK now includes a `JsonEnumMemberStringEnumConverter`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-28.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-28.mdx new file mode 100644 index 000000000..45f202d36 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-28.mdx @@ -0,0 +1,8 @@ +## 0.0.18 +**`(internal):`** Generated GitHub workflows now run on dotnet-version 8.x. + +## 0.0.17 +**`(feat):`** Enabled nullable on all C# files. + +**`(feat):`** Made project compatible with .NET 6, .NET 7, and .NET 8. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-29.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-29.mdx new file mode 100644 index 000000000..a69b1d6c5 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-29.mdx @@ -0,0 +1,10 @@ +## 0.0.20 +**`(internal):`** Enum serializers are now added directly to enum declarations. + +**`(internal):`** OneOf serializers are now added as a core class. + +## 0.0.19 +**`(fix):`** Enum serializers now handle reading and writing enum string values. + +**`(fix):`** Non-success status code errors are now thrown with the stringified response body. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-05-31.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-05-31.mdx new file mode 100644 index 000000000..c9b13cee7 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-05-31.mdx @@ -0,0 +1,3 @@ +## 0.0.21 +**`(fix):`** Array and list fields are now generated as `IEnumerable`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-06-07.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-06-07.mdx new file mode 100644 index 000000000..68070daf9 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-06-07.mdx @@ -0,0 +1,6 @@ +## 0.0.23 +**`(feat):`** The SDK is now compatible exclusively with .NET 6. This change reflects significant code adjustments needed for .NET 4+ compatibility. + +## 0.0.22 +**`(feat):`** The SDK now includes support for .NET 4. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-06-19.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-06-19.mdx new file mode 100644 index 000000000..c03d0ae66 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-06-19.mdx @@ -0,0 +1,6 @@ +## 0.0.28 +**`(fix):`** Query and header parameters with optional datetimes are now encoded in ISO 8601 format before making requests. + +## 0.0.24 +**`(fix):`** Query and header parameters are now ISO 8601 encoded before making requests. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-06-20.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-06-20.mdx new file mode 100644 index 000000000..660f6d9b7 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-06-20.mdx @@ -0,0 +1,13 @@ +## 0.0.30 +**`(fix):`** The SDK now supports making requests with a Content-Type of `application/octet-stream` for byte data. + +**`(fix):`** The SDK now safely handles API-wide path parameters, including their proper joining in `RawClient.cs`. + +## 0.0.29 +**`(fix):`** The generated SDK now correctly respects service base paths, which were previously omitted. + +## 0.0.25 +**`(feat):`** Discriminated unions are now generated as object. + +**`(feat):`** Header parameters are no longer required in the constructor, eliminating the need for users to provide redundant information. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-06-21.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-06-21.mdx new file mode 100644 index 000000000..3805cabfa --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-06-21.mdx @@ -0,0 +1,9 @@ +## 0.0.33 +**`(feat):`** Add support for specifying extra dependencies in the C# generator configuration. + +## 0.0.32 +**`(fix):`** Ensure enum values are JSON serialized before being sent to the server. + +## 0.0.31 +**`(fix):`** Ensure the HTTP client joins endpoint path with the base URL safely. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-02.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-02.mdx new file mode 100644 index 000000000..b65d4ceb0 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-02.mdx @@ -0,0 +1,6 @@ +## 0.0.35 +**`(fix):`** Ensure base client requests are generated correctly. + +## 0.0.34 +**`(fix):`** Implement base client methods instead of leaving them empty. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-09.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-09.mdx new file mode 100644 index 000000000..1dcb7925c --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-09.mdx @@ -0,0 +1,11 @@ +## 0.1.0 +**`(feat):`** Add targets for .NET Standard 2.0 and .NET Framework 4.6.2. + +**`(fix):`** Avoid duplicate key errors in `StringEnumSerializer`. + +**`(fix):`** Fix bugs with root client requests causing generation failures. + +**`(fix):`** Correctly handle environment values and literal header names. + +**`(internal):`** Improve constructor parameters and other minor fixes. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-10.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-10.mdx new file mode 100644 index 000000000..30e3fcdaa --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-10.mdx @@ -0,0 +1,5 @@ +## 0.1.1 +**`(internal):`** Enable generating unions with up to 32 types by adding the OneOf.Extended package. + +**`(fix):`** Handle double optional fields properly with a single `?`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-17.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-17.mdx new file mode 100644 index 000000000..158e97d3f --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-17.mdx @@ -0,0 +1,5 @@ +## 0.1.2 +**`(chore):`** Bump IR to 51. + +**`(feat):`** Generate serialization unit tests for models and add a GH workflow to run them. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-22.mdx new file mode 100644 index 000000000..9aa50cd27 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-22.mdx @@ -0,0 +1,5 @@ +## 0.1.3 +**`(fix):`** Fixed a bug with serializing datetimes. + +**`(internal):`** Stop generating empty serialization unit test files when there are no examples. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-23.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-23.mdx new file mode 100644 index 000000000..29a7e7c58 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-23.mdx @@ -0,0 +1,3 @@ +## 0.1.4 +**`(internal):`** More improvements to datetime serialization. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-25.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-25.mdx new file mode 100644 index 000000000..c309b9571 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-25.mdx @@ -0,0 +1,14 @@ +## 0.3.1 +**`(internal):`** Add header suppliers to `RawClient` constructor parameters. + +## 0.3.0 +**`(break):`** Convert all usages of `Guid` to `string` to avoid casing issues. + +## 0.2.1 +**`(fix):`** Fix Multi URL environment classes compilation issue. + +## 0.2.0 +**`(break):`** Rename `Environments.cs` to `{OrgName}Environment`. + +**`(feat):`** Generate classes for environments with different endpoint URLs. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-29.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-29.mdx new file mode 100644 index 000000000..b5432117f --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-29.mdx @@ -0,0 +1,3 @@ +## 0.3.2 +**`(feat):`** The C# generator now supports configuration to match namespaces to file paths. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-30.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-30.mdx new file mode 100644 index 000000000..eceef65a4 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-30.mdx @@ -0,0 +1,16 @@ +## 0.5.0 +**`(feat):`** Add support for `uint`, `ulong`, and `float` types. + +**`(internal):`** Bump to IRv53. + +## 0.4.0 +**`(feat):`** Add support for `allow-multiple` query parameters. + +**`(feat):`** Generate `map` types as `Dictionary` to support explicit `null` values. + +## 0.3.4 +**`(internal):`** Make datetime deserialization more lenient and include milliseconds in serialization. + +## 0.3.3 +**`(internal):`** Generate types with `set` accessors instead of `init` to improve object construction flexibility. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-07-31.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-07-31.mdx new file mode 100644 index 000000000..1d5bd1907 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-07-31.mdx @@ -0,0 +1,11 @@ +## 0.8.0 +**`(feat):`** Support text response types. + +**`(feat):`** Support inheritance for inlined request bodies. + +## 0.7.0 +**`(feat):`** Generate Exception types for all errors defined in the IR. + +## 0.6.0 +**`(feat):`** Add support for `RequestOptions` allowing request-specific option overrides. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-01.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-01.mdx new file mode 100644 index 000000000..432fe0c5b --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-01.mdx @@ -0,0 +1,3 @@ +## 0.9.0 +**`(feat):`** Add the `base-api-exception-class-name` and `base-exception-class-name` generator configuration. These control the class names of the generated `ApiException` and `Exception` class names. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-07.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-07.mdx new file mode 100644 index 000000000..fc7817ab7 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-07.mdx @@ -0,0 +1,3 @@ +## 0.10.0 +**`(fix):`** Fix a bug where conflicting class names and namespaces cause compile to fail. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-09.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-09.mdx new file mode 100644 index 000000000..25a6ed1bf --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-09.mdx @@ -0,0 +1,7 @@ +## 0.11.0 +**`(internal):`** Mark internal files `internal`. + +**`(feat):`** Make all client classes `Partial`. + +**`(internal):`** Don't override `toString` on Exceptions. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-10.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-10.mdx new file mode 100644 index 000000000..214868307 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-10.mdx @@ -0,0 +1,3 @@ +## 0.12.0 +**`(feat):`** Get better Unit Testing JSON comparison results by using `FluentAssertions`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-11.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-11.mdx new file mode 100644 index 000000000..26f65daad --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-11.mdx @@ -0,0 +1,14 @@ +## 1.1.0 +**`(fix):`** Error strings are correctly mapped to an appropriate exception. + +## 1.0.0 +**`(break):`** The C# SDK is now on major version 1.0.0. To preserve compatibility with pre-1.0.0, set all of \{root-namespace-for-core-classes, pascal-case-environments, simplify-object-dictionaries\} to `false`. + +**`(internal):`** Core classes that are exposed publicly are now in the root namespace. + +**`(internal):`** Types that were previously generated as `Dictionary` are now just `object`. + +**`(internal):`** Environment names are pascal-cased. + +**`(feat):`** Generating specific error types can now be turned off with the `generate-error-types` configuration. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-12.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-12.mdx new file mode 100644 index 000000000..55532d43f --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-12.mdx @@ -0,0 +1,5 @@ +## 1.2.1 +**`(feat):`** Add support for Protobuf file dependencies to generate gRPC client stubs. + +**`(fix):`** Fix potential namespace and type conflicts. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-22.mdx new file mode 100644 index 000000000..581fbb1d5 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-22.mdx @@ -0,0 +1,34 @@ +## 1.3.0 +**`(internal):`** No changes. + +## 1.3.0-rc2 +**`(internal):`** Fix warnings in generated `RawClient`. + +**`(internal):`** Use a simpler primitive instantiation for the various number types. + +## 1.3.0-rc1 +**`(feat):`** Generate the `ToString` method to write the JSON format of an object. + +**`(feat):`** Generate snippets as example documentation. + +## 1.3.0-rc0 +**`(feat):`** Add support for sending the `User-Agent` header. + +**`(internal):`** The `RawClient` now supports HTTP headers within the `ClientOptions` and `RequestOptions` types. + +**`(feat):`** Add support for the `package-id` configuration, which is used to control the name of the package in NuGet. + +**`(feat):`** Add support for mock server tests with `generate-mock-server-tests` configuration option. + +**`(internal):`** Omit `null` property values in requests. + +**`(fix):`** Fix a bug where request bodies are not sent for wrapped requests that include headers or query params. + +**`(fix):`** Fix a bug where enums, dates, and datetimes are sometimes not serialized properly as query parameters and headers. + +**`(feat):`** Add support for `read-only-memory-types` configuration. + +**`(feat):`** Add the `CancellationToken` parameter as the last parameter to every endpoint method. + +**`(feat):`** Add support for gRPC/Protobuf endpoints. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-26.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-26.mdx new file mode 100644 index 000000000..4fa86c861 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-26.mdx @@ -0,0 +1,3 @@ +## 1.4.0 +**`(internal):`** Generate a `Version` class which is used to reference the current version. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-28.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-28.mdx new file mode 100644 index 000000000..77777689c --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-28.mdx @@ -0,0 +1,15 @@ +## 1.5.0 +**`(feat):`** Add support for service-level headers. + +**`(feat):`** Generate `snippet.json` file containing usage snippets for each endpoint. + +**`(feat):`** Apply the timeout configured on the `ClientOptions` and `RequestOptions` type. + +**`(feat):`** Add exponential backoff retrier, which acts upon `MaxRetries` configuration option specified on the `ClientOptions` and `RequestOptions`. + +**`(feat):`** Generate the `RawClientTests.cs` file which includes retry logic tests. + +**`(internal):`** Refactor the `RawClient` with additional helper methods so that it's easier to follow. + +**`(fix):`** Fix a bug where `OneOf` used directly as request or response types fail serialization. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-08-29.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-08-29.mdx new file mode 100644 index 000000000..47c966bd2 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-08-29.mdx @@ -0,0 +1,18 @@ +## 1.8.0 +**`(feat):`** Adds support for Client Credentials OAuth with token refresh. + +Now you can instantiate your SDK by passing in clientId and clientSecret, +and let fern handle retrieving and refreshing the token. + +```cs +var client = new ImdbClient("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET"); +await client.doThing(); +``` + + +## 1.7.0 +**`(feat):`** Add support for generated `reference.md` files. + +## 1.6.0 +**`(feat):`** Add support for generated `README.md` files. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-10-08.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-10-08.mdx new file mode 100644 index 000000000..d4f6b022e --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-10-08.mdx @@ -0,0 +1,5 @@ +## 1.8.1 +**`(fix):`** Fixes a bug where the `OauthTokenProvider.cs` was incorrectly referencing +the endpoint method, causing code to fail to compile. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-10-28.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-10-28.mdx new file mode 100644 index 000000000..6fd28496c --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-10-28.mdx @@ -0,0 +1,9 @@ +## 1.8.4 +**`(fix):`** Make sure summary and code examples in XML code comments are XML encoded. + +## 1.8.3 +**`(fix):`** Update generated .gitignore files to not ignore C# files inside of folders named Logs and Releases. + +## 1.8.2 +**`(fix):`** Fixes a bug where the ClientOptions would not compile due to incorrect Clone method generation. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-10-30.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-10-30.mdx new file mode 100644 index 000000000..e9438f683 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-10-30.mdx @@ -0,0 +1,51 @@ +## 1.8.5 +**`(feat):`** Add forward-compatible enums. Set `experimental-enable-forward-compatible-enums` to `true` in the configuration to generate forward-compatible enums. +With forward-compatible enums you can create and parse an enum value that is not predefined. +- Forward compatible enums are not compatible with the previously generated native enums. + This is a breaking change for the users of the generated SDK, but only users using switch-case statements are affected. +- Use the `Value` property to get the string value of the enum. - For each value in the enum, + - a public static property is generated, which is an instance of the enum class, + - a public static property is generated within the nested `Values` class with the string value of the enum. + +Here's a before and after for creating and parsing a resource with a predefined enum value and a custom enum value: +**Before**: +```csharp var resource = client.CreateResource(new Resource { Id = "2", EnumProperty = MyEnum.Value2 } ); // The line below does not compile because the enum does not have a `Value3` value. // resource = client.CreateResource(new Resource { Id = "3", EnumProperty = MyEnum.Value3 } ); resource = client.GetResource("3"); switch(resource.EnumProperty) { + case MyEnum.Value1: + Console.WriteLine("Value1"); + break; + case MyEnum.Value2: + Console.WriteLine("Value2"); + break; + default: + // this will never be reached until the SDK is updated with the new enum value + Console.WriteLine("Unknown"); + break; +} if(resource.EnumProperty == MyEnum.Value1) { + Console.WriteLine("Value1"); +} else if (resource.EnumProperty == MyEnum.Value2) { + Console.WriteLine("Value2"); +} else { + // this will never be reached until the SDK is updated with the new enum value + Console.WriteLine("Unknown"); +} ``` +No exception is thrown, but the output incorrectly shows `Value1` because .NET falls back to the first value in the enum. +**After**: +```csharp var resource = client.CreateResource(new Resource { Id = "2", EnumProperty = MyEnum.Value2 } ); resource = client.CreateResource(new Resource { Id = "3", EnumProperty = MyEnum.Custom("value3") } ); resource = client.GetResource("3"); switch(resource.EnumProperty.Value) { + case MyEnum.Values.Value1: + Console.WriteLine("Value1"); + break; + case MyEnum.Values.Value2: + Console.WriteLine("Value2"); + break; + default: + Console.WriteLine(resource.EnumProperty.Value); + break; +} if(resource.EnumProperty == MyEnum.Value1) { + Console.WriteLine("Value1"); +} else if (resource.EnumProperty == MyEnum.Value2) { + Console.WriteLine("Value2"); +} else { + Console.WriteLine(resource.EnumProperty.Value); +} ``` +The output correctly shows `Value3`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-05.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-05.mdx new file mode 100644 index 000000000..fee193cef --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-05.mdx @@ -0,0 +1,3 @@ +## 1.9.0 +**`(feat):`** Add support for calling HTTP endpoints and gRPC endpoints within the same service. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-06.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-06.mdx new file mode 100644 index 000000000..66c2c1656 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-06.mdx @@ -0,0 +1,3 @@ +## 1.9.1 +**`(chore):`** Update `System.Text.Json` dependency from `8.0.4` to `8.0.5` because a security patch was released to resolve [this vulnerability](https://github.com/advisories/GHSA-8g4q-xg66-9fp4). + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-07.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-07.mdx new file mode 100644 index 000000000..567270c36 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-07.mdx @@ -0,0 +1,5 @@ +## 1.9.3 +**`(feat):`** Generate a ProjectName.Custom.props file for you to configure any MSBuild properties for your project. + +**`(fix):`** Generate the license NuGet properties inside the .csproj file correctly. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-08.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-08.mdx new file mode 100644 index 000000000..1ffb83c0b --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-08.mdx @@ -0,0 +1,7 @@ +## 1.9.4 +**`(feat):`** Generate a ProjectName.Test.Custom.props file for you to configure any MSBuild properties for your test project. + +**`(feat):`** Only import ProjectName.Custom.props and ProjectName.Test.Custom.props if the file exists, so you can delete the file if you wish to. + +**`(fix):`** Do not re-import the .NET SDK inside of ProjectName.Custom.props. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-09.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-09.mdx new file mode 100644 index 000000000..4a1ee5726 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-09.mdx @@ -0,0 +1,6 @@ +## 1.9.6 +**`(feat):`** Copy the csproj Version as the AssemblyVersion and FileVersion. + +## 1.9.5 +**`(feat):`** Copy the csproj Version as the AssemblyVersion and FileVersion. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-12.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-12.mdx new file mode 100644 index 000000000..fd696ba7c --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-12.mdx @@ -0,0 +1,3 @@ +## 1.9.7 +**`(feat):`** Set Content-Type header for HTTP requests when specified in the API spec/definition. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-14.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-14.mdx new file mode 100644 index 000000000..fab887bb9 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-14.mdx @@ -0,0 +1,3 @@ +## 1.9.8 +**`(feat):`** Add support for [idempotency headers](https://buildwithfern.com/learn/sdks/capabilities/idempotency-headers). + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-19.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-19.mdx new file mode 100644 index 000000000..1bb8985b5 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-19.mdx @@ -0,0 +1,7 @@ +## 1.9.9 +**`(feat):`** Add support for [Auto Pagination](https://buildwithfern.com/learn/sdks/features/auto-pagination). +When enabled, the endpoint methods will return a `Pager` object that you can use to iterate over all items of an endpoint. +Additionally, you can use the `Pager.AsPagesAsync` method to iterate over all pages of an endpoint. +The SDK will automatically make the necessary HTTP requests for you as you iterate over the items or the pages. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-20.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-20.mdx new file mode 100644 index 000000000..ee5f69080 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-20.mdx @@ -0,0 +1,4 @@ +## 1.9.10 +**`(feat):`** Add partial `JsonOptions.ConfigureJsonSerializerOptions` method to allow SDK maintainers to configure the `JsonSerializerOptions` used by the SDK. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2024-11-25.mdx b/fern/products/sdks/overview/dotnet/changelog/2024-11-25.mdx new file mode 100644 index 000000000..99b44eafa --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2024-11-25.mdx @@ -0,0 +1,11 @@ +## 1.9.11 +**`(feat):`** Add two dependencies who previously were transitive dependencies to ensure the generated SDKs use the patched versions without vulnerabilities. +- `System.Net.Http` >= `4.3.4` +- `System.Text.RegularExpressions` >= `4.3.1` +Update other dependencies to the latest version: +- `Portable.System.DateTimeOnly` = `8.0.2` (on net462 & netstandard2.0) +- `PolySharp` = `1.15.0` +- `OneOf` = `3.0.271` +- `OneOf.Extended` = `3.0.271` + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-01-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-01-22.mdx new file mode 100644 index 000000000..f8fa9af69 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-01-22.mdx @@ -0,0 +1,10 @@ +## 1.9.12 +**`(fix):`** Change serialization logic for headers and querystring parameters: +- Strings, enums, dates, times, and date times are serialized as before. +- Booleans are now serialized as `true` and `false` instead of `True` and `False`. +- Objects, lists, maps, dictionaries, undiscriminated, and discriminated unions are serialized to JSON. + + +**`(fix):`** Only use `.Value` on nullable structs when serializing parameters to headers and querystring parameters. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-02.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-02.mdx new file mode 100644 index 000000000..bcdd1a660 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-02.mdx @@ -0,0 +1,9 @@ +## 1.9.13 +**`(internal):`** Miscellaneous improvement for the C# generator +- Call `.ConfigureAwait(false)` on Tasks +- Use `Enumerable.Empty` instead of creating a new empty list +- Add PolySharp to test project and use C# 12 +- Remove redundant `#nullable enable` directives +- Improve C# syntax + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-03.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-03.mdx new file mode 100644 index 000000000..526511665 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-03.mdx @@ -0,0 +1,4 @@ +## 1.9.14 +**`(fix):`** Add support for nullable undiscriminated unions (`OneOf?`), and add tests for undiscriminated unions. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-06.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-06.mdx new file mode 100644 index 000000000..9e1496ac1 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-06.mdx @@ -0,0 +1,37 @@ +## 1.9.21 +**`(fix):`** Support literals in query parameters and headers. For example, if a field in a wrapped request has a literal value of "foo", we will now set that value as the default value for the field. +Note that wrapped requests are just a bag of properties that include body properties. + + +## 1.9.20 +**`(fix):`** Support literals in wrapped requests (). For example, if a field in a wrapped request has a literal value of "foo", we will now set that value as the default value for the field. +Note that wrapped requests are just a bag of properties that include body properties. + + +## 1.9.19 +**`(fix):`** Fix serialization of enum path parameters. Previously, enum path parameters were serialized using their C# enum name, but now they are +correctly serialized using their wire value. + + +## 1.9.18 +**`(fix):`** Fix serialization of enum path parameters. Previously, enum path parameters were serialized using their C# enum name, but now they are +correctly serialized using their wire value. + + +## 1.9.17 +**`(fix):`** Support required literals. For example, if a field has a literal value of "foo", we will now set that value as the default value for the field. + + +## 1.9.16 +**`(fix):`** Required client parameters that are headers are now sent when making API requests. For example if a bearer token is required to +instantiate the client, we will ensure that it is sent when making API requests. + + +## 1.9.15 +**`(fix):`** Change unpaged endpoints from internal to private to avoid ambiguous references in test projects who have access to internals. + +**`(fix):`** Fix an issue where enum values named `Equals` would always have be converted to `"Equals"` instead of their correct wire value. + + +**`(feat):`** Increase test performance by parallelizing tests and setting HTTP request retry delay to 0. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-14.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-14.mdx new file mode 100644 index 000000000..886d2089e --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-14.mdx @@ -0,0 +1,30 @@ +## 1.9.27 +**`(fix):`** Fix the Protobuf mappers for enum and timestamp types. + + +## 1.9.26 +**`(fix):`** Use `global::System.Type` instead of `System.Type` in `OneOfSerializer` +when a type named `System` exists in the current namespace. + + +## 1.9.25 +**`(fix):`** Use `global::System.Type` instead of `System.Type` in generated code to avoid potential naming conflicts +when a type named `System` exists in the current namespace. + + +## 1.9.24 +**`(fix):`** Use the original gRPC service name in the generated client reference instead of applying any casing transformations. + + +## 1.9.23 +**`(fix):`** Fix method return types to use unqualified `Task` instead of `System.Threading.Tasks.Task` +when the method returns a response. + + +## 1.9.22 +**`(feat):`** Generate a pagination section to the generated README.md file. + + +**`(feat):`** You can now `foreach(var item in page)` on `Page` instances. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-15.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-15.mdx new file mode 100644 index 000000000..f02ef17a3 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-15.mdx @@ -0,0 +1,22 @@ +## 1.9.31 +**`(fix):`** Use `global::System` instead of `System` to avoid conflicts when a type named `System` exists in the current namespace. + + +## 1.9.30 +**`(fix):`** The Protobuf enum mapper now handles every enum variant. + + +## 1.9.29 +**`(fix):`** The Protobuf package aliases now include the package name to avoid conflicts when multiple +Protobuf packages are used. For example, `com.acme.users.v1` would be aliased as `ProtoUsersV1` +instead of just `Proto`. + + +## 1.9.28 +**`(fix):`** Fix the Protobuf mappers for the google.protobuf.Any type. + + +**`(fix):`** The Protobuf mappers now refer to the original name of the Protobuf type instead +of the PascalCase name. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-24.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-24.mdx new file mode 100644 index 000000000..7d9180f46 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-24.mdx @@ -0,0 +1,8 @@ +## 1.9.33 +**`(fix):`** Upload C# snippets to the registry. + +## 1.9.32 +**`(fix):`** JSON serialize `DateOnly` to `yyyy-MM-dd` format. + +**`(internal):`** Add test for serializing and deserializing `DateOnly` abd `DateTime`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-26.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-26.mdx new file mode 100644 index 000000000..d6c7e7d85 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-26.mdx @@ -0,0 +1,5 @@ +## 1.10.0 +**`(feat):`** Add support for `exported-client-class-name` to allow you to export the client class name. +This is useful when you want to use a custom client class name for code snippets. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-27.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-27.mdx new file mode 100644 index 000000000..10fe245a2 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-27.mdx @@ -0,0 +1,22 @@ +## 1.11.0 +**`(feat):`** Add support for the `inline-path-parameters` configuration option, which generates +path parameters in the generated request type (if any) instead of as separate +positional parameters. + +```yaml +# generators.yml + +- name: fern-api/fern-csharp-sdk + version: 1.11.0 + config: + inline-path-parameters: true +``` + + +**`(fix):`** Fix an issue where the `JsonIgnore` attribute was not included for query parameter or header properties. + + +## 1.10.1 +**`(internal):`** Update the IR to v55. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-02-28.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-02-28.mdx new file mode 100644 index 000000000..a6e527335 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-02-28.mdx @@ -0,0 +1,3 @@ +## 1.12.0-rc0 +**`(feat):`** Add support for custom pagination. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-02.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-02.mdx new file mode 100644 index 000000000..777013c4f --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-02.mdx @@ -0,0 +1,41 @@ +## 1.12.0-rc3 +**`(feat):`** Add support for schema properties with write-only and read-only access. + +**`(feat):`** The JSON serializer will write with indentation during debugging, and without in production. + +## 1.12.0-rc2 +**`(feat):`** Pager and BiPager now have consistent properties and methods. +As part of this change, pagers are now generated asynchronously which is a breaking change for the endpoint methods. + +```csharp +// Before: +var pager = client.GetItemsAsync(...); + +// After: +var pager = await client.GetItemsAsync(...); +``` + + +**`(fix):`** Fixed an issue where generated code for setting UUIDs in a query string parameter would generate uncompilable code. + + +**`(feat):`** Extend support for offset pagination to float, double, and decimal types. + +## 1.12.0-rc1 +**`(feat):`** Add support for the `include-exception-handler` configuration option, which generates an `ExceptionHandler` interface for the SDK. +This is useful when you want to act upon all exceptions thrown by the SDK (e.g. report them to a monitoring service). + +You can configure this feature with the following: + +```yaml +# generators.yml +- name: fern-api/fern-csharp-sdk + version: 1.12.0-rc1 + config: + include-exception-handler: true +``` + + +**`(fix):`** Fixes a regression for mapping `ReadOnlyMemory` values in the generated Protobuf mapper. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-03.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-03.mdx new file mode 100644 index 000000000..85d40a273 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-03.mdx @@ -0,0 +1,34 @@ +## 1.12.0-rc9 +**`(fix):`** Fix inline path parameters with pagination endpoints. + +## 1.12.0-rc8 +**`(feat):`** Several class names are computed differently: +- Environment class name: + - Use `environment-class-name` if configured, + - otherwise, fall back to `exported-client-class-name` if configured, with `Environment` suffix, + - otherwise, fall back to `client-class-name` if configured, with `Environment` suffix, + - otherwise, fall back to the computed client name, with `Environment` suffix. +- Base exception class name: + - Use `base-exception-class-name` if configured, + - otherwise, fall back to `exported-client-class-name` if configured, with `Exception` suffix, + - otherwise, fall back to `client-class-name` if configured, with `Exception` suffix, + - otherwise, fall back to the computed client name, with `Exception` suffix. +- Base API exception class name: + - Use `base-api-exception-class-name` if configured, + - otherwise, fall back to `exported-client-class-name` if configured, with `ApiException` suffix, + - otherwise, fall back to `client-class-name` if configured, with `ApiException` suffix, + - otherwise, fall back to the computed client name, with `ApiException` suffix. + + +## 1.12.0-rc7 +**`(internal):`** Move exception handler into client options as an internal property for SDK authors to configure. + +## 1.12.0-rc6 +**`(fix):`** Fix bug where a lambda for sending HTTP requests would use the HTTP request from the outer scope instead of the local scope. + +## 1.12.0-rc5 +**`(fix):`** Fix hardcoded namespace for Pager.cs + +## 1.12.0-rc4 +**`(feat):`** Add .editorconfig file to the generated SDK. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-04.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-04.mdx new file mode 100644 index 000000000..9ab684fe2 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-04.mdx @@ -0,0 +1,22 @@ +## 1.12.0-rc11 +**`(internal):`** Update the IR to v57. + + +## 1.12.0-rc10 +**`(feat):`** Compare .NET objects instead of JSON strings when comparing objects in mock wire tests. +With this change, we can remove the dependency on the FluentAssertions.Json package (and implicitly on the Newtonsoft.Json package). + + +**`(chore):`** Update dependencies in generated test project: +- `Microsoft.NET.Test.Sdk`: 17.12.0 => 17.13.0 +- `NUnit`: 4.2.2 => 4.3.2 +- `NUnit3TestAdapter`: 4.6.0 => 5.0.0 +- `NUnit.Analyzers`: 4.4.0 => 4.6.0 +- `coverlet.collector`: 6.0.2 => 6.0.4 +- `WireMock.Net`: 1.6.8 => 1.7.4 + + +**`(fix):`** Compare .NET objects instead of JSON strings when comparing objects in mock wire tests, +which fixes bugs where JSON deserialization and serialization would cause differences in the JSON strings. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-05.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-05.mdx new file mode 100644 index 000000000..fd44ccb13 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-05.mdx @@ -0,0 +1,4 @@ +## 1.12.0-rc12 +**`(fix):`** Don't rely on the `FluentAssertions.Json` package to test serialization and deserialization. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-07.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-07.mdx new file mode 100644 index 000000000..0619f98cf --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-07.mdx @@ -0,0 +1,18 @@ +## 1.12.0-rc14 +**`(feat):`** Add support for overriding literal global headers via the `ClientOptions` class. + + +## 1.12.0-rc13 +**`(feat):`** Add support for receiving additional properties in object types with the new `AdditionalProperties` field. +This is useful when you want to parse an object that has properties that are not available in the SDK +(e.g. alpha and/or undocumented properties). + +```csharp +// Call the endpoint. +var response = await client.GetUser(...); + +// Print the additional properties. +Console.WriteLine(response.AdditionalProperties); +``` + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-09.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-09.mdx new file mode 100644 index 000000000..a55be4962 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-09.mdx @@ -0,0 +1,42 @@ +## 1.12.0-rc17 +**`(fix):`** Generate snippets for unions when `use-discriminated-unions` is `true` in the generator configuration. + +## 1.12.0-rc16 +**`(fix):`** Remove hardcoded namespace import from JsonElementComparer.cs + +## 1.12.0-rc15 +**`(feat):`** Generate **discriminated unions** with: +- Type safety with compile-time checking +- Exhaustive discriminant value matching +- JSON serialization support + +Here's a simple example how to use a shape discriminated union: +```csharp +var shape = new Shape(new Circle { Radius = 5 }); + +// Type checking +if (shape.IsCircle) { + Console.WriteLine($"Radius: {circle.AsCircle().Radius}"); +} + +// Discriminant value matching +var area = shape.Match( + circle => Math.PI * circle.Radius * circle.Radius, + square => square.Length * square.Length, + (type, _) => throw new NotSupportedException($"Unknown: {type}") +); + +// TryAs pattern +if (shape.TryAsCircle(out var circle)) { + Console.WriteLine($"Radius: {circle.Radius}"); +} +``` + +This feature is off by default for backward compatibility. +To enable it, set `use-discriminated-unions` to `true` in the generator configuration. + + +**`(feat):`** Improved serialization tests for generated classes for normal objects and discriminated unions. + +**`(feat):`** Generated classes now follow the C# convention for odering consts, fields, constructors, properties, methods, operators, and inner classes. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-10.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-10.mdx new file mode 100644 index 000000000..8060773fe --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-10.mdx @@ -0,0 +1,10 @@ +## 1.12.0-rc18 +**`(fix):`** Make the behavior between a wrapped request with body properties and normal body request consistent. +Previously, a wrapped request with body properties would not omit `null` values even if the JSON configuration is configured to omit `null` values. + + +**`(fix):`** Fix a bug where required properties that were `[JsonIgnore]` threw an error during serialization. + + +**`(feat):`** Improve performance of query string value to string conversion by relying less on `JsonSerializer` and more on `ToString()`. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-13.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-13.mdx new file mode 100644 index 000000000..fef8d1f23 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-13.mdx @@ -0,0 +1,60 @@ +## 1.14.2 +**`(fix):`** Fix issue a NullReferenceException for generated root clients with typed headers in client options. + +## 1.14.1 +**`(fix):`** Fix issue where a type is written but conflicts with the namespace it is written in. + +## 1.14.0 +**`(feat):`** The SDK now supports the `AdditionalBodyProperties` and `AdditionalQueryParameters` request options, which +can be used to add arbitrary properties to the request. This is useful for interacting +with alpha or undocumented functionality. + +```csharp +var response = await client.Users.Create( + ..., + new RequestOptions { + AdditionalBodyProperties = new Dictionary { + { "key", "value" } + }, + } +); +``` + + +## 1.13.2 +**`(fix):`** Fix issue where MultipartFormTests wouldn't pass because the timezone on the local machine is different than the timezone on the CI machine. + +## 1.13.1 +**`(fix):`** Forward compatible enums has a static method `Custom(string value)` that allows you to create a new instance of the enum with a custom value. +"Custom" is a commonly used enum value, and we want to avoid conflicts with the static method, so we're renaming the static method to `FromCustom(string value)`. +This feature is gated behind the `experimental-enable-forward-compatible-enums` configuration option, so we're accepting this as a breaking change without a major version bump. + + +**`(feat):`** Forward compatible enums can be explicitly casted from and to strings. +```csharp +string myEnumAsString = (string)MyEnum.Enum1; +MyEnum myEnum = (MyEnum)"custom-value"; +``` +Note: We're not supporting implicit casts here because it could lead to behavior the user doesn't expect. + + +## 1.13.0 +**`(feat):`** Add support for multipartform requests with file and non-file parameters. +This is useful when you want to send a file along with other form data in a single request. + +For example, you can use the following code to upload a file with a description and some metadata: +```csharp +await client.UploadAsync( + new UploadRequest + { + File = new FileParameter { Stream = fileStream, FileName = "file.txt" }, + Description = "This is a test file", + Meta = new Meta { + Key1 = "value1", + Key2 = "value2" + } + } +); +``` + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-14.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-14.mdx new file mode 100644 index 000000000..dd5dce64e --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-14.mdx @@ -0,0 +1,3 @@ +## 1.14.3 +**`(fix):`** Escape summary node contents in XML doc comments to prevent XML parsing errors. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-17.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-17.mdx new file mode 100644 index 000000000..f73ffa4ac --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-17.mdx @@ -0,0 +1,6 @@ +## 1.15.1 +**`(fix):`** If a Content-Type header does not include charset, make sure the charset is also not included in the HTTP request. + +## 1.15.0 +**`(feat):`** Add `AdditionalHeaders` to client and request options. This lets users add and override headers for each request. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-18.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-18.mdx new file mode 100644 index 000000000..6a28bb09b --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-18.mdx @@ -0,0 +1,9 @@ +## 1.15.4 +**`(feat):`** Make `FileParameter` disposable. + +## 1.15.3 +**`(fix):`** Fix multipart form tests and add charset tests for multipart form tests. + +## 1.15.2 +**`(fix):`** Fix a compilation error when using typed idempotency headers. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-19.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-19.mdx new file mode 100644 index 000000000..739b12b33 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-19.mdx @@ -0,0 +1,6 @@ +## 1.15.6 +**`(fix):`** Make tests pass that compare JSON strings regardless of how it is formatted by ignoring whitespace. + +## 1.15.5 +**`(fix):`** Fix issue where headers were shared across different client instantiations when they should maintain their own state. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-21.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-21.mdx new file mode 100644 index 000000000..2ba8fa3aa --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-21.mdx @@ -0,0 +1,8 @@ +## 1.15.9 +**`(fix):`** Significantly improve performance of the generator itself by asynchronously formatting snippets in parallel. +For example, Square's SDK generates in less than 20 seconds as opposed to more than 3 minutes previously. + + +## 1.15.8 +**`(fix):`** Fix issue where the `FileParameter` class was not generated in projects with gRPC/proto endpoints. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-22.mdx new file mode 100644 index 000000000..f05956ac8 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-22.mdx @@ -0,0 +1,4 @@ +## 1.15.10 +**`(fix):`** Fix generated tests that fail because of types containing OneOf or ReadOnlyMemory properties. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-25.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-25.mdx new file mode 100644 index 000000000..5eaaf403a --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-25.mdx @@ -0,0 +1,3 @@ +## 1.15.11 +**`(chore):`** Restructure internal HTTP classes to allow for more granular Fern ignoring. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-03-31.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-03-31.mdx new file mode 100644 index 000000000..89f65b74b --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-03-31.mdx @@ -0,0 +1,5 @@ +## 1.15.12 +**`(fix):`** Fallback from `init` to `set` on .NET Framework & .NET Standard 2.0 for public and protected properties. +This ensures the properties can be set on older TFMs without compilation errors. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-01.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-01.mdx new file mode 100644 index 000000000..6d0280eeb --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-01.mdx @@ -0,0 +1,4 @@ +## 1.15.13 +**`(chore):`** Mark `AdditionalProperties` property as experiment using XML docs. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-07.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-07.mdx new file mode 100644 index 000000000..cfe4e38b1 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-07.mdx @@ -0,0 +1,3 @@ +## 1.15.14 +**`(fix):`** Fix issue where read-only list properties wouldn't deserialize correctly. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-10.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-10.mdx new file mode 100644 index 000000000..9f8253253 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-10.mdx @@ -0,0 +1,28 @@ +## 1.16.0 +**`(feat):`** Add read-only and writeable additional properties for request and response types. + +Example: +```csharp +var request = new FooRequest +{ + Id = "123", + AdditionalProperties = + { + ["extra1"] = new { value = 42 }, + ["extra2"] = DateTime.Now, + ["extra3"] = 99 + } +}; + +var response = await client.Foo.CreateAsync(request); + +Dictionary jsonElements = response.AdditionalProperties.ToJsonElementDictionary(); +Dictionary extra1 = jsonElements["extra1"].Deserialize>(); +DateTime extra2 = jsonElements["extra2"].GetDateTime(); +int extra3 = jsonElements["extra3"].GetInt32(); +```` + +To enable this feature, configure `experimental-additional-properties: true` in the `config` section of your C# generator in generators.yml. +This will become the default in the future. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-11.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-11.mdx new file mode 100644 index 000000000..e7c85a275 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-11.mdx @@ -0,0 +1,3 @@ +## 1.16.1 +**`(feat):`** Make minor improvements to the ReadOnlyAdditionalProperties and AdditionalProperties properties for internal usage. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-22.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-22.mdx new file mode 100644 index 000000000..ee6e048ee --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-22.mdx @@ -0,0 +1,7 @@ +## 1.16.2 +**`(feat):`** Add `root-client-class-access` configuration option to control the access modifier of the root client class. +`root-client-class-access` defaults to `public`, but can be set to `internal` to make the root client class internal. + + +**`(fix):`** Pin `csharpier` formatter to `0.*` to avoid breaking changes in the formatter. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-04-23.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-04-23.mdx new file mode 100644 index 000000000..131dd2c45 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-04-23.mdx @@ -0,0 +1,3 @@ +## 1.16.3 +**`(feat):`** Upgrade Csharpier formatter to `1.*` for faster and better formatting. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-05-01.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-05-01.mdx new file mode 100644 index 000000000..399275d5a --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-05-01.mdx @@ -0,0 +1,4 @@ +## 1.17.2 +**`(fix):`** Install the generator-cli at build time as a fallback if runtime installation fails. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-05-04.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-05-04.mdx new file mode 100644 index 000000000..58d1bb6c4 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-05-04.mdx @@ -0,0 +1,6 @@ +## 1.17.1 +**`(chore):`** Self hosted github user defaults to `fern-api[bot]`. + +## 1.17.0 +**`(feat):`** Added support for pushing to GitHub. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-05-13.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-05-13.mdx new file mode 100644 index 000000000..f1d0db09e --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-05-13.mdx @@ -0,0 +1,4 @@ +## 1.17.3 +**`(fix):`** Add support for the custom introduction setting in the generated README.md. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-05-16.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-05-16.mdx new file mode 100644 index 000000000..de63f7b72 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-05-16.mdx @@ -0,0 +1,3 @@ +## 1.17.4 +**`(fix):`** Mock the OAuth endpoint for the wire tests. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-03.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-03.mdx new file mode 100644 index 000000000..4f13a8d10 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-03.mdx @@ -0,0 +1,3 @@ +## 1.17.5 +**`(internal):`** Update the IR to v58. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-05.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-05.mdx new file mode 100644 index 000000000..e06a01667 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-05.mdx @@ -0,0 +1,6 @@ +## 1.18.0 +**`(feat):`** Add support for HTTP HEAD method + +## 1.17.6 +**`(fix):`** Fix generated pagination endpoints that include path parameters. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-17.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-17.mdx new file mode 100644 index 000000000..f3dbffc9e --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-17.mdx @@ -0,0 +1,5 @@ +## 1.18.1 +**`(fix):`** Add `[Serializable]` attribute to generated schema, request, and error classes. +This will make it easier for instances of these classes to be stored in places like `Exception.Data`. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-23.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-23.mdx new file mode 100644 index 000000000..b7e4def68 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-23.mdx @@ -0,0 +1,21 @@ +## 2.0.0 +**`(chore):`** The following configuration names have changed, but the old names will continue to work. +* `experimental-enable-forward-compatible-enums` is now `enable-forward-compatible-enums` +* `experimental-additional-properties` is now `additional-properties` + + +**`(feat):`** This release changes the defaults for the following custom configuration in _generators.yml_. + +| Option | Before | Now | +|--------|--------|-----| +| `additional-properties` | `false` | `true` | +| `enable-forward-compatible-enums` | `false` | `true` | +| `generate-mock-server-tests` | `false` | `true` | +| `inline-path-parameters` | `false` | `true` | +| `simplify-object-dictionaries` | `true` | `false` | +| `use-discriminated-unions` | `false` | `true` | + +To avoid breaking changes, explicitly set the options above with the `Before` values in the `config` of your generator +in _generators.yml_. + + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-24.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-24.mdx new file mode 100644 index 000000000..393263190 --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-24.mdx @@ -0,0 +1,3 @@ +## 2.0.1 +**`(fix):`** Fix a bug where strings with special characters would not be properly escaped when converted to C# strings. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-06-27.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-06-27.mdx new file mode 100644 index 000000000..c7c991b4f --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-06-27.mdx @@ -0,0 +1,3 @@ +## 2.0.2 +**`(fix):`** Improve auto-pagination logic to consider empty strings in response as null cursors and stop paging. + diff --git a/fern/products/sdks/overview/dotnet/changelog/2025-07-09.mdx b/fern/products/sdks/overview/dotnet/changelog/2025-07-09.mdx new file mode 100644 index 000000000..08869b6ee --- /dev/null +++ b/fern/products/sdks/overview/dotnet/changelog/2025-07-09.mdx @@ -0,0 +1,14 @@ +## 2.1.0 +**`(feat):`** Pass in custom pager context to the custom pager factory. The context contains the send request method, initial HTTP request, client options, and request options. +SDK authors can improve their custom pagination implementation with this context available to them. + + +## 2.0.3 +**`(fix):`** Mockserver tests were generated based on the endpoint name being tested. +When multiple endpoints have the same name, they would override each other, resulting in only one of them being tested. +Mockserver tests are now namespaced and written to the filesystem following the same structure as the generated endpoints are. + + +**`(fix):`** Update the type referencing logic to take into account the current namespace, other namespaces, and more scenarios where it could conflicts. + + diff --git a/fern/products/sdks/overview/go/changelog.mdx b/fern/products/sdks/overview/go/changelog.mdx deleted file mode 100644 index 9de7927a6..000000000 --- a/fern/products/sdks/overview/go/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Go Changelog -description: Changelog for the Fern Go SDK. ---- - -Stay up to date with the latest changes and updates to the Fern Go SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/go). diff --git a/fern/products/sdks/overview/go/changelog/2023-10-31.mdx b/fern/products/sdks/overview/go/changelog/2023-10-31.mdx new file mode 100644 index 000000000..5fbdbae7f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2023-10-31.mdx @@ -0,0 +1,9 @@ +## 0.9.0 +**`(feat):`** Add support for streaming endpoints. + +**`(feat):`** Add support for non-primitive file upload properties. + +**`(chore):`** Refactor `core.DoRequest` with `core.Caller` abstraction. + +**`(chore):`** Update pinned dependencies in generated `go.mod`. + diff --git a/fern/products/sdks/overview/go/changelog/2023-11-08.mdx b/fern/products/sdks/overview/go/changelog/2023-11-08.mdx new file mode 100644 index 000000000..28b2a4ae1 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2023-11-08.mdx @@ -0,0 +1,5 @@ +## 0.9.1 +**`(fix):`** Support boolean literals. + +**`(fix):`** Union subtypes with no properties are now go 1.13 compatible. + diff --git a/fern/products/sdks/overview/go/changelog/2023-11-30.mdx b/fern/products/sdks/overview/go/changelog/2023-11-30.mdx new file mode 100644 index 000000000..002902b3c --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2023-11-30.mdx @@ -0,0 +1,3 @@ +## 0.9.2 +**`(fix):`** Append version suffix for modules tagged with major versions greater than `1.X.X`. + diff --git a/fern/products/sdks/overview/go/changelog/2023-12-04.mdx b/fern/products/sdks/overview/go/changelog/2023-12-04.mdx new file mode 100644 index 000000000..cc15124cf --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2023-12-04.mdx @@ -0,0 +1,3 @@ +## 0.9.3 +**`(fix):`** Optional query parameter dereferencing issue. + diff --git a/fern/products/sdks/overview/go/changelog/2024-01-10.mdx b/fern/products/sdks/overview/go/changelog/2024-01-10.mdx new file mode 100644 index 000000000..5701b328f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-01-10.mdx @@ -0,0 +1,3 @@ +## 0.9.4 +**`(fix):`** File upload requests that specify query parameters. + diff --git a/fern/products/sdks/overview/go/changelog/2024-01-25.mdx b/fern/products/sdks/overview/go/changelog/2024-01-25.mdx new file mode 100644 index 000000000..efe69fea1 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-01-25.mdx @@ -0,0 +1,11 @@ +## 0.10.0 +**`(feat):`** Refactor `ClientOption` as `RequestOption`. + +**`(feat):`** Add `includeLegacyClientOptions` generator configuration. + +**`(feat):`** Support idempotency headers as a special `RequestOption` only available on idempotent endpoints. + +**`(fix):`** Placement of path parameter documentation. + +**`(fix):`** Naming collision issue for undiscriminated unions that define more than one literal. + diff --git a/fern/products/sdks/overview/go/changelog/2024-01-29.mdx b/fern/products/sdks/overview/go/changelog/2024-01-29.mdx new file mode 100644 index 000000000..bd2ed81d7 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-01-29.mdx @@ -0,0 +1,3 @@ +## 0.11.0 +**`(feat):`** Add automatic retry with exponential backoff. + diff --git a/fern/products/sdks/overview/go/changelog/2024-01-30.mdx b/fern/products/sdks/overview/go/changelog/2024-01-30.mdx new file mode 100644 index 000000000..4cbd2d05c --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-01-30.mdx @@ -0,0 +1,3 @@ +## 0.12.0 +**`(feat):`** Add support for `bytes` request bodies with `Content-Type` set to `application/octet-stream`. + diff --git a/fern/products/sdks/overview/go/changelog/2024-01-31.mdx b/fern/products/sdks/overview/go/changelog/2024-01-31.mdx new file mode 100644 index 000000000..d56bc4253 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-01-31.mdx @@ -0,0 +1,8 @@ +## 0.13.0 +**`(feat):`** Add `packageName` generator configuration. + +**`(feat):`** Add support for `bytes` request bodies wrapped in an in-lined request. + +## 0.12.1 +**`(fix):`** `text/plain` response handling. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-06.mdx b/fern/products/sdks/overview/go/changelog/2024-02-06.mdx new file mode 100644 index 000000000..ee94b37d4 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-06.mdx @@ -0,0 +1,5 @@ +## 0.14.0 +**`(feat):`** Add support for `deepObject` query parameters. + +**`(chore):`** Refactor query parameter serialization with `url` struct tags. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-07.mdx b/fern/products/sdks/overview/go/changelog/2024-02-07.mdx new file mode 100644 index 000000000..12e83f975 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-07.mdx @@ -0,0 +1,3 @@ +## 0.14.1 +**`(fix):`** Query parameter support for optional `time.Time` types. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-09.mdx b/fern/products/sdks/overview/go/changelog/2024-02-09.mdx new file mode 100644 index 000000000..28de73fe4 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-09.mdx @@ -0,0 +1,3 @@ +## 0.15.0 +**`(feat):`** Enforce RFC3339 for date[time] serialization in request bodies. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-12.mdx b/fern/products/sdks/overview/go/changelog/2024-02-12.mdx new file mode 100644 index 000000000..b497122c4 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-12.mdx @@ -0,0 +1,3 @@ +## 0.16.0 +**`(feat):`** The generator now supports whitelabelling. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-21.mdx b/fern/products/sdks/overview/go/changelog/2024-02-21.mdx new file mode 100644 index 000000000..cc053e1e0 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-21.mdx @@ -0,0 +1,5 @@ +## 0.17.0-rc0 +**`(fix):`** Package documentation is now generated into the correct package's `doc.go`. + +**`(feat):`** Add support for generated endpoint snippets. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-23.mdx b/fern/products/sdks/overview/go/changelog/2024-02-23.mdx new file mode 100644 index 000000000..d3a581553 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-23.mdx @@ -0,0 +1,3 @@ +## 0.17.0-rc1 +**`(fix):`** Snippets for aliases to optional primitive values. + diff --git a/fern/products/sdks/overview/go/changelog/2024-02-26.mdx b/fern/products/sdks/overview/go/changelog/2024-02-26.mdx new file mode 100644 index 000000000..e4b253fff --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-02-26.mdx @@ -0,0 +1,3 @@ +## 0.17.0 +**`(internal):`** No changes since previous release candidate. + diff --git a/fern/products/sdks/overview/go/changelog/2024-03-04.mdx b/fern/products/sdks/overview/go/changelog/2024-03-04.mdx new file mode 100644 index 000000000..3e083fab5 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-03-04.mdx @@ -0,0 +1,5 @@ +## 0.18.0 +**`(feat):`** Add support for simpler unions, which is configurable with `union: v1` (if omitted, the default `v0` version will be used). + +**`(feat):`** Add support for multiple files in upload endpoints. + diff --git a/fern/products/sdks/overview/go/changelog/2024-03-12.mdx b/fern/products/sdks/overview/go/changelog/2024-03-12.mdx new file mode 100644 index 000000000..9e94c0537 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-03-12.mdx @@ -0,0 +1,3 @@ +## 0.18.1 +**`(fix):`** Go snippets correctly handle unknown examples. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-02.mdx b/fern/products/sdks/overview/go/changelog/2024-04-02.mdx new file mode 100644 index 000000000..98cd51b95 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-02.mdx @@ -0,0 +1,3 @@ +## 0.18.2 +**`(fix):`** Custom authorization header schemes had their values overridden by request options, which required using the generated request option at every call-site. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-15.mdx b/fern/products/sdks/overview/go/changelog/2024-04-15.mdx new file mode 100644 index 000000000..d665ad83c --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-15.mdx @@ -0,0 +1,3 @@ +## 0.18.3 +**`(fix):`** Path parameters are now applied in the correct order. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-16.mdx b/fern/products/sdks/overview/go/changelog/2024-04-16.mdx new file mode 100644 index 000000000..97759e15f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-16.mdx @@ -0,0 +1,3 @@ +## 0.19.0 +**`(feat):`** The Go generator now supports environment variable scanning. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-24.mdx b/fern/products/sdks/overview/go/changelog/2024-04-24.mdx new file mode 100644 index 000000000..6ce013b50 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-24.mdx @@ -0,0 +1,3 @@ +## 0.20.0 +**`(feat):`** The Go generator now supports extra properties. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-25.mdx b/fern/products/sdks/overview/go/changelog/2024-04-25.mdx new file mode 100644 index 000000000..acf314f95 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-25.mdx @@ -0,0 +1,5 @@ +## 0.20.1 +**`(fix):`** The `omitempty` struct tag is now only used for nil-able types. + +**`(fix):`** Update the query encoder to prevent unintentional errors whenever the `omitempty` is used for a non-optional field. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-26.mdx b/fern/products/sdks/overview/go/changelog/2024-04-26.mdx new file mode 100644 index 000000000..1833ee92a --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-26.mdx @@ -0,0 +1,9 @@ +## 0.20.2 +**`(internal):`** Enhance extra property serialization performance. + +**`(internal):`** Generate additional extra property tests into the SDK. + +**`(fix):`** Resolve a non-deterministic key ordering issue for snippets of type `unknown`. + +**`(fix):`** Resolve an issue with discriminated union serialization. + diff --git a/fern/products/sdks/overview/go/changelog/2024-04-29.mdx b/fern/products/sdks/overview/go/changelog/2024-04-29.mdx new file mode 100644 index 000000000..288e41813 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-04-29.mdx @@ -0,0 +1,8 @@ +## 0.21.1 +**`(fix):`** The Go generator now escapes path parameters that would previously create invalid URLs (e.g. "\\example"). + +**`(internal):`** Refactor endpoint URL mapping with `core.EncodeURL`. + +## 0.21.0 +**`(feat):`** Add support for cursor and offset pagination. + diff --git a/fern/products/sdks/overview/go/changelog/2024-05-07.mdx b/fern/products/sdks/overview/go/changelog/2024-05-07.mdx new file mode 100644 index 000000000..619a5ff4f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-05-07.mdx @@ -0,0 +1,3 @@ +## 0.21.2 +**`(fix):`** In-lined request body properties no longer include a non-empty `url` struct tag. + diff --git a/fern/products/sdks/overview/go/changelog/2024-05-17.mdx b/fern/products/sdks/overview/go/changelog/2024-05-17.mdx new file mode 100644 index 000000000..875e1910e --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-05-17.mdx @@ -0,0 +1,3 @@ +## 0.21.3 +**`(internal):`** The generator now uses the latest FDR SDK. + diff --git a/fern/products/sdks/overview/go/changelog/2024-05-21.mdx b/fern/products/sdks/overview/go/changelog/2024-05-21.mdx new file mode 100644 index 000000000..80779e4d2 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-05-21.mdx @@ -0,0 +1,6 @@ +## 0.22.0 +**`(feat):`** Add support for retrieving extra properties from response objects. + +### What's new +- Extra properties decoded from response objects are retained and accessible via the `GetExtraProperties` method. + diff --git a/fern/products/sdks/overview/go/changelog/2024-06-11.mdx b/fern/products/sdks/overview/go/changelog/2024-06-11.mdx new file mode 100644 index 000000000..6d5ccb242 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-06-11.mdx @@ -0,0 +1,3 @@ +## 0.22.1 +**`(fix):`** Array of `deepObject` query parameters are correctly serialized. + diff --git a/fern/products/sdks/overview/go/changelog/2024-07-04.mdx b/fern/products/sdks/overview/go/changelog/2024-07-04.mdx new file mode 100644 index 000000000..56f089ed7 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-07-04.mdx @@ -0,0 +1,3 @@ +## 0.22.2 +**`(fix):`** Request types set to `nil` no longer send an explicit `null` value. + diff --git a/fern/products/sdks/overview/go/changelog/2024-07-22.mdx b/fern/products/sdks/overview/go/changelog/2024-07-22.mdx new file mode 100644 index 000000000..07595c6ce --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-07-22.mdx @@ -0,0 +1,3 @@ +## 0.22.3 +**`(fix):`** Fix an issue where APIs that specify the `property-name` error discrimination strategy would receive JSON decode errors instead of the server's error. + diff --git a/fern/products/sdks/overview/go/changelog/2024-08-07.mdx b/fern/products/sdks/overview/go/changelog/2024-08-07.mdx new file mode 100644 index 000000000..b96d89568 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-08-07.mdx @@ -0,0 +1,6 @@ +## 0.23.0 +**`(feat):`** Add support for always sending required properties. + +### What's new +- Added the `alwaysSendRequiredProperties` configuration option. When `alwaysSendRequiredProperties` is enabled, required properties are never omitted in the type's wire representation. Any required property that is not explicitly set will send the default value for that type. + diff --git a/fern/products/sdks/overview/go/changelog/2024-08-19.mdx b/fern/products/sdks/overview/go/changelog/2024-08-19.mdx new file mode 100644 index 000000000..cff13698a --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-08-19.mdx @@ -0,0 +1,6 @@ +## 0.23.1 +**`(fix):`** Fix literal value deserialization. + +### What's changed +- Updates object and undiscriminated union deserialization to return an error whenever any literal values do not exist or are mismatched. + diff --git a/fern/products/sdks/overview/go/changelog/2024-08-26.mdx b/fern/products/sdks/overview/go/changelog/2024-08-26.mdx new file mode 100644 index 000000000..5d631f03c --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-08-26.mdx @@ -0,0 +1,3 @@ +## 0.23.2 +**`(internal):`** No changes. + diff --git a/fern/products/sdks/overview/go/changelog/2024-08-30.mdx b/fern/products/sdks/overview/go/changelog/2024-08-30.mdx new file mode 100644 index 000000000..aeab82dfc --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-08-30.mdx @@ -0,0 +1,6 @@ +## 0.23.4 +**`(internal):`** No changes. + +## 0.23.3 +**`(internal):`** No changes. + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-05.mdx b/fern/products/sdks/overview/go/changelog/2024-09-05.mdx new file mode 100644 index 000000000..6655b006a --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-05.mdx @@ -0,0 +1,6 @@ +## 0.23.6 +**`(internal):`** No changes. + +## 0.23.5 +**`(fix):`** Fix an issue where `long` type examples (generated as `int64` in Go) were not successfully converted to their equivalent `string` representation for snippets. + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-06.mdx b/fern/products/sdks/overview/go/changelog/2024-09-06.mdx new file mode 100644 index 000000000..a50ba17f2 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-06.mdx @@ -0,0 +1,3 @@ +## 0.23.7 +**`(fix):`** Fixes an issue where optional `unknown` values (typed as `interface{}`) were mistakenly dereferenced. + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-08.mdx b/fern/products/sdks/overview/go/changelog/2024-09-08.mdx new file mode 100644 index 000000000..0b32d2e8f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-08.mdx @@ -0,0 +1,3 @@ +## 0.24.0 +**`(feat):`** Add support for reading headers from environment variables (e.g. `X-API-Version`). + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-09.mdx b/fern/products/sdks/overview/go/changelog/2024-09-09.mdx new file mode 100644 index 000000000..606ea4641 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-09.mdx @@ -0,0 +1,3 @@ +## 0.25.0 +**`(feat):`** Add support for sending extra body properties and query parameters via `RequestOption`. + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-26.mdx b/fern/products/sdks/overview/go/changelog/2024-09-26.mdx new file mode 100644 index 000000000..472ac93c9 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-26.mdx @@ -0,0 +1,3 @@ +## 0.26.0 +**`(feat):`** Add support for sending custom Content-Type header values defined in the API. + diff --git a/fern/products/sdks/overview/go/changelog/2024-09-29.mdx b/fern/products/sdks/overview/go/changelog/2024-09-29.mdx new file mode 100644 index 000000000..55f4b4282 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-09-29.mdx @@ -0,0 +1,3 @@ +## 0.27.0 +**`(feat):`** Add support for SSE (Server-Sent Events) streaming responses. The user-facing interface for streaming responses remains the same between standard HTTP streaming and SSE. + diff --git a/fern/products/sdks/overview/go/changelog/2024-10-25.mdx b/fern/products/sdks/overview/go/changelog/2024-10-25.mdx new file mode 100644 index 000000000..018ab7ee5 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-10-25.mdx @@ -0,0 +1,4 @@ +## 0.28.0 +**`(feat):`** Add support for the exportedClientName configuration, which can be used to customize the generated client name and constructor included in snippets. +Note that this configuration option assumes that the SDK includes a hand-written client constructor defined in the client package. + diff --git a/fern/products/sdks/overview/go/changelog/2024-10-29.mdx b/fern/products/sdks/overview/go/changelog/2024-10-29.mdx new file mode 100644 index 000000000..43ea2c929 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-10-29.mdx @@ -0,0 +1,7 @@ +## 0.28.1 +**`(fix):`** Fix an issue where optional, allow-multiple query parameter snippets were not rendered. + +**`(fix):`** Fix an issue where service headers were not included in the generated in-lined request. + +**`(fix):`** Fix an issue where literal types were included as path parameter arguments. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-06.mdx b/fern/products/sdks/overview/go/changelog/2024-11-06.mdx new file mode 100644 index 000000000..84e7c3715 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-06.mdx @@ -0,0 +1,3 @@ +## 0.28.2 +**`(fix):`** Fix an issue where undiscriminated unions were not round-trippable whenever the union is the zero value of the type (e.g. `0` for `int`). + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-07.mdx b/fern/products/sdks/overview/go/changelog/2024-11-07.mdx new file mode 100644 index 000000000..b611ebbc3 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-07.mdx @@ -0,0 +1,3 @@ +## 0.28.3 +**`(internal):`** Upgrade to IRv53. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-08.mdx b/fern/products/sdks/overview/go/changelog/2024-11-08.mdx new file mode 100644 index 000000000..4e6f7b4ef --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-08.mdx @@ -0,0 +1,10 @@ +## 0.30.0 +**`(feat):`** Add support for nil-safe getter methods. Callers can more easily access nested properties by chaining together getter method calls instead of a long series of `!= nil` checks. + +## 0.29.0 +**`(feat):`** All SDKs now include an exported `FileParam` type that can be used to configure the `Content-Type` of file upload properties. + +**`(fix):`** Resolves an issue where multipart/form-data lists were incorrectly serialized as JSON. They are now added as individual parts. + +**`(internal):`** Refactor file upload endpoint generation with the new `core.MultipartWriter`. This significantly improves the aesthetics of the generated code. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-14.mdx b/fern/products/sdks/overview/go/changelog/2024-11-14.mdx new file mode 100644 index 000000000..eb0300038 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-14.mdx @@ -0,0 +1,4 @@ +## 0.31.0 +**`(feat):`** Improves type file layout with zero impact on backwards compatibility. +Shared types are now more accurately placed in the `types.go` file, whereas types referenced by a single service are now placed in a file that matches the service's filename (e.g. user.go). + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-15.mdx b/fern/products/sdks/overview/go/changelog/2024-11-15.mdx new file mode 100644 index 000000000..58857e1db --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-15.mdx @@ -0,0 +1,9 @@ +## 0.31.2 +**`(internal):`** Add an `internal` package, which now contains the internal functionality previously included in the `core` package (e.g. `core.Caller` -> `internal.Caller`). +Although technically a breaking change in terms of the module itself, this change was always the intention, and should have zero impact on users. +Any `core` type that is meant for public consumption remains in the exported `core` package (e.g. `core.APIError` and `core.RequestOption`). + +## 0.31.1 +**`(internal):`** Adds additional tests to confirm the behavior of the `core.Retrier`. +No functional, user-facing changes are included. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-18.mdx b/fern/products/sdks/overview/go/changelog/2024-11-18.mdx new file mode 100644 index 000000000..4bd90799f --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-18.mdx @@ -0,0 +1,16 @@ +## 0.32.0 +**`(feat):`** Add support for the `inlineFileProperties` configuration option, which generates file properties in the generated request type instead of as separate positional parameters. +```yaml # generators.yml +- name: fern-api/fern-go-sdk + version: 0.32.0 + config: + inlineFileProperties: true +``` + +**`(fix):`** Fixes an issue where the new `core.MultipartWriter` was generated for SDKs that didn't define any file upload endpoints. + +**`(internal):`** Simplify the generated code from the new `core.MultipartWriter` introduced in 0.29.0 by refactoring `internal.WithMultipartContentType` as `internal.WithDefaultContentType`. + +## 0.31.3 +**`(fix):`** Updates the retrier to stop retrying on `409 Conflict` HTTP status codes by default. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-20.mdx b/fern/products/sdks/overview/go/changelog/2024-11-20.mdx new file mode 100644 index 000000000..a95885838 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-20.mdx @@ -0,0 +1,3 @@ +## 0.32.1 +**`(internal):`** Improve the aesthetics of the generated code, and reduce the amount of repetition in each of the generated endpoints. This change has zero impact on the behavior of the generated SDK. + diff --git a/fern/products/sdks/overview/go/changelog/2024-11-21.mdx b/fern/products/sdks/overview/go/changelog/2024-11-21.mdx new file mode 100644 index 000000000..4ccfa6238 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-11-21.mdx @@ -0,0 +1,9 @@ +## 0.33.0 +**`(feat):`** Add support for the `inlinePathParameters` configuration option, which generates path parameters in the generated request type (if any) instead of as separate positional parameters. +```yaml # generators.yml +- name: fern-api/fern-go-sdk + version: 0.33.0 + config: + inlinePathParameters: true +``` + diff --git a/fern/products/sdks/overview/go/changelog/2024-12-12.mdx b/fern/products/sdks/overview/go/changelog/2024-12-12.mdx new file mode 100644 index 000000000..beb183e21 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2024-12-12.mdx @@ -0,0 +1,21 @@ +## 0.35.0 +**`(feat):`** Add runtime validation for discriminated unions to prevent users from accidentally sending the wrong type of value. With this, users will be expected to set exactly one of the union's values like so: +```go package example +type Animal struct { + Type string + Cat *Cat + Dog *Dog +} +func do() { + union := &Animal{ + Cat: &Cat{ + Name: "Fluffy", + }, + } +} ``` +If the user sets _both_ `Cat` and `Dog`, the user will receive an error when the type is serialized to JSON (i.e. in the `json.Marshaler` implementation). + +## 0.34.0 +**`(feat):`** Add support for sending the `User-Agent` header on every request. Go packages are uniquely identified by their full module path, so the `User-Agent` header is generated in the `/` format, e.g. +``` User-Agent: github.com/acme/acme-go/1.0.0 ``` + diff --git a/fern/products/sdks/overview/go/changelog/2025-01-03.mdx b/fern/products/sdks/overview/go/changelog/2025-01-03.mdx new file mode 100644 index 000000000..6cceb9ccc --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-01-03.mdx @@ -0,0 +1,3 @@ +## 0.35.1 +**`(fix):`** Fixes an issue where the delimiter length was included during stream data read, even when the delimiter was missing, leading to a `bufio.ErrAdvanceTooFar` error + diff --git a/fern/products/sdks/overview/go/changelog/2025-01-17.mdx b/fern/products/sdks/overview/go/changelog/2025-01-17.mdx new file mode 100644 index 000000000..411881ee3 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-01-17.mdx @@ -0,0 +1,5 @@ +## 0.35.2 +**`(fix):`** Fixes an issue where certain literal string values were incorrectly generated in undiscriminated unions. + +**`(fix):`** Fixes an issue where custom names applied to a basic auth scheme were not preserved. + diff --git a/fern/products/sdks/overview/go/changelog/2025-01-22.mdx b/fern/products/sdks/overview/go/changelog/2025-01-22.mdx new file mode 100644 index 000000000..c0ebb9794 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-01-22.mdx @@ -0,0 +1,31 @@ +## 0.36.0 +**`(feat):`** Adds support for a few new configuration options, all of which are shown below: +```yaml - name: fern-api/fern-go-sdk + version: 0.36.0 + config: + packageLayout: flat + clientName: Acme + clientConstructorName: New +``` +With this, the generated SDK will all be deposited at the root of the module, and the client can be constructed like so: +```go package main +import ( + "context" + "fmt" + "log" + acme "github.com/acme/acme-go" +) +func main() { + client := acme.New() + response, err := client.GetUser( + context.Background(), + &acme.GetUserRequest{ + ID: "85307b0b-094b-41b5-b61d-347ca15e5da2", + }, + ) + if err != nil { + log.Fatal(err) + } + fmt.Println(response) +} ``` + diff --git a/fern/products/sdks/overview/go/changelog/2025-01-23.mdx b/fern/products/sdks/overview/go/changelog/2025-01-23.mdx new file mode 100644 index 000000000..787a0cf6d --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-01-23.mdx @@ -0,0 +1,3 @@ +## 0.36.1 +**`(fix):`** Fix offset pagination method generation for non-integer offset parameters (e.g. `float64`). + diff --git a/fern/products/sdks/overview/go/changelog/2025-01-26.mdx b/fern/products/sdks/overview/go/changelog/2025-01-26.mdx new file mode 100644 index 000000000..65838bd78 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-01-26.mdx @@ -0,0 +1,3 @@ +## 0.36.2 +**`(fix):`** Fix cursor pagination stopping condition when the cursor types do not match (e.g. a `*string` cursor type with a `string` next cursor type). + diff --git a/fern/products/sdks/overview/go/changelog/2025-02-04.mdx b/fern/products/sdks/overview/go/changelog/2025-02-04.mdx new file mode 100644 index 000000000..086a56e17 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-02-04.mdx @@ -0,0 +1,3 @@ +## 0.36.3 +**`(fix):`** Fix an issue where the version header specified by the user wasn't being used. + diff --git a/fern/products/sdks/overview/go/changelog/2025-02-05.mdx b/fern/products/sdks/overview/go/changelog/2025-02-05.mdx new file mode 100644 index 000000000..2f4632c87 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-02-05.mdx @@ -0,0 +1,3 @@ +## 0.36.4 +**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. + diff --git a/fern/products/sdks/overview/go/changelog/2025-02-17.mdx b/fern/products/sdks/overview/go/changelog/2025-02-17.mdx new file mode 100644 index 000000000..c44843e7b --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-02-17.mdx @@ -0,0 +1,3 @@ +## 0.36.5 +**`(fix):`** Fix an issue where `map` values were not correctly serialized as deep object query parameters. + diff --git a/fern/products/sdks/overview/go/changelog/2025-03-13.mdx b/fern/products/sdks/overview/go/changelog/2025-03-13.mdx new file mode 100644 index 000000000..ecd0a7c6c --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-03-13.mdx @@ -0,0 +1,11 @@ +## 0.37.2 +**`(fix):`** Fix an issue where the `go-v2` generator call prevented the `go` generator from succeeding in remote code generation environments. + +## 0.37.1 +**`(fix):`** Fix an issue where the primary Go files were not being written due to README.md generation. + +## 0.37.0 +**`(internal):`** Upgrade to IRv57. + +**`(feat):`** Add support for automatic `README.md` generation. + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-01.mdx b/fern/products/sdks/overview/go/changelog/2025-05-01.mdx new file mode 100644 index 000000000..b1b6d50d8 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-01.mdx @@ -0,0 +1,4 @@ +## 0.37.3 +**`(fix):`** Install the generator-cli at build time as a fallback if runtime installation fails. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-08.mdx b/fern/products/sdks/overview/go/changelog/2025-05-08.mdx new file mode 100644 index 000000000..129001ba6 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-08.mdx @@ -0,0 +1,4 @@ +## 0.37.4 +**`(fix):`** Fix an issue where enum values containing double quotes were not properly escaped in generated code. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-13.mdx b/fern/products/sdks/overview/go/changelog/2025-05-13.mdx new file mode 100644 index 000000000..b34006bd6 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-13.mdx @@ -0,0 +1,4 @@ +## 0.37.5 +**`(fix):`** Add support for the custom introduction setting in the generated README.md. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-14.mdx b/fern/products/sdks/overview/go/changelog/2025-05-14.mdx new file mode 100644 index 000000000..6932876de --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-14.mdx @@ -0,0 +1,5 @@ +## 0.38.0 +**`(feat):`** Add support for the `useReaderForBytesRequest` configuration option, which generates +`io.Reader` request parameters instead of `[]byte` request parameters. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-20.mdx b/fern/products/sdks/overview/go/changelog/2025-05-20.mdx new file mode 100644 index 000000000..52f025b7e --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-20.mdx @@ -0,0 +1,10 @@ +## 1.0.0 +**`(feat):`** Major version release to update the generator's default set of configuration options. +The following configuration options have been updated: + - `alwaysSendRequiredProperties` is now `true` by default. + - `inlineFileProperties` is now `true` by default. + - `inlinePathParameters` is now `true` by default. + - `useReaderForBytesRequest` is now `true` by default. + - `union` is now `v1` by default. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-05-22.mdx b/fern/products/sdks/overview/go/changelog/2025-05-22.mdx new file mode 100644 index 000000000..223d9a110 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-05-22.mdx @@ -0,0 +1,8 @@ +## 1.1.0 +**`(feat):`** Add support for HEAD method requests. These client methods return the raw `http.Header` type. + + +**`(fix):`** Update the file header to follow `go:generate` naming conventions. For details, see +https://pkg.go.dev/cmd/go#hdr-Generate_Go_files_by_processing_source + + diff --git a/fern/products/sdks/overview/go/changelog/2025-06-03.mdx b/fern/products/sdks/overview/go/changelog/2025-06-03.mdx new file mode 100644 index 000000000..8af3b6338 --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-06-03.mdx @@ -0,0 +1,4 @@ +## 1.2.0 +**`(feat):`** Add support for generating `README.md` when filesystem publishing is enabled. + + diff --git a/fern/products/sdks/overview/go/changelog/2025-06-26.mdx b/fern/products/sdks/overview/go/changelog/2025-06-26.mdx new file mode 100644 index 000000000..91f98b11e --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-06-26.mdx @@ -0,0 +1,14 @@ +## 1.3.0 +**`(feat):`** Add support for receiving raw response headers from API calls with the new `WithRawResponse` client field. + +```go +response, err := client.WithRawResponse.GetUser(...) +fmt.Printf("Got response headers: %v", response.Header) +``` + + +**`(feat):`** Bump the minimum Go version to `1.18` because generics are now required by the SDK. Version 1.18 was +originally released over three years ago, so this is well within the official Go support window found +at https://go.dev/doc/devel/release#policy + + diff --git a/fern/products/sdks/overview/go/changelog/2025-07-01.mdx b/fern/products/sdks/overview/go/changelog/2025-07-01.mdx new file mode 100644 index 000000000..21b98298b --- /dev/null +++ b/fern/products/sdks/overview/go/changelog/2025-07-01.mdx @@ -0,0 +1,5 @@ +## 1.4.0 +**`(feat):`** Add support for receiving raw response headers from API calls with the new `WithRawResponse` client field +for multipart/form-data endpoints. + + diff --git a/fern/products/sdks/overview/java/changelog.mdx b/fern/products/sdks/overview/java/changelog.mdx deleted file mode 100644 index 6155144dd..000000000 --- a/fern/products/sdks/overview/java/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Java Changelog -description: Changelog for the Fern Java SDK. ---- - -Stay up to date with the latest changes and updates to the Fern Java SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/java). \ No newline at end of file diff --git a/fern/products/sdks/overview/java/changelog/2024-02-03.mdx b/fern/products/sdks/overview/java/changelog/2024-02-03.mdx new file mode 100644 index 000000000..0b841bb3f --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-03.mdx @@ -0,0 +1,3 @@ +## 0.6.1 +**`(internal):`** Release version 0.6.1 + diff --git a/fern/products/sdks/overview/java/changelog/2024-02-04.mdx b/fern/products/sdks/overview/java/changelog/2024-02-04.mdx new file mode 100644 index 000000000..caf33aebf --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-04.mdx @@ -0,0 +1,42 @@ +## 0.7.1 +**`(feat):`** The SDK generator now supports idempotency headers. Users +will be able to specify the idempotency headers in RequestOptions. + +```java +Imdb imdb = Imdb.builder() + .apiKey("...") + .build(); + +var response = imdb.ticket.purchase("theatre-id", IdempotentRequestOptions.builder() + .idempotencyKey("...") + .build()); +``` + + +**`(feat):`** The SDK generator now supports scanning API credentials + via environment variables. + ```java + Imdb imdb = Imdb.builder() + .apiKey("...") // defaults to System.getenv("IMDB_API_KEY") + .build(); + ``` + + +**`(feat):`** The generated models now support boolean literals and users +do not have to specify them in the builder. +For example, for the following object +```yaml +Actor: + properties: + name: string + isMale: literal +``` +the user will not need to specify the literal properties when building +the object. +```java +var actor = Actor.builder() + .name("Brad Pitt") + .build(); +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-02-11.mdx b/fern/products/sdks/overview/java/changelog/2024-02-11.mdx new file mode 100644 index 000000000..f4334b5b1 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-11.mdx @@ -0,0 +1,7 @@ +## 0.8.0 +**`(feat):`** The SDK generator now supports whitelabelling. When this is turned on, +there will be no mention of Fern in the generated code. + +**Note**: You must be on the enterprise tier to enable this mode. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-02-14.mdx b/fern/products/sdks/overview/java/changelog/2024-02-14.mdx new file mode 100644 index 000000000..2d8e0d1d1 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-14.mdx @@ -0,0 +1,10 @@ +## 0.8.1 +**`(feat):`** The RequestOptions object now supports configuring an optional timeout to apply per-request. +```java +RequestOptions ro = RequestOptions.builder().timeout(90).build(); // Creates a timeout of 90 seconds for the request +// You could also specify the timeunit, similar to as if you were using OkHttp directly +// RequestOptions ro = RequestOptions.builder().timeout(2, TimeUnit.MINUTES).build(); +client.films.list(ro); +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-02-21.mdx b/fern/products/sdks/overview/java/changelog/2024-02-21.mdx new file mode 100644 index 000000000..cc627eb6b --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-21.mdx @@ -0,0 +1,13 @@ +## 0.8.2 +**`(fix):`** File upload endpoints no longer fail to compile because the reference to +the mime type variable is present. + +```java +// Code that failed to compile +String fileMimeType = Files.probeContentType(file.toPath()); +MediaType fileMediaType = fileMimeType != null ? MediaType.parse(mimeType) : null; // mimeType undefined +// Code that now compiles +MediaType fileMediaType = fileMimeType != null ? MediaType.parse(fileMimeType) : null; +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-02-23.mdx b/fern/products/sdks/overview/java/changelog/2024-02-23.mdx new file mode 100644 index 000000000..1fd1fc7b9 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-02-23.mdx @@ -0,0 +1,18 @@ +## 0.8.5-rc0 +**`(internal):`** Update docker image for Java SDK task runner. + +## 0.8.4 +**`(fix):`** The timeout specified on the RequestOptions object now sets the timeout on the entire call, not just the +read timeout of the request. +As a refresher, a timeout can be added per request like so: +```java +RequestOptions ro = RequestOptions.builder().timeout(90).build(); // Creates a timeout of 90 seconds for the request +// You could also specify the timeunit, similar to as if you were using OkHttp directly +// RequestOptions ro = RequestOptions.builder().timeout(2, TimeUnit.MINUTES).build(); +client.films.list(ro); +``` + + +## 0.8.3 +**`(fix):`** The SDK generator now always creates a valid name for union discriminator wrapper classes. + diff --git a/fern/products/sdks/overview/java/changelog/2024-03-18.mdx b/fern/products/sdks/overview/java/changelog/2024-03-18.mdx new file mode 100644 index 000000000..86f57386e --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-03-18.mdx @@ -0,0 +1,31 @@ +## 0.8.5 +**`(feat):`** Add in publishing config that allows for signing published artifacts, this is required for publishing to Maven +Central. +To sign your artifacts, you must add the below to your publishing config: +```yaml +generators: + - name: fernapi/fern-java-sdk + version: 0.X.Y + output: + location: maven + registryUrl: "" + signature: + keyId: "" + password: "" + secretKey: "" +``` +and secrets can be used, similar to how API keys are specified today: +```yaml +generators: + - name: fernapi/fern-java-sdk + version: 0.X.Y + output: + location: maven + registryUrl: "" + signature: + keyId: ${MY_KID_ENVVAR} + password: ${MY_SECRET_ENVVAR} + secretKey: ${MY_SECRET_KEY_ENVVAR} +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-03-20.mdx b/fern/products/sdks/overview/java/changelog/2024-03-20.mdx new file mode 100644 index 000000000..89007e07b --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-03-20.mdx @@ -0,0 +1,6 @@ +## 0.8.6 +**`(fix):`** The SDK now generates RequestOptions functions for timeouts with IdempotentRequestOptions correctly, previously +timeout functions were only taking in regular RequestOptions. This also addresses a JavaPoet issue where fields were +being initialized twice across RequestOptions and IdempotentRequestOptions classes, preventing the SDK from generating at all. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-03-21.mdx b/fern/products/sdks/overview/java/changelog/2024-03-21.mdx new file mode 100644 index 000000000..ea079479e --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-03-21.mdx @@ -0,0 +1,17 @@ +## 0.8.7 +**`(feat):`** You can now specify publishing metadata to populate your POM on publish: +```yaml +generators: + - name: fernapi/fern-java-sdk + version: 0.X.Y + output: + location: maven + registryUrl: "" + publish-metadata: + author: "" + email: "" + package-description: "" + reference-url: "" +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-07.mdx b/fern/products/sdks/overview/java/changelog/2024-05-07.mdx new file mode 100644 index 000000000..776f82bd3 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-07.mdx @@ -0,0 +1,6 @@ +## 0.8.9 +**`(fix):`** Generated SDK clients now handle null response bodies and avoid NPEs when they receive error responses. + +## 0.8.8 +**`(fix):`** The generated SDKs no longer require global headers that are not directly related to auth if auth is mandatory within the SDK. Previously, the generator would require all global headers if auth was mandatory. + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-08.mdx b/fern/products/sdks/overview/java/changelog/2024-05-08.mdx new file mode 100644 index 000000000..bcf5d7cf3 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-08.mdx @@ -0,0 +1,6 @@ +## 0.8.11 +**`(fix):`** Corrects the fix in 0.8.10 to check null value as opposed to a .isPresent check, given the header is not `Optional`, it's always `String` + +## 0.8.10 +**`(fix):`** Fixes regression from 0.8.8, headers are no longer added to the header map unless they are non-null. + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-13.mdx b/fern/products/sdks/overview/java/changelog/2024-05-13.mdx new file mode 100644 index 000000000..2bb8e876c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-13.mdx @@ -0,0 +1,3 @@ +## 0.9.0-rc0 +**`(internal):`** Bump intermediate representation to v42 + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-15.mdx b/fern/products/sdks/overview/java/changelog/2024-05-15.mdx new file mode 100644 index 000000000..c0e56069c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-15.mdx @@ -0,0 +1,12 @@ +## 0.9.1 +**`(fix):`** Support OAuth without token refresh. Example of initializing a client with OAuth: + +```java +ExampleApiClient client = ExampleApiClient + .builder() + .clientId("4bf2a37d-8512-44a2-af50-28a7701d9f2e") + .clientSecret("b3b187b0-ef48-49ba-9d99-80d89fd11c4a") + .build(); +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-21.mdx b/fern/products/sdks/overview/java/changelog/2024-05-21.mdx new file mode 100644 index 000000000..d73b80f2e --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-21.mdx @@ -0,0 +1,3 @@ +## 0.9.2 +**`(fix):`** Java 8 Compatibility. + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-23.mdx b/fern/products/sdks/overview/java/changelog/2024-05-23.mdx new file mode 100644 index 000000000..1cfb3455e --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-23.mdx @@ -0,0 +1,3 @@ +## 0.9.3 +**`(feat):`** Generated SDK clients with an OAuth security scheme will now automatically refresh access tokens before they expire. + diff --git a/fern/products/sdks/overview/java/changelog/2024-05-30.mdx b/fern/products/sdks/overview/java/changelog/2024-05-30.mdx new file mode 100644 index 000000000..e09d369cf --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-05-30.mdx @@ -0,0 +1,6 @@ +## 0.9.5 +**`(fix):`** Types without fields are now generated with builders. Previously, they were not, which made them impossible to initialize. + +## 0.9.4 +**`(fix):`** The SDK now generates undiscriminated unions with de-conflicted method signatures. Previously, certain undiscriminated unions would have failed to compile due to Java's type erasure causing conflicts. + diff --git a/fern/products/sdks/overview/java/changelog/2024-06-05.mdx b/fern/products/sdks/overview/java/changelog/2024-06-05.mdx new file mode 100644 index 000000000..99baae78a --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-06-05.mdx @@ -0,0 +1,3 @@ +## 0.9.6 +**`(feat):`** The SDK generator now supports returning response properties from client methods rather than just the responses themselves. + diff --git a/fern/products/sdks/overview/java/changelog/2024-06-06.mdx b/fern/products/sdks/overview/java/changelog/2024-06-06.mdx new file mode 100644 index 000000000..96a8f6bc4 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-06-06.mdx @@ -0,0 +1,10 @@ +## 0.9.8 +**`(feat):`** `RequestOptions` are now generated with the `timeout` field initialized to `Optional.empty()` instead of `null` to avoid NPEs if `timeout` is not set in the builder. + + +## 0.9.7 +**`(feat):`** The SDK generator now generates `@java.lang.Override` over `@Override` in all files to avoid clashes with any +`Override.java` class that may have been generated in the same package. The former was used most places, but not all, +until this release. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-06-07.mdx b/fern/products/sdks/overview/java/changelog/2024-06-07.mdx new file mode 100644 index 000000000..9aa0c6bf3 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-06-07.mdx @@ -0,0 +1,3 @@ +## 0.10.0 +**`(feat):`** The generator now supports BigInteger types. + diff --git a/fern/products/sdks/overview/java/changelog/2024-06-13.mdx b/fern/products/sdks/overview/java/changelog/2024-06-13.mdx new file mode 100644 index 000000000..7f39ea0ef --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-06-13.mdx @@ -0,0 +1,63 @@ +## 0.10.1 +**`(feat):`** Add support for cursor and offset pagination. + +### What's new +- Add support for cursor and offset pagination. + +For example, consider the following endpoint `/users` endpoint: + +```yaml +types: + User: + properties: + name: string + + ListUserResponse: + properties: + next: optional + data: list + +service: + auth: false + base-path: /users + endpoints: + list: + path: "" + method: GET + pagination: + cursor: $request.starting_after + next_cursor: $response.next + results: $response.data + request: + name: ListUsersRequest + query-parameters: + starting_after: optional + response: ListUsersResponse +``` + +The generated `SyncPagingIterable` can then be used to traverse through the `User` objects: + +```java +for (User user : client.users.list(...)) { + System.out.println(user); +} +``` + +Or stream them: + +```java +client.users.list(...).streamItems().map(user -> ...); +``` + +Or statically calling `nextPage()` to perform the pagination manually: + +```java +SyncPagingIterable pager = client.users.list(...); +// First page +System.out.println(pager.getItems()); +// Second page +pager = pager.nextPage(); +System.out.println(pager.getItems()); +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-06-26.mdx b/fern/products/sdks/overview/java/changelog/2024-06-26.mdx new file mode 100644 index 000000000..4e123ab8c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-06-26.mdx @@ -0,0 +1,24 @@ +## 1.0.1 +**`(break):`** The Java SDK is now on major version 1. To take this upgrade without any breaks, please add the below +configuration to your `generators.yml` file: +```yaml +generators: + - name: fernapi/fern-java-sdk + config: + base-api-exception-class-name: ApiError + base-exception-class-name: CompanyException # Optional: This should only be set if default naming is undesirable +``` + + +**`(feat):`** We now generate Exception types for all errors that are defined in the IR. Generated clients with an +error discrimination strategy of "status code" will throw one of these typed Exceptions based on the status code of +error responses. Example error type: +```java +public final class BadRequest extends MyCompanyApiError { + public BadRequest(Object body) { + super("BadRequest", 400, body); + } +} +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-07-02.mdx b/fern/products/sdks/overview/java/changelog/2024-07-02.mdx new file mode 100644 index 000000000..56b4ee215 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-07-02.mdx @@ -0,0 +1,12 @@ +## 1.0.2-rc0 +**`(feat):`** The generator now adds a class-level `@JsonInclude(JsonInclude.Include.NON_ABSENT)` annotation to +each generated type in place of the previous `@JsonInclude(JsonInclude.Include.NON_EMPTY)` by default. This is +configurable in the `generators.yml` file: +```yaml +generators: + - name: fernapi/fern-java-sdk + config: + json-include: non-empty # default non-absent +``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-07-23.mdx b/fern/products/sdks/overview/java/changelog/2024-07-23.mdx new file mode 100644 index 000000000..9db34dac8 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-07-23.mdx @@ -0,0 +1,3 @@ +## 1.0.3 +**`(feat):`** Generated builder methods for optional fields can now accept null directly. + diff --git a/fern/products/sdks/overview/java/changelog/2024-07-24.mdx b/fern/products/sdks/overview/java/changelog/2024-07-24.mdx new file mode 100644 index 000000000..f7688b839 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-07-24.mdx @@ -0,0 +1,3 @@ +## 1.0.4 +**`(fix):`** Fixed a bug where OkHttp responses could be closed prematurely. + diff --git a/fern/products/sdks/overview/java/changelog/2024-07-26.mdx b/fern/products/sdks/overview/java/changelog/2024-07-26.mdx new file mode 100644 index 000000000..992849c05 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-07-26.mdx @@ -0,0 +1,3 @@ +## 1.0.5 +**`(fix):`** Fixed a bug where local generation custom config doesn't pick up some values, including exception naming. + diff --git a/fern/products/sdks/overview/java/changelog/2024-09-04.mdx b/fern/products/sdks/overview/java/changelog/2024-09-04.mdx new file mode 100644 index 000000000..fa7b56793 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-09-04.mdx @@ -0,0 +1,13 @@ +## 1.0.7 +**`(feat):`** Public constructors can now be generated for all model types: +```yaml +generators: + - name: fernapi/fern-java-sdk + config: + enable-public-constructors: true # default false + ``` + + +## 1.0.6 +**`(fix):`** Fixed a bug where optional collections are not handled properly in paginated responses. + diff --git a/fern/products/sdks/overview/java/changelog/2024-09-05.mdx b/fern/products/sdks/overview/java/changelog/2024-09-05.mdx new file mode 100644 index 000000000..f4e6d42cf --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-09-05.mdx @@ -0,0 +1,23 @@ +## 2.0.0 +**`(break):`** The SDK generator is now on major version 2. To take this upgrade without any breaks, please add the below +configuration to your `generators.yml` file: +```yaml +generators: + - name: fernapi/fern-java-sdk + config: + disable-required-property-builder-checks: true +``` + + +**`(feat):`** Generated builder methods now enforce non-null checks for required fields, ensuring that all required +fields are properly validated during object construction: + ```java + @java.lang.Override + @JsonSetter("name") + public NameStage name(@NotNull String name) { + this.name = Objects.requireNonNull(name, "name must not be null"); + return this; + } + ``` + + diff --git a/fern/products/sdks/overview/java/changelog/2024-09-11.mdx b/fern/products/sdks/overview/java/changelog/2024-09-11.mdx new file mode 100644 index 000000000..b1e0a545a --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-09-11.mdx @@ -0,0 +1,4 @@ +## 2.1.0 +**`(feat):`** We no longer enforce non-null constraints for Object type properties in builders. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-09-26.mdx b/fern/products/sdks/overview/java/changelog/2024-09-26.mdx new file mode 100644 index 000000000..41e05e6c3 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-09-26.mdx @@ -0,0 +1,8 @@ +## 2.2.0 +**`(feat):`** We now provide endpoint methods for streaming byte array requests in addition to the previous methods accepting +byte array directly. + + +**`(chore):`** Bump Jackson version to latest (2.17.2) + + diff --git a/fern/products/sdks/overview/java/changelog/2024-12-04.mdx b/fern/products/sdks/overview/java/changelog/2024-12-04.mdx new file mode 100644 index 000000000..d4e64f0c9 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-12-04.mdx @@ -0,0 +1,8 @@ +## 2.3.1 +**`(fix):`** The rootProject.name is now set in settings.gradle and ci.yml uses ./gradlew sonatypeCentralUpload for publishing. + + +## 2.3.0 +**`(feat):`** Fix publishing to Maven Central with proper signing configuration and metadata. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-12-10.mdx b/fern/products/sdks/overview/java/changelog/2024-12-10.mdx new file mode 100644 index 000000000..062199c4b --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-12-10.mdx @@ -0,0 +1,13 @@ +## 2.6.0 +**`(fix):`** Don't generate pagination with nonempty path. Fixes pagination seed tests breaking. + + +## 2.5.0 +**`(chore):`** Bump IR version to latest (v53) + + +## 2.4.0 +**`(feat):`** We now support overriding sdk package prefixes by adding a "package-prefix" key under the java-sdk generator +configuration. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-12-11.mdx b/fern/products/sdks/overview/java/changelog/2024-12-11.mdx new file mode 100644 index 000000000..ef7a80184 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-12-11.mdx @@ -0,0 +1,4 @@ +## 2.7.0 +**`(feat):`** Apply Content-Type header from endpoint definition in SDK generator. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-12-20.mdx b/fern/products/sdks/overview/java/changelog/2024-12-20.mdx new file mode 100644 index 000000000..bf130626c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-12-20.mdx @@ -0,0 +1,4 @@ +## 2.8.0 +**`(feat):`** Generate inline request bodies with their path parameters in the object. + + diff --git a/fern/products/sdks/overview/java/changelog/2024-12-23.mdx b/fern/products/sdks/overview/java/changelog/2024-12-23.mdx new file mode 100644 index 000000000..16782c012 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2024-12-23.mdx @@ -0,0 +1,10 @@ +## 2.8.1 +**`(feat):`** Implement global timeout configuration for generated clients. + ```java + var client = Client.builder() + .apiKey("...") + .timeout(40) + .build(); + ``` + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-07.mdx b/fern/products/sdks/overview/java/changelog/2025-01-07.mdx new file mode 100644 index 000000000..0ca5b8ac5 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-07.mdx @@ -0,0 +1,4 @@ +## 2.9.0 +**`(feat):`** Support version headers in request and client options. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-16.mdx b/fern/products/sdks/overview/java/changelog/2025-01-16.mdx new file mode 100644 index 000000000..f51125362 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-16.mdx @@ -0,0 +1,12 @@ +## 2.10.2 +**`(fix):`** Omit methods with inlined types from interface definitions. + + +## 2.10.1 +**`(fix):`** Fix union inline type name conflict resolution. + + +## 2.10.0 +**`(feat):`** Support inline types in the Java generator. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-17.mdx b/fern/products/sdks/overview/java/changelog/2025-01-17.mdx new file mode 100644 index 000000000..ddf849782 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-17.mdx @@ -0,0 +1,4 @@ +## 2.10.3 +**`(fix):`** Fix inlining unwrapped alias types. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-19.mdx b/fern/products/sdks/overview/java/changelog/2025-01-19.mdx new file mode 100644 index 000000000..f20ab59e6 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-19.mdx @@ -0,0 +1,4 @@ +## 2.10.4 +**`(fix):`** Fix potential NPE initializing client options with default version + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-21.mdx b/fern/products/sdks/overview/java/changelog/2025-01-21.mdx new file mode 100644 index 000000000..fd10f3dfa --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-21.mdx @@ -0,0 +1,8 @@ +## 2.10.6 +**`(fix):`** Prevent accept header from being removed in wrapped requests + + +## 2.10.5 +**`(fix):`** Add Accept header for json responses + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-23.mdx b/fern/products/sdks/overview/java/changelog/2025-01-23.mdx new file mode 100644 index 000000000..96d8a10b4 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-23.mdx @@ -0,0 +1,5 @@ +## 2.10.7 +**`(fix):`** Fix wrapped requests without inline path parameters checking not rendering +no-request endpoint because of non-optional parameters + + diff --git a/fern/products/sdks/overview/java/changelog/2025-01-29.mdx b/fern/products/sdks/overview/java/changelog/2025-01-29.mdx new file mode 100644 index 000000000..b953a7a6a --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-01-29.mdx @@ -0,0 +1,4 @@ +## 2.11.0 +**`(feat):`** Add deep cursor path pagination support. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-03.mdx b/fern/products/sdks/overview/java/changelog/2025-02-03.mdx new file mode 100644 index 000000000..2ba584ec6 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-03.mdx @@ -0,0 +1,8 @@ +## 2.11.2 +**`(fix):`** Add accept header if endpoint has errors + + +## 2.11.1 +**`(fix):`** Send only request body reference for body-only wrapped request + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-04.mdx b/fern/products/sdks/overview/java/changelog/2025-02-04.mdx new file mode 100644 index 000000000..f032ec863 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-04.mdx @@ -0,0 +1,4 @@ +## 2.11.3 +**`(fix):`** Don't add a semicolon twice when rendering accept header + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-10.mdx b/fern/products/sdks/overview/java/changelog/2025-02-10.mdx new file mode 100644 index 000000000..fa814705a --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-10.mdx @@ -0,0 +1,4 @@ +## 2.12.0 +**`(feat):`** Let users define custom headers in request options + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-14.mdx b/fern/products/sdks/overview/java/changelog/2025-02-14.mdx new file mode 100644 index 000000000..501fc7b67 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-14.mdx @@ -0,0 +1,7 @@ +## 2.12.1 +**`(fix):`** Fix collision with variant type called "Value" and internal interface name. + + +**`(fix):`** Prevent discriminant from deserializing as additional property in unwrapped variant. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-18.mdx b/fern/products/sdks/overview/java/changelog/2025-02-18.mdx new file mode 100644 index 000000000..01bd9d954 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-18.mdx @@ -0,0 +1,4 @@ +## 2.13.0 +**`(feat):`** Flat package layout by setting `page-layout: flat` + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-19.mdx b/fern/products/sdks/overview/java/changelog/2025-02-19.mdx new file mode 100644 index 000000000..7d79a5ae8 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-19.mdx @@ -0,0 +1,8 @@ +## 2.15.0 +**`(feat):`** Add support for custom HTTP client in Java SDK + + +## 2.14.0 +**`(feat):`** Support user-agent header + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-20.mdx b/fern/products/sdks/overview/java/changelog/2025-02-20.mdx new file mode 100644 index 000000000..34f1243de --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-20.mdx @@ -0,0 +1,4 @@ +## 2.16.0 +**`(chore):`** Upgrade IR version dependency to v55 + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-24.mdx b/fern/products/sdks/overview/java/changelog/2025-02-24.mdx new file mode 100644 index 000000000..4f69eb093 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-24.mdx @@ -0,0 +1,8 @@ +## 2.18.0 +**`(feat):`** Support form-data with deep object query params + + +## 2.17.0 +**`(feat):`** Support deep object query parameters + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-25.mdx b/fern/products/sdks/overview/java/changelog/2025-02-25.mdx new file mode 100644 index 000000000..a7d77e444 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-25.mdx @@ -0,0 +1,4 @@ +## 2.18.1 +**`(fix):`** Fix form body serialization + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-26.mdx b/fern/products/sdks/overview/java/changelog/2025-02-26.mdx new file mode 100644 index 000000000..9eb9a1825 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-26.mdx @@ -0,0 +1,4 @@ +## 2.19.0 +**`(feat):`** Enable overriding literal headers + + diff --git a/fern/products/sdks/overview/java/changelog/2025-02-27.mdx b/fern/products/sdks/overview/java/changelog/2025-02-27.mdx new file mode 100644 index 000000000..67d74a014 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-02-27.mdx @@ -0,0 +1,4 @@ +## 2.20.0 +**`(fix):`** Fix collection serialization in multipart form body without form encoding + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-02.mdx b/fern/products/sdks/overview/java/changelog/2025-03-02.mdx new file mode 100644 index 000000000..4d0c41465 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-02.mdx @@ -0,0 +1,4 @@ +## 2.20.1 +**`(fix):`** Fix type reference syntax in readValue calls + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-04.mdx b/fern/products/sdks/overview/java/changelog/2025-03-04.mdx new file mode 100644 index 000000000..c6f0cd712 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-04.mdx @@ -0,0 +1,4 @@ +## 2.21.0 +**`(feat):`** Add async clients + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-05.mdx b/fern/products/sdks/overview/java/changelog/2025-03-05.mdx new file mode 100644 index 000000000..6436701a8 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-05.mdx @@ -0,0 +1,4 @@ +## 2.22.0 +**`(feat):`** Add support for explicit nulls in serialization + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-06.mdx b/fern/products/sdks/overview/java/changelog/2025-03-06.mdx new file mode 100644 index 000000000..14179ee57 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-06.mdx @@ -0,0 +1,4 @@ +## 2.23.0 +**`(fix):`** Represent protobuf uint as int rather than long + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-07.mdx b/fern/products/sdks/overview/java/changelog/2025-03-07.mdx new file mode 100644 index 000000000..bf8513593 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-07.mdx @@ -0,0 +1,4 @@ +## 2.23.1 +**`(fix):`** Fix async client builder generation + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-11.mdx b/fern/products/sdks/overview/java/changelog/2025-03-11.mdx new file mode 100644 index 000000000..00db42ac0 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-11.mdx @@ -0,0 +1,8 @@ +## 2.24.1 +**`(fix):`** Add @JsonIgnore to non-serialization getters for nullables + + +## 2.24.0 +**`(fix):`** Fix wrapped request paths in flat mode + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-12.mdx b/fern/products/sdks/overview/java/changelog/2025-03-12.mdx new file mode 100644 index 000000000..b4d82aa62 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-12.mdx @@ -0,0 +1,15 @@ +## 2.24.4 +**`(fix):`** Prevent put requests from generating without a request body + + +## 2.24.3 +**`(fix):`** Fix double unknown in forward-compatible enums + + +**`(fix):`** Prevent enum keyword use in package paths + + +## 2.24.2 +**`(fix):`** Remove 'object' from Java reserved strings list + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-13.mdx b/fern/products/sdks/overview/java/changelog/2025-03-13.mdx new file mode 100644 index 000000000..7a0f786e2 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-13.mdx @@ -0,0 +1,8 @@ +## 2.26.0 +**`(feat):`** Expose max retries for clients + + +## 2.25.0 +**`(feat):`** Add config to inline file properties + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-21.mdx b/fern/products/sdks/overview/java/changelog/2025-03-21.mdx new file mode 100644 index 000000000..5cd5e3ea3 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-21.mdx @@ -0,0 +1,4 @@ +## 2.27.0 +**`(feat):`** Support automatic README.md generation + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-24.mdx b/fern/products/sdks/overview/java/changelog/2025-03-24.mdx new file mode 100644 index 000000000..988c1ed57 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-24.mdx @@ -0,0 +1,4 @@ +## 2.27.1 +**`(fix):`** Change method to `public static void main(String[] args)` in snippet generation + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-26.mdx b/fern/products/sdks/overview/java/changelog/2025-03-26.mdx new file mode 100644 index 000000000..8ac4725e0 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-26.mdx @@ -0,0 +1,4 @@ +## 2.28.0 +**`(feat):`** Expose response headers + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-27.mdx b/fern/products/sdks/overview/java/changelog/2025-03-27.mdx new file mode 100644 index 000000000..f84bc6b39 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-27.mdx @@ -0,0 +1,12 @@ +## 2.31.0 +**`(fix):`** Apply content type to request body creation + + +## 2.30.0 +**`(feat):`** Include response headers in API exceptions + + +## 2.29.0 +**`(fix):`** Query params respect allow-multiple + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-29.mdx b/fern/products/sdks/overview/java/changelog/2025-03-29.mdx new file mode 100644 index 000000000..97e6a8a68 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-29.mdx @@ -0,0 +1,4 @@ +## 2.32.0 +**`(feat):`** Generate snippet.json + + diff --git a/fern/products/sdks/overview/java/changelog/2025-03-31.mdx b/fern/products/sdks/overview/java/changelog/2025-03-31.mdx new file mode 100644 index 000000000..a372b7fc0 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-03-31.mdx @@ -0,0 +1,4 @@ +## 2.32.1 +**`(fix):`** Fix pagination in raw clients + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-01.mdx b/fern/products/sdks/overview/java/changelog/2025-04-01.mdx new file mode 100644 index 000000000..7afda3e78 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-01.mdx @@ -0,0 +1,12 @@ +## 2.32.4 +**`(fix):`** Fix typos in README generator + + +## 2.32.3 +**`(fix):`** Add logging for Java v2 generator call + + +## 2.32.2 +**`(fix):`** Add fallback snippet renderer for readme generation + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-08.mdx b/fern/products/sdks/overview/java/changelog/2025-04-08.mdx new file mode 100644 index 000000000..878ad9864 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-08.mdx @@ -0,0 +1,4 @@ +## 2.32.5 +**`(fix):`** Fix inlining forward-compatible enums + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-09.mdx b/fern/products/sdks/overview/java/changelog/2025-04-09.mdx new file mode 100644 index 000000000..fe3f362bd --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-09.mdx @@ -0,0 +1,12 @@ +## 2.32.8 +**`(fix):`** Use safe name for version enum + + +## 2.32.7 +**`(fix):`** Run v2 generation for SDK generator only + + +## 2.32.6 +**`(fix):`** Fix getting the default version of an api versions enum to not require the `CURRENT` entry + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-21.mdx b/fern/products/sdks/overview/java/changelog/2025-04-21.mdx new file mode 100644 index 000000000..d0082d622 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-21.mdx @@ -0,0 +1,4 @@ +## 2.32.9 +**`(fix):`** Auth header prefix should prepend with a concatenation operator + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-23.mdx b/fern/products/sdks/overview/java/changelog/2025-04-23.mdx new file mode 100644 index 000000000..b16e3dabd --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-23.mdx @@ -0,0 +1,4 @@ +## 2.33.0 +**`(fix):`** Support for literals in union types + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-24.mdx b/fern/products/sdks/overview/java/changelog/2025-04-24.mdx new file mode 100644 index 000000000..c047928c0 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-24.mdx @@ -0,0 +1,4 @@ +## 2.33.1 +**`(fix):`** Fix inline overrides undoing allow-multiple parameterization + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-25.mdx b/fern/products/sdks/overview/java/changelog/2025-04-25.mdx new file mode 100644 index 000000000..62e1d02e4 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-25.mdx @@ -0,0 +1,4 @@ +## 2.33.2 +**`(fix):`** Use non-deprecated method to create request body + + diff --git a/fern/products/sdks/overview/java/changelog/2025-04-28.mdx b/fern/products/sdks/overview/java/changelog/2025-04-28.mdx new file mode 100644 index 000000000..97711d8b5 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-04-28.mdx @@ -0,0 +1,8 @@ +## 2.33.4 +**`(fix):`** (Corrected from 2.33.2) Use non-deprecated method to create request body + + +## 2.33.3 +**`(fix):`** Suppress unchecked cast warning for undiscriminated union visitor + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-01.mdx b/fern/products/sdks/overview/java/changelog/2025-05-01.mdx new file mode 100644 index 000000000..5933cb622 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-01.mdx @@ -0,0 +1,20 @@ +## 2.35.3 +**`(fix):`** Rerelease with the latest generator-cli. + + +## 2.35.2 +**`(fix):`** Install the generator-cli at build time as a fallback if runtime installation fails. + + +## 2.35.1 +**`(fix):`** Self hosted github user defaults to `fern-api[bot]`. + + +## 2.35.0 +**`(fix):`** Support pushing to GitHub enterprise. + + +## 2.34.0 +**`(fix):`** Upgrade to irV57 + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-11.mdx b/fern/products/sdks/overview/java/changelog/2025-05-11.mdx new file mode 100644 index 000000000..f14e8692c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-11.mdx @@ -0,0 +1,4 @@ +## 2.36.0 +**`(feat):`** Support sending requests with content type application/x-www-form-urlencoded. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-13.mdx b/fern/products/sdks/overview/java/changelog/2025-05-13.mdx new file mode 100644 index 000000000..12a4d5d9b --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-13.mdx @@ -0,0 +1,4 @@ +## 2.36.1 +**`(fix):`** Add support for the custom introduction setting in the generated README.md. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-15.mdx b/fern/products/sdks/overview/java/changelog/2025-05-15.mdx new file mode 100644 index 000000000..917265cbe --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-15.mdx @@ -0,0 +1,5 @@ +## 2.36.2 +**`(fix):`** Fix the generated README.md for the `maxRetries` configuration option, which is now +shown on the client constructor. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-20.mdx b/fern/products/sdks/overview/java/changelog/2025-05-20.mdx new file mode 100644 index 000000000..60ec1c02c --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-20.mdx @@ -0,0 +1,5 @@ +## 2.36.3 +**`(fix):`** Updates the generator to always commit changes, even if there are none, in self-hosted mode. This +allows users to make sure that the generator actually ran and attempted to make a commit. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-05-21.mdx b/fern/products/sdks/overview/java/changelog/2025-05-21.mdx new file mode 100644 index 000000000..e5088700f --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-05-21.mdx @@ -0,0 +1,4 @@ +## 2.36.4 +**`(fix):`** Generates docs for method types. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-06-03.mdx b/fern/products/sdks/overview/java/changelog/2025-06-03.mdx new file mode 100644 index 000000000..a13cc421f --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-06-03.mdx @@ -0,0 +1,3 @@ +## 2.36.5 +**`(internal):`** Update the IR to v58. + diff --git a/fern/products/sdks/overview/java/changelog/2025-06-04.mdx b/fern/products/sdks/overview/java/changelog/2025-06-04.mdx new file mode 100644 index 000000000..710a6c94e --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-06-04.mdx @@ -0,0 +1,4 @@ +## 2.37.0 +**`(feat):`** Add support for generating a full project in filesystem mode. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-06-13.mdx b/fern/products/sdks/overview/java/changelog/2025-06-13.mdx new file mode 100644 index 000000000..0585f0db6 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-06-13.mdx @@ -0,0 +1,4 @@ +## 2.37.1-rc0 +**`(fix):`** Fix array query params are treated as exploded: true + + diff --git a/fern/products/sdks/overview/java/changelog/2025-06-16.mdx b/fern/products/sdks/overview/java/changelog/2025-06-16.mdx new file mode 100644 index 000000000..cb7b7ab9b --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-06-16.mdx @@ -0,0 +1,4 @@ +## 2.37.1-rc1 +**`(fix):`** Remove Content-Type from headers when request has no body + + diff --git a/fern/products/sdks/overview/java/changelog/2025-06-23.mdx b/fern/products/sdks/overview/java/changelog/2025-06-23.mdx new file mode 100644 index 000000000..6e4d37e93 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-06-23.mdx @@ -0,0 +1,23 @@ +## 2.38.1 +**`(fix):`** Fix JavaDoc generation to properly escape dollar signs ($) when using JavaPoet. + +When generating JavaDoc comments with JavaPoet, dollar signs need to be escaped as `$$` to prevent +JavaPoet from interpreting them as template variables. This ensures that dollar signs in documentation +are rendered correctly in the final generated code. + + +## 2.38.0 +**`(chore):`** Add support for custom config publish-to to enable publishing to Maven Central with proper metadata and signing configuration. + +```yaml +customConfig: + publish-to: central +``` + +This configuration enables automatic publishing to Maven Central with proper metadata and signing configuration. + + +## 2.37.2 +**`(chore):`** No changes. Publishing changes from 2.37.1-rc0 and 2.37.1-rc1 to release track. + + diff --git a/fern/products/sdks/overview/java/changelog/2025-07-09.mdx b/fern/products/sdks/overview/java/changelog/2025-07-09.mdx new file mode 100644 index 000000000..b44911a64 --- /dev/null +++ b/fern/products/sdks/overview/java/changelog/2025-07-09.mdx @@ -0,0 +1,4 @@ +## 2.38.2 +**`(fix):`** Fix java sdk readme generation to properly create maven shield. + + diff --git a/fern/products/sdks/overview/php/changelog.mdx b/fern/products/sdks/overview/php/changelog.mdx deleted file mode 100644 index 180868397..000000000 --- a/fern/products/sdks/overview/php/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: PHP Changelog -description: Changelog for the Fern PHP SDK. ---- - -Stay up to date with the latest changes and updates to the Fern PHP SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/php). \ No newline at end of file diff --git a/fern/products/sdks/overview/php/changelog/2024-09-24.mdx b/fern/products/sdks/overview/php/changelog/2024-09-24.mdx new file mode 100644 index 000000000..9f00bfb50 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-09-24.mdx @@ -0,0 +1,6 @@ +## 0.1.1 +**`(fix):`** The generated `.github/workflows/ci.yml` file now uses 'shivammathur/setup-php@v2' to install `php` and `composer`. + +## 0.1.0 +**`(feat):`** Initial release. + diff --git a/fern/products/sdks/overview/php/changelog/2024-09-25.mdx b/fern/products/sdks/overview/php/changelog/2024-09-25.mdx new file mode 100644 index 000000000..f909a1d3f --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-09-25.mdx @@ -0,0 +1,9 @@ +## 0.1.2 +**`(feat):`** Represent enums in objects as strings. + +**`(fix):`** Generated wrapped requests now implement `JsonSerializableType`. + +**`(fix):`** Fix a bug where we don't set the request options baseurl properly. + +**`(fix):`** Fix bugs in our numeric type serde and add tests. + diff --git a/fern/products/sdks/overview/php/changelog/2024-10-03.mdx b/fern/products/sdks/overview/php/changelog/2024-10-03.mdx new file mode 100644 index 000000000..3380fb16b --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-10-03.mdx @@ -0,0 +1,12 @@ +## 0.1.4 +**`(fix):`** Add `null` to annotations for optional undiscriminated unions. + +## 0.1.3 +**`(feat):`** Support inheritance for types and inlined requests. + +**`(feat):`** Support undiscriminated unions. + +**`(fix):`** Fix ci.yml `php-version` field name. + +**`(feat):`** We now allow an empty constructor on types with no required properties. + diff --git a/fern/products/sdks/overview/php/changelog/2024-10-30.mdx b/fern/products/sdks/overview/php/changelog/2024-10-30.mdx new file mode 100644 index 000000000..05b6af6aa --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-10-30.mdx @@ -0,0 +1,3 @@ +## 0.2.0 +**`(feat):`** Add support for multipart file uploads. + diff --git a/fern/products/sdks/overview/php/changelog/2024-11-20.mdx b/fern/products/sdks/overview/php/changelog/2024-11-20.mdx new file mode 100644 index 000000000..94c376ab0 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-11-20.mdx @@ -0,0 +1,3 @@ +## 0.2.1 +**`(fix):`** Override escaped method names in the generated client. + diff --git a/fern/products/sdks/overview/php/changelog/2024-12-12.mdx b/fern/products/sdks/overview/php/changelog/2024-12-12.mdx new file mode 100644 index 000000000..c131f3473 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2024-12-12.mdx @@ -0,0 +1,3 @@ +## 0.2.2 +**`(fix):`** Handle cross package type name deconfliction + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-03.mdx b/fern/products/sdks/overview/php/changelog/2025-02-03.mdx new file mode 100644 index 000000000..1311bbef8 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-03.mdx @@ -0,0 +1,15 @@ +## 0.3.0 +**`(feat):`** Add support for customizing the package name, which is used in the `User-Agent` header. Users can configure this like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.3.0 + config: + packageName: acme/acme-php +``` + +## 0.2.3 +**`(fix):`** Updates a variety of properties in the generated composer.json file, including: + + - Pin guzzlehttp/guzzle to version ^7.4. + - Custom license support. + - Set `memory-limit` to 1G in the `analyze` script. + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-05.mdx b/fern/products/sdks/overview/php/changelog/2025-02-05.mdx new file mode 100644 index 000000000..816ee3a6e --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-05.mdx @@ -0,0 +1,25 @@ +## 0.4.0 +**`(feat):`** Retry HTTP requests on status codes 408, 429, 5XX. You can configure the maximum number of retries like this: +```php $client = new FooClient("token", ['maxRetries' => 3]) $client->bar($request, ['maxRetries' => 5]); ``` +The default for `maxRetries` is 2, meaning up to 3 HTTP requests may be sent. Set `maxRetries` to 0 to disable retries. +If you create your own HTTP client and pass it to the root client, you must add the desired middlewares yourself. Here's how you would add the `RetryMiddleware` to a custom HTTP client: +```php $handlerStack = HandlerStack::create(); $handlerStack->push(RetryMiddleware::create()); $httpClient = new Client(['handler' => $handlerStack]); $client = new FooClient(['client' => $client]); ``` + +## 0.3.2 +**`(internal):`** Upgrade to IRv55 to recognize nullable types. + +## 0.3.1 +**`(fix):`** Improve multiline parameter docs by writing them above the tag, e.g. +```php class UpdateUserRequest extends JsonSerializableType { + /** + * The user to update. + * + * See [User](https://acme.co/user) for more information. + * + * @var ?User $user + */ + public ?User $user; +} ``` + +**`(fix):`** Add .idea to the generated .gitignore file. + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-07.mdx b/fern/products/sdks/overview/php/changelog/2025-02-07.mdx new file mode 100644 index 000000000..9cf5e020b --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-07.mdx @@ -0,0 +1,6 @@ +## 0.5.1 +**`(fix):`** Catch HTTP request exceptions and rethrow it as a FooApiException. + +## 0.5.0 +**`(feat):`** Add the `__toString()` magic method to all generated class types. + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-09.mdx b/fern/products/sdks/overview/php/changelog/2025-02-09.mdx new file mode 100644 index 000000000..37b7ca528 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-09.mdx @@ -0,0 +1,33 @@ +## 0.7.0 +**`(feat):`** The SDK now supports inline path parameters in the generated request class like so: +```php class GetUserRequest extends JsonSerializableType { + /** + * @var string $userId + */ + public string $userId; +} ``` +You can configure this in your `generators.yml` like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.7.0 + config: + inlinePathParameters: true +``` + +## 0.6.0 +**`(feat):`** You can now configure the generated class property access to be `public` or `private`. + + - When the access is public, both the getter and setter methods are omitted (default). + - When the access is private, both the getter and setter methods are generated. + +You can configure this in your `generators.yml` like so: +```yaml - name: fernapi/fern-php-sdk + version: 0.6.0 + config: + propertyAccess: private +``` + +## 0.5.2 +**`(fix):`** Update the endpoint generator to not require the in-lined request wrapper if it's only composed of optional properties. + +**`(fix):`** Update optional query parameters lists to be generated as an optional array instead of an array of optional values. + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-11.mdx b/fern/products/sdks/overview/php/changelog/2025-02-11.mdx new file mode 100644 index 000000000..0d730dc22 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-11.mdx @@ -0,0 +1,53 @@ +## 0.10.0 +**`(feat):`** You can now modify the generated `composer.json` file by adding a `composerJson` property to your generator configuration. +Here's an example of the `generators.yml` file with the `composerJson` property: +```yaml generators.yml ... groups: + php-sdk: + generators: + - name: fernapi/fern-php-sdk + ... + config: + composerJson: + description: This is my PHP library + keywords: + - myCustomTag + license: + - "LGPL-2.1-only" + - "GPL-3.0-or-later" + scripts: + hello: echo hello +``` +Which will result in the following composer.json file: +```jsonc composer.json { + // ..., + "description": "This is my PHP library", + "keywords": [ + "myCustomTag", + // ..., + ], + "license": [ + "LGPL-2.1-only", + "GPL-3.0-or-later" + ], + // ..., + "scripts": { + // ..., + "hello": "echo hello" + } +} ``` + +## 0.9.0 +**`(feat):`** Add the ability to access alpha or undocumented response properties from every class. Users can access the additional properties like so: +```php $response = $client->users->get(...); $additionalProperties = $response->getAdditionalProperties(); ``` + +## 0.8.0 +**`(feat):`** Add automatic pagination support for endpoints that return a paginated response. +Here's an example of how users can use paginated endpoints: +```php $items = $client->list($request); foreach($items as $item){ + echo $item; +} $pages = $items->getPages(); foreach($pages as $page){ + foreach($page as $item){ + echo $item; + } +} ``` + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-12.mdx b/fern/products/sdks/overview/php/changelog/2025-02-12.mdx new file mode 100644 index 000000000..ee64ede15 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-12.mdx @@ -0,0 +1,13 @@ +## 0.11.0 +**`(feat):`** The SDK now supports a `bodyProperties` and `queryParameters` request option, which can be used to add arbitrary properties to the request. This is useful for interacting with alpha or undocumented functionality. +```php $response = $client->users->list( + new ListUsersRequest([ + ... + ]), + [ + 'queryParameters' => [ + 'limit' => 100, + ], + ] +); ``` + diff --git a/fern/products/sdks/overview/php/changelog/2025-02-13.mdx b/fern/products/sdks/overview/php/changelog/2025-02-13.mdx new file mode 100644 index 000000000..f0092eb18 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-02-13.mdx @@ -0,0 +1,32 @@ +## 0.14.0 +**`(feat):`** Support literal types + +## 0.13.7 +**`(fix):`** Make constructor private for union types and remove static unknown constructor + +## 0.13.6 +**`(fix):`** Fix an issue where the value field of the deserialized discriminated union was null. + +## 0.13.5 +**`(fix):`** Change discriminated union method name from `->getvalue()` to `->getValue()`. + +## 0.13.4 +**`(fix):`** Flatten test directory structure from `tests/package-name/**` to `tests/**` so it matches the psr-4 structure defined in composer.json. Without this change, you cannot reference classes within the `tests` directory from your tests, for example, a `Helpers` class for common test utilities. + +## 0.13.3 +**`(fix):`** Fix issue where an empty request would be JSON serialized as an empty array instead of an empty object. + +## 0.13.2 +**`(fix):`** Fix a bug where literal global headers could not be overridden in the root client constructor. + +## 0.13.1 +**`(fix):`** Render union references as their type references rather than mixed. + +## 0.13.0 +**`(feat):`** Add support for configuring a request timeout. + +**`(fix):`** Fix a bug where the private pagination method helpers collided with magic methods (e.g. `__get`). + +## 0.12.0 +**`(feat):`** Add support for discriminated unions. + diff --git a/fern/products/sdks/overview/php/changelog/2025-03-04.mdx b/fern/products/sdks/overview/php/changelog/2025-03-04.mdx new file mode 100644 index 000000000..dd0f795d1 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-03-04.mdx @@ -0,0 +1,3 @@ +## 0.14.1 +**`(internal):`** Upgrade to IRv57. + diff --git a/fern/products/sdks/overview/php/changelog/2025-04-08.mdx b/fern/products/sdks/overview/php/changelog/2025-04-08.mdx new file mode 100644 index 000000000..e1aa21cd9 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-04-08.mdx @@ -0,0 +1,4 @@ +## 0.14.2 +**`(fix):`** This updates the PHP generator to better support undiscriminated unions that define one or more `optional` types. +With this, the generator unwraps each of the optional types, and includes a `|null` variant (e.g. `array|Metadata|null`). + diff --git a/fern/products/sdks/overview/php/changelog/2025-04-29.mdx b/fern/products/sdks/overview/php/changelog/2025-04-29.mdx new file mode 100644 index 000000000..a98ce5d16 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-04-29.mdx @@ -0,0 +1,3 @@ +## 0.15.0 +**`(feat):`** Support custom package path + diff --git a/fern/products/sdks/overview/php/changelog/2025-06-03.mdx b/fern/products/sdks/overview/php/changelog/2025-06-03.mdx new file mode 100644 index 000000000..5a824296c --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-06-03.mdx @@ -0,0 +1,14 @@ +## 1.16.2 +**`(feat):`** Add documentation for retries and timeout parameters in the README, including examples of how +to configure maxRetries and timeout options at the request level + + +## 1.16.1 +**`(feat):`** Add exception handling documentation to README with examples of catching and handling API exceptions + +## 1.16.0 +**`(feat):`** Introduce initial version of README generation for the PHP SDK with Installation, Usage, and Contributing sections. + +## 1.15.1 +**`(internal):`** Update the IR to v58. + diff --git a/fern/products/sdks/overview/php/changelog/2025-07-01.mdx b/fern/products/sdks/overview/php/changelog/2025-07-01.mdx new file mode 100644 index 000000000..6a5656510 --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-07-01.mdx @@ -0,0 +1,5 @@ +## 1.16.3 +**`(feat):`** Add documentation for pagination in the README, this uses the AST to build some human readable +example of how to use the pagination on the client results. + + diff --git a/fern/products/sdks/overview/php/changelog/2025-07-02.mdx b/fern/products/sdks/overview/php/changelog/2025-07-02.mdx new file mode 100644 index 000000000..b63d67f7f --- /dev/null +++ b/fern/products/sdks/overview/php/changelog/2025-07-02.mdx @@ -0,0 +1,5 @@ +## 1.16.4 +**`(feat):`** Add documentation for using a custom client in the README. This makes it easier +for our customers to visualize how they can override the default client. + + diff --git a/fern/products/sdks/overview/python/changelog.mdx b/fern/products/sdks/overview/python/changelog.mdx deleted file mode 100644 index 2800d3913..000000000 --- a/fern/products/sdks/overview/python/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Python Changelog -description: Changelog for the Fern Python SDK. ---- - -Stay up to date with the latest changes and updates to the Fern Python SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/python). \ No newline at end of file diff --git a/fern/products/sdks/overview/python/changelog/2024-01-21.mdx b/fern/products/sdks/overview/python/changelog/2024-01-21.mdx new file mode 100644 index 000000000..59292c86f --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-01-21.mdx @@ -0,0 +1,3 @@ +## 0.7.7 +**`(internal):`** Initialize the changelog + diff --git a/fern/products/sdks/overview/python/changelog/2024-01-25.mdx b/fern/products/sdks/overview/python/changelog/2024-01-25.mdx new file mode 100644 index 000000000..d823319c8 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-01-25.mdx @@ -0,0 +1,3 @@ +## 0.8.0 +**`(fix):`** Enums in inlined requests send the appropriate value. + diff --git a/fern/products/sdks/overview/python/changelog/2024-01-26.mdx b/fern/products/sdks/overview/python/changelog/2024-01-26.mdx new file mode 100644 index 000000000..9c122d48e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-01-26.mdx @@ -0,0 +1,6 @@ +## 0.8.1 +**`(feat):`** The generated SDK respects environment variables for authentication if specified + +### What's new +- If the auth scheme has environment variables specified, the generated python client will scan those environment variables. + diff --git a/fern/products/sdks/overview/python/changelog/2024-01-28.mdx b/fern/products/sdks/overview/python/changelog/2024-01-28.mdx new file mode 100644 index 000000000..ed2a05b06 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-01-28.mdx @@ -0,0 +1,6 @@ +## 0.8.2-rc0 +**`(fix):`** The Python SDK better handles cyclical references + +### What's been fixed +- The Python SDK better handles cyclical references. In particular, cyclical references are tracked for undiscriminated unions, and update_forward_refs is always called with object references. + diff --git a/fern/products/sdks/overview/python/changelog/2024-01-29.mdx b/fern/products/sdks/overview/python/changelog/2024-01-29.mdx new file mode 100644 index 000000000..46725f1c2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-01-29.mdx @@ -0,0 +1,6 @@ +## 0.8.3-rc0 +**`(fix):`** Increase recursion depth to allow for highly nested and complex examples + +### What's been fixed +- Increase recursion depth to allow for highly nested and complex examples, this is a temporary solution while the example datamodel is further refined. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-11.mdx b/fern/products/sdks/overview/python/changelog/2024-02-11.mdx new file mode 100644 index 000000000..eea345f9b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-11.mdx @@ -0,0 +1,13 @@ +## 0.9.1 +**`(fix):`** Remove literals from SDK function signatures, as they are not modifiable for end users + +### What's been fixed +- Remove literals from SDK function signatures, as they are not modifiable for end users. +- Acknowledge the optionality of a `File` property, previously we were requiring all `File` type inputs, even if they were specified as optional within the OpenAPI or Fern definition. Now, we check if the parameter is required and make the parameter optional if it is not. + +## 0.9.0 +**`(feat):`** The SDK generator now supports whitelabelling + +### What's new +- The SDK generator now supports whitelabelling. When this is turned on, there will be no mention of Fern in the generated code. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-13.mdx b/fern/products/sdks/overview/python/changelog/2024-02-13.mdx new file mode 100644 index 000000000..11c2fdd81 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-13.mdx @@ -0,0 +1,7 @@ +## 0.10.0 +**`(break):`** The generator no longer supports Python 3.7 + +### What's been removed +- The generator no longer supports Python 3.7 +- The `backports` dependency has been removed + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-14.mdx b/fern/products/sdks/overview/python/changelog/2024-02-14.mdx new file mode 100644 index 000000000..b38c6b549 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-14.mdx @@ -0,0 +1,6 @@ +## 0.10.1 +**`(feat):`** Add support for a RequestOptions object for each generated function within Python SDKs + +### What's changed +- Add support for a RequestOptions object for each generated function within Python SDKs. This parameter is an optional final parameter that allows for configuring timeout, as well as pass in arbitrary data through to the request. RequestOptions is a TypedDict, with optional fields, so there's no need to instantiate an object, just pass in the relevant keys within a dict! + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-18.mdx b/fern/products/sdks/overview/python/changelog/2024-02-18.mdx new file mode 100644 index 000000000..88f552c2e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-18.mdx @@ -0,0 +1,7 @@ +## 0.10.2 +**`(fix):`** The SDK always sends the enum wire value instead of the name of the enum. + +### What's been fixed +- The SDK always sends the enum wire value instead of the name of the enum. +- Revert #2719 which introduced additional issues with circular references within our Python types. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-19.mdx b/fern/products/sdks/overview/python/changelog/2024-02-19.mdx new file mode 100644 index 000000000..903e372b7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-19.mdx @@ -0,0 +1,15 @@ +## 0.11.0 +**`(feat):`** Python now supports a wider range of types for file upload + +### What's been fixed +- Python now supports API specifications that leverage lists for file upload. Previously, Fern incorrectly made all `list` type requests simply `file`. + +### What's changed +- Python now supports a wider range of types for file upload, mirroring the `httpx` library used under the hood, these are grouped under a new type `File`: + +## 0.10.3 +**`(fix):`** Several bugfixes were made to related to literal properties + +### What's been fixed +- Several bugfixes were made to related to literal properties. If a literal is used as a query parameeter, header, path parameter, or request parameter, the user no longer has to explicitly pass it in. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-20.mdx b/fern/products/sdks/overview/python/changelog/2024-02-20.mdx new file mode 100644 index 000000000..5bc9513d4 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-20.mdx @@ -0,0 +1,7 @@ +## 0.11.1 +**`(feat):`** Python now supports specifying files to auto-export from the root `__init__.py` file + +### What's changed +- Python now supports specifying files to auto-export from the root `__init__.py` file, this means you can export custom classes and functions from your package for users to access like so: +- Add a docstring for base clients to explain usage, example: + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-21.mdx b/fern/products/sdks/overview/python/changelog/2024-02-21.mdx new file mode 100644 index 000000000..946d76aa2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-21.mdx @@ -0,0 +1,6 @@ +## 0.11.2 +**`(feat):`** introduce configuration to flatten the directory structure + +### What's changed +- Improvement (Beta): The Python generator now supports a configuration option called `improved_imports`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-22.mdx b/fern/products/sdks/overview/python/changelog/2024-02-22.mdx new file mode 100644 index 000000000..bdcc7e1ef --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-22.mdx @@ -0,0 +1,9 @@ +## 0.11.3 +**`(fix):`** Transition from lists to sequences within function calls + +### What's been fixed +- Transition from lists to sequences within function calls, this is a fix as a result of how mypy handles type variance. This fix is only for function calls as testing shows that we do not hit the same issue within mypy with list[union[*]] fields on pydantic objects. + +### What's changed +- Improvement: The Python SDK generator now defaults to `require_optional_fields = False`. This means that any requests that have optional fields no longer require a user to input data (or a `None` value) in. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-23.mdx b/fern/products/sdks/overview/python/changelog/2024-02-23.mdx new file mode 100644 index 000000000..b7350f223 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-23.mdx @@ -0,0 +1,6 @@ +## 0.11.5 +**`(fix):`** Fix the usage of ApiError when leveraging auth envvars, when the schema for ApiError was changed, this usage was missed in the update. + +## 0.11.4 +**`(fix):`** We now grab enum values appropriately when enums are within unions. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-26.mdx b/fern/products/sdks/overview/python/changelog/2024-02-26.mdx new file mode 100644 index 000000000..f7032e543 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-26.mdx @@ -0,0 +1,3 @@ +## 0.11.6 +**`(feat):`** You can now specify envvars to scan for headers, not just auth scheme headers. + diff --git a/fern/products/sdks/overview/python/changelog/2024-02-27.mdx b/fern/products/sdks/overview/python/changelog/2024-02-27.mdx new file mode 100644 index 000000000..86996b6e6 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-02-27.mdx @@ -0,0 +1,12 @@ +## 0.11.8-rc0 +**`(feat):`** introduces additional configuration to customize the client class and file name. + +### What's changed +- Beta: Introduce a `client` custom config that allows you to specify class_name and filename for the client. This configuration can be used in several ways: + +## 0.11.7 +**`(feat):`** Introduces a flag `use_str_enums` to swap from using proper Enum classes to using Literals to represent enums. + +### What's changed +- Introduces a flag `use_str_enums` to swap from using proper Enum classes to using Literals to represent enums. This change allows for forward compatibility of enums, since the user will receive the string back. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-02.mdx b/fern/products/sdks/overview/python/changelog/2024-03-02.mdx new file mode 100644 index 000000000..e53d68cb8 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-02.mdx @@ -0,0 +1,6 @@ +## 0.11.8-rc1 +**`(feat):`** Introduces a `max_retries` parameter to the RequestOptions dict accepted by all requests. + +### What's changed +- Beta: Introduces a `max_retries` parameter to the RequestOptions dict accepted by all requests. This parameter will retry requests automatically, with exponential backoff and a jitter. The client will automatically retry requests of a 5XX status code, or certain 4XX codes (429, 408, 409). + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-04.mdx b/fern/products/sdks/overview/python/changelog/2024-03-04.mdx new file mode 100644 index 000000000..d0edba1e2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-04.mdx @@ -0,0 +1,3 @@ +## 0.11.9 +**`(chore):`** use docstrings instead of Pydantic field descriptions. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-08.mdx b/fern/products/sdks/overview/python/changelog/2024-03-08.mdx new file mode 100644 index 000000000..e9e6876d4 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-08.mdx @@ -0,0 +1,6 @@ +## 0.11.10 +**`(feat):`** Expose a feature flag to pass through additional properties not specified within your pydantic model from your SDK. + +### What's new +- Expose a feature flag to pass through additional properties not specified within your pydantic model from your SDK. This allows for easier forward compatibility should your SDK drift behind your spec. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-11.mdx b/fern/products/sdks/overview/python/changelog/2024-03-11.mdx new file mode 100644 index 000000000..7c8de6fff --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-11.mdx @@ -0,0 +1,6 @@ +## 0.12.0 +**`(feat):`** Auto-generated unit and integration tests against a mock server. + +### What's new +- Beta: The SDK now generates tests leveraging auto-generated data to test typing, as well as wire-formatting (e.g. the SDKs are sending and receiving data as expected). This comes out of the box within the generated github workflow, as well as through the fern cli: `fern test --command "your test command"`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-14.mdx b/fern/products/sdks/overview/python/changelog/2024-03-14.mdx new file mode 100644 index 000000000..bfa89142f --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-14.mdx @@ -0,0 +1,9 @@ +## 0.12.1 +**`(chore):`** Improves example generation and snippets for union types, as well as multi-url environments. + +### What's been fixed +- Stringifies header arguments, HTTPX was previously hard failing for certain types + +### What's changed +- Improves example generation and snippets for union types, as well as multi-url environments. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-18.mdx b/fern/products/sdks/overview/python/changelog/2024-03-18.mdx new file mode 100644 index 000000000..99817e913 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-18.mdx @@ -0,0 +1,6 @@ +## 0.12.3 +**`(feat):`** Allow bytes requests to take in iterators of bytes, mirroring the types allowed by HTTPX. + +## 0.12.2 +**`(fix):`** Fix the returned type and value contained within the retrying wrapper for the HTTPX client (http_client.py). + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-19.mdx b/fern/products/sdks/overview/python/changelog/2024-03-19.mdx new file mode 100644 index 000000000..18bf827f6 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-19.mdx @@ -0,0 +1,3 @@ +## 0.12.4 +**`(chore):`** Allow full forward compat with enums while keeping intellisense by unioning enum literals with `typing.AnyStr`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-22.mdx b/fern/products/sdks/overview/python/changelog/2024-03-22.mdx new file mode 100644 index 000000000..62d728ae6 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-22.mdx @@ -0,0 +1,6 @@ +## 0.12.5 +**`(fix):`** the python SDK uses the timeout provided to the top level client as the default per-request + +### What's been fixed +- the python SDK uses the timeout provided to the top level client as the default per-request, previously if there was no timeout override in the RequestOptions, we'd default to 60s, even if a timeout was provided at the client level. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-25.mdx b/fern/products/sdks/overview/python/changelog/2024-03-25.mdx new file mode 100644 index 000000000..ffb7cbd56 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-25.mdx @@ -0,0 +1,3 @@ +## 0.13.0 +**`(feat):`** the python SDK now exposes it's version through `__version__` to match module standards and expectations. + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-26.mdx b/fern/products/sdks/overview/python/changelog/2024-03-26.mdx new file mode 100644 index 000000000..d767e4f0a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-26.mdx @@ -0,0 +1,3 @@ +## 0.13.1 +**`(feat):`** discriminant values in unions are now defaulted such that callers no longer need to specify the discriminant + diff --git a/fern/products/sdks/overview/python/changelog/2024-03-28.mdx b/fern/products/sdks/overview/python/changelog/2024-03-28.mdx new file mode 100644 index 000000000..71f01c90b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-03-28.mdx @@ -0,0 +1,6 @@ +## 0.13.3 +**`(fix):`** Github workflows for publishing now work again (previously the trigger was incorrect). + +## 0.13.2 +**`(fix):`** Asynchronous calls to `httpx.stream` are now awaited. This is applicable to any file download or JSON streaming (chat completion) endpoints. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-02.mdx b/fern/products/sdks/overview/python/changelog/2024-04-02.mdx new file mode 100644 index 000000000..6bf59e713 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-02.mdx @@ -0,0 +1,7 @@ +## 1.0.0 +**`(break):`** The python SDK now defaults new (breaking configuration) to introduce general improvements. + +### What's changed +- Break: The python SDK now defaults new (breaking configuration) to introduce general improvements. +- Improvement: The python SDK now supports specifying whether or not to follow redirects in requests by default, and exposes an option to override that functionality for consumers. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-03.mdx b/fern/products/sdks/overview/python/changelog/2024-04-03.mdx new file mode 100644 index 000000000..13287a159 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-03.mdx @@ -0,0 +1,18 @@ +## 1.1.0-rc0 +**`(feat):`** The python SDK now includes a configuration option to skip pydantic validation. + +### What's new +- [EXPERIMENTAL]: The python SDK now includes a configuration option to skip pydantic validation. This ensures that Pydantic does not immediately fail if the model being returned from an API does not exactly match the Pydantic model. This is meant to add flexibility, should your SDK fall behind your API, but should be used sparingly, as the type-hinting for users will still reflect the Pydantic model exactly. + +## 1.0.1 +**`(fix):`** Address Pydantic break when introducing `pydantic.v1` import within Pydantic V1 + +### What's been fixed +- Pydantic introduced a "break" to their 1.x libs by adding in a .v1 submodule that does not mirror the one that comes with pydantic v2. To get around this we now force the usage of the v1 submodule only if the pydantic version is v2. + +## 0.13.4 +**`(fix):`** revert changes introduced within 0.12.2 + +### What's been fixed +- revert the change from 0.13.2, the stream call returns a context manager, which is not awaited. The issue that this was meant to solve was actually fixed in version `0.12.2`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-04.mdx b/fern/products/sdks/overview/python/changelog/2024-04-04.mdx new file mode 100644 index 000000000..e2114feb1 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-04.mdx @@ -0,0 +1,15 @@ +## 1.1.0-rc3 +**`(fix):`** The skip validation code now works as expected. + +### What's been fixed +- There are a number of fixes to the skip validation code as well as tests to reflect those updates. + +## 1.1.0-rc2 +**`(fix):`** The generator now writes the skipped-validation `cast` with a suffixing new line so that the code compiles. + +## 1.1.0-rc1 +**`(fix):`** The generator no longer attempts to create a version file if Fern does not own generating the full package (e.g. in local generation). + +### What's been fixed +- The generator no longer attempts to create a version file if Fern does not own generating the full package (e.g. in local generation). It's too confusing for to make the relevant changes to the package set up, and is also arguably not even needed in local generation. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-10.mdx b/fern/products/sdks/overview/python/changelog/2024-04-10.mdx new file mode 100644 index 000000000..12e057d5b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-10.mdx @@ -0,0 +1,9 @@ +## 1.2.0-rc2 +**`(fix):`** The generator now correctly imports `json` when deserializing server sent events. + +## 1.2.0-rc0 +**`(internal):`** Consume IR v38 + +### What's new +- The generator now depends on v38 of Intermediate Representation which requires the latest CLI. As part of this, the generator now supports server sent events using `httpx-sse`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-21.mdx b/fern/products/sdks/overview/python/changelog/2024-04-21.mdx new file mode 100644 index 000000000..d1029504b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-21.mdx @@ -0,0 +1,3 @@ +## 1.3.0-rc0 +**`(feat):`** Beta: The generator now registers snippet templates which can be used for dynamic SDK code snippet generation. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-22.mdx b/fern/products/sdks/overview/python/changelog/2024-04-22.mdx new file mode 100644 index 000000000..4c8a0865b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-22.mdx @@ -0,0 +1,15 @@ +## 1.4.0-rc1 +**`(feat):`** The python SDK generator now supports OAuth client generation for the client-credentials flow. + +## 1.4.0-rc0 +**`(chore):`** Generated clients now follow redirects by default. + +### What's changed +- Default generated clients to follow redirects by default, this effectively flips the `follow_redirects_by_default` flag to `True` and can be reverted with the following configuration: + +## 1.3.1-rc0 +**`(fix):`** the python SDK generator now checks to make sure a header is not null before casting it to a string. + +## 1.3.0-rc1 +**`(internal):`** add logging for python snippet template generation. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-23.mdx b/fern/products/sdks/overview/python/changelog/2024-04-23.mdx new file mode 100644 index 000000000..2aa574eca --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-23.mdx @@ -0,0 +1,3 @@ +## 1.4.0-rc2 +**`(fix):`** Initialize the OAuth token provider member variables to their default values before they are set. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-24.mdx b/fern/products/sdks/overview/python/changelog/2024-04-24.mdx new file mode 100644 index 000000000..f22fd71ec --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-24.mdx @@ -0,0 +1,10 @@ +## 1.4.0-rc3 +**`(fix):`** pin mypy dependency to 1.9.0 to prevent introducing upstream bugs + +### What's been fixed +- Set `mypy` dev dependency in generated `pyproject.toml` to `1.9.0`. This prevents upstream `mypy` bugs from affecting user builds. Note that this is only a dev dependency, so it does not affect the behavior of the SDK. +- Temporarily disable unit test generation. + +### What's changed +- Improvement: Use named parameters for all `httpx` request params. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-26.mdx b/fern/products/sdks/overview/python/changelog/2024-04-26.mdx new file mode 100644 index 000000000..eb0d2f732 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-26.mdx @@ -0,0 +1,3 @@ +## 1.5.1-rc0 +**`(fix):`** Discriminated union variants that are objects now have inlined properties instead of extending a base type. + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-29.mdx b/fern/products/sdks/overview/python/changelog/2024-04-29.mdx new file mode 100644 index 000000000..d14d18b4c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-29.mdx @@ -0,0 +1,7 @@ +## 1.4.0 +**`(feat):`** keyword arguments are now ordered such that required params are ordered before optional params + +### What's changed +- keyword arguments are now ordered such that required params are ordered before optional params. Note that since these are kwargs, this is a non-breaking change. +- docstrings now match numpydoc/PEP257 format + diff --git a/fern/products/sdks/overview/python/changelog/2024-04-30.mdx b/fern/products/sdks/overview/python/changelog/2024-04-30.mdx new file mode 100644 index 000000000..38751ee2b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-04-30.mdx @@ -0,0 +1,3 @@ +## 1.5.0-rc0 +**`(feat):`** The generator now supports inlining top-level request parameters instead of requiring users create a request object. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-01.mdx b/fern/products/sdks/overview/python/changelog/2024-05-01.mdx new file mode 100644 index 000000000..242ae4b5f --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-01.mdx @@ -0,0 +1,21 @@ +## 1.5.1-rc5 +**`(fix):`** Snippet templates now generate the correct imports for object types. + +## 1.5.1-rc4 +**`(fix):`** The SDK now generates discriminated union snippet templates correctly. + +## 1.5.1-rc3 +**`(chore):`** Union types leverage the fern aware base model to include JSON and Dict function overrides. + +## 1.5.1-rc2 +**`(fix):`** The vanilla pydantic base model now respects the `require_optional_fields` + +### What's been fixed +- The vanilla pydantic base model now respects the `require_optional_fields`, this became a regression in 1.5.1-rc0 when we started to inline union properties which leverages the vanilla base model. + +## 1.5.1-rc1 +**`(fix):`** Improve formatting within snippet templates. + +### What's been fixed +- Address formatting issues with snippet templates, we now strip newlines off OG snippets as well as plumb through indentation metadata to places that were previously missing it. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-02.mdx b/fern/products/sdks/overview/python/changelog/2024-05-02.mdx new file mode 100644 index 000000000..acf477efd --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-02.mdx @@ -0,0 +1,6 @@ +## 1.5.3-rc0 +**`(fix):`** the unchecked basemodel no longer tries to dereference an object if it's null. + +## 1.5.2-rc0 +**`(chore):`** The python generator now produces sync snippet templates, as opposed to just async templates as it was before + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-09.mdx b/fern/products/sdks/overview/python/changelog/2024-05-09.mdx new file mode 100644 index 000000000..d8e3d88b7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-09.mdx @@ -0,0 +1,12 @@ +## 2.0.0 +**`(break):`** Release of the Python SDK generator version 2, updating default configuration. + +### What's changed +- The python SDK is now on major version 2, there are no substantial logic changes, however default configuration has changed. To take this upgrade without any breaks, please add the below configuration to your `generators.yml` file: + +## 1.7.0-rc0 +**`(chore):`** you can now declare a new python version range for your `pyproject.toml`, which will declare a new version range for your pip package. + +## 1.6.0-rc0 +**`(chore):`** You can now specify dev dependencies from your `generators.yml` file + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-14.mdx b/fern/products/sdks/overview/python/changelog/2024-05-14.mdx new file mode 100644 index 000000000..4ab8b812b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-14.mdx @@ -0,0 +1,9 @@ +## 2.1.0 +**`(feat):`** Add support for cursor and offset pagination ("auto-pagination"). + +## 2.0.1 +**`(fix):`** The python generator now only excludes unset fields that are not required. + +### What's been fixed +- the python generator previously used `exclude_unset` on pydantic models, however this would remove defaulted values. This change updates this to only exclude none fields that were not required. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-15.mdx b/fern/products/sdks/overview/python/changelog/2024-05-15.mdx new file mode 100644 index 000000000..f9fdc148e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-15.mdx @@ -0,0 +1,3 @@ +## 2.1.1 +**`(chore):`** add enhanced snippet support for streaming endpoints. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-16.mdx b/fern/products/sdks/overview/python/changelog/2024-05-16.mdx new file mode 100644 index 000000000..6049872ea --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-16.mdx @@ -0,0 +1,6 @@ +## 2.2.0 +**`(chore):`** The generated SDK will now correctly encode deep object query parameters + +### What's changed +- The generated SDK will now correctly encode deep object query parameters. For example, if you have an object `{"test": {"nested": "object"}}` as a query parameter, we will now encode it as `test[nested]=object`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-17.mdx b/fern/products/sdks/overview/python/changelog/2024-05-17.mdx new file mode 100644 index 000000000..a906d62a7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-17.mdx @@ -0,0 +1,3 @@ +## 2.2.1 +**`(internal):`** The generator now uses the latest FDR SDK. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-20.mdx b/fern/products/sdks/overview/python/changelog/2024-05-20.mdx new file mode 100644 index 000000000..70e6e359a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-20.mdx @@ -0,0 +1,6 @@ +## 2.2.2 +**`(fix):`** Inline request parameters now deconflict in naming with the unnamed path parameter arguments. + +### What's been fixed +- Inline request parameters now deconflict in naming with the unnamed path parameter arguments. Previously, when inlining request parameters into the method signature, we would not deconflict naming with the unnamed args preceding them. Now, conflicting unnamed parameters are post-fixed with an "_". + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-21.mdx b/fern/products/sdks/overview/python/changelog/2024-05-21.mdx new file mode 100644 index 000000000..e0ed63c6c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-21.mdx @@ -0,0 +1,25 @@ +## 2.4.0-rc0 +**`(fix):`** The Python SDK generator now uses safe names wherever string concat is not used (like in client generation naming), so this will update module and parameter names. + +## 2.3.4 +**`(fix):`** Snippets and unit tests now correctly write optional request bodies when `inline_request_params` is set to `True`. + +### What's been fixed +- Snippets and unit tests now correctly write optional request bodies when `inline_request_params` is set to `True`. Previously the generator wrote snippets that inlined these parameters, which does not match the generated SDK itself. + +## 2.3.3 +**`(fix):`** Inlined body parameters now deconflict in naming with header and query parameters by prefixing the request objects name. + +## 2.3.2 +**`(fix):`** The query encoder now correctly handles none values + +### What's been fixed +- The `pyproject.toml` generator now writes authors in a valid format for `tool.poetry`, not just `project` +- The query encoder now correctly handles none values + +## 2.3.1 +**`(fix):`** The `pyproject.toml` generator now includes project URLs when specified. + +## 2.3.0 +**`(chore):`** Users can now specify information that will appear in their pypi record. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-22.mdx b/fern/products/sdks/overview/python/changelog/2024-05-22.mdx new file mode 100644 index 000000000..40e2d6842 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-22.mdx @@ -0,0 +1,6 @@ +## 2.5.0-rc1 +**`(chore):`** Address `propogate` -> `propagate` typo in python codegen. + +## 2.5.0-rc0 +**`(fix):`** This version addresses issues in unit test generation and reenables the creation of unit tests. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-23.mdx b/fern/products/sdks/overview/python/changelog/2024-05-23.mdx new file mode 100644 index 000000000..b1bcd7fef --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-23.mdx @@ -0,0 +1,9 @@ +## 2.5.2 +**`(feat):`** Support `list` SDK method names instead of defaulting to `list_`. + +## 2.5.1-rc0 +**`(fix):`** Literal parameters are added back to the request body. + +## 2.5.0-rc2 +**`(fix):`** Do not attempt to run `fern test` in CI until the command is more widely rolled out. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-24.mdx b/fern/products/sdks/overview/python/changelog/2024-05-24.mdx new file mode 100644 index 000000000..7c3c2eaff --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-24.mdx @@ -0,0 +1,3 @@ +## 2.5.3 +**`(chore):`** Stops specifying custom licenses manually, lets poetry handle adding them. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-28.mdx b/fern/products/sdks/overview/python/changelog/2024-05-28.mdx new file mode 100644 index 000000000..0aa973d27 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-28.mdx @@ -0,0 +1,3 @@ +## 2.5.4 +**`(internal):`** Add typing library for dateutils in testing lib to satisfy mypy errors. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-29.mdx b/fern/products/sdks/overview/python/changelog/2024-05-29.mdx new file mode 100644 index 000000000..5ed498e59 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-29.mdx @@ -0,0 +1,9 @@ +## 2.5.6 +**`(chore):`** Literal values are now all defaulted such that users are not required to plug in a redundant value. + +## 2.5.5 +**`(fix):`** Auto-Pagination now respects optional return values + +### What's been fixed +- Optional lists returned from pagination endpoints are now appropriately flattened such that the `Pager` return types are correctly `Pager[ListItem]` as opposed to `Pager[List[ListItem]]`. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-30.mdx b/fern/products/sdks/overview/python/changelog/2024-05-30.mdx new file mode 100644 index 000000000..30157628a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-30.mdx @@ -0,0 +1,12 @@ +## 2.7.0 +**`(internal):`** Improvement: The generator now outputs an `exampleId` alongside each generated snippet so that we can correlate snippets with the relevant examples. This is useful for retrieving examples from Fern's API and making sure that you can show multiple snippets in the generated docs. + +## 2.6.0 +**`(chore):`** Support adding optional dependencies and extras to your generated `pyproject.toml`. + +### What's changed +- Improvement: Support adding optional dependencies and extras to your generated `pyproject.toml`. To use this configuration, please add the following: + +## 2.5.7 +**`(fix):`** tests now carry a type annotation for `expected_types` variable. + diff --git a/fern/products/sdks/overview/python/changelog/2024-05-31.mdx b/fern/products/sdks/overview/python/changelog/2024-05-31.mdx new file mode 100644 index 000000000..ac51f3b00 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-05-31.mdx @@ -0,0 +1,3 @@ +## 2.6.1 +**`(internal):`** this adds a back door token getter function to OAuth clients to better test the functionality. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-03.mdx b/fern/products/sdks/overview/python/changelog/2024-06-03.mdx new file mode 100644 index 000000000..66adf6b0b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-03.mdx @@ -0,0 +1,3 @@ +## 2.8.0 +**`(chore):`** Endpoint function request logic has been abstracted into the request function of the wrapped httpx client. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-04.mdx b/fern/products/sdks/overview/python/changelog/2024-06-04.mdx new file mode 100644 index 000000000..779ead4cc --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-04.mdx @@ -0,0 +1,9 @@ +## 2.9.0-rc0 +**`(chore):`** The Python generator now runs custom unit tests in CI if configured. + +## 2.8.2 +**`(fix):`** The none-filtering function now supports mypy's invariance check. + +## 2.8.1 +**`(fix):`** The parameter comment/documentation for timeouts on the root client now reflects the custom timeout passed through within configuration. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-05.mdx b/fern/products/sdks/overview/python/changelog/2024-06-05.mdx new file mode 100644 index 000000000..b6326ea98 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-05.mdx @@ -0,0 +1,6 @@ +## 2.9.0 +**`(fix):`** Snippets preserve trailing slashes + +## 2.9.0-rc1 +**`(fix):`** The new http client abstraction ensures a slash is postfixed to the baseurl + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-06.mdx b/fern/products/sdks/overview/python/changelog/2024-06-06.mdx new file mode 100644 index 000000000..339402563 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-06.mdx @@ -0,0 +1,17 @@ +## 2.9.3 +**`(fix):`** Snippet templates for discriminated unions now specify the `template_input` property which is required to actually see snippets of instantiating discriminated unions. + +## 2.9.2 +**`(fix):`** downgrades mypy so we can run it over all our files without concern for their pydantic bug + +### What's been fixed +- downgrades mypy so we can run it over all our files without concern for their pydantic bug +- adds typehint to the response variable + +## 2.9.1 +**`(fix):`** The SDK removes unset query parameters from requests (regression from the client migration in 2.8.0) + +### What's been fixed +- The SDK removes unset query parameters from requests (regression from the client migration in 2.8.0) +- The SDK fixes it's type for `files` parameters to the http client (regression from the client migration in 2.8.0) + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-07.mdx b/fern/products/sdks/overview/python/changelog/2024-06-07.mdx new file mode 100644 index 000000000..42d9bcca2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-07.mdx @@ -0,0 +1,3 @@ +## 2.9.4 +**`(fix):`** The unchecked base model now handles pulling the discriminant from a dict, not just a model/object. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-10.mdx b/fern/products/sdks/overview/python/changelog/2024-06-10.mdx new file mode 100644 index 000000000..f5ac43df8 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-10.mdx @@ -0,0 +1,7 @@ +## 2.9.5 +**`(fix):`** Unions with elements that specify no properties are generated correctly. + +### What's been fixed +- Unions with elements that specify no properties are generated correctly. +- Unions with a single type now have a valid type alias (rather than an invalid `typing.Union`). + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-11.mdx b/fern/products/sdks/overview/python/changelog/2024-06-11.mdx new file mode 100644 index 000000000..83ef8be6a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-11.mdx @@ -0,0 +1,7 @@ +## 2.9.6 +**`(fix):`** Offset based pagination is now 1-based, as opposed to 0 based + +### What's been fixed +- Offset based pagination is now 1-based, as opposed to 0 based +- The HTTP client now passes in additional body properties from the request options, even if the body is empty (regression from the client migration in 2.8.0) + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-12.mdx b/fern/products/sdks/overview/python/changelog/2024-06-12.mdx new file mode 100644 index 000000000..04f45908e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-12.mdx @@ -0,0 +1,3 @@ +## 2.9.7 +**`(fix):`** The unchecked base model stops special casing defaults and pydantic v2. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-18.mdx b/fern/products/sdks/overview/python/changelog/2024-06-18.mdx new file mode 100644 index 000000000..2bcee41d5 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-18.mdx @@ -0,0 +1,3 @@ +## 2.9.8 +**`(chore):`** The python generator only adds a publish step in github actions if credentials are specified. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-19.mdx b/fern/products/sdks/overview/python/changelog/2024-06-19.mdx new file mode 100644 index 000000000..6b0207b51 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-19.mdx @@ -0,0 +1,3 @@ +## 2.9.9 +**`(internal):`** The generator now consumes IRv46. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-20.mdx b/fern/products/sdks/overview/python/changelog/2024-06-20.mdx new file mode 100644 index 000000000..848d28820 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-20.mdx @@ -0,0 +1,27 @@ +## 2.13.1-rc0 +**`(fix):`** The Python SDK now does not send additional properties via JSON or data if the request is leveraging the other field. + +### What's been fixed +- the Python SDK now does not send additional properties via JSON or data if the request is leveraging the other field. + +### What's changed +- Improvement: the Python SDK now copies unit tests over to the generated SDK for additional unit testing (separate from wire-format testing). + +## 2.13.0-rc0 +**`(internal):`** The Python SDK generator is now upgraded to IR V49. + +## 2.10.2 +**`(fix):`** The SDK now handles stream termination sequences like `[DONE]`. + +### What's been fixed +- The SDK now handles stream termination sequences like `[DONE]`. This is a typical way for LLM providers to communicate when the stream has ended. + +## 2.10.1 +**`(fix):`** Improve the SDK to not leak `JSONDecodeError` to SDK users. Instead, an `ApiError` will be thrown with the text content of the response. + +## 2.10.0 +**`(feat):`** Add support for higher quality `README.md` generation. + +## 2.9.10 +**`(fix):`** The generator now only specifies the readme location within pyproject.toml if one was successfully created. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-25.mdx b/fern/products/sdks/overview/python/changelog/2024-06-25.mdx new file mode 100644 index 000000000..a49e30a4b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-25.mdx @@ -0,0 +1,15 @@ +## 2.12.0-rc0 +**`(feat):`** README generation now supports a section dedicated to streaming usage, as well as one for paginated endpoints. + +### What's new +- Feature: README generation now supports a section dedicated to streaming usage, as well as one for paginated endpoints. + +### What's changed +- Improvement: Paginated endpoint snippets now show using an iterator: + +## 2.11.0-rc0 +**`(chore):`** Snippet templates now support auth variables within the root client. + +### What's changed +- Improvement: The SDK now produces templates for the root clients within snippet-template.json. This allows users of the Templates API to pass in data for the auth variables present within the root client. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-26.mdx b/fern/products/sdks/overview/python/changelog/2024-06-26.mdx new file mode 100644 index 000000000..8499fb6af --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-26.mdx @@ -0,0 +1,3 @@ +## 2.14.0-rc0 +**`(feat):`** The Python SDK now generates an accompanying SDK reference (`reference.md`) for users to review the SDK methods at a glance within the SDK's GitHub repository. + diff --git a/fern/products/sdks/overview/python/changelog/2024-06-27.mdx b/fern/products/sdks/overview/python/changelog/2024-06-27.mdx new file mode 100644 index 000000000..d66103b63 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-06-27.mdx @@ -0,0 +1,6 @@ +## 2.14.0-rc1 +**`(fix):`** The fix from 2.5.2 is now case-insensitive + +### What's been fixed +- the fix from 2.5.2 is now case-insensitive Recap of 2.5.2: `Fix: Support `list`SDK method names instead of defaulting to`list\_`.` + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-01.mdx b/fern/products/sdks/overview/python/changelog/2024-07-01.mdx new file mode 100644 index 000000000..4b1f0e28b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-01.mdx @@ -0,0 +1,21 @@ +## 2.14.1 +**`(fix):`** typing within the Sync and AsyncPagers is now correctly passed through to the BasePager. + +### What's been fixed +- Sync and AsyncPage now pass through the generic type to BasePage, allowing the use of `.items`, etc. to be appropriately typed within your type checking system. + +## 2.14.0 +**`(fix):`** The offset page now allows for the usage of 0 as a page start. + +### What's been fixed +- offset page now allows for the usage of 0 as a page start, previously the use of `page or 1` made Python coerce booleans and become 1, ignoring the user-provided 0. + +## 2.14.0-rc3 +**`(feat):`** Generated readmes now include an "advanced" section. + +### What's changed +- Generated readmes now include an "advanced" section, outlining usage of retries, timeouts, error handling and usage of a custom client. + +## 2.14.0-rc2 +**`(chore):`** Async snippets now run the async function leveraging asyncio.run to be more copy-pastable. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-03.mdx b/fern/products/sdks/overview/python/changelog/2024-07-03.mdx new file mode 100644 index 000000000..9daf6b555 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-03.mdx @@ -0,0 +1,3 @@ +## 2.15.0 +**`(feat):`** The generated python SDK now respects configured defaults from the API spec. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-09.mdx b/fern/products/sdks/overview/python/changelog/2024-07-09.mdx new file mode 100644 index 000000000..fcb1dde2d --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-09.mdx @@ -0,0 +1,7 @@ +## 2.15.1 +**`(fix):`** The unchecked base model no longer coerces None to a type. + +### What's been fixed +- The unchecked base model no longer coerces None to a type. +- The http client appropriately defaults empty fields within RequestOptions. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-10.mdx b/fern/products/sdks/overview/python/changelog/2024-07-10.mdx new file mode 100644 index 000000000..58ab1c7b6 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-10.mdx @@ -0,0 +1,9 @@ +## 2.15.4 +**`(fix):`** The generated python SDK now serializes bytes within JSON as a utf-8 encoded string. + +## 2.15.3 +**`(fix):`** The generated python SDK no longer runs into a recursion error during snippet generation. + +## 2.15.2 +**`(fix):`** The generated python SDK no longer treats `set` as a reserved word for method names. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-16.mdx b/fern/products/sdks/overview/python/changelog/2024-07-16.mdx new file mode 100644 index 000000000..4497ca182 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-16.mdx @@ -0,0 +1,3 @@ +## 2.16.0 +**`(feat):`** The generated SDK now allows for specifying whether or not to generate `streaming` functions as overloaded functions or separate functions. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-17.mdx b/fern/products/sdks/overview/python/changelog/2024-07-17.mdx new file mode 100644 index 000000000..656edc000 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-17.mdx @@ -0,0 +1,6 @@ +## 2.15.6 +**`(fix):`** The generated python SDK now requires an environment be specified if a default is not provided. + +## 2.15.5 +**`(fix):`** The generated python SDK Oauth client now no longer checks for an expiry when getting the access token if an expiry field is not configured. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-23.mdx b/fern/products/sdks/overview/python/changelog/2024-07-23.mdx new file mode 100644 index 000000000..f34fd6b8a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-23.mdx @@ -0,0 +1,17 @@ +## 3.0.0-rc1 +**`(fix):`** `expected_types` within our test suite are now typed as `Tuple[typing.Any, typing.Any]`. + +### What's been fixed +- Sometimes mypy will error on the typing of `expected_types` within our test suite, despite them being labeled as `typing.Any`. This updates the types for tuples to `typing.Tuple[tying.Any, typing.Any]` to appease mypy. + +## 3.0.0-rc0 +**`(break):`** The generated models now support Pydantic V2 outright, it no longer uses `pydantic.v1` models. + +### What's changed +- The generated models now support Pydantic V2 outright, it no longer uses `pydantic.v1` models. +- Public fields previously prefixed with `_` are now prefixed with `f_` (Pydantic V2 does not allow for `_` prefixes on public fields and Python does not allow for a numeric prefix) + +### What's been removed +- wrapped aliases outside of Pydantic V1 +- custom root validators outside of Pydantic V1 + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-24.mdx b/fern/products/sdks/overview/python/changelog/2024-07-24.mdx new file mode 100644 index 000000000..899fadce7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-24.mdx @@ -0,0 +1,12 @@ +## 3.1.0-rc0 +**`(chore):`** The root client is now exported from the main `__init__.py`. + +### What's changed +- Improvement: The root client users interact with is now exported from the main `__init__.py`, this allows users to access the client via `from my_sdk import my_sdk_client` as opposed to `from my_sdk.client import my_sdk_client`. + +### What's been removed +- Note this comes with an edge-case break. In the unlikely event you have a type that conflicts in naming with the exported root client, that type model is post-fixed with "Model". e.g. a type `Merge` in an SDK exporting a client `Merge` becomes `MergeModel`. + +## 3.0.0-rc2 +**`(fix):`** `update_forward_refs` no longer raises errors, preserving original behavior, pre-3.x. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-25.mdx b/fern/products/sdks/overview/python/changelog/2024-07-25.mdx new file mode 100644 index 000000000..e95933b2c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-25.mdx @@ -0,0 +1,6 @@ +## 3.2.0-rc0 +**`(feat):`** The Python SDK can now be generated with TypedDicts as inputs. + +### What's new +- The Python SDK can now be generated such that inputs to requests are TypedDicts, instead of Pydantic models. This allows for consumers of the SDK to continue to have type hinting and autocomplete, but not need to import new object types when creating requests. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-29.mdx b/fern/products/sdks/overview/python/changelog/2024-07-29.mdx new file mode 100644 index 000000000..a6e99a122 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-29.mdx @@ -0,0 +1,3 @@ +## 3.2.0-rc1 +**`(fix):`** The generated README now imports `ApiError` as if it were from outside the module. + diff --git a/fern/products/sdks/overview/python/changelog/2024-07-31.mdx b/fern/products/sdks/overview/python/changelog/2024-07-31.mdx new file mode 100644 index 000000000..c0b13278e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-07-31.mdx @@ -0,0 +1,7 @@ +## 3.3.0-rc0 +**`(internal):`** Upgrade to IR 53.1.0 + +### What's changed +- Upgrade to IR 53.1.0 +- The Python generator now creates snippet templates for undiscriminated unions. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-01.mdx b/fern/products/sdks/overview/python/changelog/2024-08-01.mdx new file mode 100644 index 000000000..0b5fcf42a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-01.mdx @@ -0,0 +1,3 @@ +## 3.3.0-rc1 +**`(fix):`** TypedDict snippets now include literals where available. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-02.mdx b/fern/products/sdks/overview/python/changelog/2024-08-02.mdx new file mode 100644 index 000000000..2108bf201 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-02.mdx @@ -0,0 +1,25 @@ +## 3.4.0 +**`(internal):`** Generator code now uses Pydantic V2, no changes to generated code. + +### What's changed +- Internal: The SDK generator has now been upgraded to use Pydantic V2 internally. Note that there is no change to the generated code, however by leveraging Pydantic V2 you should notice an improvement in `fern generate` times. + +## 3.3.4 +**`(chore):`** Address a number of issues within generated unit tests. + +### What's been fixed +- Generated tests that expect an empty result when they are of type `text` (not JSON) now appropriately expect an empty string instead of `None`. + +### What's changed +- Improvement: Aliased literals are also defaulted within Pydantic models, whereas previously only direct literals were defaulted. +- Improvement: Snippets now provide optional literals in functions and models. + +## 3.3.3 +**`(fix):`** The generator now allows you to extend aliased types (as long as they're objects). + +## 3.3.2 +**`(fix):`** Regression in readme generation introduced in 3.3.1 + +## 3.3.1 +**`(fix):`** Generated READMEs now reference RequestOptions as TypedDicts correctly. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-04.mdx b/fern/products/sdks/overview/python/changelog/2024-08-04.mdx new file mode 100644 index 000000000..e5305825e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-04.mdx @@ -0,0 +1,3 @@ +## 3.4.1 +**`(chore):`** Literal templates are generated if they are union members + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-05.mdx b/fern/products/sdks/overview/python/changelog/2024-08-05.mdx new file mode 100644 index 000000000..fa170125d --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-05.mdx @@ -0,0 +1,15 @@ +## 3.5.1 +**`(fix):`** Auto-completion for unions leveraging union utils now works as expected. + +### What's been fixed +- The root type for unions with visitors now has it's parent typed correctly. This allows auto-complete to work once again on the union when it's nested within other pydantic models. + +## 3.5.0 +**`(chore):`** Generated code now respects the pydantic version configuration flag. + +### What's changed +- Improvement: The generated SDK now respects the pydantic version flag, generating V1 only code and V2 only code if specified. If not, the SDK is generated as it is today, with compatibility for BOTH Pydantic versions. This cleans up the generated code, and brings back features liked wrapped aliases for V1-only SDKs. + +## 3.4.2 +**`(fix):`** The Python generator now instantiates `Any` types as `Optional[Any]` to be able to mitigate breaks in Pydantic V2. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-08.mdx b/fern/products/sdks/overview/python/changelog/2024-08-08.mdx new file mode 100644 index 000000000..c40d7613a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-08.mdx @@ -0,0 +1,6 @@ +## 3.7.0 +**`(chore):`** Python circular referencing types are more robust. + +## 3.6.0 +**`(feat):`** The generator now respects returning nested properties from the returned object + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-09.mdx b/fern/products/sdks/overview/python/changelog/2024-08-09.mdx new file mode 100644 index 000000000..4317f5def --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-09.mdx @@ -0,0 +1,15 @@ +## 3.10.0 +**`(feat):`** Introduce forward compatible Python enums + +### What's new +- Adds a new flag to generate forward compatible Python enums, as opposed to leveraging raw string enums as literals. This works through addding an "_UNKNOWN" member to your enum set, the value of which is the raw value of the unrecognized enum. + +## 3.9.0 +**`(feat):`** Introduce Pythonic naming for discriminated union members through `union_naming` configuration flag. + +### What's new +- A new configuration is introduced to make discriminated union member naming more Pythonic. With V1 union naming, member names change from `_` to ``. Concretely, union members previously named `Chat_User` will now be named `UserChat` under the new configuration. + +## 3.8.0 +**`(chore):`** Generated SDKs now use ruff for linting and formatting instead of Black. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-13.mdx b/fern/products/sdks/overview/python/changelog/2024-08-13.mdx new file mode 100644 index 000000000..498b04c40 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-13.mdx @@ -0,0 +1,6 @@ +## 3.10.2 +**`(fix):`** Unions with utils now update forward refs again, a regression that was introduced in version 3.7.0 + +## 3.10.1 +**`(fix):`** If there are no autogenerated examples present, the Python SDK generator no longer fails. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-14.mdx b/fern/products/sdks/overview/python/changelog/2024-08-14.mdx new file mode 100644 index 000000000..2b1da20d0 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-14.mdx @@ -0,0 +1,9 @@ +## 3.10.4 +**`(chore):`** Improve performance of Pydantic `.dict` calls + +### What's changed +- `.dict` performance is improved, consolidating to a single call to Pydantic's `.dict` instead of 2 in attempts to remove unset optional values. + +## 3.10.3 +**`(fix):`** Query encoding now appropriately takes arrays of deep objects into account. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-16.mdx b/fern/products/sdks/overview/python/changelog/2024-08-16.mdx new file mode 100644 index 000000000..a9fb613f9 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-16.mdx @@ -0,0 +1,9 @@ +## 3.10.6 +**`(fix):`** Pagination utilities assume `""` is a terminal signal for pagination. + +### What's been fixed +- Cursor-based pagination also assumes `""` is a terminal signal for pagination, same as if the next cursor were `None`. + +## 3.10.3 +**`(fix):`** Upgrade intermediate representation dependency to safely parse null unknown types. + diff --git a/fern/products/sdks/overview/python/changelog/2024-08-28.mdx b/fern/products/sdks/overview/python/changelog/2024-08-28.mdx new file mode 100644 index 000000000..b9f51bfa2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-08-28.mdx @@ -0,0 +1,3 @@ +## 3.10.7 +**`(fix):`** When not leveraging mock integration tests, still run pytest over everything, not a specific directory. + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-02.mdx b/fern/products/sdks/overview/python/changelog/2024-09-02.mdx new file mode 100644 index 000000000..bbdd72b5b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-02.mdx @@ -0,0 +1,3 @@ +## 3.10.8 +**`(fix):`** Allow for fields prefixed with the name `model`, a silent break introduced in Pydantic V2. + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-04.mdx b/fern/products/sdks/overview/python/changelog/2024-09-04.mdx new file mode 100644 index 000000000..f35c18c60 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-04.mdx @@ -0,0 +1,8 @@ +## 3.11.0-rc0 +**`(chore):`** Remove Pydantic field aliases and leverage an internal representation. + +### What's been fixed +- Pydantic field aliases are removed and replaced with an internal representation. This allows for more robust handling of field aliases and prevents issues with Pydantic V2 and mypy. +Previously, you'd have for V1 and V2 compatibility in Pydantic, you'd want to conditionally apply the config class within the base model, however this would lead to mypy errors when filling out a model with it's field alias. To solve this, We used the deprecated `class Config`, regardless of the Pydantic version to satisfy mypy, which lead to warnings in the console. +Now, we've removed the field aliases and replaced them with an internal representation, which allows us to avoid pydantic config altogether. + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-05.mdx b/fern/products/sdks/overview/python/changelog/2024-09-05.mdx new file mode 100644 index 000000000..d8ae274c2 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-05.mdx @@ -0,0 +1,17 @@ +## 4.0.0-rc0 +**`(fix):`** Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `true` to preserve existing behavior. + +**`(internal):`** The generator now shares "as is" files with Pydantic and FastAPI generators. + +### What's been fixed +- Rerelease 3.11.0-rc0 as a major version, with a configuration flag to disable the behavior (`use_pydantic_field_aliases`), defaulted to `false` to introduce the break on a major version. +To maintain parity with pre-3.11.0 behavior, update the flag to `true`: + + ```yaml + - name: fernapi/fern-python-sdk + version: 4.0.0-rc0 + config: + pydantic_config: + use_pydantic_field_aliases: true + ``` + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-06.mdx b/fern/products/sdks/overview/python/changelog/2024-09-06.mdx new file mode 100644 index 000000000..57f3864f3 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-06.mdx @@ -0,0 +1,10 @@ +## 4.0.0-rc2 +**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic for SDKs that continue using Pydantic aliases. + +## 4.0.0-rc1 +**`(fix):`** Update .dict calls in Pydantic V2 to be back to pre-3.10.4 logic. + +### What's been fixed +- Pydantic V2 `.dict` calls are updated to be back to pre-3.10.4 logic. This is fix a regression where nested literals were being omitted due to the Pydantic V2 serializers not respecting the recursive .dict logic, as Pydantic V2 shells out `model_dump` calls to Rust library and serializers, as opposed to recursively calling `model_dump`. +It is expected that performance will not be degraded given the Rust-based serializers have optimized performance, compared to the Pydantic V1 .dict approach. + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-10.mdx b/fern/products/sdks/overview/python/changelog/2024-09-10.mdx new file mode 100644 index 000000000..3636230cb --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-10.mdx @@ -0,0 +1,18 @@ +## 4.0.0-rc5 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc4 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + +## 4.0.0-rc3 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-11.mdx b/fern/products/sdks/overview/python/changelog/2024-09-11.mdx new file mode 100644 index 000000000..858f31cbd --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-11.mdx @@ -0,0 +1,16 @@ +## 4.0.0-rc8 +**`(fix):`** Pydantic models that call `update_forward_refs` on non-union circular reference dependencies now pass in `localns` for +the current member, a field in Pydantic V1 that provides object contexts to models in the event objects are not fully rebuilt. + + +## 4.0.0-rc7 +**`(fix):`** The generator now respects the old use_str_enums flag again, a regression was introduced where only the new flag `enum_type` +was respected. + + +## 4.0.0-rc6 +**`(fix):`** Pydantic models now call update forward refs on non-union circular references. This +prevents runtime errors in certain cases where types self reference itself through +a union. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-12.mdx b/fern/products/sdks/overview/python/changelog/2024-09-12.mdx new file mode 100644 index 000000000..14cf00c74 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-12.mdx @@ -0,0 +1,7 @@ +## 4.0.0-rc9 +**`(fix):`** All Pydantic V2 warnings have been resolved + +### What's been fixed +- json_encoders have been removed from Pydantic V2, and replaced with a `model_serializer` method. +- additional model construction functions have been added when not leveraging pydantic field aliases to allow users to construct a model from JSOn without the need for dealiasing the object themselves. + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-13.mdx b/fern/products/sdks/overview/python/changelog/2024-09-13.mdx new file mode 100644 index 000000000..5a998e84c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-13.mdx @@ -0,0 +1,41 @@ +## 4.2.0 +**`(feat):`** Allow specifying arbitrary configuration to your packages `pyproject.toml` by adding a `pyproject_toml` block to your configuration +whatever you include in this block will be added as-is to the `pyproject.toml` file. The config, as an example is: + +```yaml +config: + pyproject_toml: | + [tool.covcheck.group.unit.coverage] + branch = 26.0 + line = 62.0 + + [tool.covcheck.group.service.coverage] + branch = 30.0 + line = 67.0 +``` + + +## 4.1.0 +**`(feat):`** Allow specifying pip extras within your `pyproject.toml`. The following config: + +```yaml +config: + extra_dev_dependencies: + covcheck: + version: "^0.4.3" + extras: ["toml"] +``` + +would add the following to your `pyproject.toml`: + +```toml +[tool.poetry.dev-dependencies] +covcheck = { version = "^0.4.3", extras = ["toml"] } +``` + + +## 4.0.0 +**`(fix):`** Generated tests that expect an empty result when they are of type `text` (not JSON) now appropriately expect an empty string instead of `None` for async functions as well. +Version 3.3.4 fixed this for sync functions only, which was a bug. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-15.mdx b/fern/products/sdks/overview/python/changelog/2024-09-15.mdx new file mode 100644 index 000000000..6b9d1521b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-15.mdx @@ -0,0 +1,5 @@ +## 4.2.1 +**`(fix):`** When the generator runs bash commands such as `poetry install` and there is a failure, +now the `stderr` and `stdout` is logged to help improve user debugging. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-16.mdx b/fern/products/sdks/overview/python/changelog/2024-09-16.mdx new file mode 100644 index 000000000..d99ac13aa --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-16.mdx @@ -0,0 +1,20 @@ +## 4.2.3 +**`(fix):`** The content type of file properties is now respected for multipart +requests. For example, if you have a file property called `image` that has the +content type `image/jpeg`, then it will be sent as: + +```python +"image": core.with_content_type(file=image, content_type="image/jpeg"), +```` + + +## 4.2.2 +**`(fix):`** The content type of non-file properties is now respected for multipart +requests. For example, if you have a type called `metadata` that has the +content type `application/json`, then it will be sent as: + +```python +"metadata": (None, json.dumps(jsonable_encoder(metadata)), "application/json"), +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-17.mdx b/fern/products/sdks/overview/python/changelog/2024-09-17.mdx new file mode 100644 index 000000000..c130652c8 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-17.mdx @@ -0,0 +1,5 @@ +## 4.2.4 +**`(fix):`** Datetime examples are generated correctly once again. +The `pydantic_utilities` file is python 3.8 compatible. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-20.mdx b/fern/products/sdks/overview/python/changelog/2024-09-20.mdx new file mode 100644 index 000000000..0980857bd --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-20.mdx @@ -0,0 +1,9 @@ +## 4.2.6 +**`(fix):`** Serialization utilities (necessary when pydantic aliases are removed) now respects dictionaries as well. + + +## 4.2.5 +**`(fix):`** Parameters of file upload functions now default to OMIT, not None, so that the SDK appropriately +filters out unset parameters, while still allowing for user specified None values. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-23.mdx b/fern/products/sdks/overview/python/changelog/2024-09-23.mdx new file mode 100644 index 000000000..030e89be4 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-23.mdx @@ -0,0 +1,11 @@ +## 4.2.7-rc1 +**`(fix):`** When leveraging the `include_union_utils` configuration flag, the Pydantic models will no longer include transitive dependencies within +`update_forward_ref` calls, since these should not be necessary. This effectively scopes back the changes introduced in 4.0.0-rc5, which included +changes to improve circular reference handling in Pydantic models. + + +## 4.2.7-rc0 +**`(fix):`** Dynamic header suppliers, as used within the OAuth provider are now invoked on every request, not just the first. +This was a regression introduced within an earlier version that is now fixed. As a results of this fix, the `refresh_token` is now correctly refreshed. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-26.mdx b/fern/products/sdks/overview/python/changelog/2024-09-26.mdx new file mode 100644 index 000000000..6b06d06e1 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-26.mdx @@ -0,0 +1,13 @@ +## 4.2.7-rc4 +**`(fix):`** Generated readmes now include the parameter name required for the request options parameter within the example snippets. + +## 4.2.7-rc3 +**`(fix):`** Now, when sending Snippet Templates back to Fern, the generator will not try to coerce a potentially missing ID into the `api_definition_id` field. +This, had been a cause of the error log `Failed to upload snippet templates to FDR, this is ok: one of the hex, bytes, bytes_le, fields, or int arguments must be given`. + + +## 4.2.7-rc2 +**`(fix):`** Pydantic utilities now correctly handles cases where you have a Pydantic model, with a list of pydantic models as a field, where those models have literals. +Effectively, `deep_union_pydantic_objects` now handles lists of objects and merges them appropriately. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-09-28.mdx b/fern/products/sdks/overview/python/changelog/2024-09-28.mdx new file mode 100644 index 000000000..753f7c7ed --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-09-28.mdx @@ -0,0 +1,11 @@ +## 4.2.7 +**`(fix):`** The generated README will now have a section that links to the generated +SDK Reference (in `reference.md`). + +```md +## Reference + +A full reference for this library can be found [here](./reference.md). +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2024-10-11.mdx b/fern/products/sdks/overview/python/changelog/2024-10-11.mdx new file mode 100644 index 000000000..07986f70c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-10-11.mdx @@ -0,0 +1,4 @@ +## 4.2.8 +**`(fix):`** The snippet writer now correctly handles base64 strings. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-10-21.mdx b/fern/products/sdks/overview/python/changelog/2024-10-21.mdx new file mode 100644 index 000000000..1139ad04b --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-10-21.mdx @@ -0,0 +1,23 @@ +## 4.3.3 +**`(fix):`** The generator now writes the reference.md configuration correctly, using `.dict()` instead of `.json()`. + + +## 4.3.2 +**`(fix):`** The generator will now correctly default to the configured global `default_bytes_stream_chunk_size` when the `request_options` parameter is not provided. + + +## 4.3.1 +**`(feat):`** Requests for file download will now allow users to pass in a `chunk_size` option that allows them to receive chunks of a specific size +from the resultant `iter_bytes` invocation on the response byte stream. + +Concretely, a user would leverage the following: +```python +client.download( + ..., + request_options={ + "chunk_size": 1024 # 1MB + } +) +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2024-11-13.mdx b/fern/products/sdks/overview/python/changelog/2024-11-13.mdx new file mode 100644 index 000000000..57928b088 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-11-13.mdx @@ -0,0 +1,4 @@ +## 4.3.4 +**`(fix):`** Update shared http_client.py to remove omitted entries during file upload requests. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-11-14.mdx b/fern/products/sdks/overview/python/changelog/2024-11-14.mdx new file mode 100644 index 000000000..a8a75a906 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-11-14.mdx @@ -0,0 +1,4 @@ +## 4.3.5 +**`(fix):`** Update README.md snippet builder to omit invalid snippets during readme config generation. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-11-15.mdx b/fern/products/sdks/overview/python/changelog/2024-11-15.mdx new file mode 100644 index 000000000..eefa718fc --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-11-15.mdx @@ -0,0 +1,4 @@ +## 4.3.6 +**`(fix):`** Fix README.md and reference.md generation. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-11-19.mdx b/fern/products/sdks/overview/python/changelog/2024-11-19.mdx new file mode 100644 index 000000000..99eebaabb --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-11-19.mdx @@ -0,0 +1,4 @@ +## 4.3.7 +**`(fix):`** Update multipart endpoint generation to propertly omit optional body parameters. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-11-20.mdx b/fern/products/sdks/overview/python/changelog/2024-11-20.mdx new file mode 100644 index 000000000..864c53203 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-11-20.mdx @@ -0,0 +1,4 @@ +## 4.3.8 +**`(fix):`** Include content-type headers when available as part of endpoint request generation. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-12-08.mdx b/fern/products/sdks/overview/python/changelog/2024-12-08.mdx new file mode 100644 index 000000000..8143b05e9 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-12-08.mdx @@ -0,0 +1,4 @@ +## 4.3.9 +**`(fix):`** Fix indentation in generated README.md sections to ensure proper formatting and readability. + + diff --git a/fern/products/sdks/overview/python/changelog/2024-12-20.mdx b/fern/products/sdks/overview/python/changelog/2024-12-20.mdx new file mode 100644 index 000000000..95ef8a4ad --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2024-12-20.mdx @@ -0,0 +1,4 @@ +## 4.3.10 +**`(fix):`** Pagination correctly uses specified defaults to support custom schemes. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-01-06.mdx b/fern/products/sdks/overview/python/changelog/2025-01-06.mdx new file mode 100644 index 000000000..5040e39a0 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-01-06.mdx @@ -0,0 +1,4 @@ +## 4.3.11 +**`(fix):`** pyproject.toml now has a `[project]` block making it Poetry v2 compatible. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-02-10.mdx b/fern/products/sdks/overview/python/changelog/2025-02-10.mdx new file mode 100644 index 000000000..088a85bac --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-02-10.mdx @@ -0,0 +1,4 @@ +## 4.3.12 +**`(feat):`** The Python generator now autogenerates a requirements.txt file. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-02-12.mdx b/fern/products/sdks/overview/python/changelog/2025-02-12.mdx new file mode 100644 index 000000000..4e2417d76 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-02-12.mdx @@ -0,0 +1,4 @@ +## 4.3.13 +**`(feat):`** The Python generator now supports conditioning dependencies on the Python version. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-02-20.mdx b/fern/products/sdks/overview/python/changelog/2025-02-20.mdx new file mode 100644 index 000000000..b9a88e8d7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-02-20.mdx @@ -0,0 +1,4 @@ +## 4.3.14 +**`(feat):`** Set the default number of retries to 2 (was 0) to align with the generated README. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-05.mdx b/fern/products/sdks/overview/python/changelog/2025-03-05.mdx new file mode 100644 index 000000000..d62d0e056 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-05.mdx @@ -0,0 +1,4 @@ +## 4.3.15 +**`(fix):`** Fix an issue where extraneous NameError-causing update_forward_refs invocations were being emitted. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-06.mdx b/fern/products/sdks/overview/python/changelog/2025-03-06.mdx new file mode 100644 index 000000000..177e361f1 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-06.mdx @@ -0,0 +1,4 @@ +## 4.3.16 +**`(fix):`** Fix an issue where GeneratorExit was unintentionally being swallowed by code blocks within the HttpClient.stream() contextmanager. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-13.mdx b/fern/products/sdks/overview/python/changelog/2025-03-13.mdx new file mode 100644 index 000000000..b7285024d --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-13.mdx @@ -0,0 +1,5 @@ +## 4.3.17 +**`(fix):`** Fix an issue where parameter names that conflict with the `request_options` parameter are now properly deconflicted by +prepending an underscore to the `request_options` parameter name. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-14.mdx b/fern/products/sdks/overview/python/changelog/2025-03-14.mdx new file mode 100644 index 000000000..4380a9f37 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-14.mdx @@ -0,0 +1,6 @@ +## 4.3.18 +**`(fix):`** Fix an issue where the `request_options` parameter name is now properly respected when it's +renamed due to conflicts with other parameter names. Previously, the code would still reference the +original parameter name internally, causing errors. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-18.mdx b/fern/products/sdks/overview/python/changelog/2025-03-18.mdx new file mode 100644 index 000000000..681a2bfa0 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-18.mdx @@ -0,0 +1,4 @@ +## 4.3.19 +**`(internal):`** Update the IR to v57. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-19.mdx b/fern/products/sdks/overview/python/changelog/2025-03-19.mdx new file mode 100644 index 000000000..d22496b91 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-19.mdx @@ -0,0 +1,4 @@ +## 4.3.20 +**`(fix):`** Update formatting across all generated files. There are no behavioral changes, but large diffs are expected. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-24.mdx b/fern/products/sdks/overview/python/changelog/2025-03-24.mdx new file mode 100644 index 000000000..ad9cfeff6 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-24.mdx @@ -0,0 +1,4 @@ +## 4.3.21 +**`(fix):`** Fix an issue where the default `timeout` was not being respected when a custom `httpx_client` was provided. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-25.mdx b/fern/products/sdks/overview/python/changelog/2025-03-25.mdx new file mode 100644 index 000000000..abf335f51 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-25.mdx @@ -0,0 +1,4 @@ +## 4.4.0 +**`(feat):`** Add support for raw bytes responses. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-03-28.mdx b/fern/products/sdks/overview/python/changelog/2025-03-28.mdx new file mode 100644 index 000000000..236d42917 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-03-28.mdx @@ -0,0 +1,4 @@ +## 4.5.0 +**`(feat):`** Add support for websocket code generation. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-01.mdx b/fern/products/sdks/overview/python/changelog/2025-04-01.mdx new file mode 100644 index 000000000..3f1c2b085 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-01.mdx @@ -0,0 +1,10 @@ +## 4.6.0 +**`(feat):`** Add support for generating legacy wire tests, and disable them by default. These tests will be restored and improved in the future. +Users can opt-in to generating legacy wire tests by setting the `include_legacy_wire_tests` flag to `true` in their configuration. + +```yaml +config: + include_legacy_wire_tests: true +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-03.mdx b/fern/products/sdks/overview/python/changelog/2025-04-03.mdx new file mode 100644 index 000000000..5b17e7a00 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-03.mdx @@ -0,0 +1,4 @@ +## 4.7.0 +**`(feat):`** Add support for user-agent header + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-07.mdx b/fern/products/sdks/overview/python/changelog/2025-04-07.mdx new file mode 100644 index 000000000..a7a403720 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-07.mdx @@ -0,0 +1,19 @@ +## 4.10.0 +**`(feat):`** Add support for using TypedDicts for file upload request parameters. This flag should +be used in conjunction with the `use_typeddict_requests` flag like so: + +```yaml +config: + use_typeddict_requests: true + use_typeddict_requests_for_file_upload: true +``` + + +## 4.9.0 +**`(feat):`** Implement raw client support for accessing response headers and data in unary endpoints. + + +## 4.8.0 +**`(feat):`** Add support for inlining path parameters + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-08.mdx b/fern/products/sdks/overview/python/changelog/2025-04-08.mdx new file mode 100644 index 000000000..bd5bb5571 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-08.mdx @@ -0,0 +1,5 @@ +## 4.11.0 +**`(fix):`** Always represent nullable as Optional rather than NotRequired, only use +NotRequired for optional in typeddicts. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-09.mdx b/fern/products/sdks/overview/python/changelog/2025-04-09.mdx new file mode 100644 index 000000000..a250f7c7c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-09.mdx @@ -0,0 +1,27 @@ +## 4.13.0 +**`(feat):`** Adds support for overriding literal global headers in the client constructor (e.g. `version`). + +```python +client = Acme( + ... + version="1.0.0", +) +``` + + +## 4.12.1 +**`(fix):`** Fixes an issue where dictionary types defined within TypedDicts incorrectly used the +`typing_extensions.NotRequired` type. + + +**`(fix):`** Fixes an issue where optional `core.File` parameters would cause `mypy` failures. + + +**`(fix):`** Fixes a regression introduced in 4.12.0, where the non raw response client endpoints +did not respect the allowed method keywords (e.g. `list` was generated as `list_`). + + +## 4.12.0 +**`(fix):`** Resolve issues with paginated endpoints generating incorrect endpoint return types. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-10.mdx b/fern/products/sdks/overview/python/changelog/2025-04-10.mdx new file mode 100644 index 000000000..209e7c605 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-10.mdx @@ -0,0 +1,16 @@ +## 4.14.1 +**`(fix):`** The generated GitHub workflow now uses `ubuntu-latest` instead of `ubuntu-20.04` + + +## 4.14.0 +**`(feat):`** Add support for receiving raw responses from streaming endpoints. + + +**`(feat):`** Add support for excluding types from the generated `__init__.py` files. + +```yaml +config: + exclude_types_from_init_exports: true +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-13.mdx b/fern/products/sdks/overview/python/changelog/2025-04-13.mdx new file mode 100644 index 000000000..99e01ea3a --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-13.mdx @@ -0,0 +1,5 @@ +## 4.14.2 +**`(fix):`** Fix an issue where TypedDicts with circular references were not correctly serialized. +This issue only affected users that enabled `use_typeddict_requests`. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-22.mdx b/fern/products/sdks/overview/python/changelog/2025-04-22.mdx new file mode 100644 index 000000000..2cdf918aa --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-22.mdx @@ -0,0 +1,8 @@ +## 4.14.4 +**`(fix):`** Fixed an issue where filename and plain text content-type parameters were being incorrectly serialized. + + +## 4.14.3 +**`(fix):`** Add support for receiving raw responses from pagination endpoints. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-23.mdx b/fern/products/sdks/overview/python/changelog/2025-04-23.mdx new file mode 100644 index 000000000..10fe34e09 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-23.mdx @@ -0,0 +1,4 @@ +## 4.14.5 +**`(fix):`** Fixed an issue introduced in 4.14.0, where SSE streaming responses were not yielded correctly. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-24.mdx b/fern/products/sdks/overview/python/changelog/2025-04-24.mdx new file mode 100644 index 000000000..f4cef3119 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-24.mdx @@ -0,0 +1,12 @@ +## 4.15.0 +**`(feat):`** Add support for offset step pagination, where the offset position represents the element's index rather +than the page number. + + +**`(fix):`** Fixed an issue introduced in 4.14.0, where paginated endpoints were not returning the underlying data. + + +## 4.14.6 +**`(fix):`** Fixed an issue where multipart/form-data content types are now explicitly sent when configured in the API definition. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-25.mdx b/fern/products/sdks/overview/python/changelog/2025-04-25.mdx new file mode 100644 index 000000000..3cba54c50 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-25.mdx @@ -0,0 +1,8 @@ +## 4.16.1 +**`(internal):`** Fixes an internal release issue in `4.16.0`. + + +## 4.16.0 +**`(feat):`** Add support for retrieving response headers from the generated `ApiError` class. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-29.mdx b/fern/products/sdks/overview/python/changelog/2025-04-29.mdx new file mode 100644 index 000000000..7b6143d06 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-29.mdx @@ -0,0 +1,4 @@ +## 4.16.2 +**`(fix):`** Fixed an issue introduced in 4.14.0, where `bytes` and `text` responses were not handled correctly. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-04-30.mdx b/fern/products/sdks/overview/python/changelog/2025-04-30.mdx new file mode 100644 index 000000000..f31fadc39 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-04-30.mdx @@ -0,0 +1,4 @@ +## 4.17.0 +**`(feat):`** Add support for retrieving response headers for each page of paginated responses, instead of just the first page. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-01.mdx b/fern/products/sdks/overview/python/changelog/2025-05-01.mdx new file mode 100644 index 000000000..ddb420bd7 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-01.mdx @@ -0,0 +1,4 @@ +## 4.18.3 +**`(fix):`** Install the generator-cli at build time as a fallback if runtime installation fails. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-05.mdx b/fern/products/sdks/overview/python/changelog/2025-05-05.mdx new file mode 100644 index 000000000..7801bfb47 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-05.mdx @@ -0,0 +1,4 @@ +## 4.17.1 +**`(fix):`** Fix an issue where response `headers` were not available in the strongly typed error classes. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-06.mdx b/fern/products/sdks/overview/python/changelog/2025-05-06.mdx new file mode 100644 index 000000000..79e9b398c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-06.mdx @@ -0,0 +1,14 @@ +## 4.18.2 +**`(fix):`** Fix README g + + +## 4.18.1 +**`(fix):`** Update python-v2 generator invocation so that all relevant files like pyproject.toml and poetry.lock are pushed +to the GitHub repository. + + +## 4.18.0 +**`(fix):`** Add support for self-hosted mode, allowing users to push generated SDKs to their own GitHub repositories. +This feature enables organizations to maintain private SDK repositories with custom configurations. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-08.mdx b/fern/products/sdks/overview/python/changelog/2025-05-08.mdx new file mode 100644 index 000000000..2cd8f5779 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-08.mdx @@ -0,0 +1,13 @@ +## 4.18.6 +**`(fix):`** Fix string enum generation to properly handle enum values containing quotes by automatically escaping them, +ensuring valid Python syntax for both single and double quoted string literals. + + +## 4.18.5 +**`(fix):`** Support application/x-www-form-urlencoded content type for requests, allowing proper encoding of form data in API calls. + + +## 4.18.4 +**`(fix):`** Fix requirements.txt generation to properly handle dependency version constraints, ensuring compatibility markers are correctly formatted. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-09.mdx b/fern/products/sdks/overview/python/changelog/2025-05-09.mdx new file mode 100644 index 000000000..631e936f5 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-09.mdx @@ -0,0 +1,16 @@ +## 4.19.3 +**`(fix):`** Fix pagination support in raw clients by properly indexing into response data, ensuring that raw client endpoints with pagination correctly iterate through paginated results. + + +## 4.19.2 +**`(fix):`** Fix SSE streaming response handling by adding proper type casting to sse.data, ensuring correct data type conversion during stream processing. + + +## 4.19.1 +**`(fix):`** Fix a mypy error in pydantic_utilities.py by properly handling type annotations for Pydantic v1 and v2 compatibility, ensuring type checking passes correctly across different Pydantic versions. + + +## 4.19.0 +**`(feat):`** Add support for generating proper Pydantic models that contain forward references wrapped in containers (e.g. list, optional, etc.) + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-11.mdx b/fern/products/sdks/overview/python/changelog/2025-05-11.mdx new file mode 100644 index 000000000..c2dccaacb --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-11.mdx @@ -0,0 +1,15 @@ +## 4.19.6 +**`(fix):`** Fix mypy errors related to automatic pagination in the python client. + + +## 4.19.5 +**`(fix):`** Fix naming conflicts in streaming endpoints by renaming the stream method to _stream in raw clients, +preventing collisions with endpoint parameters that might also be named "stream", +while maintaining proper functionality for streaming responses. + + +## 4.19.4 +**`(feat):`** Fix handling of optional file parameters in multipart form data requests with httpx by properly checking +for None values before attempting to include them in the request, preventing errors when optional file parameters are not provided. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-13.mdx b/fern/products/sdks/overview/python/changelog/2025-05-13.mdx new file mode 100644 index 000000000..856c0f19e --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-13.mdx @@ -0,0 +1,17 @@ +## 4.20.2 +**`(fix):`** Support formatting the generated README.md and python code snippets. + + +## 4.20.1 +**`(fix):`** Add support for the custom introduction setting in the generated README.md. + + +## 4.20.0 +**`(feat):`** Generate standalone Pydantic models for each class definition for models that utilize the Fern `extends` keyword, +as opposed to generating Pydantic models that implement inheritance. + + +## 4.19.7 +**`(fix):`** Fix mypy errors related to type-shadowing `data` variables in generated streaming endpoints. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-20.mdx b/fern/products/sdks/overview/python/changelog/2025-05-20.mdx new file mode 100644 index 000000000..4e3b4c96f --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-20.mdx @@ -0,0 +1,4 @@ +## 4.20.3 +**`(fix):`** Fix handling of optional and unknown response types by not throwing errors when the response is empty. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-05-27.mdx b/fern/products/sdks/overview/python/changelog/2025-05-27.mdx new file mode 100644 index 000000000..746f8d555 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-05-27.mdx @@ -0,0 +1,12 @@ +## 4.21.2 +**`(chore):`** Handle HEAD HTTP method gracefully by treating it as a POST method when constructing the snippet registry, rather than failing. + + +## 4.21.1 +**`(chore):`** Make sure to generate README and Reference even when generating in local mode (if self hosting is enabled). + + +## 4.21.0 +**`(chore):`** Bump to v58 of IR. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-04.mdx b/fern/products/sdks/overview/python/changelog/2025-06-04.mdx new file mode 100644 index 000000000..42e7e1859 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-04.mdx @@ -0,0 +1,4 @@ +## 4.21.3 +**`(fix):`** Fix an issue where the websocket connect method did not correctly yield the websocket client. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-05.mdx b/fern/products/sdks/overview/python/changelog/2025-06-05.mdx new file mode 100644 index 000000000..fa860f4a3 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-05.mdx @@ -0,0 +1,4 @@ +## 4.21.4 +**`(feat):`** Add support for HEAD HTTP method in the generated client. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-11.mdx b/fern/products/sdks/overview/python/changelog/2025-06-11.mdx new file mode 100644 index 000000000..6c177c42c --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-11.mdx @@ -0,0 +1,8 @@ +## 4.22.0 +**`(feat):`** Support wrapped aliases in python for pydantic v2. + + +## 4.21.5 +**`(fix):`** Generate README for github output mode. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-20.mdx b/fern/products/sdks/overview/python/changelog/2025-06-20.mdx new file mode 100644 index 000000000..0ca7dc777 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-20.mdx @@ -0,0 +1,9 @@ +## 4.22.1-rc0 +**`(feat):`** Lazily validate model serialization to reduce memory consumption. Pydantic 2.11.0 introduced an issue where the model_serializer +decorator set to wrap mode forced it to eagerly do schema validation at import time. Because we had this decorator on the UniversalBaseModel, +it would try to validate the schemas of all the Model types at import time. This caused massive memory spikes for more complex SDKs, upto 2.6GB +in some cases. This change essentially accomplishes the same logic of wrapping the serialization process and modifying the serialization +structure of datetime fields. The difference is that we manually wrap, so we're able to defer model validation until runtime, drastically +reducing our memory consumption. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-24.mdx b/fern/products/sdks/overview/python/changelog/2025-06-24.mdx new file mode 100644 index 000000000..6fcf8f939 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-24.mdx @@ -0,0 +1,14 @@ +## 4.23.1 +**`(chore):`** Bump pydantic-core dependency to >=2.18.2 to ensure compatibility with newer pydantic versions and improve performance. + + +## 4.23.0 +**`(feat):`** Add support for custom headers parameter at the top level of the client constructor. + +```python +client = Client( + headers={"X-Custom-Header": "custom-value"} +) +``` + + diff --git a/fern/products/sdks/overview/python/changelog/2025-06-25.mdx b/fern/products/sdks/overview/python/changelog/2025-06-25.mdx new file mode 100644 index 000000000..3b0875163 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-06-25.mdx @@ -0,0 +1,4 @@ +## 4.23.2 +**`(chore):`** Bump websockets dependency to >=12.0.0 to ensure compatibility with newer websocket implementations and improve stability. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-07-03.mdx b/fern/products/sdks/overview/python/changelog/2025-07-03.mdx new file mode 100644 index 000000000..f9a84ae93 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-07-03.mdx @@ -0,0 +1,4 @@ +## 4.24.0 +**`(feat):`** Add support for path parameters backed by variables supplied to the client constructor. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-07-07.mdx b/fern/products/sdks/overview/python/changelog/2025-07-07.mdx new file mode 100644 index 000000000..e82f15687 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-07-07.mdx @@ -0,0 +1,4 @@ +## 4.24.1 +**`(fix):`** Parse websocket messages as JSON before Pydantic parsing. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-07-09.mdx b/fern/products/sdks/overview/python/changelog/2025-07-09.mdx new file mode 100644 index 000000000..c1512f2db --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-07-09.mdx @@ -0,0 +1,12 @@ +## 4.25.0 +**`(feat):`** Support async functions as websocket callback handlers. + + +## 4.24.3 +**`(fix):`** Support websockets>=14 by using legacy client. + + +## 4.24.2 +**`(fix):`** Emit ERROR events for JSON parsing errors in websocket connections. + + diff --git a/fern/products/sdks/overview/python/changelog/2025-07-10.mdx b/fern/products/sdks/overview/python/changelog/2025-07-10.mdx new file mode 100644 index 000000000..bc215ea46 --- /dev/null +++ b/fern/products/sdks/overview/python/changelog/2025-07-10.mdx @@ -0,0 +1,4 @@ +## 4.25.1 +**`(fix):`** Correctly import websockets exceptions. + + diff --git a/fern/products/sdks/overview/ruby/changelog.mdx b/fern/products/sdks/overview/ruby/changelog.mdx deleted file mode 100644 index 19590ae23..000000000 --- a/fern/products/sdks/overview/ruby/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Ruby Changelog -description: Changelog for the Fern Ruby SDK. ---- - -Stay up to date with the latest changes and updates to the Fern Ruby SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/ruby). \ No newline at end of file diff --git a/fern/products/sdks/overview/ruby/changelog/2024-01-30.mdx b/fern/products/sdks/overview/ruby/changelog/2024-01-30.mdx new file mode 100644 index 000000000..7628f9236 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-01-30.mdx @@ -0,0 +1,3 @@ +## 0.0.0 +**`(internal):`** Initialize the changelog + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-02-01.mdx b/fern/products/sdks/overview/ruby/changelog/2024-02-01.mdx new file mode 100644 index 000000000..cf9f8be7e --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-02-01.mdx @@ -0,0 +1,3 @@ +## 0.0.1 +**`(feat):`** Support client generation (async and sync) as well as most endpoint types (except streaming) + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-02-15.mdx b/fern/products/sdks/overview/ruby/changelog/2024-02-15.mdx new file mode 100644 index 000000000..50852ff44 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-02-15.mdx @@ -0,0 +1,3 @@ +## 0.1.1 +**`(internal):`** Ensure the Ruby generators do not have strict dependencies on the IR + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-02-20.mdx b/fern/products/sdks/overview/ruby/changelog/2024-02-20.mdx new file mode 100644 index 000000000..a333f3874 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-02-20.mdx @@ -0,0 +1,9 @@ +## 0.2.0 +**`(feat):`** Add support for idempotency headers + +### What's changed +- Ruby enum construct now leverages class constants instead of hashes to support better autocomplete +- Discriminated unions are no longer wrapped within a parent object, rather, any field or parameter that depends on a discriminated union now explicitly references the member types in support of better autocomplete. +- Undiscriminated unions are no longer allowed as hashes as input to SDK functions, this is in support of better autocomplete as well. +- The generated Ruby SDKs now support idempotency headers, users may specify idempotency headers within the RequestOptions object + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-02-27.mdx b/fern/products/sdks/overview/ruby/changelog/2024-02-27.mdx new file mode 100644 index 000000000..65688d4ea --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-02-27.mdx @@ -0,0 +1,8 @@ +## 0.3.0 +**`(fix):`** Generated yardoc now appropriately reflects the typehint of the value type in maps + +### What's been fixed +- Ensure the name passed into the 'X-Fern-SDK-Name' header is the name of the gem, not the client class +- If an envvar is specified as a fallback for an auth header, the SDK will now mark that parameter as optional to allow fallback to actually happen +- Generated yardoc now appropriately reflects the typehint of the value type in maps + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-03-12.mdx b/fern/products/sdks/overview/ruby/changelog/2024-03-12.mdx new file mode 100644 index 000000000..b17e19f3e --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-03-12.mdx @@ -0,0 +1,3 @@ +## 0.3.1 +**`(fix):`** use strings instead of UUIDs, which are helper classes in Ruby + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-03-18.mdx b/fern/products/sdks/overview/ruby/changelog/2024-03-18.mdx new file mode 100644 index 000000000..4a424a58f --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-03-18.mdx @@ -0,0 +1,3 @@ +## 0.3.2 +**`(feat):`** type bytes requests to also take in IO types, indicating to users that they may pass in a stream of bytes + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-03-22.mdx b/fern/products/sdks/overview/ruby/changelog/2024-03-22.mdx new file mode 100644 index 000000000..993273419 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-03-22.mdx @@ -0,0 +1,30 @@ +## 0.3.3 +**`(internal):`** Leverage shared generator notification and config parsing logic. + +## 0.1.0-rc0 +**`(chore):`** Loosen the Faraday dependencies within the generated SDKs + +### What's changed +- loosen the Faraday dependencies within the generated SDKs, now we are supporting Faraday 1.x, while continuing to support the same upperbound (specifically supporting the latest major version as well). +- release a minor version as the Ruby generator is now being used in beta! + +## 0.0.6 +**`(feat):`** license files are now specified within the gem config if they are provided + +## 0.0.5 +**`(fix):`** Address parsing issues within the SDK + +### What's been fixed +- Syntactic error in block parameter usage: we now ensure block parameters are the final parameter for functions +- Add properties to subpackages: previously properties on subpackages were not being exposed +- Ensure optional properties in from_json are only parsed if present + +## 0.0.4 +**`(fix):`** ensures files are written at the gem name path over client name, and addresses string escaping on one of the Fern headers + +## 0.0.3 +**`(fix):`** addresses a number of typos and other issues previously contained within the generation code + +## 0.0.2 +**`(feat):`** Support rubygems output type within `generators.yml` + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-04-08.mdx b/fern/products/sdks/overview/ruby/changelog/2024-04-08.mdx new file mode 100644 index 000000000..6d181649c --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-04-08.mdx @@ -0,0 +1,40 @@ +## 0.7.0-rc5 +**`(feat):`** additional fix for the same issue within 0.7.0-rc4 (regression introduced within the 0.7.0 RCs where the token prefix was dropped from requests). + +## 0.7.0-rc4 +**`(feat):`** fixes regression introduced within the 0.7.0 RCs where the token prefix was dropped from requests. + +## 0.7.0-rc3 +**`(fix):`** Module references are now consistent throughout the generated SDK, this was a regression in the previous release. + +## 0.7.0-rc2 +**`(feat):`** the ruby generator now nests types under a type module to avoid naming conflicts, this is behind a configuration flag + +## 0.7.0-rc1 +**`(feat):`** Address serialization issues within iterable types + +### What's been fixed +- nested loops leverage different variable names to deconflict +- nested loops do not call to_json prior to the subsequent loop + +## 0.6.1 +**`(internal):`** Release Generator + +## 0.6.1-rc0 +**`(internal):`** Improve logging within the Ruby generator + +## 0.6.0-rc1 +**`(fix):`** fix regression where sometimes the parsed_json variable would not be instantiated, and so there'd be a nil ref in the generated code + +## 0.6.0-rc0 +**`(feat):`** Introduce code snippets and examples for Ruby SDKs + +## 0.5.0-rc2 +**`(fix):`** Call JSON.parse prior to iterating through an iterable response + +## 0.4.0 +**`(feat):`** The generated SDK now includes a rakefile to run any tests prefixed with `test_` in the `test` directory + +### What's new +- The generators now create a rakefile to run any tests prefixed with `test_` in the `test` directory. A step is also added to CI to run these test. The dummy test now running also provides a sanity check on the health of the build of the gem, even if no tests are added given the gem is imported. + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-04-09.mdx b/fern/products/sdks/overview/ruby/changelog/2024-04-09.mdx new file mode 100644 index 000000000..73c5e357f --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-04-09.mdx @@ -0,0 +1,9 @@ +## 0.5.0-rc0 +**`(feat):`** The generated SDK now includes a rakefile to run any tests prefixed with `test_` in the `test` directory + +### What's new +- Consumers of the SDK can now pass in a base URL override into the root client, as well as the request's RequestOptions + +### What's been fixed +- This PR includes a number of typing annotation and cleanliness/QOL fixes. + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-05-17.mdx b/fern/products/sdks/overview/ruby/changelog/2024-05-17.mdx new file mode 100644 index 000000000..1291888d0 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-05-17.mdx @@ -0,0 +1,3 @@ +## 0.6.2 +**`(internal):`** The generator now uses the latest FDR SDK + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-05-27.mdx b/fern/products/sdks/overview/ruby/changelog/2024-05-27.mdx new file mode 100644 index 000000000..113f72831 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-05-27.mdx @@ -0,0 +1,3 @@ +## 0.6.3 +**`(feat):`** Generated SDK snippets now leverage the full function module path. + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-06-13.mdx b/fern/products/sdks/overview/ruby/changelog/2024-06-13.mdx new file mode 100644 index 000000000..9310320d7 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-06-13.mdx @@ -0,0 +1,9 @@ +## 0.7.0-rc0 +**`(feat):`** Introduce automatic token refresh for OAuth credentials + +### What's new +- The Ruby SDK now generates an OAuth client to automate token refresh. + +### What's been fixed +- The Ruby SDK now no longer requires users specify literals in method signatures + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-07-01.mdx b/fern/products/sdks/overview/ruby/changelog/2024-07-01.mdx new file mode 100644 index 000000000..4ab6209cc --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-07-01.mdx @@ -0,0 +1,3 @@ +## 0.8.0-rc0 +**`(feat):`** allow users to specify additional dependencies and dev dependencies for Ruby SDKs. + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-07-03.mdx b/fern/products/sdks/overview/ruby/changelog/2024-07-03.mdx new file mode 100644 index 000000000..29eb495d6 --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-07-03.mdx @@ -0,0 +1,3 @@ +## 0.8.0 +**`(fix):`** Date snippets now wrap their examples in quotation marks to correctly use `.parse` + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-07-22.mdx b/fern/products/sdks/overview/ruby/changelog/2024-07-22.mdx new file mode 100644 index 000000000..b890b0b5d --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-07-22.mdx @@ -0,0 +1,7 @@ +## 0.8.1 +**`(fix):`** Address serialization issues within iterable types + +### What's been fixed +- Nested `hash` types are recursively resolved in `from_json` such that they come back as true hashes, as opposed to structs +- Pass through additional params from request options even if the original request did not have those types of params (ex: query parameters) + diff --git a/fern/products/sdks/overview/ruby/changelog/2024-08-05.mdx b/fern/products/sdks/overview/ruby/changelog/2024-08-05.mdx new file mode 100644 index 000000000..8b0af02bc --- /dev/null +++ b/fern/products/sdks/overview/ruby/changelog/2024-08-05.mdx @@ -0,0 +1,3 @@ +## 0.8.2 +**`(fix):`** The generated endpoint functions no long include object utilities such as `_field_set` or `additional_properties`. + diff --git a/fern/products/sdks/overview/typescript/changelog.mdx b/fern/products/sdks/overview/typescript/changelog.mdx deleted file mode 100644 index 60d146c71..000000000 --- a/fern/products/sdks/overview/typescript/changelog.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: Typescript Changelog -description: Changelog for the Fern Typescript SDK. ---- - -Stay up to date with the latest changes and updates to the Fern Typescript SDK. - -This page is a WIP, please refer to our previous [documentation](https://buildwithfern.com/learn/sdks/introduction/changelog/ts). diff --git a/fern/products/sdks/overview/typescript/changelog/2024-02-11.mdx b/fern/products/sdks/overview/typescript/changelog/2024-02-11.mdx new file mode 100644 index 000000000..50ee1d797 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-02-11.mdx @@ -0,0 +1,10 @@ +## 0.10.0 +**`(feat):`** The SDK generator now supports whitelabelling. When this is turned on, +there will be no mention of Fern in the generated code. + +**Note**: You must be on the enterprise tier to enable this mode. + + +## 0.9.7 +**`(chore):`** Initialize this changelog + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-02-13.mdx b/fern/products/sdks/overview/typescript/changelog/2024-02-13.mdx new file mode 100644 index 000000000..42168608f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-02-13.mdx @@ -0,0 +1,19 @@ +## 0.11.3 +**`(fix):`** ensure SDK generator always uses `node-fetch` in Node.js environments. There is an experimental +fetch packaged with newer versions of Node.js, however it causes unexpected behavior with +file uploads. + + +## 0.11.2 +**`(fix):`** ensure SDK generator does not drop additional parameters from requests that perform file upload. Previously, if an endpoint had `file` inputs without additional `body` parameters, query parameters were erroneously ignored. + + +## 0.11.1 +**`(fix):`** The SDK generator no longer generates a `tsconfig.json` with `noUnusedParameters` enabled. This check was too strict. + +## 0.11.0 +**`(feat):`** The SDK generator now forwards information about the runtime that it is being +used in. The header `X-Fern-Runtime` will report the runtime (e.g. `browser`, `node`, `deno`) +and the header `X-Fern-Runtime-Version` will report the version. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-02-15.mdx b/fern/products/sdks/overview/typescript/changelog/2024-02-15.mdx new file mode 100644 index 000000000..edd569161 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-02-15.mdx @@ -0,0 +1,22 @@ +## 0.11.5 +**`(fix):`** Previously `core.Stream` would not work in the Browser. Now the generated Fern SDK +includes a polyfill for `ReadableStream` and uses `TextDecoder` instead of `Buffer`. + + +**`(feat):`** add in a reference markdown file, this shows a quick outline of the available endpoints, +it's documentation, code snippet, and parameters. + +This feature is currently behind a feature flag called `includeApiReference` and can be used + +```yaml +config: + includeApiReference: true +``` + + +## 0.11.4 +**`(fix):`** The `Fetcher` now supports sending binary as a request body. This is important +for APIs that intake `application/octet-stream` content types or for folks that have +.fernignored their and added custom utilities that leverage the fetcher. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-02-26.mdx b/fern/products/sdks/overview/typescript/changelog/2024-02-26.mdx new file mode 100644 index 000000000..8a63ff316 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-02-26.mdx @@ -0,0 +1,24 @@ +## 0.12.0 +**`(feat):`** support deep object query parameter serialization. If, query parameters are +objects then Fern will support serializing them. + +```yaml +MyFoo: + properties: + bar: optional + +query-parameters: + foo: MyFoo +``` + +will now be serialized as `?foo[bar]="...` and appear in the SDK as a regular object + +```ts +client.doThing({ + foo: { + bar: "..." + } +}); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-02-27.mdx b/fern/products/sdks/overview/typescript/changelog/2024-02-27.mdx new file mode 100644 index 000000000..4a6e67b72 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-02-27.mdx @@ -0,0 +1,82 @@ +## 0.12.6 +**`(fix):`** In Node.js environments the SDK will default to using `node-fetch`. The +SDK depends on v2 of node-fetch to stay CJS compatible. + +Previously the SDK was doing `require("node-fetch")` but it should be +`require("node-fetch").default` based on +https://github.com/node-fetch/node-fetch/issues/450#issuecomment-387045223. + + +## 0.12.5 +**`(feat):`** Introduce a custom configuration called `tolerateRepublish` which supports running +npm publish with the flag `--tolerateRepublish`. This flag allows you to publish +on top of an existing npm package. + +To turn on this flag, update your generators.yml: + +```yaml +groups: + generators: + - name: fernapi/fern-typscript-node-sdk + version: 0.12.5 + ... + config: + tolerateRepublish: true +``` + + +## 0.12.4 +**`(fix):`** Previously reference.md was just leveraging the function name for the reference, now it leverages the full package-scoped path, mirroring how the function would be used in reality. + +```ts +seedExamples.getException(...) + +// is now + +seedExamples.file.notification.service.getException(...) +``` + + +**`(fix):`** Previously SDK code snippets would not support generation with undiscriminated unions. Now, it does. + +## 0.12.2 +**`(fix):`** Previously SDK code snippets would not take into account default parameter values +and would always include a `{}`. This was odd and didn't represent how a developer +would use the SDK. Now, the snippets check for default parameter values and omit +if there are no fields specified. + +```ts +// Before +client.users.list({}); + +// After +client.users.list(); +``` + + +## 0.12.1 +**`(fix):`** Optional objects in deep query parameters were previously being incorrectly +serialized. Before this change, optional objects were just being JSON.stringified +which would send the incorrect contents over the wire. + +```ts +// Before +if (foo != null) { + _queryParams["foo"] = JSON.stringify(foo); +} + +// After +if (foo != null) { + _queryParams["foo"] = foo; +} + +// After (with serde layer) +if (foo != null) { + _queryParams["foo"] = serializers.Foo.jsonOrThrow(foo, { + skipValidation: false, + breadcrumbs: ["request", "foo"] + }); +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-03-14.mdx b/fern/products/sdks/overview/typescript/changelog/2024-03-14.mdx new file mode 100644 index 000000000..053a5eb9b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-03-14.mdx @@ -0,0 +1,6 @@ +## 0.12.7 +**`(feat):`** the SDK will now leverage environment variable defaults, where specified, for authentication variables, such as bearer tokens, api keys, custom headers, etc. + +Previously, the SDK would only leverage these defaults for bearer token auth IF auth was mandatory throughout the SDK. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-03-18.mdx b/fern/products/sdks/overview/typescript/changelog/2024-03-18.mdx new file mode 100644 index 000000000..6636b0261 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-03-18.mdx @@ -0,0 +1,3 @@ +## 0.12.8-rc0 +**`(feat):`** Enhance serde performance by reducing reliance on async behavior and lazy async dynamic imports. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-03-22.mdx b/fern/products/sdks/overview/typescript/changelog/2024-03-22.mdx new file mode 100644 index 000000000..86531d6e9 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-03-22.mdx @@ -0,0 +1,8 @@ +## 0.12.9 +**`(fix):`** The generator stopped working for remote code generation starting in `0.12.7`. This is now fixed. + +## 0.12.8 +**`(feat):`** Enhance serde performance by reducing reliance on async behavior and lazy async dynamic imports. + +**`(internal):`** Shared generator notification and config parsing logic. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-02.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-02.mdx new file mode 100644 index 000000000..36783414b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-02.mdx @@ -0,0 +1,48 @@ +## 0.13.0-rc0 +**`(feat):`** Add `retainOriginalCasing` option to preserve the naming convention expressed in the API. +For example, the following Fern definition will generate a type like so: + +```yaml +types: + GetUsersRequest + properties: + group_id: string +``` + +**Before** + +```typescript +export interface GetUsersRequest { + groupId: string; +} + +export interface GetUsersRequest = core.serialization.object({ +groupId: core.serialization.string("group_id") +}) + +export namespace GetUsersRequest { + interface Raw { + group_id: string + } +} +``` + +**After** + +```typescript +export interface GetUsersRequest { + group_id: string; +} + +export interface GetUsersRequest = core.serialization.object({ +group_id: core.serialization.string() +}) + +export namespace GetUsersRequest { + interface Raw { + group_id: string + } +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-09.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-09.mdx new file mode 100644 index 000000000..7cfc94392 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-09.mdx @@ -0,0 +1,3 @@ +## 0.13.0 +**`(internal):`** Support V37 of the IR. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-17.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-17.mdx new file mode 100644 index 000000000..9ccea063f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-17.mdx @@ -0,0 +1,38 @@ +## 0.14.1-rc5 +**`(fix):`** Code snippets are generated for file upload endpoints using `fs.readStream`. Previously, generation for these endpoints was being skipped. + +**`(fix):`** If integration tests are not enabled, simple jest tests with a `yarn test` script will be created. + +**`(feat):`** In an effort to make the generated code JSR compatible, the generator now +directly imports from files instead of using directory imports. + + +**`(feat):`** In an effort to make the generated code JSR compatible, we make sure all methods +are strongly typed with return signatures (in this case `_getAuthorizationHeader()`). + + +**`(fix):`** Generate code snippet for FileDownload endpoint + +**`(fix):`** Import for `node-fetch` in `Fetcher.ts` uses a dynamic import instead of `require` which +so that the SDK works in ESM environments (that are using local file output). When the +`outputEsm` config flag is turned on, the dynamic import will be turned into an ESM specific import. + + +**`(fix):`** The test job in `ci.yml` works even if you have not configured Fern to +generate integration tests. + +Without integration tests the test job will run `yarn && yarn test`. With the +integration tests, the test job will delegate to the fern cli `fern yarn test`. + + +**`(feat):`** Add `allowExtraFields` option to permit extra fields in the serialized request. + +```yaml +- name: fernapi/fern-typscript-node-sdk + version: 0.14.0-rc0 + ... + config: + allowExtraFields: true +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-19.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-19.mdx new file mode 100644 index 000000000..e58e23ef1 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-19.mdx @@ -0,0 +1,5 @@ +## 0.15.0-rc0 +**`(feat):`** Bump to v38 of IR and support server-sent events where the events are sent +with a `data: ` prefix and terminated with a new line. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-22.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-22.mdx new file mode 100644 index 000000000..8c961b8bf --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-22.mdx @@ -0,0 +1,8 @@ +## 0.15.1-rc0 +**`(feat):`** plain text responses are now supported in the TypeScript generator. + +## 0.15.0-rc1 +**`(fix):`** Minor fixes to SSE processing. In particular, stream terminal characters are now +respected like `[DONE]` and JSON parsed data is sent to the deserialize function. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-24.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-24.mdx new file mode 100644 index 000000000..2a5baa077 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-24.mdx @@ -0,0 +1,18 @@ +## 0.16.0-rc0 +**`(feat):`** The generator now registers snippet templates which can be used for dynamic SDK code snippet generation. + +## 0.15.1-rc1 +**`(feat):`** Earlier for inlined request exports, we were doing the following: + +```ts +export { MyRequest } from "./MyRequest"; +``` + +In an effort to make the generated code JSR compatible, the TS generator +will now append the `type` explicitly for request exports. + +```ts +export { type MyRequest } from "./MyRequest"; +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-25.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-25.mdx new file mode 100644 index 000000000..4109f351d --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-25.mdx @@ -0,0 +1,3 @@ +## 0.16.0-rc4 +**`(fix):`** fixes to styling of the SDK code snippet templates. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-04-30.mdx b/fern/products/sdks/overview/typescript/changelog/2024-04-30.mdx new file mode 100644 index 000000000..22306cba3 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-04-30.mdx @@ -0,0 +1,61 @@ +## 0.16.0-rc7 +**`(feat):`** The SDK generator now supports `@param` JSDoc comments for endpoint parameters. +The generator now arranges JSDoc in a few separate groups, one for each of `@param`, `@throws`, +and `@examples` like so: + +```ts + /** + * This endpoint checks the health of a resource. + * + * @param {string} id - A unique identifier. + * @param {Service.RequestOptions} requestOptions - Request-specific configuration. + * + * @throws {@link Acme.UnauthorizedRequest} + * @throws {@link Acme.BadRequest} + * + * @example + * await testSdk.health.service.check("id-2sdx82h") + */ + public async check(id: string, requestOptions?: Service.RequestOptions): Promise { + ... + } +``` + + +**`(feat):`** The generator will only include user-provided examples if they exist, and otherwise +only include a single generated example, like so: + +```ts + /** + * This endpoint checks the health of a resource. + * + * @example + * await testSdk.health.service.check("id-2sdx82h") + */ + public async check(id: string, requestOptions?: Service.RequestOptions): Promise { + ... + } +``` + + +**`(fix):`** The SDK generator now escapes path parameters that would previously create invalid +URLs (e.g. "\\example"). Method implementations will now have references to +`encodeURIComponent` like the following: + +```ts +const _response = await core.fetcher({ + url: urlJoin( + (await core.Supplier.get(this._options.environment)) ?? environments.AcmeEnvironment.Prod, + `/users/${encodeURIComponent(userId)}` + ), + ... +}); +``` + + +## 0.16.0-rc6 +**`(fix):`** snippet templates now move file upload parameters to unnamed args + +## 0.16.0-rc5 +**`(fix):`** remove duplicate quotation marks in snippet templates + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-06.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-06.mdx new file mode 100644 index 000000000..88911b27f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-06.mdx @@ -0,0 +1,29 @@ +## 0.17.1 +**`(fix):`** Multipart form data requests are now compatible across browser and Node.js runtimes. + +## 0.17.0 +**`(internal):`** Bump to v43 of IR which means that you will need `0.26.1` of the Fern CLI version. To bump your CLI version, please run `fern upgrade`. + +## 0.16.0-rc8 +**`(feat):`** The SDK generator now supports upload endpoints that specify an array of files like so: + +```ts +/** + * @param {File[] | fs.ReadStream[]} files + * @param {Acme.UploadFileRequest} request + * @param {Service.RequestOptions} requestOptions - Request-specific configuration. + */ +public async post( + files: File[] | fs.ReadStream[], + request: Acme.UploadFileRequest, + requestOptions?: Service.RequestOptions +): Promise { + const _request = new FormData(); + for (const _file of files) { + _request.append("files", _file); + } + ... +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-13.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-13.mdx new file mode 100644 index 000000000..cc13dbf07 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-13.mdx @@ -0,0 +1,6 @@ +## 0.18.0 +**`(feat):`** Add support for the OAuth client credentials flow. The new `OAuthTokenProvider` automatically +resolves the access token and refreshes it as needed. The resolved access token is then used as the +bearer token in all client requests. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-14.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-14.mdx new file mode 100644 index 000000000..fb172c961 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-14.mdx @@ -0,0 +1,16 @@ +## 0.18.1 +**`(fix):`** If OAuth environment variables are specified, the `clientId` and `clientSecret` parameters +are optional. + +```ts +export declare namespace Client { + interface Options { + ... + clientId?: core.Supplier; + clientSecret?: core.Supplier; + } + ... +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-15.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-15.mdx new file mode 100644 index 000000000..84e86407c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-15.mdx @@ -0,0 +1,6 @@ +## 0.18.2 +**`(fix):`** If OAuth is configured, the generated `getAuthorizationHeader` helper now treats the +bearer token as optional. This prevents us from sending the `Authorization` header +when retrieving the access token. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-17.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-17.mdx new file mode 100644 index 000000000..cc32a254d --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-17.mdx @@ -0,0 +1,3 @@ +## 0.18.3 +**`(internal):`** The generator now uses the latest FDR SDK. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-20.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-20.mdx new file mode 100644 index 000000000..e7fe6add0 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-20.mdx @@ -0,0 +1,60 @@ +## 0.19.0 +**`(feat):`** Add `inlineFileProperties` configuration to support generating file upload properties +as in-lined request properties (instead of positional parameters). Simply configure the following: + +```yaml +- name: fernapi/fern-typscript-node-sdk + version: 0.19.0 + ... + config: + inlineFileProperties: true +``` + +**Before**: + +```ts +/** + * @param {File | fs.ReadStream} file + * @param {File[] | fs.ReadStream[]} fileList + * @param {File | fs.ReadStream | undefined} maybeFile + * @param {File[] | fs.ReadStream[] | undefined} maybeFileList + * @param {Acme.MyRequest} request + * @param {Service.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.service.post(fs.createReadStream("/path/to/your/file"), [fs.createReadStream("/path/to/your/file")], fs.createReadStream("/path/to/your/file"), [fs.createReadStream("/path/to/your/file")], {}) + */ +public async post( + file: File | fs.ReadStream, + fileList: File[] | fs.ReadStream[], + maybeFile: File | fs.ReadStream | undefined, + maybeFileList: File[] | fs.ReadStream[] | undefined, + request: Acme.MyRequest, + requestOptions?: Acme.RequestOptions +): Promise { + ... +} +``` + +**After**: + +```ts +/** + * @param {Acme.MyRequest} request + * @param {Service.RequestOptions} requestOptions - Request-specific configuration. + * + * @example + * await client.service.post({ + * file: fs.createReadStream("/path/to/your/file"), + * fileList: [fs.createReadStream("/path/to/your/file")] + * }) + */ +public async post( + request: Acme.MyRequest, + requestOptions?: Service.RequestOptions +): Promise { + ... +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-24.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-24.mdx new file mode 100644 index 000000000..a3cb55550 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-24.mdx @@ -0,0 +1,16 @@ +## 0.20.0-rc1 +**`(fix):`** Pass `abortSignal` to `Stream` for server-sent-events and JSON streams so that the user can opt out and break from a stream. + + +## 0.20.0-rc0 +**`(feat):`** Add `abortSignal` to `RequestOptions`. SDK consumers can now specify an +an arbitrary abort signal that can interrupt the API call. + +```ts +const controller = new AbortController(); +client.endpoint.call(..., { + abortSignal: controller.signal, +}) +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-29.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-29.mdx new file mode 100644 index 000000000..4b22d0119 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-29.mdx @@ -0,0 +1,25 @@ +## 0.20.4 +**`(fix):`** Functionality to generate integration tests against a mock server has been disabled. + +## 0.20.2 +**`(fix):`** The OAuth token provider supports SDKs that enable the `neverThrowErrors` setting. +If the OAuth token provider fails to retrieve and/or refresh an access token, an error +will _not_ be thrown. Instead, the original access token will be used and the user will be +able to act upon an error available on the response. For example, + +```ts +const response = await client.user.get(...) +if (!response.ok) { + // Handle the response.error ... +} +``` + + +## 0.20.1 +**`(fix):`** Remove node:stream imports for Webpack and Next.js compatibility + +**`(fix):`** Fix URL encoded body encoding in fetcher + +## 0.20.1-rc0 +**`(fix):`** URL encoded bodies are now appropriately encoded within the fetcher. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-30.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-30.mdx new file mode 100644 index 000000000..8695478cd --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-30.mdx @@ -0,0 +1,13 @@ +## 0.20.5 +**`(feat):`** Support setting `extraPeerDependencies` and `extraPeerDependenciesMeta` as +configuration arguments. For example: + +```yaml +extraPeerDependencies: + "openai": "^4.47.1" +extraPeerDependenciesMeta: + "openai": + optional: true +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-05-31.mdx b/fern/products/sdks/overview/typescript/changelog/2024-05-31.mdx new file mode 100644 index 000000000..84c4d732c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-05-31.mdx @@ -0,0 +1,9 @@ +## 0.20.7 +**`(fix):`** Simplify the error handling introduced in `0.20.6` so that it more easily handles endpoints that include structured errors. + +## 0.20.6 +**`(fix):`** This updates the behavior of the failure condition introduced in `0.20.2`; the SDK +now throws an error whenever we fail to refresh an access token even if `neverThrowErrors` +is set. We treat this failure as a systematic exception, so it's OK to throw in this case. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-02.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-02.mdx new file mode 100644 index 000000000..4a4230aac --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-02.mdx @@ -0,0 +1,6 @@ +## 0.20.9 +**`(fix):`** TypeScript generator outputs code snippets that have `example-identifier` embedded. + +## 0.20.8 +**`(feat):`** TypeScript projects were skipping added peer dependencies in certain cases, now those are fixed. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-05.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-05.mdx new file mode 100644 index 000000000..3c86aaebe --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-05.mdx @@ -0,0 +1,8 @@ +## 0.21.1 +**`(feat):`** Detect `workerd` (Cloudflare) environments in `Runtime.ts`. The `Stream` class which is used for Server-Sent Events now prefers `TextDecoder` if it is present in the environment, to work in Cloudflare environments. + +## 0.21.0 +**`(feat):`** The generator now supports `bigint` types. + +**`(internal):`** Bump to IRv46. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-07.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-07.mdx new file mode 100644 index 000000000..67da745ff --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-07.mdx @@ -0,0 +1,9 @@ +## 0.23.0-rc0 +**`(fix):`** Union snippet templates are fixed in 2 ways: +1. The templates do not have a leading single quote (a typo from before) +2. The templates now inline union properties (in certain cases) + + +## 0.22.0 +**`(feat):`** Add support for higher quality `README.md` generation. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-11.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-11.mdx new file mode 100644 index 000000000..0880b8330 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-11.mdx @@ -0,0 +1,13 @@ +## 0.23.0-rc1 +**`(fix):`** Introduce a custom configuration for arbitrary package json field. Now you can specify +arbitrary key, value pairs that you want to be merged in the generated `package.json`. + +```yml +config: + packageJson: + dependencies: + my-dep: "2.0.0" + bin: "./index.js" +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-12.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-12.mdx new file mode 100644 index 000000000..a09ce9283 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-12.mdx @@ -0,0 +1,3 @@ +## 0.23.0 +**`(fix):`** The latest version of the `generator-cli` (used to generate `README.md` files) is always installed. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-13.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-13.mdx new file mode 100644 index 000000000..d65f5be27 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-13.mdx @@ -0,0 +1,3 @@ +## 0.23.1 +**`(fix):`** Undiscriminated unions used as map keys examples no longer return an error. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-14.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-14.mdx new file mode 100644 index 000000000..e15039511 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-14.mdx @@ -0,0 +1,7 @@ +## 0.23.2 +**`(fix):`** Client constructor snippets now include an `environment` property whenever it's required. + +**`(fix):`** The import paths included in the `README.md` exclusively use double quotes. + +**`(fix):`** When an NPM package name is not specified, the generated `README.md` will default to using the namespace export. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-17.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-17.mdx new file mode 100644 index 000000000..e9e2b62ea --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-17.mdx @@ -0,0 +1,16 @@ +## 0.23.3 +**`(fix):`** The NPM publish job is _not_ generated if the token environment variable is not specified. + +**`(feat):`** The snippets now use the `client` variable name like so: + +```ts +import { AcmeClient } from "acme"; + +const client = new AcmeClient({ apiKey: "YOUR_API_KEY" }); +await client.users.create({ + firstName: "john", + lastName: "doe" +}); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-18.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-18.mdx new file mode 100644 index 000000000..50c0df597 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-18.mdx @@ -0,0 +1,9 @@ +## 0.24.3 +**`(fix):`** The generator only adds a publish step in github actions if credentials are specified. + +## 0.24.0 +**`(feat):`** Add dynamic client instantiation snippets + +## 0.24.0-rc0 +**`(feat):`** Dynamic client instantiation snippets are now generated. Note this only affects enterprise users that are using Fern's Snippets API. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-19.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-19.mdx new file mode 100644 index 000000000..3ac424824 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-19.mdx @@ -0,0 +1,36 @@ +## 0.25.0 +**`(fix):`** The generator now generates snippets for streaming endpoints. There is also a fix where literals are excluded from inlined requests. + +## 0.25.0-rc0 +**`(feat):`** The generator now merges the user's original `README.md` file (if any). + +## 0.24.4 +**`(fix):`** APIs that specify a default environment no longer include an unused environment import in their generated snippets. + +## 0.24.2 +**`(feat):`** Remove the unnecessary client call from the request/response README.md section. + +**`(fix):`** The generated README.md snippets now correctly referenced nested methods. For example, +`client.users.create` (instead of `client.create`) in the following: + +```ts +import { AcmeClient } from "acme"; + +const client = new AcmeClient({ apiKey: "YOUR_API_KEY" }); +await client.users.create({ + firstName: "john", + lastName: "doe" +}); +``` + + +## 0.24.1 +**`(fix):`** Dynamic snippets now support importing the client directly from the package. + +```typescript +import { MyClient } from "@org/sdk"; + +const client = new MyClient({ ... }); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-20.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-20.mdx new file mode 100644 index 000000000..5b6c5fa86 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-20.mdx @@ -0,0 +1,6 @@ +## 0.25.2 +**`(fix):`** The generator now removes `fs`, `path`, and `os` dependencies from the browser runtime. + +## 0.25.1 +**`(fix):`** The generator now removes `fs`, `path`, and `os` dependencies from the browser runtime. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-26.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-26.mdx new file mode 100644 index 000000000..00b33fbac --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-26.mdx @@ -0,0 +1,3 @@ +## 0.25.3 +**`(internal):`** The generator is now upgraded to `v46.2.0` of the IR. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-27.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-27.mdx new file mode 100644 index 000000000..c619fb414 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-27.mdx @@ -0,0 +1,32 @@ +## 0.26.0-rc2 +**`(feat):`** `RequestOptions` now supports overriding global headers like authentication and version. + + +## 0.26.0-rc1 +**`(fix):`** The generator was skipping auto pagination for item arrays that were optional. Now, those are safely handled as well. + +## 0.26.0-rc0 +**`(feat):`** The TypeScript generator now supports cursor-based auto pagination. With auto pagination, a user can simply iterate over the results automatically: + +```ts +for (const user of client.users.list()) { + consoler.log(user); +} +``` + +Users can also paginate over data manually + +```ts +const page = client.users.list(); +for (const user of page.data) { + consoler.log(user); +} + +// Helper methods for manually paginating: +while (page.hasNextPage()) { + page = page.getNextPage(); + // ... +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-06-30.mdx b/fern/products/sdks/overview/typescript/changelog/2024-06-30.mdx new file mode 100644 index 000000000..0ac5ebc5c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-06-30.mdx @@ -0,0 +1,4 @@ +## 0.26.0-rc3 +**`(fix):`** The typescript generator now returns all `FormData` headers and Fetcher no longer stringifies stream.Readable type. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-08.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-08.mdx new file mode 100644 index 000000000..763345017 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-08.mdx @@ -0,0 +1,29 @@ +## 0.27.2 +**`(fix):`** The generated readme now moves the sections for `AbortController`, `Runtime Compatibility` and `Custom Fetcher` under the Advanced section in the generated README. + +## 0.27.1 +**`(feat):`** Support JSR publishing. If you would like your SDK to be published to JSR, there is now a configuration option called `publishToJsr: true`. When enabled, the generator will +generate a `jsr.json` as well as a GitHub workflow to publish to JSR. + +```yaml +- name: fernapi/fern-typescript-sdk + version: 0.27.1 + config: + publishToJsr: true +``` + + +## 0.27.0 +**`(fix):`** Boolean literal headers can now be overridden via `RequestOptions`. + +**`(feat):`** The generated `.github/workflows/ci.yml` file now supports NPM publishing with alpha/beta dist tags. If the selected version contains the `alpha` or `beta` substring, +the associated dist tag will be added in the `npm publish` command like the following: + +```sh +# Version 1.0.0-beta +npm publish --tag beta +``` + +For more on NPM dist tags, see https://docs.npmjs.com/adding-dist-tags-to-packages + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-09.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-09.mdx new file mode 100644 index 000000000..0c78f01c1 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-09.mdx @@ -0,0 +1,16 @@ +## 0.29.0 +**`(internal):`** Upgrade to IRv48. + +**`(feat):`** Add support for pagination endpoints that require request body properties. + +**`(feat):`** Add support for pagination with an offset step. This is useful for endpoints that page based on the element index rather than a page index (i.e. the 100th element vs. the 10th page). + +This feature shares the same UX as both the `offset` and `cursor` pagination variants. + + +## 0.29.0-rc0 +**`(fix):`** All serializers in the generated SDK are now synchronous. This makes the serializers easier to use and improves the performance as well. + +## 0.28.0-rc0 +**`(feat):`** Add support for offset pagination, which uses the same pagination API introduced in `0.26.0-rc0`. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-10.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-10.mdx new file mode 100644 index 000000000..0aaa6854c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-10.mdx @@ -0,0 +1,24 @@ +## 0.29.2 +**`(fix):`** Fix serialization of types with circular references + +## 0.29.1 +**`(fix):`** Pagination endpoints that define nested offset/cursor properties are now functional. +A new `setObjectProperty` helper is used to dynamically set the property, which is inspired +by Lodash's `set` function (https://lodash.com/docs/4.17.15#set). + +The generated code now looks like the following: + +```typescript +let _offset = request?.pagination?.page != null ? request?.pagination?.page : 1; +return new core.Pageable({ + response: await list(request), + hasNextPage: (response) => (response?.data ?? []).length > 0, + getItems: (response) => response?.data ?? [], + loadPage: (_response) => { + _offset += 1; + return list(core.setObjectProperty(request, "pagination.page", _offset)); + } +}); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-11.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-11.mdx new file mode 100644 index 000000000..4c37edb8f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-11.mdx @@ -0,0 +1,3 @@ +## 0.30.0 +**`(feat):`** Client-level `Options` now supports overriding global headers like version. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-12.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-12.mdx new file mode 100644 index 000000000..391a4317a --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-12.mdx @@ -0,0 +1,44 @@ +## 0.31.0 +**`(feat):`** Add `omitUndefined` generator option. This is enabled with the following config: + +```yaml +groups: + generators: + - name: fernapi/fern-typscript-node-sdk + version: 0.31.0 + ... + config: + omitUndefined: true +``` + +When enabled, any property set to an explicit `undefined` is _not_ included +in the serialized result. For example, + +```typescript +const request: Acme.CreateUserRequest = { + firstName: "John", + lastName: "Doe", + email: undefined +}; +``` + +By default, explicit `undefined` values are serialized as `null` like so: + +```json +{ + "firstName": "John", + "lastName": "Doe", + "email": null +} +``` + +When `omitUndefined` is enabled, the JSON object is instead serialized as: + +```json +{ + "firstName": "John", + "lastName": "Doe" +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-15.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-15.mdx new file mode 100644 index 000000000..f851238c6 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-15.mdx @@ -0,0 +1,7 @@ +## 0.32.0 +**`(feat):`** The `reference.md` is now generated for every SDK. + +**`(feat):`** The `reference.md` is now generated by the `generator-cli`. + +**`(fix):`** The `reference.md` includes a single section for the _first_ example specified on the endpoint. Previously, a separate section was included for _every_ example. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-16.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-16.mdx new file mode 100644 index 000000000..fad9a8c3a --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-16.mdx @@ -0,0 +1,65 @@ +## 0.36.1 +**`(fix):`** Now, there are generated unit tests for the `auth` and `fetcher` core directory which makes sure that Fern's fetcher and authorization helpers work as expected! + +## 0.36.0 +**`(fix):`** Now, there are generated unit tests for the `schemas` core directory which makes sure that Fern's request + response validation will work as expected! + +## 0.35.0 +**`(fix):`** Support Multipart Form uploads where `fs.createReadStream` is passed. This requires coercing the stream into a `File`. + +## 0.34.0 +**`(internal):`** Upgrade to IRv50. + +**`(feat):`** Add support for generating an API version scheme in `version.ts`. +Consider the following `api.yml` configuration: + +```yaml +version: + header: X-API-Version + default: "1.0.0" + values: + - "1.0.0-alpha" + - "1.0.0-beta" + - "1.0.0" +``` + +The following `version.ts` file is generated: + +```typescript +/** +* This file was auto-generated by Fern from our API Definition. +*/ + +/** The version of the API, sent as the X-API-Version header. */ +export type AcmeVersion = "1.0.0" | "2.0.0" | "latest"; +``` + +If a default value is specified, it is set on every request but can be overridden +in either the client-level `Options` or call-specific `RequestOptions`. If a default +value is _not_ specified, the value of the header is required on the generated `Options`. + +An example call is shown below: + +```typescript +import { AcmeClient } from "acme"; + +const client = new AcmeClient({ apiKey: "YOUR_API_KEY", xApiVersion: "2.0.0" }); +await client.users.create({ + firstName: "john", + lastName: "doe" +}); +``` + + +## 0.33.0 +**`(fix):`** This release comes with numerous improvements to multipart uploads: + +1. `Fetcher.ts` no longer depends on form-data and formdata-node which reduces + the size of the SDK for all consumers that are not leveraging multipart form + data uploads. +2. The SDK now accepts `fs.ReadStream`, `Blob` and `File` as inputs and handles + parsing them appropriately. +3. By accepting a `Blob` as a file parameter, the SDK now supports sending the + filename when making a request. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-26.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-26.mdx new file mode 100644 index 000000000..4df0f785e --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-26.mdx @@ -0,0 +1,18 @@ +## 0.36.4 +**`(fix):`** Now, import paths are correctly added to stream wrapper tests. + +## 0.36.3 +**`(fix):`** Support starting the stream on `StreamWrapper.pipe(...)` for shorter syntax when dealing with `node:stream` primitives. + +## 0.36.2 +**`(fix):`** This release comes with numerous improvements to streaming responses: + +1. Introduces new stream wrapper polyfills that implement the ability to stream to more streams, per environment. +2. For `Node 18+`, stream responses can now be piped to `WritableStream`. They can also be streamed to `stream.Writable`, as possible before. +3. For `< Node 18`, stream responses can be piped to `stream.Writeable`, as before. +4. For `Browser` environments, stream responses can be piped to `WritableStream`. +5. For `Cloudflare Workers`, stream responses can be piped to `WritableStream`. + + +**`(fix):`** Now, there are generated unit tests for the `fetcher/stream-wrappers` core directory which makes sure that Fern's stream wrapping from responses work as expected! + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-29.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-29.mdx new file mode 100644 index 000000000..2e746e65f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-29.mdx @@ -0,0 +1,17 @@ +## 0.37.0-rc0 +**`(feat):`** The business plan Typescript SDK will now generate wire tests if the feature flag in the configuration is turned on. + +``` +- name: fernapi/fern-typescript-sdk + version: 0.37.0-rc0 + config: + generateWireTests: true +``` + + +## 0.36.6 +**`(fix):`** Now import paths are correctly added to getResponseBody tests. CI checks also added. + +## 0.36.5 +**`(fix):`** Now, server sent events are treated differently as streaming responses, to ensure the correct wrapping happens. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-07-31.mdx b/fern/products/sdks/overview/typescript/changelog/2024-07-31.mdx new file mode 100644 index 000000000..924e781a8 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-07-31.mdx @@ -0,0 +1,5 @@ +## 0.38.0-rc0 +**`(internal):`** Upgrade to IRv53. + +**`(chore):`** The generator now creates snippet templates for undiscriminated unions. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-01.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-01.mdx new file mode 100644 index 000000000..d3163a518 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-01.mdx @@ -0,0 +1,15 @@ +## 0.38.2 +**`(fix):`** Refactors the `noScripts` feature flag to make sure that no `yarn install` commands can be accidentally triggered. + +## 0.38.1 +**`(feat):`** A feature flag called `noScripts` has been introduced to prevent the generator from running any scripts such as `yarn format` or `yarn install`. If any of the scripts +cause errors, toggling this option will allow you to receive the generated code. + +``` +- name: fernapi/fern-typescript-sdk + version: 0.38.1 + config: + noScripts: true +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-02.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-02.mdx new file mode 100644 index 000000000..effb0cd20 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-02.mdx @@ -0,0 +1,3 @@ +## 0.38.3 +**`(fix):`** Adds async iterable to StreamWrapper implementation for easier use with downstream dependencies. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-04.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-04.mdx new file mode 100644 index 000000000..ca8c15aa2 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-04.mdx @@ -0,0 +1,5 @@ +## 0.38.4 +**`(fix):`** Literal templates are generated if they are union members + +**`(fix):`** Snippet templates no longer try to inline objects within containers + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-07.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-07.mdx new file mode 100644 index 000000000..9eff6355a --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-07.mdx @@ -0,0 +1,14 @@ +## 0.39.1 +**`(feat):`** The SDK now supports looking directly at a `hasNextPage` property for offset pagination if configured. +Previously the SDK would look if the number of items were empty, but this failed in certain edge cases. + + +## 0.38.6 +**`(feat):`** The SDK generator now sends a `User-Agent` header on each request that is set to +`/`. For example if your package is called `imdb` and is versioned `0.1.0`, then +the user agent header will be `imdb/0.1.0`. + + +## 0.38.5 +**`(fix):`** Addressed fetcher unit test flakiness by using a mock fetcher + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-16.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-16.mdx new file mode 100644 index 000000000..25395c49c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-16.mdx @@ -0,0 +1,12 @@ +## 0.39.3 +**`(fix):`** Multipart form data unit tests only get generated if the SDK has multipart form uploads. + +## 0.39.2 +**`(fix):`** Allows filenames to be passed from underlying File objects in Node 18+ and browsers +Users can now supply files like so, using a simple multipart upload API as an example: +```typescript +client.file.upload(new File([...blobParts], 'filename.ext'), ...) +``` +`filename.ext` will be encoded into the upload. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-20.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-20.mdx new file mode 100644 index 000000000..bf56c3750 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-20.mdx @@ -0,0 +1,9 @@ +## 0.39.5 +**`(fix):`** If `noSerdeLayer` is enabled, then the generated TypeScript SDK snippets and wire tests +will not use `Date` objects but instead use strings. Without this fix, the generated +wire tests would result in failures. + + +## 0.39.4 +**`(fix):`** Ensure that environment files don't generate, unless there is a valid environment available. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-08-27.mdx b/fern/products/sdks/overview/typescript/changelog/2024-08-27.mdx new file mode 100644 index 000000000..7cfb1aa49 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-08-27.mdx @@ -0,0 +1,10 @@ +## 0.39.7 +**`(chore):`** The SDK now produces a `version.ts` file where we export a constant called `SDK_VERSION`. +This constant can be used by different utilities to dynamically import in the version (for example, if someone wants to customize the user agent). + + +## 0.39.6 +**`(fix):`** Browser clients can now import streams, via `readable-streams` polyfill. Additionally adds a +webpack unit test to verify that the core utilities can be compiled. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-09-11.mdx b/fern/products/sdks/overview/typescript/changelog/2024-09-11.mdx new file mode 100644 index 000000000..3c0bcc380 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-09-11.mdx @@ -0,0 +1,21 @@ +## 0.39.8 +**`(fix):`** The generated enum examples now reference the value of the enum directly instead +of using the enum itself. + +### Before + +```ts +{ + "genre": Imdb.Genre.Humor, +} +``` + +### After + +```ts +{ + "genre": "humor" +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-09-12.mdx b/fern/products/sdks/overview/typescript/changelog/2024-09-12.mdx new file mode 100644 index 000000000..d1cc7e7f3 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-09-12.mdx @@ -0,0 +1,41 @@ +## 0.40.4 +**`(fix):`** Upgrades dependency `stream-json` which improves the performance when reading large API specs. This version will improve your `fern generate` performance. + +## 0.40.3 +**`(fix):`** If the serde layer is enabled, then all the serializers are exported under the namespace `serializers`. + +```ts +import { serializers } from "@plantstore/sdk"; + +export function main(): void { + // serialize to json + + const json = serializers.Plant.toJson({ + name: "fern" + }); + + const parsed = serializers.Plant.parseOrThrow(`{ "name": "fern" }`); +} +``` + + +## 0.40.2 +**`(fix):`** The generated SDK now handles reading IR JSONs that are larger than 500MB. In order to to this, the function `streamObjectFromFile` is used instead of `JSON.parse`. + +## 0.40.1 +**`(fix):`** The generated snippets now inline referenced request objects given they are not named, they need to be inlined. + +## 0.40.0 +**`(feat):`** A new configuration flag has now been added that will automatically generate +`BigInt` for `long` and `bigint` primitive types. To turn this flag on: + +```yml +groups: + ts-sdk: + name: fernapi/fern-typescript-sdk + version: 0.40.0 + config: + useBigInt: true +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-09-18.mdx b/fern/products/sdks/overview/typescript/changelog/2024-09-18.mdx new file mode 100644 index 000000000..c9a07063f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-09-18.mdx @@ -0,0 +1,6 @@ +## 0.40.6 +**`(fix):`** The TypeScript SDK now supports specifying a custom contentType if one is specified. + +## 0.40.5 +**`(fix):`** The snippet templates for file upload are now accurate and also respect the feature flag `inlineFileProperties`. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-09-28.mdx b/fern/products/sdks/overview/typescript/changelog/2024-09-28.mdx new file mode 100644 index 000000000..35a154535 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-09-28.mdx @@ -0,0 +1,13 @@ +## 0.40.8 +**`(fix):`** File array uploads now call `request.appendFile` instead of `request.append` which was causing form data to be in a corrupted state. + +## 0.40.7 +**`(fix):`** The generated README will now have a section that links to the generated SDK Reference (in `reference.md`). + +```md +## Reference + +A full reference for this library can be found [here](./reference.md). +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-10-08.mdx b/fern/products/sdks/overview/typescript/changelog/2024-10-08.mdx new file mode 100644 index 000000000..0c5074c90 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-10-08.mdx @@ -0,0 +1,12 @@ +## 0.41.0 +**`(feat):`** Add a variable jitter to the exponential backoff and retry. + +## 0.41.0-rc2 +**`(feat):`** Generated READMEs now include improved usage snippets for pagination and streaming endpoints. + +## 0.41.0-rc1 +**`(fix):`** Fixes a broken unit test introduced in 0.41.0-rc0. + +## 0.41.0-rc0 +**`(feat):`** The generated SDK now supports bytes (`application/octet-stream`) requests. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-02.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-02.mdx new file mode 100644 index 000000000..71ebc85bb --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-02.mdx @@ -0,0 +1,3 @@ +## 0.41.1 +**`(fix):`** Remove dev dependency on `jest-fetch-mock`. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-15.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-15.mdx new file mode 100644 index 000000000..30952a2b3 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-15.mdx @@ -0,0 +1,10 @@ +## 0.42.0 +**`(feat):`** Added support for `.asRaw()` which allows users to access raw response data including headers. For example: + +```ts +const response = await client.someEndpoint().asRaw(); +console.log(response.headers["X-My-Header"]); +console.log(response.body); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-18.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-18.mdx new file mode 100644 index 000000000..f5d174d22 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-18.mdx @@ -0,0 +1,3 @@ +## 0.41.2 +**`(fix):`** Actually remove `jest-fetch-mock` from package.json. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-20.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-20.mdx new file mode 100644 index 000000000..42307f446 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-20.mdx @@ -0,0 +1,12 @@ +## 0.42.1 +**`(feat):`** Added support for passing additional headers in request options. For example: + +```ts +const response = await client.someEndpoint(..., { + headers: { + 'X-Custom-Header': 'custom value' + } +}); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-21.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-21.mdx new file mode 100644 index 000000000..144f7147b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-21.mdx @@ -0,0 +1,22 @@ +## 0.42.4 +**`(fix):`** Improve `GeneratedTimeoutSdkError` error to include endpoint name in message. + +## 0.42.2 +**`(feat):`** Added documentation for pagination in the README. The snippet below will +now show up on generated READMEs. + +```typescript +// Iterate through all items +const response = await client.users.list(); +for await (const item of response) { + console.log(item); +} + +// Or manually paginate +let page = await client.users.list(); +while (page.hasNextPage()) { + page = await page.getNextPage(); +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-22.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-22.mdx new file mode 100644 index 000000000..8d9813c38 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-22.mdx @@ -0,0 +1,3 @@ +## 0.42.3 +**`(fix):`** Fixed issue with snippets used for pagination endpoints. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-11-23.mdx b/fern/products/sdks/overview/typescript/changelog/2024-11-23.mdx new file mode 100644 index 000000000..607d608d2 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-11-23.mdx @@ -0,0 +1,6 @@ +## 0.42.6 +**`(fix):`** Remove the generated `APIPromise` since it is not compatible on certain node versions. + +## 0.42.5 +**`(fix):`** Remove extraneous import in pagination snippets. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-03.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-03.mdx new file mode 100644 index 000000000..3cb46aa1b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-03.mdx @@ -0,0 +1,12 @@ +## 0.42.7 +**`(feat):`** Support `additionalProperties` in OpenAPI or `extra-properties` in the Fern Defnition. Now +an object that has additionalProperties marked as true will generate the following interface: + +```ts +interface User { + propertyOne: string; + [key: string]: any; +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-11.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-11.mdx new file mode 100644 index 000000000..87e4ffd6c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-11.mdx @@ -0,0 +1,61 @@ +## 0.43.1 +**`(fix):`** When `noSerdeLayer` is enabled, streaming endpoints were failing to compile because they assumed that the serialization layer existed. This is now fixed. + +## 0.43.0 +**`(feat):`** Generate inline types for inline schemas by setting `enableInlineTypes` to `true` in the generator config. +When enabled, the inline schemas will be generated as nested types in TypeScript. +This results in cleaner type names and a more intuitive developer experience. + +Before: + +```ts +// MyRootType.ts +import * as MySdk from "..."; + +export interface MyRootType { + foo: MySdk.MyRootTypeFoo; +} + +// MyRootTypeFoo.ts +import * as MySdk from "..."; + +export interface MyRootTypeFoo { + bar: MySdk.MyRootTypeFooBar; +} + +// MyRootTypeFooBar.ts +import * as MySdk from "..."; + +export interface MyRootTypeFooBar {} +``` + +After: + +```ts +// MyRootType.ts +import * as MySdk from "..."; + +export interface MyRootType { + foo: MyRootType.Foo; +} + +export namespace MyRootType { + export interface Foo { + bar: Foo.Bar; + } + + export namespace Foo { + export interface Bar {} + } +} +``` + +Now users can get the deep nested `Bar` type as follows: + +```ts +import { MyRootType } from MySdk; + +const bar: MyRootType.Foo.Bar = {}; +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-13.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-13.mdx new file mode 100644 index 000000000..b48b09128 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-13.mdx @@ -0,0 +1,18 @@ +## 0.44.0 +**`(feat):`** Inline path parameters into request types by setting `inlinePathParameters` to `true` in the generator config. + +Here's an example of how users would use the same endpoint method without and with `inlinePathParameters` set to `true`. + +Without `inlinePathParameters`: + +```ts +await service.getFoo("pathParamValue", { id: "SOME_ID" }); +``` + +With `inlinePathParameters`: + +```ts +await service.getFoo({ pathParamName: "pathParamValue", id: "SOME_ID" }); +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-16.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-16.mdx new file mode 100644 index 000000000..c96d94a8d --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-16.mdx @@ -0,0 +1,3 @@ +## 0.44.1 +**`(fix):`** When there is an environment variable set, you do not need to pass in any parameters to the client constructor. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-17.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-17.mdx new file mode 100644 index 000000000..5a7f0b188 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-17.mdx @@ -0,0 +1,3 @@ +## 0.44.2 +**`(fix):`** Inline path parameters will use their original name when `retainOriginalName` or `noSerdeLayer` is enabled. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-18.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-18.mdx new file mode 100644 index 000000000..4d943f907 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-18.mdx @@ -0,0 +1,3 @@ +## 0.44.3 +**`(fix):`** Fix a bug where client would send request wrapper instead of the body of the request wrapper, when the request has inline path parameters and a body property. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-20.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-20.mdx new file mode 100644 index 000000000..f5e547a7f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-20.mdx @@ -0,0 +1,3 @@ +## 0.44.4 +**`(feat):`** Use specified defaults for pagination offset parameters during SDK generation. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-23.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-23.mdx new file mode 100644 index 000000000..c618b27bf --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-23.mdx @@ -0,0 +1,3 @@ +## 0.44.5 +**`(fix):`** Fix a bug where we attempt to parse an empty terminator when receiving streaming JSON responses. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-26.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-26.mdx new file mode 100644 index 000000000..c6c487fb4 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-26.mdx @@ -0,0 +1,3 @@ +## 0.45.0 +**`(feat):`** Update dependencies of the generated TS SDK and Express generator. TypeScript has been updated to 5.7.2 which is a major version upgrade from 4.6.4. + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-27.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-27.mdx new file mode 100644 index 000000000..9fbd042b6 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-27.mdx @@ -0,0 +1,6 @@ +## 0.45.1 +**`(fix):`** Export everything inside of TypeScript namespaces that used to be ambient. + +For the `enableInlineTypes` feature, some namespaces were no longer declared (ambient), and types and interfaces inside the namespace would no longer be automatically exported without the `export` keyword. This fix exports everything that's inside these namespaces and also declared namespaces for good measure (in case they are not declared in the future). + + diff --git a/fern/products/sdks/overview/typescript/changelog/2024-12-31.mdx b/fern/products/sdks/overview/typescript/changelog/2024-12-31.mdx new file mode 100644 index 000000000..966197241 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2024-12-31.mdx @@ -0,0 +1,3 @@ +## 0.45.2 +**`(fix):`** TS generated snippets now respect proper parameter casing when noSerdeLayer is enabled. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-06.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-06.mdx new file mode 100644 index 000000000..29641fb25 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-06.mdx @@ -0,0 +1,17 @@ +## 0.46.0 +**`(feat):`** SDKs are now built and exported in both CommonJS (legacy) and ESModule format. + +**`(feat):`** Export `serialization` code from root package export. +```ts +import { serialization } from `@packageName`; +``` + +The serialization code is also exported as `@packageName/serialization`. +```ts +import * as serialization from `@packageName/serialization`; +``` + + +**`(feat):`** `package.json` itself is exported in `package.json` to allow consumers to easily read metadata about the package they are consuming. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-08.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-08.mdx new file mode 100644 index 000000000..482c05a56 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-08.mdx @@ -0,0 +1,3 @@ +## 0.46.1 +**`(fix):`** ESModule output is fixed to be compatible with Node.js ESM loading. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-09.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-09.mdx new file mode 100644 index 000000000..3f733b788 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-09.mdx @@ -0,0 +1,22 @@ +## 0.46.7 +**`(fix):`** Simplify runtime detection to reduce the chance of using an unsupported API like `process.` Detect Edge Runtime by Vercel. + +## 0.46.6 +**`(fix):`** Update `@types/node` to `18+`, required for the generated `Node18UniversalStreamWrapper` test. + +## 0.46.5 +**`(fix):`** Fix the webpack test to work with .js/.jsx extensions in TypeScript + +**`(fix):`** Only map .js modules in Jest, not .json files. + +## 0.46.4 +**`(fix):`** Fix packageJson custom configuration & package.json types field. + +## 0.46.3 +**`(fix):`** Revert to using legacy exports by default. + +## 0.46.2 +**`(fix):`** Fix Jest to work with files imported using `.js` extension. + +**`(fix):`** Make sure Jest loads Jest configuration regardless of package.json type. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-13.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-13.mdx new file mode 100644 index 000000000..ecc811c47 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-13.mdx @@ -0,0 +1,6 @@ +## 0.46.9 +**`(fix):`** Expose `baseUrl` as a default Client constructor option and construct URL correctly. + +## 0.46.8 +**`(fix):`** Generate the `version.ts` file correctly + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-14.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-14.mdx new file mode 100644 index 000000000..e45035080 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-14.mdx @@ -0,0 +1,51 @@ +## 0.47.0 +**`(feat):`** Add support for `nullable` properties. Users can now specify explicit `null` values +for types that specify `nullable` properties like so: + +```typescript +await client.users.update({ username: "john.doe", metadata: null }); +``` + + +## 0.46.11 +**`(fix):`** Don't double check whether an optional string literal alias (see example below) is a string when using serializer to build query string parameters. + +```yml +types: + LiteralAliasExample: literal<"MyLiteralValue"> + +service: + endpoints: + foo: + path: /bar + method: POST + request: + name: FooBarRequest + query-parameters: + optional_alias_literal: optional +``` + +```ts +// before +if (optionalAliasLiteral != null) { + _queryParams["optional_alias_literal"] = typeof serializers.LiteralAliasExample.jsonOrThrow(optionalAliasLiteral, { + unrecognizedObjectKeys: "strip", + }) === "string" ? serializers.LiteralAliasExample.jsonOrThrow(optionalAliasLiteral, { + unrecognizedObjectKeys: "strip", + }) : JSON.stringify(serializers.LiteralAliasExample.jsonOrThrow(optionalAliasLiteral, { + unrecognizedObjectKeys: "strip", + })); +} + +// after +if (optionalAliasLiteral != null) { + _queryParams["optional_alias_literal"] = serializers.LiteralAliasExample.jsonOrThrow(optionalAliasLiteral, { + unrecognizedObjectKeys: "strip", + }); +} +``` + + +## 0.46.10 +**`(fix):`** Use serialization layer to convert types to JSON strings when enabled. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-15.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-15.mdx new file mode 100644 index 000000000..537268cc4 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-15.mdx @@ -0,0 +1,12 @@ +## 0.47.1 +**`(fix):`** Resolves an issue where nullable query parameters were not null-safe in their method invocations. The +generated code now appropriately guard against `null` values like so: + +```typescript +const _queryParams: Record< ... >; +if (value !== undefined) { + _queryParams["value"] = value?.toString() ?? null; +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-16.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-16.mdx new file mode 100644 index 000000000..a3766d004 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-16.mdx @@ -0,0 +1,58 @@ +## 0.48.3 +**`(fix):`** The SDK now supports reading the basic auth username and password values from environment variables. + +## 0.48.2 +**`(fix):`** This updates the retrier logic to stop retrying on HTTP conflict (409). This was an oversight that we've meant to remove for a while (similar to other Fern SDKs). + +## 0.48.1 +**`(fix):`** Record types with `null` values are now correctly serialized. + +## 0.48.0 +**`(feat):`** When `useBigInt` SDK configuration is set to `true`, a customized JSON serializer & deserializer is used that will preserve the precision of `bigint`'s, as opposed to the native `JSON.stringify` and `JSON.parse` function which converts `bigint`'s to `number`'s losing precision. + +When combining `useBigInt` with our serialization layer (`no-serde: false` (default)), both the request and response properties that are marked as `long` and `bigint` in OpenAPI/Fern spec, will consistently be `bigint`'s. +However, when disabling the serialization layer (`no-serde: true`), they will be typed as `number | bigint`. + +Here's an overview of what to expect from the generated types when combining `useBigInt` and `noSerde` with the following Fern definition: + +**Fern definition** +```yml +types: + ObjectWithOptionalField: + properties: + longProp: long + bigIntProp: bigint +``` + +**TypeScript output** +```typescript +// useBigInt: true +// noSerde: false +interface ObjectWithLongAndBigInt { + longProp: bigint; + bigIntProp: bigint; +} + +// useBigInt: true +// noSerde: true +interface ObjectWithLongAndBigInt { + longProp: bigint | number; + bigIntProp: bigint | number; +} + +// useBigInt: false +// noSerde: false +interface ObjectWithLongAndBigInt { + longProp: number; + bigIntProp: string; +} + +// useBigInt: false +// noSerde: true +interface ObjectWithLongAndBigInt { + longProp: number; + bigIntProp: string; +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-21.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-21.mdx new file mode 100644 index 000000000..4dc51f77e --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-21.mdx @@ -0,0 +1,3 @@ +## 0.48.4 +**`(fix):`** When custom config `useBigInt` is `true`, generate examples and snippets with `BigInt("123")`. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-01-28.mdx b/fern/products/sdks/overview/typescript/changelog/2025-01-28.mdx new file mode 100644 index 000000000..e7f56688d --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-01-28.mdx @@ -0,0 +1,10 @@ +## 0.48.7 +**`(fix):`** Form data encoding now correctly handles array and object values by encoding each property value as a separate key-value pair, rather than trying to encode the entire object as a single value. This ensures proper handling of complex data structures in multipart form requests. + + +## 0.48.6 +**`(fix):`** Support form-encoded form data parameters by using `qs` to properly encode array and object values with the `repeat` array format. + +## 0.48.5 +**`(fix):`** Don't double wrap a blob if a user uploads a blob to a multi-part form. Otherwise file's content-type is lost in Deno. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-03-06.mdx b/fern/products/sdks/overview/typescript/changelog/2025-03-06.mdx new file mode 100644 index 000000000..166feb54a --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-03-06.mdx @@ -0,0 +1,4 @@ +## 0.49.0 +**`(feat):`** This PR enables the Typescript generator to produce Websocket SDK endpoints. This can be enabled by adding the option `shouldGenerateWebsocketClients: true` to the Typescript generator config. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-03-10.mdx b/fern/products/sdks/overview/typescript/changelog/2025-03-10.mdx new file mode 100644 index 000000000..bb03ac953 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-03-10.mdx @@ -0,0 +1,3 @@ +## 0.49.1 +**`(fix):`** This PR includes several fixes to the generated `Socket.ts` file when websocket client code generation is enabled. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-03-18.mdx b/fern/products/sdks/overview/typescript/changelog/2025-03-18.mdx new file mode 100644 index 000000000..881b3d1e1 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-03-18.mdx @@ -0,0 +1,3 @@ +## 0.49.2 +**`(fix):`** Fix issue where IdempotentRequestOptions is not generated in the client namespace. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-03-19.mdx b/fern/products/sdks/overview/typescript/changelog/2025-03-19.mdx new file mode 100644 index 000000000..f1752142f --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-03-19.mdx @@ -0,0 +1,6 @@ +## 0.49.4 +**`(fix):`** Increase the timeout used in the generated `webpack.test.ts` file. + +## 0.49.3 +**`(fix):`** Increase the timeout used in the generated `webpack.test.ts` file. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-03-27.mdx b/fern/products/sdks/overview/typescript/changelog/2025-03-27.mdx new file mode 100644 index 000000000..27bff343d --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-03-27.mdx @@ -0,0 +1,10 @@ +## 0.49.7 +**`(fix):`** Significantly improve performance of SDK generation when the `useLegacyExports` config is `false`. For a large spec like Square, the generation went from 10+ minutes to almost 1 minute. + + +## 0.49.6 +**`(feat):`** Support arbitrary websocket headers during connect handshake. + +## 0.49.5 +**`(feat):`** Improvements to Websocket code generation quality. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-04-07.mdx b/fern/products/sdks/overview/typescript/changelog/2025-04-07.mdx new file mode 100644 index 000000000..b800cab59 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-04-07.mdx @@ -0,0 +1,18 @@ +## 0.50.0 +**`(feat):`** All endpoint functions now return an `HttpResponsePromise` instead of a `Promise`. +Using `await`, `.then()`, `.catch()`, and `.finally()` on these promises behave the same as before, +but you can call `.withRawResponse()` to get a promise that includes the parsed response and the raw response. +The raw response let's you retrieve the response headers, status code, etc. + +```ts +const fooBar = await client.foo.bar("id", options); +const { data: alsoFooBar, rawResponse } = await client.foo.bar("id", options).withRawResponse(); +const { + headers, + status, + url, + ... +} = rawResponse; +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-04-08.mdx b/fern/products/sdks/overview/typescript/changelog/2025-04-08.mdx new file mode 100644 index 000000000..18c2f2523 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-04-08.mdx @@ -0,0 +1,4 @@ +## 0.50.1 +**`(feat):`** Add `"packageManager": "yarn@1.22.22"` to _package.json_. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-04-14.mdx b/fern/products/sdks/overview/typescript/changelog/2025-04-14.mdx new file mode 100644 index 000000000..b2c949a72 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-04-14.mdx @@ -0,0 +1,16 @@ +## 0.51.0 +**`(feat):`** Add `rawResponse` property to JavaScript errors. + +```ts +try { + const fooBar = await client.foo.bar("id", options); +} catch (e) { + if (error instanceof FooError) { + console.log(error.rawResponse); + } else { + // ... + } +} +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-04-21.mdx b/fern/products/sdks/overview/typescript/changelog/2025-04-21.mdx new file mode 100644 index 000000000..597beb9bd --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-04-21.mdx @@ -0,0 +1,13 @@ +## 0.51.3 +**`(fix):`** Fix minor type issue for polyfilling Headers in Node 16 and below. + +## 0.51.2 +**`(fix):`** When uploading files, extract the filename from the `path` property if present on the given object. +This will extract the filename for `fs.createReadStream()` for example. + + +## 0.51.1 +**`(fix):`** Fallback to a custom `Headers` class implementation if the native `Headers` class is not available. +Versions of Node 16 and below do not support the native `Headers` class, so this fallback is necessary to ensure compatibility. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-04-22.mdx b/fern/products/sdks/overview/typescript/changelog/2025-04-22.mdx new file mode 100644 index 000000000..9fa4c5056 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-04-22.mdx @@ -0,0 +1,3 @@ +## 0.51.4 +**`(fix):`** Fix issue where the _runtime.ts_ file was missing when other files were trying to import it. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-05-03.mdx b/fern/products/sdks/overview/typescript/changelog/2025-05-03.mdx new file mode 100644 index 000000000..b2c4a61fa --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-05-03.mdx @@ -0,0 +1,3 @@ +## 0.51.5 +**`(fix):`** Fixed an issue with ts-morph where creating an ifStatement with empty conditions array caused errors in multipart form data handling. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-05-13.mdx b/fern/products/sdks/overview/typescript/changelog/2025-05-13.mdx new file mode 100644 index 000000000..5c84d8525 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-05-13.mdx @@ -0,0 +1,3 @@ +## 0.51.6 +**`(fix):`** Add support for the custom introduction setting in the generated README.md. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-05-14.mdx b/fern/products/sdks/overview/typescript/changelog/2025-05-14.mdx new file mode 100644 index 000000000..c40cc9894 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-05-14.mdx @@ -0,0 +1,27 @@ +## 1.0.1 +**`(fix):`** Fix property lookup in inherited schemas during snippet generation for object schemas. + +## 1.0.0 +**`(feat):`** This release changes the defaults for the following custom configuration in _generators.yml_. + +| Option | Before | Now | +|--------|--------|-----| +| `inlineFileProperties` | `false` | `true` | +| `inlinePathParameters` | `false` | `true` | +| `enableInlineTypes` | `false` | `true` | +| `noSerdeLayer` | `false` | `true` | +| `omitUndefined` | `false` | `true` | +| `skipResponseValidation` | `false` | `true` | +| `useLegacyExports` | `true` | `false` | + +To avoid breaking changes, explicitly set the options above with the `Before` values in the `config` of your generator +in _generators.yml_. + + +**`(fix):`** When generating properties for interfaces and classes, we only surround the property name with quotes if necessary. +In some cases where the property name wasn't a valid identifier before, we now surround it with quotes too. + + +## 0.51.7 +**`(fix):`** If an object extends an alias, the generator now visits the alias that is being extended (instead of throwing an error). + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-03.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-03.mdx new file mode 100644 index 000000000..f0b6de64b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-03.mdx @@ -0,0 +1,8 @@ +## 1.2.4 +**`(feat):`** Generate tests to verify the SDK sends and receives HTTP requests as expected. +You can turn of these tests by setting `generateWireTests` to `false` in the `config` of your generator configuration. + + +## 1.1.0 +**`(feat):`** Add support for HEAD HTTP method. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-04.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-04.mdx new file mode 100644 index 000000000..ae324ba51 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-04.mdx @@ -0,0 +1,6 @@ +## 1.3.0 +**`(feat):`** Add support for generating the full project when using the filesystem output mode. + +## 1.1.1 +**`(fix):`** Fix an issue where attempting to access a property with an invalid property name would lead to a broken output SDK. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-05.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-05.mdx new file mode 100644 index 000000000..a81b74b11 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-05.mdx @@ -0,0 +1,14 @@ +## 1.4.0 +**`(feat):`** You can now pass in headers to the root client. These headers will be merged with service and endpoint specific headers. + +**`(internal):`** Reduce duplicate code generation by passing headers from the root client down to the subpackage clients. + +## 1.3.2 +**`(fix):`** Fix dynamic imports in the built dist/esm code. + +## 1.3.1 +**`(fix):`** MSW is used for generated wire tests, but inadvertently also captures real HTTP request, for example in integration tests. +When the HTTP request does not match any of the configured predicates, it would throw an error, including in the unrelated integration tests. +In this version MSW is configured to bypass instead of throw an error when HTTP requests do not match the configured predicates. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-11.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-11.mdx new file mode 100644 index 000000000..acba2dab4 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-11.mdx @@ -0,0 +1,3 @@ +## 1.5.0 +**`(feat):`** Add support for websocket connect methods with path parameters in the TypeScript generator + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-13.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-13.mdx new file mode 100644 index 000000000..cc80a1164 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-13.mdx @@ -0,0 +1,9 @@ +## 1.6.0 +**`(feat):`** You can now specify whether to return streams using the stream wrapper, or return the web standard stream. +Change the type of stream returned by setting `streamType` to `wrapper` or `web` in the `config` of your generator configuration. +The default is `wrapper`. + + +**`(internal):`** `tests/unit/zurg` are moved to `tests/unit/schemas` to match the name in `src/core/schemas` which is what the tests are verifying. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-16.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-16.mdx new file mode 100644 index 000000000..21bf5e65a --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-16.mdx @@ -0,0 +1,15 @@ +## 1.7.0 +**`(feat):`** Allow users to specify the path they'd like to generate the SDK to. + +Here's an example of how to implement this in generators.yml: +```yml +# In generators.yml +groups: + ts-sdk: + generators: + - name: fernapi/fern-typescript-sdk + config: + packagePath: src/package-path +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-18.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-18.mdx new file mode 100644 index 000000000..e7831b1b8 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-18.mdx @@ -0,0 +1,4 @@ +## 1.7.1 +**`(fix):`** __jest.config.mjs__ now only maps relative path modules that end on `.js` to their `.ts` equivalent. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-19.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-19.mdx new file mode 100644 index 000000000..ee8497f9c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-19.mdx @@ -0,0 +1,22 @@ +## 1.8.0 +**`(feat):`** You can now specify whether to return the `BinaryResponse` type for binary response endpoints. +Change the response type by setting `fileResponseType` to `stream` or `binary-response` in the `config` of your generator configuration. +The default is `stream` for backwards compatibility, but we recommend using `binary-response`. + +Here's how you users can interact with the `BinaryResponse`: +```ts +const response = await client.getFile(...); +const stream = response.stream(); +// const arrayBuffer = await response.arrayBuffer(); +// const blob = await response.blob(); +// const bytes = await response.bytes(); +const bodyUsed = response.bodyUsed; +``` +The user can choose how to consume the binary data. + + +## 1.7.2 +**`(fix):`** Fix bug where duplicate file generation was silently allowed instead of failing. The `withSourceFile` method now properly +handles the `overwrite` option to prevent unintended file overwrites. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-22.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-22.mdx new file mode 100644 index 000000000..9faa7e9c5 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-22.mdx @@ -0,0 +1,21 @@ +## 1.9.0 +**`(feat):`** Add `formDataSupport` configuration which lets you choose between `Node16` and `Node18`. +The default is `Node16`. If you choose `Node18`, the `form-data`, `formdata-node`, and `form-data-encoder` dependencies will be removed. +`formDataSupport: Node18` supports uploading files from the following types: +* `Buffer` +* `File` +* `Blob` +* `Readable` (includes Readstream) +* `ReadableStream` +* `ArrayBuffer` +* `Uint8Array` + + +## 1.8.2 +**`(fix):`** When a multipart form part is explicitly marked as JSON, serialize the data as JSON regardless of type. +This also means arrays, maps, etc. will not be split into multiple parts, but serialized to JSON as a single part. + + +## 1.8.1 +**`(fix):`** Fix binary response README.md examples + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-27.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-27.mdx new file mode 100644 index 000000000..6556be246 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-27.mdx @@ -0,0 +1,8 @@ +## 1.10.0 +**`(feat):`** Add `fetchSupport` configuration which lets you choose between `node-fetch` and `native`. +The default is `node-fetch`. If you choose `native`, the `node-fetch` dependency will be removed. + + +## 1.9.1 +**`(fix):`** Improve auto-pagination logic to consider empty strings in response as null cursors and stop paging. + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-06-30.mdx b/fern/products/sdks/overview/typescript/changelog/2025-06-30.mdx new file mode 100644 index 000000000..b00d82406 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-06-30.mdx @@ -0,0 +1,20 @@ +## 1.10.5 +**`(feat):`** Add default values to request parameters. +For example, if you have a query parameter `foo` with a default value of `bar`, the generated request parameter will have a default value of `bar`. + +To enable this, set `useDefaultRequestParameterValues` to `true` in the `config` of your generator configuration. +```yml +# In generators.yml +groups: + ts-sdk: + generators: + - name: fernapi/fern-typescript-sdk + config: + useDefaultRequestParameterValues: true +``` + + +## 1.10.1 +**`(fix):`** Remove `url-join` dependency in favor of a handwritten `joinUrl` function. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-01.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-01.mdx new file mode 100644 index 000000000..a09a63e9c --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-01.mdx @@ -0,0 +1,12 @@ +## 1.10.4 +**`(fix):`** Add `omitFernHeaders` configuration to omit Fern headers from the generated SDK. + + +## 1.10.3 +**`(fix):`** Remove `qs` dependency. + + +## 1.10.2 +**`(fix):`** Remove `js-base64` dependency in favor of using native implementations. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-02.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-02.mdx new file mode 100644 index 000000000..23bf4bfe7 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-02.mdx @@ -0,0 +1,34 @@ +## 2.1.0 +**`(feat):`** Split up Jest configuration into multiple projects. +You can now run the following command to run tests: +* `yarn test`: runs all tests +* `yarn test:unit`: runs unit tests (any non-browser and non-wire tests) +* `yarn test:browser`: runs browser only tests inside of `js-dom` +* `yarn test:wire`: runs wire tests + +You can now pass in paths and patterns as an argument to the above commands to filter down to specific tests. +For example: `yarn test tests/unit/fetcher` + + +## 2.0.0 +**`(feat):`** The TypeScript generator has received a large amount of improvements, but to maintain backwards compatibility, they require you to opt in using feature flags. +The 2.0.0 release now has these feature flags enabled by default. Here's an overview of the `config` defaults that have changed in _generators.yml_. + +| Option | Before | Now | +|--------|--------|-----| +| `streamType` | `"wrapper"` | `"web"` | +| `fileResponseType` | `"stream"` | `"binary-response"` | +| `formDataSupport` | `"Node16"` | `"Node18"` | +| `fetchSupport` | `"node-fetch"` | `"native"` | + +To avoid breaking changes, explicitly set the options above with the `Before` values in the `config` of your generator +in _generators.yml_. + +With these defaults, the generated SDKs will have _**ZERO**_ dependencies (excluding devDependencies and `ws` in case of WebSocket generation). +As a result, the SDKs are smaller, faster, more secure, and easier to use. + + +## 1.10.6 +**`(fix):`** Publish multi-platform builds of the TypeScript SDK docker container. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-03.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-03.mdx new file mode 100644 index 000000000..263d4e45b --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-03.mdx @@ -0,0 +1,50 @@ +## 2.4.0 +**`(fix):`** Fixes bug with query parameter and path parameter serialization in URL for WebSocket channels. + +## 2.3.3 +**`(internal):`** Bump version to test Docker image rename to `fernapi/fern-typescript-sdk` + +## 2.3.2 +**`(fix):`** Remove ".js" extension from ESM imports in the source generator code. +If `useLegacyExports` is `true`, you will not see ".js" extensions in ESM imports. +If `useLegacyExports` is `false` (default), a post process step will add the `.js` extension, so you won't see a difference. + +We're doing this because Jest has a bug where it doesn't properly load TypeScript modules even though the TypeScript and imports are valid. + + +## 2.3.1 +**`(fix):`** Fixes an issue where OAuth clients would not compile when variables were configured +in the SDK. Now, the oauth client is instantiated with any global path parameters or headers. + + +## 2.3.0 +**`(feat):`** Change the `outputSourceFiles` default from `false` to `true`. +This will affect the output when you generate the SDK to the local file system. + + +## 2.2.1 +**`(fix):`** Ensure _tests/wire_ is generated even when there are no wire tests generated. +Otherwise, Jest throws an error because the wire test project `roots` doesn't exist. + + +## 2.2.0 +**`(feat):`** Improve generated package.json files: +* Add `engines` field to specify minimum Node.js version supported as Node.js 18. +* Add `sideEffects: false` +* Add `README.md` and `LICENSE` to `files` array +* Use GitHub shorthand for `repository` field. + +You can override these fields using the `packageJson` config: +```yml +# In generators.yml +groups: + ts-sdk: + generators: + - name: fernapi/fern-typescript-sdk + config: + packageJson: + engines: + node: ">=16.0.0" +``` + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-04.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-04.mdx new file mode 100644 index 000000000..9acc1dd69 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-04.mdx @@ -0,0 +1,10 @@ +## 2.4.2 +**`(fix):`** Fixes a compile issue when WebSocket connect methods require query parameters with special characters. +Fixes response deserialization in websockets to respect skipping validation. + + +## 2.4.1 +**`(fix):`** When serde layer is enabled, WebSocket channels now pass through unrecognized properties +instead of stripping them to preserve forwards compatibility. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-08.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-08.mdx new file mode 100644 index 000000000..a7e655714 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-08.mdx @@ -0,0 +1,4 @@ +## 2.4.3 +**`(fix):`** Fix an issue where a property set to `undefined` would not match with a property that is missing in the `withJson` MSW predicate. + + diff --git a/fern/products/sdks/overview/typescript/changelog/2025-07-09.mdx b/fern/products/sdks/overview/typescript/changelog/2025-07-09.mdx new file mode 100644 index 000000000..68e842507 --- /dev/null +++ b/fern/products/sdks/overview/typescript/changelog/2025-07-09.mdx @@ -0,0 +1,18 @@ +## 2.4.6 +**`(fix):`** Parse HTTP error bodies as JSON if the response content-type header is JSON, otherwise fallback to text. + + +**`(fix):`** Fix `bytes` fetcher test. + + +**`(fix):`** Fix Jest configuration when a `packagePath` is specified in _generators.yml_ config. + + +## 2.4.5 +**`(fix):`** Make sure `extraDependencies`, `extraPeerDependencies`, `extraPeerDependenciesMeta`, and `extraDevDependencies` are always merged into _package.json_. + + +## 2.4.4 +**`(fix):`** Make the `BinaryResponse.bytes` function optional because some versions of runtimes do not support the function on fetch `Response`. + + diff --git a/fern/products/sdks/sdks.yml b/fern/products/sdks/sdks.yml index 59f365bb4..c1fd3e998 100644 --- a/fern/products/sdks/sdks.yml +++ b/fern/products/sdks/sdks.yml @@ -13,8 +13,7 @@ navigation: path: ./overview/typescript/design.mdx - page: Configuration path: ./overview/typescript/configuration.mdx - - page: Changelog - path: ./overview/typescript/changelog.mdx + - changelog: ./overview/typescript/changelog - page: Publishing to NPM path: ./overview/typescript/publishing-to-npm.mdx - page: Adding custom code @@ -29,8 +28,7 @@ navigation: path: ./overview/python/design.mdx - page: Configuration path: ./overview/python/configuration.mdx - - page: Changelog - path: ./overview/python/changelog.mdx + - changelog: ./overview/python/changelog - page: Publishing to PyPI path: ./overview/python/publishing-to-pypi.mdx - page: Adding custom code @@ -45,8 +43,7 @@ navigation: path: ./overview/go/design.mdx - page: Configuration path: ./overview/go/configuration.mdx - - page: Changelog - path: ./overview/go/changelog.mdx + - changelog: ./overview/go/changelog - page: Publishing as a Go Module path: ./overview/go/publishing-to-go-package-manager.mdx - page: Adding custom code @@ -61,8 +58,7 @@ navigation: path: ./overview/java/design.mdx - page: Configuration path: ./overview/java/configuration.mdx - - page: Changelog - path: ./overview/java/changelog.mdx + - changelog: ./overview/java/changelog - page: Publishing to Maven Central path: ./overview/java/publishing-to-maven-central.mdx - page: Adding custom code @@ -77,8 +73,7 @@ navigation: path: ./overview/dotnet/design.mdx - page: Configuration path: ./overview/dotnet/configuration.mdx - - page: Changelog - path: ./overview/dotnet/changelog.mdx + - changelog: ./overview/dotnet/changelog - page: Publishing to Nuget path: ./overview/dotnet/publishing-to-nuget.mdx - page: Adding custom code @@ -93,8 +88,7 @@ navigation: path: ./overview/php/design.mdx - page: Configuration path: ./overview/php/configuration.mdx - - page: Changelog - path: ./overview/php/changelog.mdx + - changelog: ./overview/php/changelog - page: Publishing to Packagist path: ./overview/php/publishing-to-packagist.mdx - page: Adding custom code @@ -109,8 +103,7 @@ navigation: path: ./overview/ruby/design.mdx - page: Configuration path: ./overview/ruby/configuration.mdx - - page: Changelog - path: ./overview/ruby/changelog.mdx + - changelog: ./overview/ruby/changelog - page: Publishing to RubyGems path: ./overview/ruby/publishing-to-rubygems.mdx - page: Adding custom code