From f97138a8243a01aa12aa4e4490afd05ea92c3c8a Mon Sep 17 00:00:00 2001 From: Alex McKinney Date: Sun, 15 Mar 2026 12:21:55 -0400 Subject: [PATCH 1/4] fix(csharp): Add support for numeric enums to match Grpc.Tools (#13543) --- .../src/proto/CsharpProtobufTypeMapper.ts | 9 +- generators/csharp/sdk/versions.yml | 8 + .../type__AspectRatio.json | 11 + .../type__IndexType.json | 9 + .../type__UpdateResponse.json | 6 +- .../csharp-grpc-proto-exhaustive.json | 948 +++--- .../test-definitions/csharp-grpc-proto.json | 76 +- .../csharp-grpc-proto-exhaustive.json | 3025 ++++++++--------- .../test-definitions/csharp-grpc-proto.json | 180 +- .../go-deterministic-ordering.json | 9 +- .../__snapshots__/grpc-comments-fdr.snap | 4 +- .../__snapshots__/grpc-comments-ir.snap | 32 +- .../proto/data/v1/data.proto | 9 + .../src/SeedApi/AspectRatio.cs | 77 + .../SeedApi/{Dataservice => }/IndexType.cs | 0 .../include-exception-handler/README.md | 38 +- .../proto/data/v1/data.proto | 9 + .../include-exception-handler/reference.md | 34 +- .../include-exception-handler/snippet.json | 52 +- .../Unit/MockServer/BaseMockServerTest.cs | 37 + .../Unit/MockServer/PostFooTest.cs | 55 + .../SeedApi/Dataservice/DataserviceClient.cs | 105 +- .../SeedApi/Dataservice/IDataserviceClient.cs | 7 +- .../Dataservice/Requests/UpdateRequest.cs | 17 + .../src/SeedApi/ISeedApiClient.cs | 6 +- .../src/SeedApi/SeedApiClient.cs | 91 +- .../src/SeedApi/Types/AspectRatio.cs | 77 + .../{Dataservice => }/Types/IndexType.cs | 0 .../no-custom-config/README.md | 38 +- .../no-custom-config/proto/data/v1/data.proto | 9 + .../no-custom-config/reference.md | 34 +- .../no-custom-config/snippet.json | 52 +- .../Unit/MockServer/BaseMockServerTest.cs | 37 + .../Unit/MockServer/PostFooTest.cs | 55 + .../SeedApi/Dataservice/DataserviceClient.cs | 98 +- .../SeedApi/Dataservice/IDataserviceClient.cs | 7 +- .../Dataservice/Requests/UpdateRequest.cs | 17 + .../src/SeedApi/ISeedApiClient.cs | 6 +- .../src/SeedApi/SeedApiClient.cs | 84 +- .../src/SeedApi/Types/AspectRatio.cs | 77 + .../{Dataservice => }/Types/IndexType.cs | 0 .../package-id/README.md | 38 +- .../package-id/proto/data/v1/data.proto | 9 + .../package-id/reference.md | 34 +- .../package-id/snippet.json | 52 +- .../Unit/MockServer/BaseMockServerTest.cs | 37 + .../Unit/MockServer/PostFooTest.cs | 55 + .../SeedApi/Dataservice/DataserviceClient.cs | 98 +- .../SeedApi/Dataservice/IDataserviceClient.cs | 7 +- .../Dataservice/Requests/UpdateRequest.cs | 17 + .../package-id/src/SeedApi/ISeedApiClient.cs | 6 +- .../package-id/src/SeedApi/SeedApiClient.cs | 84 +- .../src/SeedApi/Types/AspectRatio.cs | 77 + .../{Dataservice => }/Types/IndexType.cs | 0 .../read-only-memory/README.md | 34 +- .../read-only-memory/proto/data/v1/data.proto | 9 + .../read-only-memory/reference.md | 34 +- .../read-only-memory/snippet.json | 52 +- .../Unit/MockServer/BaseMockServerTest.cs | 37 + .../Unit/MockServer/PostFooTest.cs | 55 + .../SeedApi/Dataservice/DataserviceClient.cs | 98 +- .../SeedApi/Dataservice/IDataserviceClient.cs | 7 +- .../Dataservice/Requests/UpdateRequest.cs | 17 + .../src/SeedApi/ISeedApiClient.cs | 6 +- .../src/SeedApi/SeedApiClient.cs | 84 +- .../src/SeedApi/Types/AspectRatio.cs | 77 + .../{Dataservice => }/Types/IndexType.cs | 0 .../no-custom-config/README.md | 10 +- .../no-custom-config/reference.md | 4 +- .../no-custom-config/snippet.json | 4 +- .../src/SeedApi/ISeedApiClient.cs | 2 +- .../src/SeedApi/SeedApiClient.cs | 4 +- .../SeedApi/Userservice/IUserserviceClient.cs | 2 +- .../SeedApi/Userservice/UserserviceClient.cs | 6 +- .../openapi/openapi.yml | 5 - .../overrides.yml | 2 - .../proto/data/v1/data.proto | 9 + 77 files changed, 3673 insertions(+), 2844 deletions(-) create mode 100644 packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__AspectRatio.json create mode 100644 packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__IndexType.json create mode 100644 seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs rename seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/{Dataservice => }/IndexType.cs (100%) create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => }/Types/IndexType.cs (100%) create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => }/Types/IndexType.cs (100%) create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => }/Types/IndexType.cs (100%) create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs create mode 100644 seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => }/Types/IndexType.cs (100%) diff --git a/generators/csharp/base/src/proto/CsharpProtobufTypeMapper.ts b/generators/csharp/base/src/proto/CsharpProtobufTypeMapper.ts index 4902d298dfd5..12b78122b098 100644 --- a/generators/csharp/base/src/proto/CsharpProtobufTypeMapper.ts +++ b/generators/csharp/base/src/proto/CsharpProtobufTypeMapper.ts @@ -983,6 +983,9 @@ function getValueForLiteral({ literal }: { literal: Literal }, csharp: CSharp): /* * Protobuf enums remove the stutter in their generated enum value names. * For example, the enum value `Status.StatusActive` becomes `Status.Active`. + * + * If the resulting name starts with a digit, protobuf's C# codegen prepends + * an underscore (e.g., `VIDEO_ASPECT_RATIO_1_1` becomes `_11`). */ function getProtobufEnumValueName({ generation, @@ -994,5 +997,9 @@ function getProtobufEnumValueName({ enumValue: EnumValue; }): string { const enumValueName = enumValue.name.name.pascalCase.safeName; - return enumValueName.replace(classReference.name, ""); + const stripped = enumValueName.replace(classReference.name, ""); + if (/^\d/.test(stripped)) { + return `_${stripped}`; + } + return stripped; } diff --git a/generators/csharp/sdk/versions.yml b/generators/csharp/sdk/versions.yml index 1c1661ef5efa..b8e5e2a03a1c 100644 --- a/generators/csharp/sdk/versions.yml +++ b/generators/csharp/sdk/versions.yml @@ -1,4 +1,12 @@ # yaml-language-server: $schema=../../../fern-versions-yml.schema.json +- version: 2.30.1 + changelogEntry: + - summary: | + Fix gRPC code generation to support enums with numeric identifiers. + type: fix + createdAt: "2026-03-13" + irVersion: 65 + - version: 2.30.0 changelogEntry: - summary: | diff --git a/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__AspectRatio.json b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__AspectRatio.json new file mode 100644 index 000000000000..5e11f206bbd6 --- /dev/null +++ b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__AspectRatio.json @@ -0,0 +1,11 @@ +{ + "type": "string", + "enum": [ + "ASPECT_RATIO_UNSPECIFIED", + "ASPECT_RATIO_1_1", + "ASPECT_RATIO_16_9", + "ASPECT_RATIO_9_16", + "ASPECT_RATIO_4_3" + ], + "definitions": {} +} \ No newline at end of file diff --git a/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__IndexType.json b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__IndexType.json new file mode 100644 index 000000000000..718e043f17ba --- /dev/null +++ b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__IndexType.json @@ -0,0 +1,9 @@ +{ + "type": "string", + "enum": [ + "INDEX_TYPE_INVALID", + "INDEX_TYPE_DEFAULT", + "INDEX_TYPE_STRICT" + ], + "definitions": {} +} \ No newline at end of file diff --git a/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__UpdateResponse.json b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__UpdateResponse.json index 3f2a7e4585aa..33c7c44c8abb 100644 --- a/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__UpdateResponse.json +++ b/packages/cli/fern-definition/ir-to-jsonschema/src/__test__/__snapshots__/csharp-grpc-proto-exhaustive/type__UpdateResponse.json @@ -15,7 +15,7 @@ "index_type": { "oneOf": [ { - "$ref": "#/definitions/dataservice.IndexType" + "$ref": "#/definitions/IndexType" }, { "type": "null" @@ -37,7 +37,7 @@ { "type": "array", "items": { - "$ref": "#/definitions/dataservice.IndexType" + "$ref": "#/definitions/IndexType" } }, { @@ -48,7 +48,7 @@ }, "additionalProperties": false, "definitions": { - "dataservice.IndexType": { + "IndexType": { "type": "string", "enum": [ "INDEX_TYPE_INVALID", diff --git a/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto-exhaustive.json b/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto-exhaustive.json index d5686c7e47bc..4b5b24fa1905 100644 --- a/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto-exhaustive.json +++ b/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto-exhaustive.json @@ -1,138 +1,144 @@ { "version": "1.0.0", "types": { - "type_dataservice:IndexType": { + "type_:AspectRatio": { "type": "enum", "declaration": { "name": { - "originalName": "IndexType", + "originalName": "AspectRatio", "camelCase": { - "unsafeName": "indexType", - "safeName": "indexType" + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" }, "snakeCase": { - "unsafeName": "index_type", - "safeName": "index_type" + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE", - "safeName": "INDEX_TYPE" + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" }, "pascalCase": { - "unsafeName": "IndexType", - "safeName": "IndexType" + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", + "file": null + } + }, + "values": [ + { + "name": { + "originalName": "ASPECT_RATIO_UNSPECIFIED", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "aspectRatioUnspecified", + "safeName": "aspectRatioUnspecified" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "aspect_ratio_unspecified", + "safeName": "aspect_ratio_unspecified" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "ASPECT_RATIO_UNSPECIFIED", + "safeName": "ASPECT_RATIO_UNSPECIFIED" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "AspectRatioUnspecified", + "safeName": "AspectRatioUnspecified" } - } - } - }, - "values": [ + }, + "wireValue": "ASPECT_RATIO_UNSPECIFIED" + }, { "name": { - "originalName": "INDEX_TYPE_INVALID", + "originalName": "ASPECT_RATIO_1_1", "camelCase": { - "unsafeName": "indexTypeInvalid", - "safeName": "indexTypeInvalid" + "unsafeName": "aspectRatio11", + "safeName": "aspectRatio11" }, "snakeCase": { - "unsafeName": "index_type_invalid", - "safeName": "index_type_invalid" + "unsafeName": "aspect_ratio11", + "safeName": "aspect_ratio11" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_INVALID", - "safeName": "INDEX_TYPE_INVALID" + "unsafeName": "ASPECT_RATIO11", + "safeName": "ASPECT_RATIO11" }, "pascalCase": { - "unsafeName": "IndexTypeInvalid", - "safeName": "IndexTypeInvalid" + "unsafeName": "AspectRatio11", + "safeName": "AspectRatio11" } }, - "wireValue": "INDEX_TYPE_INVALID" + "wireValue": "ASPECT_RATIO_1_1" }, { "name": { - "originalName": "INDEX_TYPE_DEFAULT", + "originalName": "ASPECT_RATIO_16_9", "camelCase": { - "unsafeName": "indexTypeDefault", - "safeName": "indexTypeDefault" + "unsafeName": "aspectRatio169", + "safeName": "aspectRatio169" }, "snakeCase": { - "unsafeName": "index_type_default", - "safeName": "index_type_default" + "unsafeName": "aspect_ratio169", + "safeName": "aspect_ratio169" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_DEFAULT", - "safeName": "INDEX_TYPE_DEFAULT" + "unsafeName": "ASPECT_RATIO169", + "safeName": "ASPECT_RATIO169" }, "pascalCase": { - "unsafeName": "IndexTypeDefault", - "safeName": "IndexTypeDefault" + "unsafeName": "AspectRatio169", + "safeName": "AspectRatio169" } }, - "wireValue": "INDEX_TYPE_DEFAULT" + "wireValue": "ASPECT_RATIO_16_9" }, { "name": { - "originalName": "INDEX_TYPE_STRICT", + "originalName": "ASPECT_RATIO_9_16", "camelCase": { - "unsafeName": "indexTypeStrict", - "safeName": "indexTypeStrict" + "unsafeName": "aspectRatio916", + "safeName": "aspectRatio916" }, "snakeCase": { - "unsafeName": "index_type_strict", - "safeName": "index_type_strict" + "unsafeName": "aspect_ratio916", + "safeName": "aspect_ratio916" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_STRICT", - "safeName": "INDEX_TYPE_STRICT" + "unsafeName": "ASPECT_RATIO916", + "safeName": "ASPECT_RATIO916" }, "pascalCase": { - "unsafeName": "IndexTypeStrict", - "safeName": "IndexTypeStrict" + "unsafeName": "AspectRatio916", + "safeName": "AspectRatio916" } }, - "wireValue": "INDEX_TYPE_STRICT" + "wireValue": "ASPECT_RATIO_9_16" + }, + { + "name": { + "originalName": "ASPECT_RATIO_4_3", + "camelCase": { + "unsafeName": "aspectRatio43", + "safeName": "aspectRatio43" + }, + "snakeCase": { + "unsafeName": "aspect_ratio43", + "safeName": "aspect_ratio43" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO43", + "safeName": "ASPECT_RATIO43" + }, + "pascalCase": { + "unsafeName": "AspectRatio43", + "safeName": "AspectRatio43" + } + }, + "wireValue": "ASPECT_RATIO_4_3" } ] }, @@ -870,6 +876,103 @@ } ] }, + "type_:IndexType": { + "type": "enum", + "declaration": { + "name": { + "originalName": "IndexType", + "camelCase": { + "unsafeName": "indexType", + "safeName": "indexType" + }, + "snakeCase": { + "unsafeName": "index_type", + "safeName": "index_type" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE", + "safeName": "INDEX_TYPE" + }, + "pascalCase": { + "unsafeName": "IndexType", + "safeName": "IndexType" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + } + }, + "values": [ + { + "name": { + "originalName": "INDEX_TYPE_INVALID", + "camelCase": { + "unsafeName": "indexTypeInvalid", + "safeName": "indexTypeInvalid" + }, + "snakeCase": { + "unsafeName": "index_type_invalid", + "safeName": "index_type_invalid" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_INVALID", + "safeName": "INDEX_TYPE_INVALID" + }, + "pascalCase": { + "unsafeName": "IndexTypeInvalid", + "safeName": "IndexTypeInvalid" + } + }, + "wireValue": "INDEX_TYPE_INVALID" + }, + { + "name": { + "originalName": "INDEX_TYPE_DEFAULT", + "camelCase": { + "unsafeName": "indexTypeDefault", + "safeName": "indexTypeDefault" + }, + "snakeCase": { + "unsafeName": "index_type_default", + "safeName": "index_type_default" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_DEFAULT", + "safeName": "INDEX_TYPE_DEFAULT" + }, + "pascalCase": { + "unsafeName": "IndexTypeDefault", + "safeName": "IndexTypeDefault" + } + }, + "wireValue": "INDEX_TYPE_DEFAULT" + }, + { + "name": { + "originalName": "INDEX_TYPE_STRICT", + "camelCase": { + "unsafeName": "indexTypeStrict", + "safeName": "indexTypeStrict" + }, + "snakeCase": { + "unsafeName": "index_type_strict", + "safeName": "index_type_strict" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_STRICT", + "safeName": "INDEX_TYPE_STRICT" + }, + "pascalCase": { + "unsafeName": "IndexTypeStrict", + "safeName": "IndexTypeStrict" + } + }, + "wireValue": "INDEX_TYPE_STRICT" + } + ] + }, "type_:IndexedData": { "type": "object", "declaration": { @@ -2093,7 +2196,7 @@ "type": "optional", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } }, "propertyAccess": null, @@ -2161,7 +2264,7 @@ "type": "list", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } } }, @@ -2441,91 +2544,11 @@ }, "headers": [], "endpoints": { - "endpoint_dataservice.foo": { + "endpoint_dataService.Upload": { "auth": null, "declaration": { "name": { - "originalName": "foo", - "camelCase": { - "unsafeName": "foo", - "safeName": "foo" - }, - "snakeCase": { - "unsafeName": "foo", - "safeName": "foo" - }, - "screamingSnakeCase": { - "unsafeName": "FOO", - "safeName": "FOO" - }, - "pascalCase": { - "unsafeName": "Foo", - "safeName": "Foo" - } - }, - "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], - "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - } - }, - "location": { - "method": "POST", - "path": "/foo" - }, - "request": { - "type": "body", - "pathParameters": [], - "body": null - }, - "response": { - "type": "json" - }, - "examples": null - }, - "endpoint_dataservice.upload": { - "auth": null, - "declaration": { - "name": { - "originalName": "upload", + "originalName": "Upload", "camelCase": { "unsafeName": "upload", "safeName": "upload" @@ -2546,43 +2569,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -2616,43 +2639,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -2741,11 +2764,11 @@ }, "examples": null }, - "endpoint_dataservice.delete": { + "endpoint_dataService.Delete": { "auth": null, "declaration": { "name": { - "originalName": "delete", + "originalName": "Delete", "camelCase": { "unsafeName": "delete", "safeName": "delete" @@ -2766,43 +2789,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -2836,43 +2859,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3030,11 +3053,11 @@ }, "examples": null }, - "endpoint_dataservice.describe": { + "endpoint_dataService.Describe": { "auth": null, "declaration": { "name": { - "originalName": "describe", + "originalName": "Describe", "camelCase": { "unsafeName": "describe", "safeName": "describe" @@ -3055,43 +3078,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3125,43 +3148,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3250,11 +3273,11 @@ }, "examples": null }, - "endpoint_dataservice.fetch": { + "endpoint_dataService.Fetch": { "auth": null, "declaration": { "name": { - "originalName": "fetch", + "originalName": "Fetch", "camelCase": { "unsafeName": "fetch", "safeName": "fetch" @@ -3275,43 +3298,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3345,43 +3368,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3470,11 +3493,11 @@ }, "examples": null }, - "endpoint_dataservice.list": { + "endpoint_dataService.List": { "auth": null, "declaration": { "name": { - "originalName": "list", + "originalName": "List", "camelCase": { "unsafeName": "list", "safeName": "list" @@ -3495,43 +3518,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3565,43 +3588,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3753,11 +3776,11 @@ }, "examples": null }, - "endpoint_dataservice.query": { + "endpoint_dataService.Query": { "auth": null, "declaration": { "name": { - "originalName": "query", + "originalName": "Query", "camelCase": { "unsafeName": "query", "safeName": "query" @@ -3778,43 +3801,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -3848,43 +3871,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -4207,11 +4230,11 @@ }, "examples": null }, - "endpoint_dataservice.update": { + "endpoint_dataService.Update": { "auth": null, "declaration": { "name": { - "originalName": "update", + "originalName": "Update", "camelCase": { "unsafeName": "update", "safeName": "update" @@ -4232,43 +4255,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -4302,43 +4325,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -4541,7 +4564,7 @@ "type": "optional", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } }, "propertyAccess": null, @@ -4609,12 +4632,45 @@ "type": "list", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } } }, "propertyAccess": null, "variable": null + }, + { + "name": { + "name": { + "originalName": "aspect_ratio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" + } + }, + "wireValue": "aspect_ratio" + }, + "typeReference": { + "type": "optional", + "value": { + "type": "named", + "value": "type_:AspectRatio" + } + }, + "propertyAccess": null, + "variable": null } ] }, @@ -4627,6 +4683,48 @@ "type": "json" }, "examples": null + }, + "endpoint_.postFoo": { + "auth": null, + "declaration": { + "name": { + "originalName": "postFoo", + "camelCase": { + "unsafeName": "postFoo", + "safeName": "postFoo" + }, + "snakeCase": { + "unsafeName": "post_foo", + "safeName": "post_foo" + }, + "screamingSnakeCase": { + "unsafeName": "POST_FOO", + "safeName": "POST_FOO" + }, + "pascalCase": { + "unsafeName": "PostFoo", + "safeName": "PostFoo" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + } + }, + "location": { + "method": "POST", + "path": "/foo" + }, + "request": { + "type": "body", + "pathParameters": [], + "body": null + }, + "response": { + "type": "json" + }, + "examples": null } }, "pathParameters": [], diff --git a/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto.json b/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto.json index 92a0f9d26f16..d3558e997818 100644 --- a/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto.json +++ b/packages/cli/generation/ir-generator-tests/src/dynamic-snippets/__test__/test-definitions/csharp-grpc-proto.json @@ -363,11 +363,11 @@ }, "headers": [], "endpoints": { - "endpoint_userservice.create": { + "endpoint_userService.Create": { "auth": null, "declaration": { "name": { - "originalName": "create", + "originalName": "Create", "camelCase": { "unsafeName": "create", "safeName": "create" @@ -388,43 +388,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } } @@ -458,43 +458,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } } diff --git a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto-exhaustive.json b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto-exhaustive.json index 9a302eeee5cd..6281fc62b896 100644 --- a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto-exhaustive.json +++ b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto-exhaustive.json @@ -31,73 +31,35 @@ "headers": [], "idempotencyHeaders": [], "types": { - "type_dataservice:IndexType": { + "type_:AspectRatio": { "inline": null, "name": { "name": { - "originalName": "IndexType", + "originalName": "AspectRatio", "camelCase": { - "unsafeName": "indexType", - "safeName": "indexType" + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" }, "snakeCase": { - "unsafeName": "index_type", - "safeName": "index_type" + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE", - "safeName": "INDEX_TYPE" + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" }, "pascalCase": { - "unsafeName": "IndexType", - "safeName": "IndexType" + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType" + "typeId": "type_:AspectRatio" }, "shape": { "_type": "enum", @@ -106,25 +68,25 @@ { "name": { "name": { - "originalName": "INDEX_TYPE_INVALID", + "originalName": "ASPECT_RATIO_UNSPECIFIED", "camelCase": { - "unsafeName": "indexTypeInvalid", - "safeName": "indexTypeInvalid" + "unsafeName": "aspectRatioUnspecified", + "safeName": "aspectRatioUnspecified" }, "snakeCase": { - "unsafeName": "index_type_invalid", - "safeName": "index_type_invalid" + "unsafeName": "aspect_ratio_unspecified", + "safeName": "aspect_ratio_unspecified" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_INVALID", - "safeName": "INDEX_TYPE_INVALID" + "unsafeName": "ASPECT_RATIO_UNSPECIFIED", + "safeName": "ASPECT_RATIO_UNSPECIFIED" }, "pascalCase": { - "unsafeName": "IndexTypeInvalid", - "safeName": "IndexTypeInvalid" + "unsafeName": "AspectRatioUnspecified", + "safeName": "AspectRatioUnspecified" } }, - "wireValue": "INDEX_TYPE_INVALID" + "wireValue": "ASPECT_RATIO_UNSPECIFIED" }, "availability": null, "docs": null @@ -132,25 +94,25 @@ { "name": { "name": { - "originalName": "INDEX_TYPE_DEFAULT", + "originalName": "ASPECT_RATIO_1_1", "camelCase": { - "unsafeName": "indexTypeDefault", - "safeName": "indexTypeDefault" + "unsafeName": "aspectRatio11", + "safeName": "aspectRatio11" }, "snakeCase": { - "unsafeName": "index_type_default", - "safeName": "index_type_default" + "unsafeName": "aspect_ratio11", + "safeName": "aspect_ratio11" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_DEFAULT", - "safeName": "INDEX_TYPE_DEFAULT" + "unsafeName": "ASPECT_RATIO11", + "safeName": "ASPECT_RATIO11" }, "pascalCase": { - "unsafeName": "IndexTypeDefault", - "safeName": "IndexTypeDefault" + "unsafeName": "AspectRatio11", + "safeName": "AspectRatio11" } }, - "wireValue": "INDEX_TYPE_DEFAULT" + "wireValue": "ASPECT_RATIO_1_1" }, "availability": null, "docs": null @@ -158,25 +120,77 @@ { "name": { "name": { - "originalName": "INDEX_TYPE_STRICT", + "originalName": "ASPECT_RATIO_16_9", "camelCase": { - "unsafeName": "indexTypeStrict", - "safeName": "indexTypeStrict" + "unsafeName": "aspectRatio169", + "safeName": "aspectRatio169" }, "snakeCase": { - "unsafeName": "index_type_strict", - "safeName": "index_type_strict" + "unsafeName": "aspect_ratio169", + "safeName": "aspect_ratio169" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_STRICT", - "safeName": "INDEX_TYPE_STRICT" + "unsafeName": "ASPECT_RATIO169", + "safeName": "ASPECT_RATIO169" }, "pascalCase": { - "unsafeName": "IndexTypeStrict", - "safeName": "IndexTypeStrict" + "unsafeName": "AspectRatio169", + "safeName": "AspectRatio169" } }, - "wireValue": "INDEX_TYPE_STRICT" + "wireValue": "ASPECT_RATIO_16_9" + }, + "availability": null, + "docs": null + }, + { + "name": { + "name": { + "originalName": "ASPECT_RATIO_9_16", + "camelCase": { + "unsafeName": "aspectRatio916", + "safeName": "aspectRatio916" + }, + "snakeCase": { + "unsafeName": "aspect_ratio916", + "safeName": "aspect_ratio916" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO916", + "safeName": "ASPECT_RATIO916" + }, + "pascalCase": { + "unsafeName": "AspectRatio916", + "safeName": "AspectRatio916" + } + }, + "wireValue": "ASPECT_RATIO_9_16" + }, + "availability": null, + "docs": null + }, + { + "name": { + "name": { + "originalName": "ASPECT_RATIO_4_3", + "camelCase": { + "unsafeName": "aspectRatio43", + "safeName": "aspectRatio43" + }, + "snakeCase": { + "unsafeName": "aspect_ratio43", + "safeName": "aspect_ratio43" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO43", + "safeName": "ASPECT_RATIO43" + }, + "pascalCase": { + "unsafeName": "AspectRatio43", + "safeName": "AspectRatio43" + } + }, + "wireValue": "ASPECT_RATIO_4_3" }, "availability": null, "docs": null @@ -203,22 +217,22 @@ } }, "name": { - "originalName": "IndexType", + "originalName": "AspectRatio", "camelCase": { - "unsafeName": "indexType", - "safeName": "indexType" + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" }, "snakeCase": { - "unsafeName": "index_type", - "safeName": "index_type" + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE", - "safeName": "INDEX_TYPE" + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" }, "pascalCase": { - "unsafeName": "IndexType", - "safeName": "IndexType" + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" } } } @@ -1524,26 +1538,26 @@ "availability": null, "docs": null }, - "type_:IndexedData": { + "type_:IndexType": { "inline": null, "name": { "name": { - "originalName": "IndexedData", + "originalName": "IndexType", "camelCase": { - "unsafeName": "indexedData", - "safeName": "indexedData" + "unsafeName": "indexType", + "safeName": "indexType" }, "snakeCase": { - "unsafeName": "indexed_data", - "safeName": "indexed_data" + "unsafeName": "index_type", + "safeName": "index_type" }, "screamingSnakeCase": { - "unsafeName": "INDEXED_DATA", - "safeName": "INDEXED_DATA" + "unsafeName": "INDEX_TYPE", + "safeName": "INDEX_TYPE" }, "pascalCase": { - "unsafeName": "IndexedData", - "safeName": "IndexedData" + "unsafeName": "IndexType", + "safeName": "IndexType" } }, "fernFilepath": { @@ -1552,52 +1566,34 @@ "file": null }, "displayName": null, - "typeId": "type_:IndexedData" + "typeId": "type_:IndexType" }, "shape": { - "_type": "object", - "extends": [], - "properties": [ + "_type": "enum", + "default": null, + "values": [ { "name": { "name": { - "originalName": "indices", + "originalName": "INDEX_TYPE_INVALID", "camelCase": { - "unsafeName": "indices", - "safeName": "indices" + "unsafeName": "indexTypeInvalid", + "safeName": "indexTypeInvalid" }, "snakeCase": { - "unsafeName": "indices", - "safeName": "indices" + "unsafeName": "index_type_invalid", + "safeName": "index_type_invalid" }, "screamingSnakeCase": { - "unsafeName": "INDICES", - "safeName": "INDICES" + "unsafeName": "INDEX_TYPE_INVALID", + "safeName": "INDEX_TYPE_INVALID" }, "pascalCase": { - "unsafeName": "Indices", - "safeName": "Indices" + "unsafeName": "IndexTypeInvalid", + "safeName": "IndexTypeInvalid" } }, - "wireValue": "indices" - }, - "valueType": { - "_type": "container", - "container": { - "_type": "list", - "list": { - "_type": "primitive", - "primitive": { - "v1": "UINT", - "v2": null - } - } - } - }, - "propertyAccess": null, - "v2Examples": { - "userSpecifiedExamples": {}, - "autogeneratedExamples": {} + "wireValue": "INDEX_TYPE_INVALID" }, "availability": null, "docs": null @@ -1605,50 +1601,57 @@ { "name": { "name": { - "originalName": "values", + "originalName": "INDEX_TYPE_DEFAULT", "camelCase": { - "unsafeName": "values", - "safeName": "values" + "unsafeName": "indexTypeDefault", + "safeName": "indexTypeDefault" }, "snakeCase": { - "unsafeName": "values", - "safeName": "values" + "unsafeName": "index_type_default", + "safeName": "index_type_default" }, "screamingSnakeCase": { - "unsafeName": "VALUES", - "safeName": "VALUES" + "unsafeName": "INDEX_TYPE_DEFAULT", + "safeName": "INDEX_TYPE_DEFAULT" }, "pascalCase": { - "unsafeName": "Values", - "safeName": "Values" + "unsafeName": "IndexTypeDefault", + "safeName": "IndexTypeDefault" } }, - "wireValue": "values" + "wireValue": "INDEX_TYPE_DEFAULT" }, - "valueType": { - "_type": "container", - "container": { - "_type": "list", - "list": { - "_type": "primitive", - "primitive": { - "v1": "FLOAT", - "v2": null - } + "availability": null, + "docs": null + }, + { + "name": { + "name": { + "originalName": "INDEX_TYPE_STRICT", + "camelCase": { + "unsafeName": "indexTypeStrict", + "safeName": "indexTypeStrict" + }, + "snakeCase": { + "unsafeName": "index_type_strict", + "safeName": "index_type_strict" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_STRICT", + "safeName": "INDEX_TYPE_STRICT" + }, + "pascalCase": { + "unsafeName": "IndexTypeStrict", + "safeName": "IndexTypeStrict" } - } - }, - "propertyAccess": null, - "v2Examples": { - "userSpecifiedExamples": {}, - "autogeneratedExamples": {} + }, + "wireValue": "INDEX_TYPE_STRICT" }, "availability": null, "docs": null } ], - "extra-properties": false, - "extendedProperties": [] + "forwardCompatible": null }, "referencedTypes": [], "encoding": { @@ -1669,22 +1672,22 @@ } }, "name": { - "originalName": "IndexedData", + "originalName": "IndexType", "camelCase": { - "unsafeName": "indexedData", - "safeName": "indexedData" + "unsafeName": "indexType", + "safeName": "indexType" }, "snakeCase": { - "unsafeName": "indexed_data", - "safeName": "indexed_data" + "unsafeName": "index_type", + "safeName": "index_type" }, "screamingSnakeCase": { - "unsafeName": "INDEXED_DATA", - "safeName": "INDEXED_DATA" + "unsafeName": "INDEX_TYPE", + "safeName": "INDEX_TYPE" }, "pascalCase": { - "unsafeName": "IndexedData", - "safeName": "IndexedData" + "unsafeName": "IndexType", + "safeName": "IndexType" } } } @@ -1695,15 +1698,186 @@ "availability": null, "docs": null }, - "type_:ListElement": { + "type_:IndexedData": { "inline": null, "name": { "name": { - "originalName": "ListElement", + "originalName": "IndexedData", "camelCase": { - "unsafeName": "listElement", - "safeName": "listElement" - }, + "unsafeName": "indexedData", + "safeName": "indexedData" + }, + "snakeCase": { + "unsafeName": "indexed_data", + "safeName": "indexed_data" + }, + "screamingSnakeCase": { + "unsafeName": "INDEXED_DATA", + "safeName": "INDEXED_DATA" + }, + "pascalCase": { + "unsafeName": "IndexedData", + "safeName": "IndexedData" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + }, + "displayName": null, + "typeId": "type_:IndexedData" + }, + "shape": { + "_type": "object", + "extends": [], + "properties": [ + { + "name": { + "name": { + "originalName": "indices", + "camelCase": { + "unsafeName": "indices", + "safeName": "indices" + }, + "snakeCase": { + "unsafeName": "indices", + "safeName": "indices" + }, + "screamingSnakeCase": { + "unsafeName": "INDICES", + "safeName": "INDICES" + }, + "pascalCase": { + "unsafeName": "Indices", + "safeName": "Indices" + } + }, + "wireValue": "indices" + }, + "valueType": { + "_type": "container", + "container": { + "_type": "list", + "list": { + "_type": "primitive", + "primitive": { + "v1": "UINT", + "v2": null + } + } + } + }, + "propertyAccess": null, + "v2Examples": { + "userSpecifiedExamples": {}, + "autogeneratedExamples": {} + }, + "availability": null, + "docs": null + }, + { + "name": { + "name": { + "originalName": "values", + "camelCase": { + "unsafeName": "values", + "safeName": "values" + }, + "snakeCase": { + "unsafeName": "values", + "safeName": "values" + }, + "screamingSnakeCase": { + "unsafeName": "VALUES", + "safeName": "VALUES" + }, + "pascalCase": { + "unsafeName": "Values", + "safeName": "Values" + } + }, + "wireValue": "values" + }, + "valueType": { + "_type": "container", + "container": { + "_type": "list", + "list": { + "_type": "primitive", + "primitive": { + "v1": "FLOAT", + "v2": null + } + } + } + }, + "propertyAccess": null, + "v2Examples": { + "userSpecifiedExamples": {}, + "autogeneratedExamples": {} + }, + "availability": null, + "docs": null + } + ], + "extra-properties": false, + "extendedProperties": [] + }, + "referencedTypes": [], + "encoding": { + "json": null, + "proto": {} + }, + "source": { + "type": "proto", + "value": { + "type": "userDefined", + "file": { + "filepath": "proto/data/v1/data.proto", + "packageName": "data.v1", + "options": { + "csharp": { + "namespace": "Data.V1.Grpc" + } + } + }, + "name": { + "originalName": "IndexedData", + "camelCase": { + "unsafeName": "indexedData", + "safeName": "indexedData" + }, + "snakeCase": { + "unsafeName": "indexed_data", + "safeName": "indexed_data" + }, + "screamingSnakeCase": { + "unsafeName": "INDEXED_DATA", + "safeName": "INDEXED_DATA" + }, + "pascalCase": { + "unsafeName": "IndexedData", + "safeName": "IndexedData" + } + } + } + }, + "userProvidedExamples": [], + "autogeneratedExamples": [], + "v2Examples": null, + "availability": null, + "docs": null + }, + "type_:ListElement": { + "inline": null, + "name": { + "name": { + "originalName": "ListElement", + "camelCase": { + "unsafeName": "listElement", + "safeName": "listElement" + }, "snakeCase": { "unsafeName": "list_element", "safeName": "list_element" @@ -3838,50 +4012,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -4016,50 +4152,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -4080,7 +4178,7 @@ "extendedProperties": [] }, "referencedTypes": [ - "type_dataservice:IndexType", + "type_:IndexType", "type_:Any" ], "encoding": { @@ -4704,49 +4802,49 @@ }, "errors": {}, "services": { - "service_dataservice": { + "service_dataService": { "availability": null, "name": { "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -4797,24 +4895,24 @@ }, "endpoints": [ { - "id": "endpoint_dataservice.foo", + "id": "endpoint_dataService.Upload", "name": { - "originalName": "foo", + "originalName": "Upload", "camelCase": { - "unsafeName": "foo", - "safeName": "foo" + "unsafeName": "upload", + "safeName": "upload" }, "snakeCase": { - "unsafeName": "foo", - "safeName": "foo" + "unsafeName": "upload", + "safeName": "upload" }, "screamingSnakeCase": { - "unsafeName": "FOO", - "safeName": "FOO" + "unsafeName": "UPLOAD", + "safeName": "UPLOAD" }, "pascalCase": { - "unsafeName": "Foo", - "safeName": "Foo" + "unsafeName": "Upload", + "safeName": "Upload" } }, "displayName": null, @@ -4826,252 +4924,11 @@ "method": "POST", "basePath": null, "path": { - "head": "/foo", + "head": "/data", "parts": [] }, "fullPath": { - "head": "foo", - "parts": [] - }, - "pathParameters": [], - "allPathParameters": [], - "queryParameters": [], - "headers": [], - "requestBody": null, - "v2RequestBodies": null, - "sdkRequest": null, - "response": { - "body": { - "type": "json", - "value": { - "type": "response", - "responseBodyType": { - "_type": "container", - "container": { - "_type": "map", - "keyType": { - "_type": "primitive", - "primitive": { - "v1": "STRING", - "v2": { - "type": "string", - "default": null, - "validation": null - } - } - }, - "valueType": { - "_type": "unknown" - } - } - }, - "docs": null, - "v2Examples": null - } - }, - "status-code": 200, - "isWildcardStatusCode": null, - "docs": null - }, - "v2Responses": null, - "errors": [], - "userSpecifiedExamples": [ - { - "example": { - "id": "82a32050", - "name": null, - "url": "/foo", - "rootPathParameters": [], - "endpointPathParameters": [], - "servicePathParameters": [], - "endpointHeaders": [], - "serviceHeaders": [], - "queryParameters": [], - "request": null, - "response": { - "type": "ok", - "value": { - "type": "body", - "value": { - "shape": { - "type": "container", - "container": { - "type": "map", - "map": [ - { - "key": { - "shape": { - "type": "primitive", - "primitive": { - "type": "string", - "string": { - "original": "key" - } - } - }, - "jsonExample": "key" - }, - "value": { - "shape": { - "type": "unknown", - "unknown": "value" - }, - "jsonExample": "value" - } - } - ], - "keyType": { - "_type": "primitive", - "primitive": { - "v1": "STRING", - "v2": { - "type": "string", - "default": null, - "validation": null - } - } - }, - "valueType": { - "_type": "unknown" - } - } - }, - "jsonExample": { - "key": "value" - } - } - } - }, - "docs": null - }, - "codeSamples": null - } - ], - "autogeneratedExamples": [ - { - "example": { - "id": "ae765f47", - "url": "/foo", - "name": null, - "endpointHeaders": [], - "endpointPathParameters": [], - "queryParameters": [], - "servicePathParameters": [], - "serviceHeaders": [], - "rootPathParameters": [], - "request": null, - "response": { - "type": "ok", - "value": { - "type": "body", - "value": { - "shape": { - "type": "container", - "container": { - "type": "map", - "map": [ - { - "key": { - "shape": { - "type": "primitive", - "primitive": { - "type": "string", - "string": { - "original": "string" - } - } - }, - "jsonExample": "string" - }, - "value": { - "shape": { - "type": "unknown", - "unknown": { - "key": "value" - } - }, - "jsonExample": { - "key": "value" - } - } - } - ], - "keyType": { - "_type": "primitive", - "primitive": { - "v1": "STRING", - "v2": { - "type": "string", - "default": null, - "validation": null - } - } - }, - "valueType": { - "_type": "unknown" - } - } - }, - "jsonExample": { - "string": { - "key": "value" - } - } - } - } - }, - "docs": null - } - } - ], - "pagination": null, - "transport": { - "type": "http" - }, - "v2Examples": null, - "source": null, - "audiences": null, - "retries": null, - "apiPlayground": null, - "responseHeaders": [], - "availability": null, - "docs": null - }, - { - "id": "endpoint_dataservice.upload", - "name": { - "originalName": "upload", - "camelCase": { - "unsafeName": "upload", - "safeName": "upload" - }, - "snakeCase": { - "unsafeName": "upload", - "safeName": "upload" - }, - "screamingSnakeCase": { - "unsafeName": "UPLOAD", - "safeName": "UPLOAD" - }, - "pascalCase": { - "unsafeName": "Upload", - "safeName": "Upload" - } - }, - "displayName": null, - "auth": false, - "security": null, - "idempotent": false, - "baseUrl": null, - "v2BaseUrls": null, - "method": "POST", - "basePath": null, - "path": { - "head": "/data", - "parts": [] - }, - "fullPath": { - "head": "data", + "head": "data", "parts": [] }, "pathParameters": [], @@ -6851,9 +6708,9 @@ "docs": null }, { - "id": "endpoint_dataservice.delete", + "id": "endpoint_dataService.Delete", "name": { - "originalName": "delete", + "originalName": "Delete", "camelCase": { "unsafeName": "delete", "safeName": "delete" @@ -7603,9 +7460,9 @@ "docs": null }, { - "id": "endpoint_dataservice.describe", + "id": "endpoint_dataService.Describe", "name": { - "originalName": "describe", + "originalName": "Describe", "camelCase": { "unsafeName": "describe", "safeName": "describe" @@ -9257,9 +9114,9 @@ "docs": null }, { - "id": "endpoint_dataservice.fetch", + "id": "endpoint_dataService.Fetch", "name": { - "originalName": "fetch", + "originalName": "Fetch", "camelCase": { "unsafeName": "fetch", "safeName": "fetch" @@ -12311,9 +12168,9 @@ "docs": null }, { - "id": "endpoint_dataservice.list", + "id": "endpoint_dataService.List", "name": { - "originalName": "list", + "originalName": "List", "camelCase": { "unsafeName": "list", "safeName": "list" @@ -14556,9 +14413,9 @@ "docs": null }, { - "id": "endpoint_dataservice.query", + "id": "endpoint_dataService.Query", "name": { - "originalName": "query", + "originalName": "Query", "camelCase": { "unsafeName": "query", "safeName": "query" @@ -24764,9 +24621,9 @@ "docs": null }, { - "id": "endpoint_dataservice.update", + "id": "endpoint_dataService.Update", "name": { - "originalName": "update", + "originalName": "Update", "camelCase": { "unsafeName": "update", "safeName": "update" @@ -25152,50 +25009,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -25330,50 +25149,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -25388,8 +25169,76 @@ "propertyAccess": null, "availability": null, "docs": null - } - ], + }, + { + "name": { + "name": { + "originalName": "aspect_ratio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" + } + }, + "wireValue": "aspect_ratio" + }, + "valueType": { + "_type": "container", + "container": { + "_type": "optional", + "optional": { + "_type": "named", + "name": { + "originalName": "AspectRatio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + }, + "displayName": null, + "typeId": "type_:AspectRatio", + "default": null, + "inline": null + } + } + }, + "v2Examples": { + "userSpecifiedExamples": {}, + "autogeneratedExamples": {} + }, + "propertyAccess": null, + "availability": null, + "docs": null + } + ], "extra-properties": false, "extendedProperties": [], "docs": null, @@ -25716,49 +25565,11 @@ "shape": { "type": "named", "typeName": { - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "name": { "originalName": "IndexType", @@ -25831,50 +25642,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -26132,49 +25905,11 @@ "shape": { "type": "named", "typeName": { - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "name": { "originalName": "IndexType", @@ -26248,50 +25983,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -26327,50 +26024,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -26437,7 +26096,7 @@ "autogeneratedExamples": [ { "example": { - "id": "2c3bbd31", + "id": "7d56ae3b", "url": "/data/update", "name": null, "endpointHeaders": [], @@ -26760,50 +26419,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -26932,50 +26553,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -26984,6 +26567,71 @@ } } } + }, + { + "name": { + "name": { + "originalName": "aspect_ratio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" + } + }, + "wireValue": "aspect_ratio" + }, + "originalTypeDeclaration": null, + "value": { + "shape": { + "type": "container", + "container": { + "type": "optional", + "optional": null, + "valueType": { + "_type": "named", + "name": { + "originalName": "AspectRatio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + }, + "displayName": null, + "typeId": "type_:AspectRatio", + "default": null, + "inline": null + } + } + } + } } ], "extraProperties": null, @@ -27186,50 +26834,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType" + "typeId": "type_:IndexType" } }, "jsonExample": "INDEX_TYPE_INVALID" @@ -27256,50 +26866,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -27612,50 +27184,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType" + "typeId": "type_:IndexType" } }, "jsonExample": "INDEX_TYPE_INVALID" @@ -27709,50 +27243,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType" + "typeId": "type_:IndexType" } }, "jsonExample": "INDEX_TYPE_INVALID" @@ -27780,50 +27276,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -27860,50 +27318,12 @@ } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], + "allParts": [], "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } + "file": null }, "displayName": null, - "typeId": "type_dataservice:IndexType", + "typeId": "type_:IndexType", "default": null, "inline": null } @@ -27983,6 +27403,272 @@ } ], "audiences": null + }, + "service_": { + "availability": null, + "name": { + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + } + }, + "displayName": null, + "basePath": { + "head": "", + "parts": [] + }, + "headers": [], + "pathParameters": [], + "encoding": { + "json": {}, + "proto": null + }, + "transport": { + "type": "http" + }, + "endpoints": [ + { + "id": "endpoint_.postFoo", + "name": { + "originalName": "postFoo", + "camelCase": { + "unsafeName": "postFoo", + "safeName": "postFoo" + }, + "snakeCase": { + "unsafeName": "post_foo", + "safeName": "post_foo" + }, + "screamingSnakeCase": { + "unsafeName": "POST_FOO", + "safeName": "POST_FOO" + }, + "pascalCase": { + "unsafeName": "PostFoo", + "safeName": "PostFoo" + } + }, + "displayName": null, + "auth": false, + "security": null, + "idempotent": false, + "baseUrl": null, + "v2BaseUrls": null, + "method": "POST", + "basePath": null, + "path": { + "head": "/foo", + "parts": [] + }, + "fullPath": { + "head": "foo", + "parts": [] + }, + "pathParameters": [], + "allPathParameters": [], + "queryParameters": [], + "headers": [], + "requestBody": null, + "v2RequestBodies": null, + "sdkRequest": null, + "response": { + "body": { + "type": "json", + "value": { + "type": "response", + "responseBodyType": { + "_type": "container", + "container": { + "_type": "map", + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "docs": null, + "v2Examples": null + } + }, + "status-code": 200, + "isWildcardStatusCode": null, + "docs": null + }, + "v2Responses": null, + "errors": [], + "userSpecifiedExamples": [ + { + "example": { + "id": "82a32050", + "name": null, + "url": "/foo", + "rootPathParameters": [], + "endpointPathParameters": [], + "servicePathParameters": [], + "endpointHeaders": [], + "serviceHeaders": [], + "queryParameters": [], + "request": null, + "response": { + "type": "ok", + "value": { + "type": "body", + "value": { + "shape": { + "type": "container", + "container": { + "type": "map", + "map": [ + { + "key": { + "shape": { + "type": "primitive", + "primitive": { + "type": "string", + "string": { + "original": "key" + } + } + }, + "jsonExample": "key" + }, + "value": { + "shape": { + "type": "unknown", + "unknown": "value" + }, + "jsonExample": "value" + } + } + ], + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "jsonExample": { + "key": "value" + } + } + } + }, + "docs": null + }, + "codeSamples": null + } + ], + "autogeneratedExamples": [ + { + "example": { + "id": "ae765f47", + "url": "/foo", + "name": null, + "endpointHeaders": [], + "endpointPathParameters": [], + "queryParameters": [], + "servicePathParameters": [], + "serviceHeaders": [], + "rootPathParameters": [], + "request": null, + "response": { + "type": "ok", + "value": { + "type": "body", + "value": { + "shape": { + "type": "container", + "container": { + "type": "map", + "map": [ + { + "key": { + "shape": { + "type": "primitive", + "primitive": { + "type": "string", + "string": { + "original": "string" + } + } + }, + "jsonExample": "string" + }, + "value": { + "shape": { + "type": "unknown", + "unknown": { + "key": "value" + } + }, + "jsonExample": { + "key": "value" + } + } + } + ], + "keyType": { + "_type": "primitive", + "primitive": { + "v1": "STRING", + "v2": { + "type": "string", + "default": null, + "validation": null + } + } + }, + "valueType": { + "_type": "unknown" + } + } + }, + "jsonExample": { + "string": { + "key": "value" + } + } + } + } + }, + "docs": null + } + } + ], + "pagination": null, + "transport": null, + "v2Examples": null, + "source": null, + "audiences": null, + "retries": null, + "apiPlayground": null, + "responseHeaders": [], + "availability": null, + "docs": null + } + ], + "audiences": null } }, "constants": { @@ -28053,12 +27739,13 @@ "variables": [], "serviceTypeReferenceInfo": { "typesReferencedOnlyByService": { - "service_dataservice": [ - "type_dataservice:IndexType", + "service_dataService": [ + "type_:AspectRatio", "type_:Column", "type_:DeleteResponse", "type_:DescribeResponse", "type_:FetchResponse", + "type_:IndexType", "type_:IndexedData", "type_:ListElement", "type_:ListResponse", @@ -28088,138 +27775,144 @@ "dynamic": { "version": "1.0.0", "types": { - "type_dataservice:IndexType": { + "type_:AspectRatio": { "type": "enum", "declaration": { "name": { - "originalName": "IndexType", + "originalName": "AspectRatio", "camelCase": { - "unsafeName": "indexType", - "safeName": "indexType" + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" }, "snakeCase": { - "unsafeName": "index_type", - "safeName": "index_type" + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE", - "safeName": "INDEX_TYPE" + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" }, "pascalCase": { - "unsafeName": "IndexType", - "safeName": "IndexType" + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" } }, "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } + "allParts": [], + "packagePath": [], + "file": null + } + }, + "values": [ + { + "name": { + "originalName": "ASPECT_RATIO_UNSPECIFIED", + "camelCase": { + "unsafeName": "aspectRatioUnspecified", + "safeName": "aspectRatioUnspecified" + }, + "snakeCase": { + "unsafeName": "aspect_ratio_unspecified", + "safeName": "aspect_ratio_unspecified" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO_UNSPECIFIED", + "safeName": "ASPECT_RATIO_UNSPECIFIED" + }, + "pascalCase": { + "unsafeName": "AspectRatioUnspecified", + "safeName": "AspectRatioUnspecified" } - ], - "packagePath": [], - "file": { - "originalName": "dataservice", + }, + "wireValue": "ASPECT_RATIO_UNSPECIFIED" + }, + { + "name": { + "originalName": "ASPECT_RATIO_1_1", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "aspectRatio11", + "safeName": "aspectRatio11" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "aspect_ratio11", + "safeName": "aspect_ratio11" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "ASPECT_RATIO11", + "safeName": "ASPECT_RATIO11" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "AspectRatio11", + "safeName": "AspectRatio11" } - } - } - }, - "values": [ + }, + "wireValue": "ASPECT_RATIO_1_1" + }, { "name": { - "originalName": "INDEX_TYPE_INVALID", + "originalName": "ASPECT_RATIO_16_9", "camelCase": { - "unsafeName": "indexTypeInvalid", - "safeName": "indexTypeInvalid" + "unsafeName": "aspectRatio169", + "safeName": "aspectRatio169" }, "snakeCase": { - "unsafeName": "index_type_invalid", - "safeName": "index_type_invalid" + "unsafeName": "aspect_ratio169", + "safeName": "aspect_ratio169" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_INVALID", - "safeName": "INDEX_TYPE_INVALID" + "unsafeName": "ASPECT_RATIO169", + "safeName": "ASPECT_RATIO169" }, "pascalCase": { - "unsafeName": "IndexTypeInvalid", - "safeName": "IndexTypeInvalid" + "unsafeName": "AspectRatio169", + "safeName": "AspectRatio169" } }, - "wireValue": "INDEX_TYPE_INVALID" + "wireValue": "ASPECT_RATIO_16_9" }, { "name": { - "originalName": "INDEX_TYPE_DEFAULT", + "originalName": "ASPECT_RATIO_9_16", "camelCase": { - "unsafeName": "indexTypeDefault", - "safeName": "indexTypeDefault" + "unsafeName": "aspectRatio916", + "safeName": "aspectRatio916" }, "snakeCase": { - "unsafeName": "index_type_default", - "safeName": "index_type_default" + "unsafeName": "aspect_ratio916", + "safeName": "aspect_ratio916" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_DEFAULT", - "safeName": "INDEX_TYPE_DEFAULT" + "unsafeName": "ASPECT_RATIO916", + "safeName": "ASPECT_RATIO916" }, "pascalCase": { - "unsafeName": "IndexTypeDefault", - "safeName": "IndexTypeDefault" + "unsafeName": "AspectRatio916", + "safeName": "AspectRatio916" } }, - "wireValue": "INDEX_TYPE_DEFAULT" + "wireValue": "ASPECT_RATIO_9_16" }, { "name": { - "originalName": "INDEX_TYPE_STRICT", + "originalName": "ASPECT_RATIO_4_3", "camelCase": { - "unsafeName": "indexTypeStrict", - "safeName": "indexTypeStrict" + "unsafeName": "aspectRatio43", + "safeName": "aspectRatio43" }, "snakeCase": { - "unsafeName": "index_type_strict", - "safeName": "index_type_strict" + "unsafeName": "aspect_ratio43", + "safeName": "aspect_ratio43" }, "screamingSnakeCase": { - "unsafeName": "INDEX_TYPE_STRICT", - "safeName": "INDEX_TYPE_STRICT" + "unsafeName": "ASPECT_RATIO43", + "safeName": "ASPECT_RATIO43" }, "pascalCase": { - "unsafeName": "IndexTypeStrict", - "safeName": "IndexTypeStrict" + "unsafeName": "AspectRatio43", + "safeName": "AspectRatio43" } }, - "wireValue": "INDEX_TYPE_STRICT" + "wireValue": "ASPECT_RATIO_4_3" } ] }, @@ -28957,6 +28650,103 @@ } ] }, + "type_:IndexType": { + "type": "enum", + "declaration": { + "name": { + "originalName": "IndexType", + "camelCase": { + "unsafeName": "indexType", + "safeName": "indexType" + }, + "snakeCase": { + "unsafeName": "index_type", + "safeName": "index_type" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE", + "safeName": "INDEX_TYPE" + }, + "pascalCase": { + "unsafeName": "IndexType", + "safeName": "IndexType" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + } + }, + "values": [ + { + "name": { + "originalName": "INDEX_TYPE_INVALID", + "camelCase": { + "unsafeName": "indexTypeInvalid", + "safeName": "indexTypeInvalid" + }, + "snakeCase": { + "unsafeName": "index_type_invalid", + "safeName": "index_type_invalid" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_INVALID", + "safeName": "INDEX_TYPE_INVALID" + }, + "pascalCase": { + "unsafeName": "IndexTypeInvalid", + "safeName": "IndexTypeInvalid" + } + }, + "wireValue": "INDEX_TYPE_INVALID" + }, + { + "name": { + "originalName": "INDEX_TYPE_DEFAULT", + "camelCase": { + "unsafeName": "indexTypeDefault", + "safeName": "indexTypeDefault" + }, + "snakeCase": { + "unsafeName": "index_type_default", + "safeName": "index_type_default" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_DEFAULT", + "safeName": "INDEX_TYPE_DEFAULT" + }, + "pascalCase": { + "unsafeName": "IndexTypeDefault", + "safeName": "IndexTypeDefault" + } + }, + "wireValue": "INDEX_TYPE_DEFAULT" + }, + { + "name": { + "originalName": "INDEX_TYPE_STRICT", + "camelCase": { + "unsafeName": "indexTypeStrict", + "safeName": "indexTypeStrict" + }, + "snakeCase": { + "unsafeName": "index_type_strict", + "safeName": "index_type_strict" + }, + "screamingSnakeCase": { + "unsafeName": "INDEX_TYPE_STRICT", + "safeName": "INDEX_TYPE_STRICT" + }, + "pascalCase": { + "unsafeName": "IndexTypeStrict", + "safeName": "IndexTypeStrict" + } + }, + "wireValue": "INDEX_TYPE_STRICT" + } + ] + }, "type_:IndexedData": { "type": "object", "declaration": { @@ -30180,7 +29970,7 @@ "type": "optional", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } }, "propertyAccess": null, @@ -30248,7 +30038,7 @@ "type": "list", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } } }, @@ -30528,91 +30318,11 @@ }, "headers": [], "endpoints": { - "endpoint_dataservice.foo": { - "auth": null, - "declaration": { - "name": { - "originalName": "foo", - "camelCase": { - "unsafeName": "foo", - "safeName": "foo" - }, - "snakeCase": { - "unsafeName": "foo", - "safeName": "foo" - }, - "screamingSnakeCase": { - "unsafeName": "FOO", - "safeName": "FOO" - }, - "pascalCase": { - "unsafeName": "Foo", - "safeName": "Foo" - } - }, - "fernFilepath": { - "allParts": [ - { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - ], - "packagePath": [], - "file": { - "originalName": "dataservice", - "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" - }, - "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" - }, - "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" - } - } - } - }, - "location": { - "method": "POST", - "path": "/foo" - }, - "request": { - "type": "body", - "pathParameters": [], - "body": null - }, - "response": { - "type": "json" - }, - "examples": null - }, - "endpoint_dataservice.upload": { + "endpoint_dataService.Upload": { "auth": null, "declaration": { "name": { - "originalName": "upload", + "originalName": "Upload", "camelCase": { "unsafeName": "upload", "safeName": "upload" @@ -30633,43 +30343,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -30703,43 +30413,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -30828,11 +30538,11 @@ }, "examples": null }, - "endpoint_dataservice.delete": { + "endpoint_dataService.Delete": { "auth": null, "declaration": { "name": { - "originalName": "delete", + "originalName": "Delete", "camelCase": { "unsafeName": "delete", "safeName": "delete" @@ -30853,43 +30563,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -30923,43 +30633,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31117,11 +30827,11 @@ }, "examples": null }, - "endpoint_dataservice.describe": { + "endpoint_dataService.Describe": { "auth": null, "declaration": { "name": { - "originalName": "describe", + "originalName": "Describe", "camelCase": { "unsafeName": "describe", "safeName": "describe" @@ -31142,43 +30852,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31212,43 +30922,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31337,11 +31047,11 @@ }, "examples": null }, - "endpoint_dataservice.fetch": { + "endpoint_dataService.Fetch": { "auth": null, "declaration": { "name": { - "originalName": "fetch", + "originalName": "Fetch", "camelCase": { "unsafeName": "fetch", "safeName": "fetch" @@ -31362,43 +31072,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31432,43 +31142,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31557,11 +31267,11 @@ }, "examples": null }, - "endpoint_dataservice.list": { + "endpoint_dataService.List": { "auth": null, "declaration": { "name": { - "originalName": "list", + "originalName": "List", "camelCase": { "unsafeName": "list", "safeName": "list" @@ -31582,43 +31292,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31652,43 +31362,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31840,11 +31550,11 @@ }, "examples": null }, - "endpoint_dataservice.query": { + "endpoint_dataService.Query": { "auth": null, "declaration": { "name": { - "originalName": "query", + "originalName": "Query", "camelCase": { "unsafeName": "query", "safeName": "query" @@ -31865,43 +31575,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -31935,43 +31645,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -32294,11 +32004,11 @@ }, "examples": null }, - "endpoint_dataservice.update": { + "endpoint_dataService.Update": { "auth": null, "declaration": { "name": { - "originalName": "update", + "originalName": "Update", "camelCase": { "unsafeName": "update", "safeName": "update" @@ -32319,43 +32029,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -32389,43 +32099,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } } @@ -32628,7 +32338,7 @@ "type": "optional", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" } }, "propertyAccess": null, @@ -32696,8 +32406,41 @@ "type": "list", "value": { "type": "named", - "value": "type_dataservice:IndexType" + "value": "type_:IndexType" + } + } + }, + "propertyAccess": null, + "variable": null + }, + { + "name": { + "name": { + "originalName": "aspect_ratio", + "camelCase": { + "unsafeName": "aspectRatio", + "safeName": "aspectRatio" + }, + "snakeCase": { + "unsafeName": "aspect_ratio", + "safeName": "aspect_ratio" + }, + "screamingSnakeCase": { + "unsafeName": "ASPECT_RATIO", + "safeName": "ASPECT_RATIO" + }, + "pascalCase": { + "unsafeName": "AspectRatio", + "safeName": "AspectRatio" } + }, + "wireValue": "aspect_ratio" + }, + "typeReference": { + "type": "optional", + "value": { + "type": "named", + "value": "type_:AspectRatio" } }, "propertyAccess": null, @@ -32714,6 +32457,48 @@ "type": "json" }, "examples": null + }, + "endpoint_.postFoo": { + "auth": null, + "declaration": { + "name": { + "originalName": "postFoo", + "camelCase": { + "unsafeName": "postFoo", + "safeName": "postFoo" + }, + "snakeCase": { + "unsafeName": "post_foo", + "safeName": "post_foo" + }, + "screamingSnakeCase": { + "unsafeName": "POST_FOO", + "safeName": "POST_FOO" + }, + "pascalCase": { + "unsafeName": "PostFoo", + "safeName": "PostFoo" + } + }, + "fernFilepath": { + "allParts": [], + "packagePath": [], + "file": null + } + }, + "location": { + "method": "POST", + "path": "/foo" + }, + "request": { + "type": "body", + "pathParameters": [], + "body": null + }, + "response": { + "type": "json" + }, + "examples": null } }, "pathParameters": [], @@ -32756,74 +32541,72 @@ "generationMetadata": null, "apiPlayground": true, "subpackages": { - "subpackage_dataservice": { + "subpackage_dataService": { "name": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } }, "displayName": null, "fernFilepath": { "allParts": [ { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } ], "packagePath": [], "file": { - "originalName": "dataservice", + "originalName": "dataService", "camelCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "dataService", + "safeName": "dataService" }, "snakeCase": { - "unsafeName": "dataservice", - "safeName": "dataservice" + "unsafeName": "data_service", + "safeName": "data_service" }, "screamingSnakeCase": { - "unsafeName": "DATASERVICE", - "safeName": "DATASERVICE" + "unsafeName": "DATA_SERVICE", + "safeName": "DATA_SERVICE" }, "pascalCase": { - "unsafeName": "Dataservice", - "safeName": "Dataservice" + "unsafeName": "DataService", + "safeName": "DataService" } } }, - "service": "service_dataservice", - "types": [ - "type_dataservice:IndexType" - ], + "service": "service_dataService", + "types": [], "errors": [], "subpackages": [], "navigationConfig": null, @@ -32840,13 +32623,15 @@ "file": null }, "websocket": null, - "service": null, + "service": "service_", "types": [ + "type_:AspectRatio", "type_:Column", "type_:DeleteResponse", "type_:DescribeResponse", "type_:FetchResponse", "type_:FieldBehavior", + "type_:IndexType", "type_:IndexedData", "type_:ListElement", "type_:ListResponse", @@ -32865,7 +32650,7 @@ ], "errors": [], "subpackages": [ - "subpackage_dataservice" + "subpackage_dataService" ], "webhooks": null, "navigationConfig": null, diff --git a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto.json b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto.json index c1f421b5d434..fec720247f8e 100644 --- a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto.json +++ b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/csharp-grpc-proto.json @@ -754,49 +754,49 @@ }, "errors": {}, "services": { - "service_userservice": { + "service_userService": { "availability": null, "name": { "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } } @@ -847,9 +847,9 @@ }, "endpoints": [ { - "id": "endpoint_userservice.create", + "id": "endpoint_userService.Create", "name": { - "originalName": "create", + "originalName": "Create", "camelCase": { "unsafeName": "create", "safeName": "create" @@ -3182,7 +3182,7 @@ "variables": [], "serviceTypeReferenceInfo": { "typesReferencedOnlyByService": { - "service_userservice": [ + "service_userService": [ "type_:CreateResponse", "type_:UserModel", "type_:Metadata", @@ -3561,11 +3561,11 @@ }, "headers": [], "endpoints": { - "endpoint_userservice.create": { + "endpoint_userService.Create": { "auth": null, "declaration": { "name": { - "originalName": "create", + "originalName": "Create", "camelCase": { "unsafeName": "create", "safeName": "create" @@ -3586,43 +3586,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } } @@ -3656,43 +3656,43 @@ "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } } @@ -3890,71 +3890,71 @@ "generationMetadata": null, "apiPlayground": true, "subpackages": { - "subpackage_userservice": { + "subpackage_userService": { "name": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } }, "displayName": null, "fernFilepath": { "allParts": [ { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } ], "packagePath": [], "file": { - "originalName": "userservice", + "originalName": "userService", "camelCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "userService", + "safeName": "userService" }, "snakeCase": { - "unsafeName": "userservice", - "safeName": "userservice" + "unsafeName": "user_service", + "safeName": "user_service" }, "screamingSnakeCase": { - "unsafeName": "USERSERVICE", - "safeName": "USERSERVICE" + "unsafeName": "USER_SERVICE", + "safeName": "USER_SERVICE" }, "pascalCase": { - "unsafeName": "Userservice", - "safeName": "Userservice" + "unsafeName": "UserService", + "safeName": "UserService" } } }, - "service": "service_userservice", + "service": "service_userService", "types": [], "errors": [], "subpackages": [], @@ -3981,7 +3981,7 @@ ], "errors": [], "subpackages": [ - "subpackage_userservice" + "subpackage_userService" ], "webhooks": null, "navigationConfig": null, diff --git a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/go-deterministic-ordering.json b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/go-deterministic-ordering.json index 452e7c137a57..86e1c2987d0f 100644 --- a/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/go-deterministic-ordering.json +++ b/packages/cli/generation/ir-generator-tests/src/ir/__test__/test-definitions/go-deterministic-ordering.json @@ -1072,7 +1072,8 @@ "availability": null, "docs": null } - ] + ], + "forwardCompatible": null }, "referencedTypes": [], "encoding": { @@ -1483,7 +1484,8 @@ "availability": null, "docs": null } - ] + ], + "forwardCompatible": null }, "referencedTypes": [], "encoding": { @@ -2293,7 +2295,8 @@ "availability": null, "docs": null } - ] + ], + "forwardCompatible": null }, "referencedTypes": [], "encoding": { diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-fdr.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-fdr.snap index 819d9c5e37c2..f2fb2fadb949 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-fdr.snap +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-fdr.snap @@ -102,7 +102,7 @@ }, ], "headers": [], - "id": "createcomment", + "id": "CreateComment", "includeInApiExplorer": undefined, "method": "POST", "multiAuth": [ @@ -113,7 +113,7 @@ }, ], "name": "Add a Comment", - "originalEndpointId": "endpoint_commentsService.createcomment", + "originalEndpointId": "endpoint_commentsService.CreateComment", "path": { "parts": [ { diff --git a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-ir.snap b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-ir.snap index 5c513dded46f..470f36d0adaa 100644 --- a/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-ir.snap +++ b/packages/cli/register/src/ir-to-fdr-converter/__test__/__snapshots__/grpc-comments-ir.snap @@ -198,26 +198,26 @@ "parts": [], }, "headers": [], - "id": "endpoint_commentsService.createcomment", + "id": "endpoint_commentsService.CreateComment", "idempotent": false, "method": "POST", "name": { "camelCase": { - "safeName": "createcomment", - "unsafeName": "createcomment", + "safeName": "createComment", + "unsafeName": "createComment", }, - "originalName": "createcomment", + "originalName": "CreateComment", "pascalCase": { - "safeName": "Createcomment", - "unsafeName": "Createcomment", + "safeName": "CreateComment", + "unsafeName": "CreateComment", }, "screamingSnakeCase": { - "safeName": "CREATECOMMENT", - "unsafeName": "CREATECOMMENT", + "safeName": "CREATE_COMMENT", + "unsafeName": "CREATE_COMMENT", }, "snakeCase": { - "safeName": "createcomment", - "unsafeName": "createcomment", + "safeName": "create_comment", + "unsafeName": "create_comment", }, }, "pagination": undefined, @@ -266,7 +266,7 @@ "type": "reference", "v2Examples": { "autogeneratedExamples": { - "commentsServiceCreatecommentExample": {}, + "commentsServiceCreateCommentExample": {}, }, "userSpecifiedExamples": {}, }, @@ -313,7 +313,7 @@ "type": "response", "v2Examples": { "autogeneratedExamples": { - "commentsServiceCreatecommentExample": { + "commentsServiceCreateCommentExample": { "comment": { "author": "string", "created_at": 1, @@ -348,9 +348,9 @@ "v2BaseUrls": undefined, "v2Examples": { "autogeneratedExamples": { - "commentsServiceCreatecommentExample_200": { + "commentsServiceCreateCommentExample_200": { "codeSamples": undefined, - "displayName": "commentsServiceCreatecommentExample", + "displayName": "commentsServiceCreateCommentExample", "request": { "auth": undefined, "baseUrl": undefined, @@ -427,7 +427,7 @@ "type": "reference", "v2Examples": { "autogeneratedExamples": { - "commentsServiceCreatecommentExample": {}, + "commentsServiceCreateCommentExample": {}, }, "userSpecifiedExamples": {}, }, @@ -478,7 +478,7 @@ "type": "response", "v2Examples": { "autogeneratedExamples": { - "commentsServiceCreatecommentExample": { + "commentsServiceCreateCommentExample": { "comment": { "author": "string", "created_at": 1, diff --git a/seed/csharp-model/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto b/seed/csharp-model/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/seed/csharp-model/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto +++ b/seed/csharp-model/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { diff --git a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs new file mode 100644 index 000000000000..0a1f05396af8 --- /dev/null +++ b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs @@ -0,0 +1,77 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; + +namespace SeedApi; + +[JsonConverter(typeof(StringEnumSerializer))] +[Serializable] +public readonly record struct AspectRatio : IStringEnum +{ + public static readonly AspectRatio AspectRatioUnspecified = new(Values.AspectRatioUnspecified); + + public static readonly AspectRatio AspectRatio11 = new(Values.AspectRatio11); + + public static readonly AspectRatio AspectRatio169 = new(Values.AspectRatio169); + + public static readonly AspectRatio AspectRatio916 = new(Values.AspectRatio916); + + public static readonly AspectRatio AspectRatio43 = new(Values.AspectRatio43); + + public AspectRatio(string value) + { + Value = value; + } + + /// + /// The string value of the enum. + /// + public string Value { get; } + + /// + /// Create a string enum with the given value. + /// + public static AspectRatio FromCustom(string value) + { + return new AspectRatio(value); + } + + public bool Equals(string? other) + { + return Value.Equals(other); + } + + /// + /// Returns the string value of the enum. + /// + public override string ToString() + { + return Value; + } + + public static bool operator ==(AspectRatio value1, string value2) => + value1.Value.Equals(value2); + + public static bool operator !=(AspectRatio value1, string value2) => + !value1.Value.Equals(value2); + + public static explicit operator string(AspectRatio value) => value.Value; + + public static explicit operator AspectRatio(string value) => new(value); + + /// + /// Constant strings for enum values + /// + [Serializable] + public static class Values + { + public const string AspectRatioUnspecified = "ASPECT_RATIO_UNSPECIFIED"; + + public const string AspectRatio11 = "ASPECT_RATIO_1_1"; + + public const string AspectRatio169 = "ASPECT_RATIO_16_9"; + + public const string AspectRatio916 = "ASPECT_RATIO_9_16"; + + public const string AspectRatio43 = "ASPECT_RATIO_4_3"; + } +} diff --git a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/Dataservice/IndexType.cs b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/IndexType.cs similarity index 100% rename from seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/Dataservice/IndexType.cs rename to seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/IndexType.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/README.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/README.md index 7cc184191f18..6639e7180e70 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/README.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/README.md @@ -41,7 +41,19 @@ Instantiate and use the client with the following: using SeedApi; var client = new SeedApiClient(); -await client.Dataservice.FooAsync(); +await client.DataService.UploadAsync( + new UploadRequest + { + Columns = new List() + { + new SeedApi.Column + { + Id = "id", + Values = new List() { 1.1f }, + }, + }, + } +); ``` ## Exception Handling @@ -53,7 +65,7 @@ will be thrown. using SeedApi; try { - var response = await client.Dataservice.FooAsync(...); + var response = await client.DataService.UploadAsync(...); } catch (SeedApiApiException e) { System.Console.WriteLine(e.Body); System.Console.WriteLine(e.StatusCode); @@ -77,7 +89,7 @@ A request is deemed retryable when any of the following HTTP status codes is ret Use the `MaxRetries` request option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { MaxRetries: 0 // Override MaxRetries at the request level @@ -90,7 +102,7 @@ var response = await client.Dataservice.FooAsync( The SDK defaults to a 30 second timeout. Use the `Timeout` option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { Timeout: TimeSpan.FromSeconds(3) // Override timeout to 3s @@ -103,7 +115,7 @@ var response = await client.Dataservice.FooAsync( If you would like to send additional headers as part of the request, use the `AdditionalHeaders` request option. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { AdditionalHeaders = new Dictionary @@ -122,25 +134,25 @@ This SDK uses forward-compatible enums that can handle unknown values gracefully using SeedApi; // Using a built-in value -var indexType = IndexType.IndexTypeInvalid; +var aspectRatio = AspectRatio.AspectRatioUnspecified; // Using a custom value -var customIndexType = IndexType.FromCustom("custom-value"); +var customAspectRatio = AspectRatio.FromCustom("custom-value"); // Using in a switch statement -switch (indexType.Value) +switch (aspectRatio.Value) { - case IndexType.Values.IndexTypeInvalid: - Console.WriteLine("IndexTypeInvalid"); + case AspectRatio.Values.AspectRatioUnspecified: + Console.WriteLine("AspectRatioUnspecified"); break; default: - Console.WriteLine($"Unknown value: {indexType.Value}"); + Console.WriteLine($"Unknown value: {aspectRatio.Value}"); break; } // Explicit casting -string indexTypeString = (string)IndexType.IndexTypeInvalid; -IndexType indexTypeFromString = (IndexType)"INDEX_TYPE_INVALID"; +string aspectRatioString = (string)AspectRatio.AspectRatioUnspecified; +AspectRatio aspectRatioFromString = (AspectRatio)"ASPECT_RATIO_UNSPECIFIED"; ``` ## Contributing diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/proto/data/v1/data.proto b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/proto/data/v1/data.proto +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/reference.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/reference.md index b5f9228a5c91..bc7264303b43 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/reference.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/reference.md @@ -1,6 +1,5 @@ # Reference -## DataService -
client.Dataservice.FooAsync() -> WithRawResponseTask<Dictionary<string, object?>> +
client.PostFooAsync() -> WithRawResponseTask<Dictionary<string, object?>>
@@ -13,7 +12,7 @@
```csharp -await client.Dataservice.FooAsync(); +await client.PostFooAsync(); ```
@@ -25,7 +24,8 @@ await client.Dataservice.FooAsync();
-
client.Dataservice.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse> +## DataService +
client.DataService.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse>
@@ -38,7 +38,7 @@ await client.Dataservice.FooAsync();
```csharp -await client.Dataservice.UploadAsync( +await client.DataService.UploadAsync( new UploadRequest { Columns = new List() @@ -77,7 +77,7 @@ await client.Dataservice.UploadAsync(
-
client.Dataservice.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse> +
client.DataService.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse>
@@ -90,7 +90,7 @@ await client.Dataservice.UploadAsync(
```csharp -await client.Dataservice.DeleteAsync(new DeleteRequest()); +await client.DataService.DeleteAsync(new DeleteRequest()); ```
@@ -117,7 +117,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
-
client.Dataservice.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse> +
client.DataService.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse>
@@ -130,7 +130,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
```csharp -await client.Dataservice.DescribeAsync(new DescribeRequest()); +await client.DataService.DescribeAsync(new DescribeRequest()); ```
@@ -157,7 +157,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
-
client.Dataservice.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse> +
client.DataService.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse>
@@ -170,7 +170,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
```csharp -await client.Dataservice.FetchAsync(new FetchRequest()); +await client.DataService.FetchAsync(new FetchRequest()); ```
@@ -197,7 +197,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
-
client.Dataservice.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse> +
client.DataService.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse>
@@ -210,7 +210,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
```csharp -await client.Dataservice.ListAsync(new ListRequest()); +await client.DataService.ListAsync(new ListRequest()); ```
@@ -237,7 +237,7 @@ await client.Dataservice.ListAsync(new ListRequest());
-
client.Dataservice.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse> +
client.DataService.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse>
@@ -250,7 +250,7 @@ await client.Dataservice.ListAsync(new ListRequest());
```csharp -await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); +await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); ```
@@ -277,7 +277,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
-
client.Dataservice.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse> +
client.DataService.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse>
@@ -290,7 +290,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
```csharp -await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); +await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); ```
diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/snippet.json b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/snippet.json index 10d4d0868455..c435d6f7c198 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/snippet.json +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/snippet.json @@ -1,28 +1,16 @@ { "types": {}, "endpoints": [ - { - "example_identifier": null, - "id": { - "path": "/foo", - "method": "POST", - "identifier_override": "endpoint_dataservice.foo" - }, - "snippet": { - "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FooAsync();\n" - } - }, { "example_identifier": null, "id": { "path": "/data", "method": "POST", - "identifier_override": "endpoint_dataservice.upload" + "identifier_override": "endpoint_dataService.Upload" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" } }, { @@ -30,11 +18,11 @@ "id": { "path": "/data/delete", "method": "POST", - "identifier_override": "endpoint_dataservice.delete" + "identifier_override": "endpoint_dataService.Delete" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DeleteAsync(new DeleteRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DeleteAsync(new DeleteRequest());\n" } }, { @@ -42,11 +30,11 @@ "id": { "path": "/data/describe", "method": "POST", - "identifier_override": "endpoint_dataservice.describe" + "identifier_override": "endpoint_dataService.Describe" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DescribeAsync(new DescribeRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DescribeAsync(new DescribeRequest());\n" } }, { @@ -54,11 +42,11 @@ "id": { "path": "/data/fetch", "method": "GET", - "identifier_override": "endpoint_dataservice.fetch" + "identifier_override": "endpoint_dataService.Fetch" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FetchAsync(new FetchRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.FetchAsync(new FetchRequest());\n" } }, { @@ -66,11 +54,11 @@ "id": { "path": "/data/list", "method": "GET", - "identifier_override": "endpoint_dataservice.list" + "identifier_override": "endpoint_dataService.List" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.ListAsync(new ListRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.ListAsync(new ListRequest());\n" } }, { @@ -78,11 +66,11 @@ "id": { "path": "/data/query", "method": "POST", - "identifier_override": "endpoint_dataservice.query" + "identifier_override": "endpoint_dataService.Query" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.QueryAsync(new QueryRequest { TopK = 1 });\n" } }, { @@ -90,11 +78,23 @@ "id": { "path": "/data/update", "method": "POST", - "identifier_override": "endpoint_dataservice.update" + "identifier_override": "endpoint_dataService.Update" + }, + "snippet": { + "type": "csharp", + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + } + }, + { + "example_identifier": null, + "id": { + "path": "/foo", + "method": "POST", + "identifier_override": "endpoint_.postFoo" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.PostFooAsync();\n" } } ] diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs new file mode 100644 index 000000000000..3f4ed8503ec1 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs @@ -0,0 +1,37 @@ +using NUnit.Framework; +using SeedApi; +using WireMock.Logging; +using WireMock.Server; +using WireMock.Settings; + +namespace SeedApi.Test.Unit.MockServer; + +public class BaseMockServerTest +{ + protected WireMockServer Server { get; set; } = null!; + + protected SeedApiClient Client { get; set; } = null!; + + protected RequestOptions RequestOptions { get; set; } = new(); + + [OneTimeSetUp] + public void GlobalSetup() + { + // Start the WireMock server + Server = WireMockServer.Start( + new WireMockServerSettings { Logger = new WireMockConsoleLogger() } + ); + + // Initialize the Client + Client = new SeedApiClient( + clientOptions: new ClientOptions { BaseUrl = Server.Urls[0], MaxRetries = 0 } + ); + } + + [OneTimeTearDown] + public void GlobalTeardown() + { + Server.Stop(); + Server.Dispose(); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs new file mode 100644 index 000000000000..53a6e783292a --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using SeedApi.Test.Utils; + +namespace SeedApi.Test.Unit.MockServer; + +[TestFixture] +[Parallelizable(ParallelScope.Self)] +public class PostFooTest : BaseMockServerTest +{ + [NUnit.Framework.Test] + public async Task MockServerTest_1() + { + const string mockResponse = """ + { + "string": { + "key": "value" + } + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } + + [NUnit.Framework.Test] + public async Task MockServerTest_2() + { + const string mockResponse = """ + { + "key": "value" + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs index 0e7a5b1834a6..2732b8386e7f 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs @@ -1,11 +1,10 @@ -using System.Text.Json; using Data.V1.Grpc; using Grpc.Core; using SeedApi.Core; namespace SeedApi; -public partial class DataserviceClient : IDataserviceClient +public partial class DataServiceClient : IDataServiceClient { private readonly RawClient _client; @@ -13,7 +12,7 @@ public partial class DataserviceClient : IDataserviceClient private DataService.DataServiceClient _dataService; - internal DataserviceClient(RawClient client) + internal DataServiceClient(RawClient client) { try { @@ -28,94 +27,8 @@ internal DataserviceClient(RawClient client) } } - private async Task>> FooAsyncCore( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - return await _client - .Options.ExceptionHandler.TryCatchAsync(async () => - { - var _headers = await new SeedApi.Core.HeadersBuilder.Builder() - .Add(_client.Options.Headers) - .Add(_client.Options.AdditionalHeaders) - .Add(options?.AdditionalHeaders) - .BuildAsync() - .ConfigureAwait(false); - var response = await _client - .SendRequestAsync( - new JsonRequest - { - Method = HttpMethod.Post, - Path = "foo", - Headers = _headers, - Options = options, - }, - cancellationToken - ) - .ConfigureAwait(false); - if (response.StatusCode is >= 200 and < 400) - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - try - { - var responseData = JsonUtils.Deserialize>( - responseBody - )!; - return new WithRawResponse>() - { - Data = responseData, - RawResponse = new RawResponse() - { - StatusCode = response.Raw.StatusCode, - Url = - response.Raw.RequestMessage?.RequestUri - ?? new Uri("about:blank"), - Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), - }, - }; - } - catch (JsonException e) - { - throw new SeedApiApiException( - "Failed to deserialize response", - response.StatusCode, - responseBody, - e - ); - } - } - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - throw new SeedApiApiException( - $"Error with status code {response.StatusCode}", - response.StatusCode, - responseBody - ); - } - }) - .ConfigureAwait(false); - } - - /// - /// await client.Dataservice.FooAsync(); - /// - public WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - return new WithRawResponseTask>( - FooAsyncCore(options, cancellationToken) - ); - } - /// - /// await client.Dataservice.UploadAsync( + /// await client.DataService.UploadAsync( /// new UploadRequest /// { /// Columns = new List<SeedApi.Column>() @@ -190,7 +103,7 @@ public async Task UploadAsync( } /// - /// await client.Dataservice.DeleteAsync(new DeleteRequest()); + /// await client.DataService.DeleteAsync(new DeleteRequest()); /// public async Task DeleteAsync( DeleteRequest request, @@ -253,7 +166,7 @@ public async Task DeleteAsync( } /// - /// await client.Dataservice.DescribeAsync(new DescribeRequest()); + /// await client.DataService.DescribeAsync(new DescribeRequest()); /// public async Task DescribeAsync( DescribeRequest request, @@ -316,7 +229,7 @@ public async Task DescribeAsync( } /// - /// await client.Dataservice.FetchAsync(new FetchRequest()); + /// await client.DataService.FetchAsync(new FetchRequest()); /// public async Task FetchAsync( FetchRequest request, @@ -379,7 +292,7 @@ public async Task FetchAsync( } /// - /// await client.Dataservice.ListAsync(new ListRequest()); + /// await client.DataService.ListAsync(new ListRequest()); /// public async Task ListAsync( ListRequest request, @@ -442,7 +355,7 @@ public async Task ListAsync( } /// - /// await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); + /// await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); /// public async Task QueryAsync( QueryRequest request, @@ -505,7 +418,7 @@ public async Task QueryAsync( } /// - /// await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); + /// await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); /// public async Task UpdateAsync( UpdateRequest request, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs index 4a7de66ccb27..52d48a495b2b 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs @@ -1,12 +1,7 @@ namespace SeedApi; -public partial interface IDataserviceClient +public partial interface IDataServiceClient { - WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ); - Task UploadAsync( UploadRequest request, GrpcRequestOptions? options = null, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs index 40238253ea5e..5301c75e711f 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs @@ -32,6 +32,9 @@ public record UpdateRequest [JsonPropertyName("index_types")] public IEnumerable? IndexTypes { get; set; } + [JsonPropertyName("aspect_ratio")] + public AspectRatio? AspectRatio { get; set; } + /// /// Maps the UpdateRequest type into its Protobuf-equivalent representation. /// @@ -89,6 +92,20 @@ internal Proto.UpdateRequest ToProto() ) ); } + if (AspectRatio != null) + { + result.AspectRatio = AspectRatio.Value.Value switch + { + SeedApi.AspectRatio.Values.AspectRatioUnspecified => ProtoDataV1Grpc + .AspectRatio + .Unspecified, + SeedApi.AspectRatio.Values.AspectRatio11 => ProtoDataV1Grpc.AspectRatio._11, + SeedApi.AspectRatio.Values.AspectRatio169 => ProtoDataV1Grpc.AspectRatio._169, + SeedApi.AspectRatio.Values.AspectRatio916 => ProtoDataV1Grpc.AspectRatio._916, + SeedApi.AspectRatio.Values.AspectRatio43 => ProtoDataV1Grpc.AspectRatio._43, + _ => throw new ArgumentException($"Unknown enum value: {AspectRatio.Value.Value}"), + }; + } return result; } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/ISeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/ISeedApiClient.cs index 975e85422400..71a1b5857551 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/ISeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/ISeedApiClient.cs @@ -2,5 +2,9 @@ namespace SeedApi; public partial interface ISeedApiClient { - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ); } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/SeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/SeedApiClient.cs index d16d82ae7269..d00e7f72915c 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/SeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/SeedApiClient.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using SeedApi.Core; namespace SeedApi; @@ -31,7 +32,7 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } _client = new RawClient(clientOptions); - Dataservice = new DataserviceClient(_client); + DataService = new DataServiceClient(_client); } catch (Exception ex) { @@ -41,5 +42,91 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + + private async Task>> PostFooAsyncCore( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + return await _client + .Options.ExceptionHandler.TryCatchAsync(async () => + { + var _headers = await new SeedApi.Core.HeadersBuilder.Builder() + .Add(_client.Options.Headers) + .Add(_client.Options.AdditionalHeaders) + .Add(options?.AdditionalHeaders) + .BuildAsync() + .ConfigureAwait(false); + var response = await _client + .SendRequestAsync( + new JsonRequest + { + Method = HttpMethod.Post, + Path = "foo", + Headers = _headers, + Options = options, + }, + cancellationToken + ) + .ConfigureAwait(false); + if (response.StatusCode is >= 200 and < 400) + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + try + { + var responseData = JsonUtils.Deserialize>( + responseBody + )!; + return new WithRawResponse>() + { + Data = responseData, + RawResponse = new RawResponse() + { + StatusCode = response.Raw.StatusCode, + Url = + response.Raw.RequestMessage?.RequestUri + ?? new Uri("about:blank"), + Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), + }, + }; + } + catch (JsonException e) + { + throw new SeedApiApiException( + "Failed to deserialize response", + response.StatusCode, + responseBody, + e + ); + } + } + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + throw new SeedApiApiException( + $"Error with status code {response.StatusCode}", + response.StatusCode, + responseBody + ); + } + }) + .ConfigureAwait(false); + } + + /// + /// await client.PostFooAsync(); + /// + public WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + return new WithRawResponseTask>( + PostFooAsyncCore(options, cancellationToken) + ); + } } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs new file mode 100644 index 000000000000..0a1f05396af8 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs @@ -0,0 +1,77 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; + +namespace SeedApi; + +[JsonConverter(typeof(StringEnumSerializer))] +[Serializable] +public readonly record struct AspectRatio : IStringEnum +{ + public static readonly AspectRatio AspectRatioUnspecified = new(Values.AspectRatioUnspecified); + + public static readonly AspectRatio AspectRatio11 = new(Values.AspectRatio11); + + public static readonly AspectRatio AspectRatio169 = new(Values.AspectRatio169); + + public static readonly AspectRatio AspectRatio916 = new(Values.AspectRatio916); + + public static readonly AspectRatio AspectRatio43 = new(Values.AspectRatio43); + + public AspectRatio(string value) + { + Value = value; + } + + /// + /// The string value of the enum. + /// + public string Value { get; } + + /// + /// Create a string enum with the given value. + /// + public static AspectRatio FromCustom(string value) + { + return new AspectRatio(value); + } + + public bool Equals(string? other) + { + return Value.Equals(other); + } + + /// + /// Returns the string value of the enum. + /// + public override string ToString() + { + return Value; + } + + public static bool operator ==(AspectRatio value1, string value2) => + value1.Value.Equals(value2); + + public static bool operator !=(AspectRatio value1, string value2) => + !value1.Value.Equals(value2); + + public static explicit operator string(AspectRatio value) => value.Value; + + public static explicit operator AspectRatio(string value) => new(value); + + /// + /// Constant strings for enum values + /// + [Serializable] + public static class Values + { + public const string AspectRatioUnspecified = "ASPECT_RATIO_UNSPECIFIED"; + + public const string AspectRatio11 = "ASPECT_RATIO_1_1"; + + public const string AspectRatio169 = "ASPECT_RATIO_16_9"; + + public const string AspectRatio916 = "ASPECT_RATIO_9_16"; + + public const string AspectRatio43 = "ASPECT_RATIO_4_3"; + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Types/IndexType.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/IndexType.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Types/IndexType.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/IndexType.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/README.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/README.md index 7cc184191f18..6639e7180e70 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/README.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/README.md @@ -41,7 +41,19 @@ Instantiate and use the client with the following: using SeedApi; var client = new SeedApiClient(); -await client.Dataservice.FooAsync(); +await client.DataService.UploadAsync( + new UploadRequest + { + Columns = new List() + { + new SeedApi.Column + { + Id = "id", + Values = new List() { 1.1f }, + }, + }, + } +); ``` ## Exception Handling @@ -53,7 +65,7 @@ will be thrown. using SeedApi; try { - var response = await client.Dataservice.FooAsync(...); + var response = await client.DataService.UploadAsync(...); } catch (SeedApiApiException e) { System.Console.WriteLine(e.Body); System.Console.WriteLine(e.StatusCode); @@ -77,7 +89,7 @@ A request is deemed retryable when any of the following HTTP status codes is ret Use the `MaxRetries` request option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { MaxRetries: 0 // Override MaxRetries at the request level @@ -90,7 +102,7 @@ var response = await client.Dataservice.FooAsync( The SDK defaults to a 30 second timeout. Use the `Timeout` option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { Timeout: TimeSpan.FromSeconds(3) // Override timeout to 3s @@ -103,7 +115,7 @@ var response = await client.Dataservice.FooAsync( If you would like to send additional headers as part of the request, use the `AdditionalHeaders` request option. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { AdditionalHeaders = new Dictionary @@ -122,25 +134,25 @@ This SDK uses forward-compatible enums that can handle unknown values gracefully using SeedApi; // Using a built-in value -var indexType = IndexType.IndexTypeInvalid; +var aspectRatio = AspectRatio.AspectRatioUnspecified; // Using a custom value -var customIndexType = IndexType.FromCustom("custom-value"); +var customAspectRatio = AspectRatio.FromCustom("custom-value"); // Using in a switch statement -switch (indexType.Value) +switch (aspectRatio.Value) { - case IndexType.Values.IndexTypeInvalid: - Console.WriteLine("IndexTypeInvalid"); + case AspectRatio.Values.AspectRatioUnspecified: + Console.WriteLine("AspectRatioUnspecified"); break; default: - Console.WriteLine($"Unknown value: {indexType.Value}"); + Console.WriteLine($"Unknown value: {aspectRatio.Value}"); break; } // Explicit casting -string indexTypeString = (string)IndexType.IndexTypeInvalid; -IndexType indexTypeFromString = (IndexType)"INDEX_TYPE_INVALID"; +string aspectRatioString = (string)AspectRatio.AspectRatioUnspecified; +AspectRatio aspectRatioFromString = (AspectRatio)"ASPECT_RATIO_UNSPECIFIED"; ``` ## Contributing diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/reference.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/reference.md index b5f9228a5c91..bc7264303b43 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/reference.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/reference.md @@ -1,6 +1,5 @@ # Reference -## DataService -
client.Dataservice.FooAsync() -> WithRawResponseTask<Dictionary<string, object?>> +
client.PostFooAsync() -> WithRawResponseTask<Dictionary<string, object?>>
@@ -13,7 +12,7 @@
```csharp -await client.Dataservice.FooAsync(); +await client.PostFooAsync(); ```
@@ -25,7 +24,8 @@ await client.Dataservice.FooAsync();
-
client.Dataservice.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse> +## DataService +
client.DataService.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse>
@@ -38,7 +38,7 @@ await client.Dataservice.FooAsync();
```csharp -await client.Dataservice.UploadAsync( +await client.DataService.UploadAsync( new UploadRequest { Columns = new List() @@ -77,7 +77,7 @@ await client.Dataservice.UploadAsync(
-
client.Dataservice.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse> +
client.DataService.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse>
@@ -90,7 +90,7 @@ await client.Dataservice.UploadAsync(
```csharp -await client.Dataservice.DeleteAsync(new DeleteRequest()); +await client.DataService.DeleteAsync(new DeleteRequest()); ```
@@ -117,7 +117,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
-
client.Dataservice.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse> +
client.DataService.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse>
@@ -130,7 +130,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
```csharp -await client.Dataservice.DescribeAsync(new DescribeRequest()); +await client.DataService.DescribeAsync(new DescribeRequest()); ```
@@ -157,7 +157,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
-
client.Dataservice.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse> +
client.DataService.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse>
@@ -170,7 +170,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
```csharp -await client.Dataservice.FetchAsync(new FetchRequest()); +await client.DataService.FetchAsync(new FetchRequest()); ```
@@ -197,7 +197,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
-
client.Dataservice.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse> +
client.DataService.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse>
@@ -210,7 +210,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
```csharp -await client.Dataservice.ListAsync(new ListRequest()); +await client.DataService.ListAsync(new ListRequest()); ```
@@ -237,7 +237,7 @@ await client.Dataservice.ListAsync(new ListRequest());
-
client.Dataservice.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse> +
client.DataService.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse>
@@ -250,7 +250,7 @@ await client.Dataservice.ListAsync(new ListRequest());
```csharp -await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); +await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); ```
@@ -277,7 +277,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
-
client.Dataservice.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse> +
client.DataService.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse>
@@ -290,7 +290,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
```csharp -await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); +await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); ```
diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/snippet.json b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/snippet.json index 10d4d0868455..c435d6f7c198 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/snippet.json +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/snippet.json @@ -1,28 +1,16 @@ { "types": {}, "endpoints": [ - { - "example_identifier": null, - "id": { - "path": "/foo", - "method": "POST", - "identifier_override": "endpoint_dataservice.foo" - }, - "snippet": { - "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FooAsync();\n" - } - }, { "example_identifier": null, "id": { "path": "/data", "method": "POST", - "identifier_override": "endpoint_dataservice.upload" + "identifier_override": "endpoint_dataService.Upload" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" } }, { @@ -30,11 +18,11 @@ "id": { "path": "/data/delete", "method": "POST", - "identifier_override": "endpoint_dataservice.delete" + "identifier_override": "endpoint_dataService.Delete" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DeleteAsync(new DeleteRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DeleteAsync(new DeleteRequest());\n" } }, { @@ -42,11 +30,11 @@ "id": { "path": "/data/describe", "method": "POST", - "identifier_override": "endpoint_dataservice.describe" + "identifier_override": "endpoint_dataService.Describe" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DescribeAsync(new DescribeRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DescribeAsync(new DescribeRequest());\n" } }, { @@ -54,11 +42,11 @@ "id": { "path": "/data/fetch", "method": "GET", - "identifier_override": "endpoint_dataservice.fetch" + "identifier_override": "endpoint_dataService.Fetch" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FetchAsync(new FetchRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.FetchAsync(new FetchRequest());\n" } }, { @@ -66,11 +54,11 @@ "id": { "path": "/data/list", "method": "GET", - "identifier_override": "endpoint_dataservice.list" + "identifier_override": "endpoint_dataService.List" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.ListAsync(new ListRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.ListAsync(new ListRequest());\n" } }, { @@ -78,11 +66,11 @@ "id": { "path": "/data/query", "method": "POST", - "identifier_override": "endpoint_dataservice.query" + "identifier_override": "endpoint_dataService.Query" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.QueryAsync(new QueryRequest { TopK = 1 });\n" } }, { @@ -90,11 +78,23 @@ "id": { "path": "/data/update", "method": "POST", - "identifier_override": "endpoint_dataservice.update" + "identifier_override": "endpoint_dataService.Update" + }, + "snippet": { + "type": "csharp", + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + } + }, + { + "example_identifier": null, + "id": { + "path": "/foo", + "method": "POST", + "identifier_override": "endpoint_.postFoo" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.PostFooAsync();\n" } } ] diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs new file mode 100644 index 000000000000..3f4ed8503ec1 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs @@ -0,0 +1,37 @@ +using NUnit.Framework; +using SeedApi; +using WireMock.Logging; +using WireMock.Server; +using WireMock.Settings; + +namespace SeedApi.Test.Unit.MockServer; + +public class BaseMockServerTest +{ + protected WireMockServer Server { get; set; } = null!; + + protected SeedApiClient Client { get; set; } = null!; + + protected RequestOptions RequestOptions { get; set; } = new(); + + [OneTimeSetUp] + public void GlobalSetup() + { + // Start the WireMock server + Server = WireMockServer.Start( + new WireMockServerSettings { Logger = new WireMockConsoleLogger() } + ); + + // Initialize the Client + Client = new SeedApiClient( + clientOptions: new ClientOptions { BaseUrl = Server.Urls[0], MaxRetries = 0 } + ); + } + + [OneTimeTearDown] + public void GlobalTeardown() + { + Server.Stop(); + Server.Dispose(); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs new file mode 100644 index 000000000000..53a6e783292a --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using SeedApi.Test.Utils; + +namespace SeedApi.Test.Unit.MockServer; + +[TestFixture] +[Parallelizable(ParallelScope.Self)] +public class PostFooTest : BaseMockServerTest +{ + [NUnit.Framework.Test] + public async Task MockServerTest_1() + { + const string mockResponse = """ + { + "string": { + "key": "value" + } + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } + + [NUnit.Framework.Test] + public async Task MockServerTest_2() + { + const string mockResponse = """ + { + "key": "value" + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs index d7a55705956f..29883eb5de76 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs @@ -1,11 +1,10 @@ -using System.Text.Json; using Data.V1.Grpc; using Grpc.Core; using SeedApi.Core; namespace SeedApi; -public partial class DataserviceClient : IDataserviceClient +public partial class DataServiceClient : IDataServiceClient { private readonly RawClient _client; @@ -13,94 +12,15 @@ public partial class DataserviceClient : IDataserviceClient private DataService.DataServiceClient _dataService; - internal DataserviceClient(RawClient client) + internal DataServiceClient(RawClient client) { _client = client; _grpc = _client.Grpc; _dataService = new DataService.DataServiceClient(_grpc.Channel); } - private async Task>> FooAsyncCore( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - var _headers = await new SeedApi.Core.HeadersBuilder.Builder() - .Add(_client.Options.Headers) - .Add(_client.Options.AdditionalHeaders) - .Add(options?.AdditionalHeaders) - .BuildAsync() - .ConfigureAwait(false); - var response = await _client - .SendRequestAsync( - new JsonRequest - { - Method = HttpMethod.Post, - Path = "foo", - Headers = _headers, - Options = options, - }, - cancellationToken - ) - .ConfigureAwait(false); - if (response.StatusCode is >= 200 and < 400) - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - try - { - var responseData = JsonUtils.Deserialize>( - responseBody - )!; - return new WithRawResponse>() - { - Data = responseData, - RawResponse = new RawResponse() - { - StatusCode = response.Raw.StatusCode, - Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), - Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), - }, - }; - } - catch (JsonException e) - { - throw new SeedApiApiException( - "Failed to deserialize response", - response.StatusCode, - responseBody, - e - ); - } - } - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - throw new SeedApiApiException( - $"Error with status code {response.StatusCode}", - response.StatusCode, - responseBody - ); - } - } - - /// - /// await client.Dataservice.FooAsync(); - /// - public WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - return new WithRawResponseTask>( - FooAsyncCore(options, cancellationToken) - ); - } - /// - /// await client.Dataservice.UploadAsync( + /// await client.DataService.UploadAsync( /// new UploadRequest /// { /// Columns = new List<SeedApi.Column>() @@ -170,7 +90,7 @@ public async Task UploadAsync( } /// - /// await client.Dataservice.DeleteAsync(new DeleteRequest()); + /// await client.DataService.DeleteAsync(new DeleteRequest()); /// public async Task DeleteAsync( DeleteRequest request, @@ -228,7 +148,7 @@ public async Task DeleteAsync( } /// - /// await client.Dataservice.DescribeAsync(new DescribeRequest()); + /// await client.DataService.DescribeAsync(new DescribeRequest()); /// public async Task DescribeAsync( DescribeRequest request, @@ -286,7 +206,7 @@ public async Task DescribeAsync( } /// - /// await client.Dataservice.FetchAsync(new FetchRequest()); + /// await client.DataService.FetchAsync(new FetchRequest()); /// public async Task FetchAsync( FetchRequest request, @@ -344,7 +264,7 @@ public async Task FetchAsync( } /// - /// await client.Dataservice.ListAsync(new ListRequest()); + /// await client.DataService.ListAsync(new ListRequest()); /// public async Task ListAsync( ListRequest request, @@ -402,7 +322,7 @@ public async Task ListAsync( } /// - /// await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); + /// await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); /// public async Task QueryAsync( QueryRequest request, @@ -460,7 +380,7 @@ public async Task QueryAsync( } /// - /// await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); + /// await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); /// public async Task UpdateAsync( UpdateRequest request, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs index 4a7de66ccb27..52d48a495b2b 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs @@ -1,12 +1,7 @@ namespace SeedApi; -public partial interface IDataserviceClient +public partial interface IDataServiceClient { - WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ); - Task UploadAsync( UploadRequest request, GrpcRequestOptions? options = null, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs index 40238253ea5e..5301c75e711f 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs @@ -32,6 +32,9 @@ public record UpdateRequest [JsonPropertyName("index_types")] public IEnumerable? IndexTypes { get; set; } + [JsonPropertyName("aspect_ratio")] + public AspectRatio? AspectRatio { get; set; } + /// /// Maps the UpdateRequest type into its Protobuf-equivalent representation. /// @@ -89,6 +92,20 @@ internal Proto.UpdateRequest ToProto() ) ); } + if (AspectRatio != null) + { + result.AspectRatio = AspectRatio.Value.Value switch + { + SeedApi.AspectRatio.Values.AspectRatioUnspecified => ProtoDataV1Grpc + .AspectRatio + .Unspecified, + SeedApi.AspectRatio.Values.AspectRatio11 => ProtoDataV1Grpc.AspectRatio._11, + SeedApi.AspectRatio.Values.AspectRatio169 => ProtoDataV1Grpc.AspectRatio._169, + SeedApi.AspectRatio.Values.AspectRatio916 => ProtoDataV1Grpc.AspectRatio._916, + SeedApi.AspectRatio.Values.AspectRatio43 => ProtoDataV1Grpc.AspectRatio._43, + _ => throw new ArgumentException($"Unknown enum value: {AspectRatio.Value.Value}"), + }; + } return result; } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/ISeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/ISeedApiClient.cs index 975e85422400..71a1b5857551 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/ISeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/ISeedApiClient.cs @@ -2,5 +2,9 @@ namespace SeedApi; public partial interface ISeedApiClient { - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ); } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApiClient.cs index 246aa6ca1fa7..f96d27cba4a6 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/SeedApiClient.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using SeedApi.Core; namespace SeedApi; @@ -26,8 +27,87 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } _client = new RawClient(clientOptions); - Dataservice = new DataserviceClient(_client); + DataService = new DataServiceClient(_client); } - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + + private async Task>> PostFooAsyncCore( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + var _headers = await new SeedApi.Core.HeadersBuilder.Builder() + .Add(_client.Options.Headers) + .Add(_client.Options.AdditionalHeaders) + .Add(options?.AdditionalHeaders) + .BuildAsync() + .ConfigureAwait(false); + var response = await _client + .SendRequestAsync( + new JsonRequest + { + Method = HttpMethod.Post, + Path = "foo", + Headers = _headers, + Options = options, + }, + cancellationToken + ) + .ConfigureAwait(false); + if (response.StatusCode is >= 200 and < 400) + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + try + { + var responseData = JsonUtils.Deserialize>( + responseBody + )!; + return new WithRawResponse>() + { + Data = responseData, + RawResponse = new RawResponse() + { + StatusCode = response.Raw.StatusCode, + Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), + Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), + }, + }; + } + catch (JsonException e) + { + throw new SeedApiApiException( + "Failed to deserialize response", + response.StatusCode, + responseBody, + e + ); + } + } + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + throw new SeedApiApiException( + $"Error with status code {response.StatusCode}", + response.StatusCode, + responseBody + ); + } + } + + /// + /// await client.PostFooAsync(); + /// + public WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + return new WithRawResponseTask>( + PostFooAsyncCore(options, cancellationToken) + ); + } } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs new file mode 100644 index 000000000000..0a1f05396af8 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs @@ -0,0 +1,77 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; + +namespace SeedApi; + +[JsonConverter(typeof(StringEnumSerializer))] +[Serializable] +public readonly record struct AspectRatio : IStringEnum +{ + public static readonly AspectRatio AspectRatioUnspecified = new(Values.AspectRatioUnspecified); + + public static readonly AspectRatio AspectRatio11 = new(Values.AspectRatio11); + + public static readonly AspectRatio AspectRatio169 = new(Values.AspectRatio169); + + public static readonly AspectRatio AspectRatio916 = new(Values.AspectRatio916); + + public static readonly AspectRatio AspectRatio43 = new(Values.AspectRatio43); + + public AspectRatio(string value) + { + Value = value; + } + + /// + /// The string value of the enum. + /// + public string Value { get; } + + /// + /// Create a string enum with the given value. + /// + public static AspectRatio FromCustom(string value) + { + return new AspectRatio(value); + } + + public bool Equals(string? other) + { + return Value.Equals(other); + } + + /// + /// Returns the string value of the enum. + /// + public override string ToString() + { + return Value; + } + + public static bool operator ==(AspectRatio value1, string value2) => + value1.Value.Equals(value2); + + public static bool operator !=(AspectRatio value1, string value2) => + !value1.Value.Equals(value2); + + public static explicit operator string(AspectRatio value) => value.Value; + + public static explicit operator AspectRatio(string value) => new(value); + + /// + /// Constant strings for enum values + /// + [Serializable] + public static class Values + { + public const string AspectRatioUnspecified = "ASPECT_RATIO_UNSPECIFIED"; + + public const string AspectRatio11 = "ASPECT_RATIO_1_1"; + + public const string AspectRatio169 = "ASPECT_RATIO_16_9"; + + public const string AspectRatio916 = "ASPECT_RATIO_9_16"; + + public const string AspectRatio43 = "ASPECT_RATIO_4_3"; + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Types/IndexType.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/IndexType.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Types/IndexType.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/IndexType.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/README.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/README.md index bc4d312ebd54..655c3cec0600 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/README.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/README.md @@ -41,7 +41,19 @@ Instantiate and use the client with the following: using SeedApi; var client = new SeedApiClient(); -await client.Dataservice.FooAsync(); +await client.DataService.UploadAsync( + new UploadRequest + { + Columns = new List() + { + new SeedApi.Column + { + Id = "id", + Values = new List() { 1.1f }, + }, + }, + } +); ``` ## Exception Handling @@ -53,7 +65,7 @@ will be thrown. using SeedApi; try { - var response = await client.Dataservice.FooAsync(...); + var response = await client.DataService.UploadAsync(...); } catch (SeedApiApiException e) { System.Console.WriteLine(e.Body); System.Console.WriteLine(e.StatusCode); @@ -77,7 +89,7 @@ A request is deemed retryable when any of the following HTTP status codes is ret Use the `MaxRetries` request option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { MaxRetries: 0 // Override MaxRetries at the request level @@ -90,7 +102,7 @@ var response = await client.Dataservice.FooAsync( The SDK defaults to a 30 second timeout. Use the `Timeout` option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { Timeout: TimeSpan.FromSeconds(3) // Override timeout to 3s @@ -103,7 +115,7 @@ var response = await client.Dataservice.FooAsync( If you would like to send additional headers as part of the request, use the `AdditionalHeaders` request option. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { AdditionalHeaders = new Dictionary @@ -122,25 +134,25 @@ This SDK uses forward-compatible enums that can handle unknown values gracefully using SeedApi; // Using a built-in value -var indexType = IndexType.IndexTypeInvalid; +var aspectRatio = AspectRatio.AspectRatioUnspecified; // Using a custom value -var customIndexType = IndexType.FromCustom("custom-value"); +var customAspectRatio = AspectRatio.FromCustom("custom-value"); // Using in a switch statement -switch (indexType.Value) +switch (aspectRatio.Value) { - case IndexType.Values.IndexTypeInvalid: - Console.WriteLine("IndexTypeInvalid"); + case AspectRatio.Values.AspectRatioUnspecified: + Console.WriteLine("AspectRatioUnspecified"); break; default: - Console.WriteLine($"Unknown value: {indexType.Value}"); + Console.WriteLine($"Unknown value: {aspectRatio.Value}"); break; } // Explicit casting -string indexTypeString = (string)IndexType.IndexTypeInvalid; -IndexType indexTypeFromString = (IndexType)"INDEX_TYPE_INVALID"; +string aspectRatioString = (string)AspectRatio.AspectRatioUnspecified; +AspectRatio aspectRatioFromString = (AspectRatio)"ASPECT_RATIO_UNSPECIFIED"; ``` ## Contributing diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/proto/data/v1/data.proto b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/proto/data/v1/data.proto +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/reference.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/reference.md index b5f9228a5c91..bc7264303b43 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/reference.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/reference.md @@ -1,6 +1,5 @@ # Reference -## DataService -
client.Dataservice.FooAsync() -> WithRawResponseTask<Dictionary<string, object?>> +
client.PostFooAsync() -> WithRawResponseTask<Dictionary<string, object?>>
@@ -13,7 +12,7 @@
```csharp -await client.Dataservice.FooAsync(); +await client.PostFooAsync(); ```
@@ -25,7 +24,8 @@ await client.Dataservice.FooAsync();
-
client.Dataservice.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse> +## DataService +
client.DataService.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse>
@@ -38,7 +38,7 @@ await client.Dataservice.FooAsync();
```csharp -await client.Dataservice.UploadAsync( +await client.DataService.UploadAsync( new UploadRequest { Columns = new List() @@ -77,7 +77,7 @@ await client.Dataservice.UploadAsync(
-
client.Dataservice.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse> +
client.DataService.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse>
@@ -90,7 +90,7 @@ await client.Dataservice.UploadAsync(
```csharp -await client.Dataservice.DeleteAsync(new DeleteRequest()); +await client.DataService.DeleteAsync(new DeleteRequest()); ```
@@ -117,7 +117,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
-
client.Dataservice.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse> +
client.DataService.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse>
@@ -130,7 +130,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
```csharp -await client.Dataservice.DescribeAsync(new DescribeRequest()); +await client.DataService.DescribeAsync(new DescribeRequest()); ```
@@ -157,7 +157,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
-
client.Dataservice.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse> +
client.DataService.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse>
@@ -170,7 +170,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
```csharp -await client.Dataservice.FetchAsync(new FetchRequest()); +await client.DataService.FetchAsync(new FetchRequest()); ```
@@ -197,7 +197,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
-
client.Dataservice.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse> +
client.DataService.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse>
@@ -210,7 +210,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
```csharp -await client.Dataservice.ListAsync(new ListRequest()); +await client.DataService.ListAsync(new ListRequest()); ```
@@ -237,7 +237,7 @@ await client.Dataservice.ListAsync(new ListRequest());
-
client.Dataservice.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse> +
client.DataService.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse>
@@ -250,7 +250,7 @@ await client.Dataservice.ListAsync(new ListRequest());
```csharp -await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); +await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); ```
@@ -277,7 +277,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
-
client.Dataservice.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse> +
client.DataService.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse>
@@ -290,7 +290,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
```csharp -await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); +await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); ```
diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/snippet.json b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/snippet.json index 10d4d0868455..c435d6f7c198 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/snippet.json +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/snippet.json @@ -1,28 +1,16 @@ { "types": {}, "endpoints": [ - { - "example_identifier": null, - "id": { - "path": "/foo", - "method": "POST", - "identifier_override": "endpoint_dataservice.foo" - }, - "snippet": { - "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FooAsync();\n" - } - }, { "example_identifier": null, "id": { "path": "/data", "method": "POST", - "identifier_override": "endpoint_dataservice.upload" + "identifier_override": "endpoint_dataService.Upload" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column\n {\n Id = \"id\",\n Values = new List() { 1.1f },\n },\n },\n }\n);\n" } }, { @@ -30,11 +18,11 @@ "id": { "path": "/data/delete", "method": "POST", - "identifier_override": "endpoint_dataservice.delete" + "identifier_override": "endpoint_dataService.Delete" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DeleteAsync(new DeleteRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DeleteAsync(new DeleteRequest());\n" } }, { @@ -42,11 +30,11 @@ "id": { "path": "/data/describe", "method": "POST", - "identifier_override": "endpoint_dataservice.describe" + "identifier_override": "endpoint_dataService.Describe" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DescribeAsync(new DescribeRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DescribeAsync(new DescribeRequest());\n" } }, { @@ -54,11 +42,11 @@ "id": { "path": "/data/fetch", "method": "GET", - "identifier_override": "endpoint_dataservice.fetch" + "identifier_override": "endpoint_dataService.Fetch" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FetchAsync(new FetchRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.FetchAsync(new FetchRequest());\n" } }, { @@ -66,11 +54,11 @@ "id": { "path": "/data/list", "method": "GET", - "identifier_override": "endpoint_dataservice.list" + "identifier_override": "endpoint_dataService.List" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.ListAsync(new ListRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.ListAsync(new ListRequest());\n" } }, { @@ -78,11 +66,11 @@ "id": { "path": "/data/query", "method": "POST", - "identifier_override": "endpoint_dataservice.query" + "identifier_override": "endpoint_dataService.Query" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.QueryAsync(new QueryRequest { TopK = 1 });\n" } }, { @@ -90,11 +78,23 @@ "id": { "path": "/data/update", "method": "POST", - "identifier_override": "endpoint_dataservice.update" + "identifier_override": "endpoint_dataService.Update" + }, + "snippet": { + "type": "csharp", + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + } + }, + { + "example_identifier": null, + "id": { + "path": "/foo", + "method": "POST", + "identifier_override": "endpoint_.postFoo" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.PostFooAsync();\n" } } ] diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs new file mode 100644 index 000000000000..3f4ed8503ec1 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs @@ -0,0 +1,37 @@ +using NUnit.Framework; +using SeedApi; +using WireMock.Logging; +using WireMock.Server; +using WireMock.Settings; + +namespace SeedApi.Test.Unit.MockServer; + +public class BaseMockServerTest +{ + protected WireMockServer Server { get; set; } = null!; + + protected SeedApiClient Client { get; set; } = null!; + + protected RequestOptions RequestOptions { get; set; } = new(); + + [OneTimeSetUp] + public void GlobalSetup() + { + // Start the WireMock server + Server = WireMockServer.Start( + new WireMockServerSettings { Logger = new WireMockConsoleLogger() } + ); + + // Initialize the Client + Client = new SeedApiClient( + clientOptions: new ClientOptions { BaseUrl = Server.Urls[0], MaxRetries = 0 } + ); + } + + [OneTimeTearDown] + public void GlobalTeardown() + { + Server.Stop(); + Server.Dispose(); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs new file mode 100644 index 000000000000..53a6e783292a --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using SeedApi.Test.Utils; + +namespace SeedApi.Test.Unit.MockServer; + +[TestFixture] +[Parallelizable(ParallelScope.Self)] +public class PostFooTest : BaseMockServerTest +{ + [NUnit.Framework.Test] + public async Task MockServerTest_1() + { + const string mockResponse = """ + { + "string": { + "key": "value" + } + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } + + [NUnit.Framework.Test] + public async Task MockServerTest_2() + { + const string mockResponse = """ + { + "key": "value" + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs index d7a55705956f..29883eb5de76 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs @@ -1,11 +1,10 @@ -using System.Text.Json; using Data.V1.Grpc; using Grpc.Core; using SeedApi.Core; namespace SeedApi; -public partial class DataserviceClient : IDataserviceClient +public partial class DataServiceClient : IDataServiceClient { private readonly RawClient _client; @@ -13,94 +12,15 @@ public partial class DataserviceClient : IDataserviceClient private DataService.DataServiceClient _dataService; - internal DataserviceClient(RawClient client) + internal DataServiceClient(RawClient client) { _client = client; _grpc = _client.Grpc; _dataService = new DataService.DataServiceClient(_grpc.Channel); } - private async Task>> FooAsyncCore( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - var _headers = await new SeedApi.Core.HeadersBuilder.Builder() - .Add(_client.Options.Headers) - .Add(_client.Options.AdditionalHeaders) - .Add(options?.AdditionalHeaders) - .BuildAsync() - .ConfigureAwait(false); - var response = await _client - .SendRequestAsync( - new JsonRequest - { - Method = HttpMethod.Post, - Path = "foo", - Headers = _headers, - Options = options, - }, - cancellationToken - ) - .ConfigureAwait(false); - if (response.StatusCode is >= 200 and < 400) - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - try - { - var responseData = JsonUtils.Deserialize>( - responseBody - )!; - return new WithRawResponse>() - { - Data = responseData, - RawResponse = new RawResponse() - { - StatusCode = response.Raw.StatusCode, - Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), - Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), - }, - }; - } - catch (JsonException e) - { - throw new SeedApiApiException( - "Failed to deserialize response", - response.StatusCode, - responseBody, - e - ); - } - } - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - throw new SeedApiApiException( - $"Error with status code {response.StatusCode}", - response.StatusCode, - responseBody - ); - } - } - - /// - /// await client.Dataservice.FooAsync(); - /// - public WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - return new WithRawResponseTask>( - FooAsyncCore(options, cancellationToken) - ); - } - /// - /// await client.Dataservice.UploadAsync( + /// await client.DataService.UploadAsync( /// new UploadRequest /// { /// Columns = new List<SeedApi.Column>() @@ -170,7 +90,7 @@ public async Task UploadAsync( } /// - /// await client.Dataservice.DeleteAsync(new DeleteRequest()); + /// await client.DataService.DeleteAsync(new DeleteRequest()); /// public async Task DeleteAsync( DeleteRequest request, @@ -228,7 +148,7 @@ public async Task DeleteAsync( } /// - /// await client.Dataservice.DescribeAsync(new DescribeRequest()); + /// await client.DataService.DescribeAsync(new DescribeRequest()); /// public async Task DescribeAsync( DescribeRequest request, @@ -286,7 +206,7 @@ public async Task DescribeAsync( } /// - /// await client.Dataservice.FetchAsync(new FetchRequest()); + /// await client.DataService.FetchAsync(new FetchRequest()); /// public async Task FetchAsync( FetchRequest request, @@ -344,7 +264,7 @@ public async Task FetchAsync( } /// - /// await client.Dataservice.ListAsync(new ListRequest()); + /// await client.DataService.ListAsync(new ListRequest()); /// public async Task ListAsync( ListRequest request, @@ -402,7 +322,7 @@ public async Task ListAsync( } /// - /// await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); + /// await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); /// public async Task QueryAsync( QueryRequest request, @@ -460,7 +380,7 @@ public async Task QueryAsync( } /// - /// await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); + /// await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); /// public async Task UpdateAsync( UpdateRequest request, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs index 4a7de66ccb27..52d48a495b2b 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs @@ -1,12 +1,7 @@ namespace SeedApi; -public partial interface IDataserviceClient +public partial interface IDataServiceClient { - WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ); - Task UploadAsync( UploadRequest request, GrpcRequestOptions? options = null, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs index 40238253ea5e..5301c75e711f 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs @@ -32,6 +32,9 @@ public record UpdateRequest [JsonPropertyName("index_types")] public IEnumerable? IndexTypes { get; set; } + [JsonPropertyName("aspect_ratio")] + public AspectRatio? AspectRatio { get; set; } + /// /// Maps the UpdateRequest type into its Protobuf-equivalent representation. /// @@ -89,6 +92,20 @@ internal Proto.UpdateRequest ToProto() ) ); } + if (AspectRatio != null) + { + result.AspectRatio = AspectRatio.Value.Value switch + { + SeedApi.AspectRatio.Values.AspectRatioUnspecified => ProtoDataV1Grpc + .AspectRatio + .Unspecified, + SeedApi.AspectRatio.Values.AspectRatio11 => ProtoDataV1Grpc.AspectRatio._11, + SeedApi.AspectRatio.Values.AspectRatio169 => ProtoDataV1Grpc.AspectRatio._169, + SeedApi.AspectRatio.Values.AspectRatio916 => ProtoDataV1Grpc.AspectRatio._916, + SeedApi.AspectRatio.Values.AspectRatio43 => ProtoDataV1Grpc.AspectRatio._43, + _ => throw new ArgumentException($"Unknown enum value: {AspectRatio.Value.Value}"), + }; + } return result; } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/ISeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/ISeedApiClient.cs index 975e85422400..71a1b5857551 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/ISeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/ISeedApiClient.cs @@ -2,5 +2,9 @@ namespace SeedApi; public partial interface ISeedApiClient { - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ); } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/SeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/SeedApiClient.cs index 246aa6ca1fa7..f96d27cba4a6 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/SeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/SeedApiClient.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using SeedApi.Core; namespace SeedApi; @@ -26,8 +27,87 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } _client = new RawClient(clientOptions); - Dataservice = new DataserviceClient(_client); + DataService = new DataServiceClient(_client); } - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + + private async Task>> PostFooAsyncCore( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + var _headers = await new SeedApi.Core.HeadersBuilder.Builder() + .Add(_client.Options.Headers) + .Add(_client.Options.AdditionalHeaders) + .Add(options?.AdditionalHeaders) + .BuildAsync() + .ConfigureAwait(false); + var response = await _client + .SendRequestAsync( + new JsonRequest + { + Method = HttpMethod.Post, + Path = "foo", + Headers = _headers, + Options = options, + }, + cancellationToken + ) + .ConfigureAwait(false); + if (response.StatusCode is >= 200 and < 400) + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + try + { + var responseData = JsonUtils.Deserialize>( + responseBody + )!; + return new WithRawResponse>() + { + Data = responseData, + RawResponse = new RawResponse() + { + StatusCode = response.Raw.StatusCode, + Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), + Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), + }, + }; + } + catch (JsonException e) + { + throw new SeedApiApiException( + "Failed to deserialize response", + response.StatusCode, + responseBody, + e + ); + } + } + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + throw new SeedApiApiException( + $"Error with status code {response.StatusCode}", + response.StatusCode, + responseBody + ); + } + } + + /// + /// await client.PostFooAsync(); + /// + public WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + return new WithRawResponseTask>( + PostFooAsyncCore(options, cancellationToken) + ); + } } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs new file mode 100644 index 000000000000..0a1f05396af8 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs @@ -0,0 +1,77 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; + +namespace SeedApi; + +[JsonConverter(typeof(StringEnumSerializer))] +[Serializable] +public readonly record struct AspectRatio : IStringEnum +{ + public static readonly AspectRatio AspectRatioUnspecified = new(Values.AspectRatioUnspecified); + + public static readonly AspectRatio AspectRatio11 = new(Values.AspectRatio11); + + public static readonly AspectRatio AspectRatio169 = new(Values.AspectRatio169); + + public static readonly AspectRatio AspectRatio916 = new(Values.AspectRatio916); + + public static readonly AspectRatio AspectRatio43 = new(Values.AspectRatio43); + + public AspectRatio(string value) + { + Value = value; + } + + /// + /// The string value of the enum. + /// + public string Value { get; } + + /// + /// Create a string enum with the given value. + /// + public static AspectRatio FromCustom(string value) + { + return new AspectRatio(value); + } + + public bool Equals(string? other) + { + return Value.Equals(other); + } + + /// + /// Returns the string value of the enum. + /// + public override string ToString() + { + return Value; + } + + public static bool operator ==(AspectRatio value1, string value2) => + value1.Value.Equals(value2); + + public static bool operator !=(AspectRatio value1, string value2) => + !value1.Value.Equals(value2); + + public static explicit operator string(AspectRatio value) => value.Value; + + public static explicit operator AspectRatio(string value) => new(value); + + /// + /// Constant strings for enum values + /// + [Serializable] + public static class Values + { + public const string AspectRatioUnspecified = "ASPECT_RATIO_UNSPECIFIED"; + + public const string AspectRatio11 = "ASPECT_RATIO_1_1"; + + public const string AspectRatio169 = "ASPECT_RATIO_16_9"; + + public const string AspectRatio916 = "ASPECT_RATIO_9_16"; + + public const string AspectRatio43 = "ASPECT_RATIO_4_3"; + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Types/IndexType.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/IndexType.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Types/IndexType.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/IndexType.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/README.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/README.md index 7cc184191f18..90fdfe030dd2 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/README.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/README.md @@ -41,7 +41,15 @@ Instantiate and use the client with the following: using SeedApi; var client = new SeedApiClient(); -await client.Dataservice.FooAsync(); +await client.DataService.UploadAsync( + new UploadRequest + { + Columns = new List() + { + new SeedApi.Column { Id = "id", Values = new[] { 1.1f } }, + }, + } +); ``` ## Exception Handling @@ -53,7 +61,7 @@ will be thrown. using SeedApi; try { - var response = await client.Dataservice.FooAsync(...); + var response = await client.DataService.UploadAsync(...); } catch (SeedApiApiException e) { System.Console.WriteLine(e.Body); System.Console.WriteLine(e.StatusCode); @@ -77,7 +85,7 @@ A request is deemed retryable when any of the following HTTP status codes is ret Use the `MaxRetries` request option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { MaxRetries: 0 // Override MaxRetries at the request level @@ -90,7 +98,7 @@ var response = await client.Dataservice.FooAsync( The SDK defaults to a 30 second timeout. Use the `Timeout` option to configure this behavior. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { Timeout: TimeSpan.FromSeconds(3) // Override timeout to 3s @@ -103,7 +111,7 @@ var response = await client.Dataservice.FooAsync( If you would like to send additional headers as part of the request, use the `AdditionalHeaders` request option. ```csharp -var response = await client.Dataservice.FooAsync( +var response = await client.DataService.UploadAsync( ..., new RequestOptions { AdditionalHeaders = new Dictionary @@ -122,25 +130,25 @@ This SDK uses forward-compatible enums that can handle unknown values gracefully using SeedApi; // Using a built-in value -var indexType = IndexType.IndexTypeInvalid; +var aspectRatio = AspectRatio.AspectRatioUnspecified; // Using a custom value -var customIndexType = IndexType.FromCustom("custom-value"); +var customAspectRatio = AspectRatio.FromCustom("custom-value"); // Using in a switch statement -switch (indexType.Value) +switch (aspectRatio.Value) { - case IndexType.Values.IndexTypeInvalid: - Console.WriteLine("IndexTypeInvalid"); + case AspectRatio.Values.AspectRatioUnspecified: + Console.WriteLine("AspectRatioUnspecified"); break; default: - Console.WriteLine($"Unknown value: {indexType.Value}"); + Console.WriteLine($"Unknown value: {aspectRatio.Value}"); break; } // Explicit casting -string indexTypeString = (string)IndexType.IndexTypeInvalid; -IndexType indexTypeFromString = (IndexType)"INDEX_TYPE_INVALID"; +string aspectRatioString = (string)AspectRatio.AspectRatioUnspecified; +AspectRatio aspectRatioFromString = (AspectRatio)"ASPECT_RATIO_UNSPECIFIED"; ``` ## Contributing diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/reference.md b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/reference.md index 2a99e57fae10..f917cef928b8 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/reference.md +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/reference.md @@ -1,6 +1,5 @@ # Reference -## DataService -
client.Dataservice.FooAsync() -> WithRawResponseTask<Dictionary<string, object?>> +
client.PostFooAsync() -> WithRawResponseTask<Dictionary<string, object?>>
@@ -13,7 +12,7 @@
```csharp -await client.Dataservice.FooAsync(); +await client.PostFooAsync(); ```
@@ -25,7 +24,8 @@ await client.Dataservice.FooAsync();
-
client.Dataservice.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse> +## DataService +
client.DataService.UploadAsync(UploadRequest { ... }) -> WithRawResponseTask<UploadResponse>
@@ -38,7 +38,7 @@ await client.Dataservice.FooAsync();
```csharp -await client.Dataservice.UploadAsync( +await client.DataService.UploadAsync( new UploadRequest { Columns = new List() @@ -73,7 +73,7 @@ await client.Dataservice.UploadAsync(
-
client.Dataservice.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse> +
client.DataService.DeleteAsync(DeleteRequest { ... }) -> WithRawResponseTask<DeleteResponse>
@@ -86,7 +86,7 @@ await client.Dataservice.UploadAsync(
```csharp -await client.Dataservice.DeleteAsync(new DeleteRequest()); +await client.DataService.DeleteAsync(new DeleteRequest()); ```
@@ -113,7 +113,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
-
client.Dataservice.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse> +
client.DataService.DescribeAsync(DescribeRequest { ... }) -> WithRawResponseTask<DescribeResponse>
@@ -126,7 +126,7 @@ await client.Dataservice.DeleteAsync(new DeleteRequest());
```csharp -await client.Dataservice.DescribeAsync(new DescribeRequest()); +await client.DataService.DescribeAsync(new DescribeRequest()); ```
@@ -153,7 +153,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
-
client.Dataservice.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse> +
client.DataService.FetchAsync(FetchRequest { ... }) -> WithRawResponseTask<FetchResponse>
@@ -166,7 +166,7 @@ await client.Dataservice.DescribeAsync(new DescribeRequest());
```csharp -await client.Dataservice.FetchAsync(new FetchRequest()); +await client.DataService.FetchAsync(new FetchRequest()); ```
@@ -193,7 +193,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
-
client.Dataservice.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse> +
client.DataService.ListAsync(ListRequest { ... }) -> WithRawResponseTask<ListResponse>
@@ -206,7 +206,7 @@ await client.Dataservice.FetchAsync(new FetchRequest());
```csharp -await client.Dataservice.ListAsync(new ListRequest()); +await client.DataService.ListAsync(new ListRequest()); ```
@@ -233,7 +233,7 @@ await client.Dataservice.ListAsync(new ListRequest());
-
client.Dataservice.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse> +
client.DataService.QueryAsync(QueryRequest { ... }) -> WithRawResponseTask<QueryResponse>
@@ -246,7 +246,7 @@ await client.Dataservice.ListAsync(new ListRequest());
```csharp -await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); +await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); ```
@@ -273,7 +273,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
-
client.Dataservice.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse> +
client.DataService.UpdateAsync(UpdateRequest { ... }) -> WithRawResponseTask<UpdateResponse>
@@ -286,7 +286,7 @@ await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });
```csharp -await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); +await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); ```
diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/snippet.json b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/snippet.json index 6f1de7660adc..d4bcabc08c38 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/snippet.json +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/snippet.json @@ -1,28 +1,16 @@ { "types": {}, "endpoints": [ - { - "example_identifier": null, - "id": { - "path": "/foo", - "method": "POST", - "identifier_override": "endpoint_dataservice.foo" - }, - "snippet": { - "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FooAsync();\n" - } - }, { "example_identifier": null, "id": { "path": "/data", "method": "POST", - "identifier_override": "endpoint_dataservice.upload" + "identifier_override": "endpoint_dataService.Upload" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column { Id = \"id\", Values = new[] { 1.1f } },\n },\n }\n);\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UploadAsync(\n new UploadRequest\n {\n Columns = new List()\n {\n new SeedApi.Column { Id = \"id\", Values = new[] { 1.1f } },\n },\n }\n);\n" } }, { @@ -30,11 +18,11 @@ "id": { "path": "/data/delete", "method": "POST", - "identifier_override": "endpoint_dataservice.delete" + "identifier_override": "endpoint_dataService.Delete" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DeleteAsync(new DeleteRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DeleteAsync(new DeleteRequest());\n" } }, { @@ -42,11 +30,11 @@ "id": { "path": "/data/describe", "method": "POST", - "identifier_override": "endpoint_dataservice.describe" + "identifier_override": "endpoint_dataService.Describe" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.DescribeAsync(new DescribeRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.DescribeAsync(new DescribeRequest());\n" } }, { @@ -54,11 +42,11 @@ "id": { "path": "/data/fetch", "method": "GET", - "identifier_override": "endpoint_dataservice.fetch" + "identifier_override": "endpoint_dataService.Fetch" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.FetchAsync(new FetchRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.FetchAsync(new FetchRequest());\n" } }, { @@ -66,11 +54,11 @@ "id": { "path": "/data/list", "method": "GET", - "identifier_override": "endpoint_dataservice.list" + "identifier_override": "endpoint_dataService.List" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.ListAsync(new ListRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.ListAsync(new ListRequest());\n" } }, { @@ -78,11 +66,11 @@ "id": { "path": "/data/query", "method": "POST", - "identifier_override": "endpoint_dataservice.query" + "identifier_override": "endpoint_dataService.Query" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.QueryAsync(new QueryRequest { TopK = 1 });\n" } }, { @@ -90,11 +78,23 @@ "id": { "path": "/data/update", "method": "POST", - "identifier_override": "endpoint_dataservice.update" + "identifier_override": "endpoint_dataService.Update" + }, + "snippet": { + "type": "csharp", + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.DataService.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + } + }, + { + "example_identifier": null, + "id": { + "path": "/foo", + "method": "POST", + "identifier_override": "endpoint_.postFoo" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Dataservice.UpdateAsync(new UpdateRequest { Id = \"id\" });\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.PostFooAsync();\n" } } ] diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs new file mode 100644 index 000000000000..3f4ed8503ec1 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/BaseMockServerTest.cs @@ -0,0 +1,37 @@ +using NUnit.Framework; +using SeedApi; +using WireMock.Logging; +using WireMock.Server; +using WireMock.Settings; + +namespace SeedApi.Test.Unit.MockServer; + +public class BaseMockServerTest +{ + protected WireMockServer Server { get; set; } = null!; + + protected SeedApiClient Client { get; set; } = null!; + + protected RequestOptions RequestOptions { get; set; } = new(); + + [OneTimeSetUp] + public void GlobalSetup() + { + // Start the WireMock server + Server = WireMockServer.Start( + new WireMockServerSettings { Logger = new WireMockConsoleLogger() } + ); + + // Initialize the Client + Client = new SeedApiClient( + clientOptions: new ClientOptions { BaseUrl = Server.Urls[0], MaxRetries = 0 } + ); + } + + [OneTimeTearDown] + public void GlobalTeardown() + { + Server.Stop(); + Server.Dispose(); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs new file mode 100644 index 000000000000..53a6e783292a --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi.Test/Unit/MockServer/PostFooTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using SeedApi.Test.Utils; + +namespace SeedApi.Test.Unit.MockServer; + +[TestFixture] +[Parallelizable(ParallelScope.Self)] +public class PostFooTest : BaseMockServerTest +{ + [NUnit.Framework.Test] + public async Task MockServerTest_1() + { + const string mockResponse = """ + { + "string": { + "key": "value" + } + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } + + [NUnit.Framework.Test] + public async Task MockServerTest_2() + { + const string mockResponse = """ + { + "key": "value" + } + """; + + Server + .Given(WireMock.RequestBuilders.Request.Create().WithPath("/foo").UsingPost()) + .RespondWith( + WireMock + .ResponseBuilders.Response.Create() + .WithStatusCode(200) + .WithBody(mockResponse) + ); + + var response = await Client.PostFooAsync(); + JsonAssert.AreEqual(response, mockResponse); + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs index e991dba27923..2d2ef821558d 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs @@ -1,11 +1,10 @@ -using System.Text.Json; using Data.V1.Grpc; using Grpc.Core; using SeedApi.Core; namespace SeedApi; -public partial class DataserviceClient : IDataserviceClient +public partial class DataServiceClient : IDataServiceClient { private readonly RawClient _client; @@ -13,94 +12,15 @@ public partial class DataserviceClient : IDataserviceClient private DataService.DataServiceClient _dataService; - internal DataserviceClient(RawClient client) + internal DataServiceClient(RawClient client) { _client = client; _grpc = _client.Grpc; _dataService = new DataService.DataServiceClient(_grpc.Channel); } - private async Task>> FooAsyncCore( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - var _headers = await new SeedApi.Core.HeadersBuilder.Builder() - .Add(_client.Options.Headers) - .Add(_client.Options.AdditionalHeaders) - .Add(options?.AdditionalHeaders) - .BuildAsync() - .ConfigureAwait(false); - var response = await _client - .SendRequestAsync( - new JsonRequest - { - Method = HttpMethod.Post, - Path = "foo", - Headers = _headers, - Options = options, - }, - cancellationToken - ) - .ConfigureAwait(false); - if (response.StatusCode is >= 200 and < 400) - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - try - { - var responseData = JsonUtils.Deserialize>( - responseBody - )!; - return new WithRawResponse>() - { - Data = responseData, - RawResponse = new RawResponse() - { - StatusCode = response.Raw.StatusCode, - Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), - Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), - }, - }; - } - catch (JsonException e) - { - throw new SeedApiApiException( - "Failed to deserialize response", - response.StatusCode, - responseBody, - e - ); - } - } - { - var responseBody = await response - .Raw.Content.ReadAsStringAsync(cancellationToken) - .ConfigureAwait(false); - throw new SeedApiApiException( - $"Error with status code {response.StatusCode}", - response.StatusCode, - responseBody - ); - } - } - - /// - /// await client.Dataservice.FooAsync(); - /// - public WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ) - { - return new WithRawResponseTask>( - FooAsyncCore(options, cancellationToken) - ); - } - /// - /// await client.Dataservice.UploadAsync( + /// await client.DataService.UploadAsync( /// new UploadRequest /// { /// Columns = new List<SeedApi.Column>() @@ -166,7 +86,7 @@ public async Task UploadAsync( } /// - /// await client.Dataservice.DeleteAsync(new DeleteRequest()); + /// await client.DataService.DeleteAsync(new DeleteRequest()); /// public async Task DeleteAsync( DeleteRequest request, @@ -224,7 +144,7 @@ public async Task DeleteAsync( } /// - /// await client.Dataservice.DescribeAsync(new DescribeRequest()); + /// await client.DataService.DescribeAsync(new DescribeRequest()); /// public async Task DescribeAsync( DescribeRequest request, @@ -282,7 +202,7 @@ public async Task DescribeAsync( } /// - /// await client.Dataservice.FetchAsync(new FetchRequest()); + /// await client.DataService.FetchAsync(new FetchRequest()); /// public async Task FetchAsync( FetchRequest request, @@ -340,7 +260,7 @@ public async Task FetchAsync( } /// - /// await client.Dataservice.ListAsync(new ListRequest()); + /// await client.DataService.ListAsync(new ListRequest()); /// public async Task ListAsync( ListRequest request, @@ -398,7 +318,7 @@ public async Task ListAsync( } /// - /// await client.Dataservice.QueryAsync(new QueryRequest { TopK = 1 }); + /// await client.DataService.QueryAsync(new QueryRequest { TopK = 1 }); /// public async Task QueryAsync( QueryRequest request, @@ -456,7 +376,7 @@ public async Task QueryAsync( } /// - /// await client.Dataservice.UpdateAsync(new UpdateRequest { Id = "id" }); + /// await client.DataService.UpdateAsync(new UpdateRequest { Id = "id" }); /// public async Task UpdateAsync( UpdateRequest request, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs index 4a7de66ccb27..52d48a495b2b 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs @@ -1,12 +1,7 @@ namespace SeedApi; -public partial interface IDataserviceClient +public partial interface IDataServiceClient { - WithRawResponseTask> FooAsync( - RequestOptions? options = null, - CancellationToken cancellationToken = default - ); - Task UploadAsync( UploadRequest request, GrpcRequestOptions? options = null, diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs index 1edaf1132bd9..ac0730dc2546 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs @@ -32,6 +32,9 @@ public record UpdateRequest [JsonPropertyName("index_types")] public IEnumerable? IndexTypes { get; set; } + [JsonPropertyName("aspect_ratio")] + public AspectRatio? AspectRatio { get; set; } + /// /// Maps the UpdateRequest type into its Protobuf-equivalent representation. /// @@ -89,6 +92,20 @@ internal Proto.UpdateRequest ToProto() ) ); } + if (AspectRatio != null) + { + result.AspectRatio = AspectRatio.Value.Value switch + { + SeedApi.AspectRatio.Values.AspectRatioUnspecified => ProtoDataV1Grpc + .AspectRatio + .Unspecified, + SeedApi.AspectRatio.Values.AspectRatio11 => ProtoDataV1Grpc.AspectRatio._11, + SeedApi.AspectRatio.Values.AspectRatio169 => ProtoDataV1Grpc.AspectRatio._169, + SeedApi.AspectRatio.Values.AspectRatio916 => ProtoDataV1Grpc.AspectRatio._916, + SeedApi.AspectRatio.Values.AspectRatio43 => ProtoDataV1Grpc.AspectRatio._43, + _ => throw new ArgumentException($"Unknown enum value: {AspectRatio.Value.Value}"), + }; + } return result; } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/ISeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/ISeedApiClient.cs index 975e85422400..71a1b5857551 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/ISeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/ISeedApiClient.cs @@ -2,5 +2,9 @@ namespace SeedApi; public partial interface ISeedApiClient { - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ); } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApiClient.cs index 246aa6ca1fa7..f96d27cba4a6 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/SeedApiClient.cs @@ -1,3 +1,4 @@ +using System.Text.Json; using SeedApi.Core; namespace SeedApi; @@ -26,8 +27,87 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } _client = new RawClient(clientOptions); - Dataservice = new DataserviceClient(_client); + DataService = new DataServiceClient(_client); } - public IDataserviceClient Dataservice { get; } + public IDataServiceClient DataService { get; } + + private async Task>> PostFooAsyncCore( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + var _headers = await new SeedApi.Core.HeadersBuilder.Builder() + .Add(_client.Options.Headers) + .Add(_client.Options.AdditionalHeaders) + .Add(options?.AdditionalHeaders) + .BuildAsync() + .ConfigureAwait(false); + var response = await _client + .SendRequestAsync( + new JsonRequest + { + Method = HttpMethod.Post, + Path = "foo", + Headers = _headers, + Options = options, + }, + cancellationToken + ) + .ConfigureAwait(false); + if (response.StatusCode is >= 200 and < 400) + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + try + { + var responseData = JsonUtils.Deserialize>( + responseBody + )!; + return new WithRawResponse>() + { + Data = responseData, + RawResponse = new RawResponse() + { + StatusCode = response.Raw.StatusCode, + Url = response.Raw.RequestMessage?.RequestUri ?? new Uri("about:blank"), + Headers = ResponseHeaders.FromHttpResponseMessage(response.Raw), + }, + }; + } + catch (JsonException e) + { + throw new SeedApiApiException( + "Failed to deserialize response", + response.StatusCode, + responseBody, + e + ); + } + } + { + var responseBody = await response + .Raw.Content.ReadAsStringAsync(cancellationToken) + .ConfigureAwait(false); + throw new SeedApiApiException( + $"Error with status code {response.StatusCode}", + response.StatusCode, + responseBody + ); + } + } + + /// + /// await client.PostFooAsync(); + /// + public WithRawResponseTask> PostFooAsync( + RequestOptions? options = null, + CancellationToken cancellationToken = default + ) + { + return new WithRawResponseTask>( + PostFooAsyncCore(options, cancellationToken) + ); + } } diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs new file mode 100644 index 000000000000..0a1f05396af8 --- /dev/null +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs @@ -0,0 +1,77 @@ +using System.Text.Json.Serialization; +using SeedApi.Core; + +namespace SeedApi; + +[JsonConverter(typeof(StringEnumSerializer))] +[Serializable] +public readonly record struct AspectRatio : IStringEnum +{ + public static readonly AspectRatio AspectRatioUnspecified = new(Values.AspectRatioUnspecified); + + public static readonly AspectRatio AspectRatio11 = new(Values.AspectRatio11); + + public static readonly AspectRatio AspectRatio169 = new(Values.AspectRatio169); + + public static readonly AspectRatio AspectRatio916 = new(Values.AspectRatio916); + + public static readonly AspectRatio AspectRatio43 = new(Values.AspectRatio43); + + public AspectRatio(string value) + { + Value = value; + } + + /// + /// The string value of the enum. + /// + public string Value { get; } + + /// + /// Create a string enum with the given value. + /// + public static AspectRatio FromCustom(string value) + { + return new AspectRatio(value); + } + + public bool Equals(string? other) + { + return Value.Equals(other); + } + + /// + /// Returns the string value of the enum. + /// + public override string ToString() + { + return Value; + } + + public static bool operator ==(AspectRatio value1, string value2) => + value1.Value.Equals(value2); + + public static bool operator !=(AspectRatio value1, string value2) => + !value1.Value.Equals(value2); + + public static explicit operator string(AspectRatio value) => value.Value; + + public static explicit operator AspectRatio(string value) => new(value); + + /// + /// Constant strings for enum values + /// + [Serializable] + public static class Values + { + public const string AspectRatioUnspecified = "ASPECT_RATIO_UNSPECIFIED"; + + public const string AspectRatio11 = "ASPECT_RATIO_1_1"; + + public const string AspectRatio169 = "ASPECT_RATIO_16_9"; + + public const string AspectRatio916 = "ASPECT_RATIO_9_16"; + + public const string AspectRatio43 = "ASPECT_RATIO_4_3"; + } +} diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Types/IndexType.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/IndexType.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Types/IndexType.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/IndexType.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/README.md b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/README.md index 084b952a5cda..308edd364aaf 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/README.md +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/README.md @@ -40,7 +40,7 @@ Instantiate and use the client with the following: using SeedApi; var client = new SeedApiClient(); -await client.Userservice.CreateAsync(new CreateRequest()); +await client.UserService.CreateAsync(new CreateRequest()); ``` ## Exception Handling @@ -52,7 +52,7 @@ will be thrown. using SeedApi; try { - var response = await client.Userservice.CreateAsync(...); + var response = await client.UserService.CreateAsync(...); } catch (SeedApiApiException e) { System.Console.WriteLine(e.Body); System.Console.WriteLine(e.StatusCode); @@ -76,7 +76,7 @@ A request is deemed retryable when any of the following HTTP status codes is ret Use the `MaxRetries` request option to configure this behavior. ```csharp -var response = await client.Userservice.CreateAsync( +var response = await client.UserService.CreateAsync( ..., new RequestOptions { MaxRetries: 0 // Override MaxRetries at the request level @@ -89,7 +89,7 @@ var response = await client.Userservice.CreateAsync( The SDK defaults to a 30 second timeout. Use the `Timeout` option to configure this behavior. ```csharp -var response = await client.Userservice.CreateAsync( +var response = await client.UserService.CreateAsync( ..., new RequestOptions { Timeout: TimeSpan.FromSeconds(3) // Override timeout to 3s @@ -102,7 +102,7 @@ var response = await client.Userservice.CreateAsync( If you would like to send additional headers as part of the request, use the `AdditionalHeaders` request option. ```csharp -var response = await client.Userservice.CreateAsync( +var response = await client.UserService.CreateAsync( ..., new RequestOptions { AdditionalHeaders = new Dictionary diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/reference.md b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/reference.md index 2a8af3906abc..cbd330b36e71 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/reference.md +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/reference.md @@ -1,6 +1,6 @@ # Reference ## UserService -
client.Userservice.CreateAsync(CreateRequest { ... }) -> WithRawResponseTask<CreateResponse> +
client.UserService.CreateAsync(CreateRequest { ... }) -> WithRawResponseTask<CreateResponse>
@@ -13,7 +13,7 @@
```csharp -await client.Userservice.CreateAsync(new CreateRequest()); +await client.UserService.CreateAsync(new CreateRequest()); ```
diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/snippet.json b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/snippet.json index df65366f4528..1c7ac6aea824 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/snippet.json +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/snippet.json @@ -6,11 +6,11 @@ "id": { "path": "/users", "method": "POST", - "identifier_override": "endpoint_userservice.create" + "identifier_override": "endpoint_userService.Create" }, "snippet": { "type": "csharp", - "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.Userservice.CreateAsync(new CreateRequest());\n" + "client": "using SeedApi;\n\nvar client = new SeedApiClient();\nawait client.UserService.CreateAsync(new CreateRequest());\n" } } ] diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/ISeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/ISeedApiClient.cs index ffefaf871345..d960c2537715 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/ISeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/ISeedApiClient.cs @@ -2,5 +2,5 @@ namespace SeedApi; public partial interface ISeedApiClient { - public IUserserviceClient Userservice { get; } + public IUserServiceClient UserService { get; } } diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/SeedApiClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/SeedApiClient.cs index ad90c2bb3a65..c31c606689d7 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/SeedApiClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/SeedApiClient.cs @@ -26,8 +26,8 @@ public SeedApiClient(ClientOptions? clientOptions = null) } } _client = new RawClient(clientOptions); - Userservice = new UserserviceClient(_client); + UserService = new UserServiceClient(_client); } - public IUserserviceClient Userservice { get; } + public IUserServiceClient UserService { get; } } diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs index 948eb13bebe2..09ddf90facab 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs @@ -1,6 +1,6 @@ namespace SeedApi; -public partial interface IUserserviceClient +public partial interface IUserServiceClient { Task CreateAsync( CreateRequest request, diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs index 66fb221f639e..ffc8c954d255 100644 --- a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs +++ b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs @@ -4,7 +4,7 @@ namespace SeedApi; -public partial class UserserviceClient : IUserserviceClient +public partial class UserServiceClient : IUserServiceClient { private readonly RawClient _client; @@ -12,7 +12,7 @@ public partial class UserserviceClient : IUserserviceClient private UserService.UserServiceClient _userService; - internal UserserviceClient(RawClient client) + internal UserServiceClient(RawClient client) { _client = client; _grpc = _client.Grpc; @@ -20,7 +20,7 @@ internal UserserviceClient(RawClient client) } /// - /// await client.Userservice.CreateAsync(new CreateRequest()); + /// await client.UserService.CreateAsync(new CreateRequest()); /// public async Task CreateAsync( CreateRequest request, diff --git a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/openapi/openapi.yml b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/openapi/openapi.yml index 56ea165b7738..6333defb8f70 100644 --- a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/openapi/openapi.yml +++ b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/openapi/openapi.yml @@ -9,11 +9,6 @@ tags: paths: /foo: post: - tag: dataservice - x-fern-sdk-group-name: - - dataservice - x-fern-sdk-method-name: foo - operationId: foo responses: "200": content: diff --git a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/overrides.yml b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/overrides.yml index 17e3b51b9b23..e719158fe577 100644 --- a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/overrides.yml +++ b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/overrides.yml @@ -89,8 +89,6 @@ components: metadata: $ref: "#/components/schemas/Metadata" IndexType: - x-fern-sdk-group-name: - - dataservice x-fern-type-name: IndexType enum: - INDEX_TYPE_INVALID diff --git a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto index b8244b95516d..46947f1d26ee 100644 --- a/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto +++ b/test-definitions/fern/apis/csharp-grpc-proto-exhaustive/proto/data/v1/data.proto @@ -17,6 +17,14 @@ enum IndexType { INDEX_TYPE_STRICT = 2; } +enum AspectRatio { + ASPECT_RATIO_UNSPECIFIED = 0; + ASPECT_RATIO_1_1 = 1; + ASPECT_RATIO_16_9 = 2; + ASPECT_RATIO_9_16 = 3; + ASPECT_RATIO_4_3 = 4; +} + message IndexedData { repeated uint32 indices = 1 [ (google.api.field_behavior) = REQUIRED @@ -155,6 +163,7 @@ message UpdateRequest { IndexType index_type = 6; google.protobuf.Any details = 7; repeated IndexType index_types = 8; + optional AspectRatio aspect_ratio = 9; } message UpdateResponse { From d26d8567e9fea39cd2736e1ba3c1079dda6c378e Mon Sep 17 00:00:00 2001 From: Fern Support <126544928+fern-support@users.noreply.github.com> Date: Sun, 15 Mar 2026 12:39:48 -0400 Subject: [PATCH 2/4] chore(csharp): update csharp-model seed (#13550) Co-authored-by: amckinney --- .../src/SeedApi/AspectRatio.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs index 0a1f05396af8..d86b98014dcf 100644 --- a/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs +++ b/seed/csharp-model/csharp-grpc-proto-exhaustive/src/SeedApi/AspectRatio.cs @@ -1,9 +1,10 @@ +using System.Text.Json; using System.Text.Json.Serialization; using SeedApi.Core; namespace SeedApi; -[JsonConverter(typeof(StringEnumSerializer))] +[JsonConverter(typeof(AspectRatio.AspectRatioSerializer))] [Serializable] public readonly record struct AspectRatio : IStringEnum { @@ -58,6 +59,32 @@ public override string ToString() public static explicit operator AspectRatio(string value) => new(value); + internal class AspectRatioSerializer : JsonConverter + { + public override AspectRatio Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new global::System.Exception( + "The JSON value could not be read as a string." + ); + return new AspectRatio(stringValue); + } + + public override void Write( + Utf8JsonWriter writer, + AspectRatio value, + JsonSerializerOptions options + ) + { + writer.WriteStringValue(value.Value); + } + } + /// /// Constant strings for enum values /// From 2cbd2b9cdba2369d25c1b7388d0ca750aff838a4 Mon Sep 17 00:00:00 2001 From: Fern Support <126544928+fern-support@users.noreply.github.com> Date: Sun, 15 Mar 2026 12:40:16 -0400 Subject: [PATCH 3/4] chore(csharp): update csharp-sdk seed (#13551) Co-authored-by: amckinney --- .../DataServiceClient.cs} | 0 .../IDataServiceClient.cs} | 0 .../Requests/DeleteRequest.cs | 0 .../Requests/DescribeRequest.cs | 0 .../Requests/FetchRequest.cs | 0 .../Requests/ListRequest.cs | 0 .../Requests/QueryRequest.cs | 0 .../Requests/UpdateRequest.cs | 0 .../Requests/UploadRequest.cs | 0 .../src/SeedApi/Types/AspectRatio.cs | 29 ++++++++++++++++++- .../DataServiceClient.cs} | 0 .../IDataServiceClient.cs} | 0 .../Requests/DeleteRequest.cs | 0 .../Requests/DescribeRequest.cs | 0 .../Requests/FetchRequest.cs | 0 .../Requests/ListRequest.cs | 0 .../Requests/QueryRequest.cs | 0 .../Requests/UpdateRequest.cs | 0 .../Requests/UploadRequest.cs | 0 .../src/SeedApi/Types/AspectRatio.cs | 29 ++++++++++++++++++- .../DataServiceClient.cs} | 0 .../IDataServiceClient.cs} | 0 .../Requests/DeleteRequest.cs | 0 .../Requests/DescribeRequest.cs | 0 .../Requests/FetchRequest.cs | 0 .../Requests/ListRequest.cs | 0 .../Requests/QueryRequest.cs | 0 .../Requests/UpdateRequest.cs | 0 .../Requests/UploadRequest.cs | 0 .../src/SeedApi/Types/AspectRatio.cs | 29 ++++++++++++++++++- .../DataServiceClient.cs} | 0 .../IDataServiceClient.cs} | 0 .../Requests/DeleteRequest.cs | 0 .../Requests/DescribeRequest.cs | 0 .../Requests/FetchRequest.cs | 0 .../Requests/ListRequest.cs | 0 .../Requests/QueryRequest.cs | 0 .../Requests/UpdateRequest.cs | 0 .../Requests/UploadRequest.cs | 0 .../src/SeedApi/Types/AspectRatio.cs | 29 ++++++++++++++++++- .../IUserServiceClient.cs} | 0 .../Requests/CreateRequest.cs | 0 .../UserServiceClient.cs} | 0 43 files changed, 112 insertions(+), 4 deletions(-) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice/DataserviceClient.cs => DataService/DataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice/IDataserviceClient.cs => DataService/IDataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/DeleteRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/DescribeRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/FetchRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/ListRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/QueryRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/UpdateRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/{Dataservice => DataService}/Requests/UploadRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice/DataserviceClient.cs => DataService/DataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice/IDataserviceClient.cs => DataService/IDataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/DeleteRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/DescribeRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/FetchRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/ListRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/QueryRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/UpdateRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/{Dataservice => DataService}/Requests/UploadRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice/DataserviceClient.cs => DataService/DataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice/IDataserviceClient.cs => DataService/IDataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/DeleteRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/DescribeRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/FetchRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/ListRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/QueryRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/UpdateRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/{Dataservice => DataService}/Requests/UploadRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice/DataserviceClient.cs => DataService/DataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice/IDataserviceClient.cs => DataService/IDataServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/DeleteRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/DescribeRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/FetchRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/ListRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/QueryRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/UpdateRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/{Dataservice => DataService}/Requests/UploadRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/{Userservice/IUserserviceClient.cs => UserService/IUserServiceClient.cs} (100%) rename seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/{Userservice => UserService}/Requests/CreateRequest.cs (100%) rename seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/{Userservice/UserserviceClient.cs => UserService/UserServiceClient.cs} (100%) diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/DataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/DataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/DataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/IDataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/IDataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/IDataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/DeleteRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/DeleteRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/DeleteRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/DeleteRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/DescribeRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/DescribeRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/DescribeRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/DescribeRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/FetchRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/FetchRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/FetchRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/FetchRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/ListRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/ListRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/ListRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/ListRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/QueryRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/QueryRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/QueryRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/QueryRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/UpdateRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UpdateRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/UpdateRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UploadRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/UploadRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Dataservice/Requests/UploadRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/DataService/Requests/UploadRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs index 0a1f05396af8..d86b98014dcf 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/include-exception-handler/src/SeedApi/Types/AspectRatio.cs @@ -1,9 +1,10 @@ +using System.Text.Json; using System.Text.Json.Serialization; using SeedApi.Core; namespace SeedApi; -[JsonConverter(typeof(StringEnumSerializer))] +[JsonConverter(typeof(AspectRatio.AspectRatioSerializer))] [Serializable] public readonly record struct AspectRatio : IStringEnum { @@ -58,6 +59,32 @@ public override string ToString() public static explicit operator AspectRatio(string value) => new(value); + internal class AspectRatioSerializer : JsonConverter + { + public override AspectRatio Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new global::System.Exception( + "The JSON value could not be read as a string." + ); + return new AspectRatio(stringValue); + } + + public override void Write( + Utf8JsonWriter writer, + AspectRatio value, + JsonSerializerOptions options + ) + { + writer.WriteStringValue(value.Value); + } + } + /// /// Constant strings for enum values /// diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/DataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/DataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/DataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/IDataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/IDataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/IDataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/DeleteRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/DeleteRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/DeleteRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/DeleteRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/DescribeRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/DescribeRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/DescribeRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/DescribeRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/FetchRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/FetchRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/FetchRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/FetchRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/ListRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/ListRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/ListRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/ListRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/QueryRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/QueryRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/QueryRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/QueryRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/UpdateRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UpdateRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/UpdateRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UploadRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/UploadRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Dataservice/Requests/UploadRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/DataService/Requests/UploadRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs index 0a1f05396af8..d86b98014dcf 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/no-custom-config/src/SeedApi/Types/AspectRatio.cs @@ -1,9 +1,10 @@ +using System.Text.Json; using System.Text.Json.Serialization; using SeedApi.Core; namespace SeedApi; -[JsonConverter(typeof(StringEnumSerializer))] +[JsonConverter(typeof(AspectRatio.AspectRatioSerializer))] [Serializable] public readonly record struct AspectRatio : IStringEnum { @@ -58,6 +59,32 @@ public override string ToString() public static explicit operator AspectRatio(string value) => new(value); + internal class AspectRatioSerializer : JsonConverter + { + public override AspectRatio Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new global::System.Exception( + "The JSON value could not be read as a string." + ); + return new AspectRatio(stringValue); + } + + public override void Write( + Utf8JsonWriter writer, + AspectRatio value, + JsonSerializerOptions options + ) + { + writer.WriteStringValue(value.Value); + } + } + /// /// Constant strings for enum values /// diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/DataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/DataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/DataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/IDataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/IDataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/IDataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/DeleteRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/DeleteRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/DeleteRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/DeleteRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/DescribeRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/DescribeRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/DescribeRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/DescribeRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/FetchRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/FetchRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/FetchRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/FetchRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/ListRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/ListRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/ListRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/ListRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/QueryRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/QueryRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/QueryRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/QueryRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/UpdateRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UpdateRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/UpdateRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UploadRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/UploadRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Dataservice/Requests/UploadRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/DataService/Requests/UploadRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs index 0a1f05396af8..d86b98014dcf 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/package-id/src/SeedApi/Types/AspectRatio.cs @@ -1,9 +1,10 @@ +using System.Text.Json; using System.Text.Json.Serialization; using SeedApi.Core; namespace SeedApi; -[JsonConverter(typeof(StringEnumSerializer))] +[JsonConverter(typeof(AspectRatio.AspectRatioSerializer))] [Serializable] public readonly record struct AspectRatio : IStringEnum { @@ -58,6 +59,32 @@ public override string ToString() public static explicit operator AspectRatio(string value) => new(value); + internal class AspectRatioSerializer : JsonConverter + { + public override AspectRatio Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new global::System.Exception( + "The JSON value could not be read as a string." + ); + return new AspectRatio(stringValue); + } + + public override void Write( + Utf8JsonWriter writer, + AspectRatio value, + JsonSerializerOptions options + ) + { + writer.WriteStringValue(value.Value); + } + } + /// /// Constant strings for enum values /// diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/DataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/DataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/DataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/IDataServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/IDataserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/IDataServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/DeleteRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/DeleteRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/DeleteRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/DeleteRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/DescribeRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/DescribeRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/DescribeRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/DescribeRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/FetchRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/FetchRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/FetchRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/FetchRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/ListRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/ListRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/ListRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/ListRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/QueryRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/QueryRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/QueryRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/QueryRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/UpdateRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UpdateRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/UpdateRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UploadRequest.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/UploadRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Dataservice/Requests/UploadRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/DataService/Requests/UploadRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs index 0a1f05396af8..d86b98014dcf 100644 --- a/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs +++ b/seed/csharp-sdk/csharp-grpc-proto-exhaustive/read-only-memory/src/SeedApi/Types/AspectRatio.cs @@ -1,9 +1,10 @@ +using System.Text.Json; using System.Text.Json.Serialization; using SeedApi.Core; namespace SeedApi; -[JsonConverter(typeof(StringEnumSerializer))] +[JsonConverter(typeof(AspectRatio.AspectRatioSerializer))] [Serializable] public readonly record struct AspectRatio : IStringEnum { @@ -58,6 +59,32 @@ public override string ToString() public static explicit operator AspectRatio(string value) => new(value); + internal class AspectRatioSerializer : JsonConverter + { + public override AspectRatio Read( + ref Utf8JsonReader reader, + Type typeToConvert, + JsonSerializerOptions options + ) + { + var stringValue = + reader.GetString() + ?? throw new global::System.Exception( + "The JSON value could not be read as a string." + ); + return new AspectRatio(stringValue); + } + + public override void Write( + Utf8JsonWriter writer, + AspectRatio value, + JsonSerializerOptions options + ) + { + writer.WriteStringValue(value.Value); + } + } + /// /// Constant strings for enum values /// diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/IUserServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/IUserserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/IUserServiceClient.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/Requests/CreateRequest.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/Requests/CreateRequest.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/Requests/CreateRequest.cs rename to seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/Requests/CreateRequest.cs diff --git a/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs b/seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/UserServiceClient.cs similarity index 100% rename from seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/Userservice/UserserviceClient.cs rename to seed/csharp-sdk/csharp-grpc-proto/no-custom-config/src/SeedApi/UserService/UserServiceClient.cs From 47d4544668b629390bde521e7114ea5ab8908681 Mon Sep 17 00:00:00 2001 From: Fern Support <126544928+fern-support@users.noreply.github.com> Date: Sun, 15 Mar 2026 12:51:57 -0400 Subject: [PATCH 4/4] chore(csharp): update csharp-sdk seed (#13553) Co-authored-by: fern-support