From 8c9a9dfe8532c843e954536161ff27a973660f5e Mon Sep 17 00:00:00 2001 From: Nicolas Rodriguez Date: Sat, 20 Jun 2026 02:29:05 +0200 Subject: [PATCH 1/2] [crystal] Idiomatic redesign: namespaced client, single request path, leaner models Overhaul the beta `crystal` client generator to emit idiomatic, DRY, multi-instance Crystal. API layer: - Namespaced sub-clients: `client.dcim.cable_terminations.list` (path-based routing via a CrystalApiRouting helper + addOperationToGroup) instead of a flat `DcimApi` with prefixed methods. - A single generic `Connection#request(T) forall T` choke point (crest transport); operations are short declarative calls returning a typed `Response(T)` (no `_with_http_info` twins). - Native multi-instance via a `Client` facade owning a per-instance `Connection`/`Configuration` (no global singleton). Operation header params wired through; array query params encoded as `key=a&key=b` via a configurable Crest params encoder. Models: - Trim ignored `@[JSON::Field]` args; `valid?` delegates to `list_invalid_properties`. - Shared `Serializable` mixin for `to_h`/`to_body`/`to_s`/`eql?`; `==`/`hash` via the stdlib `def_equals_and_hash` macro. - One declarative `validates(name, type, nilable, **rules)` macro replaces the per-model EnumAttributeValidator hierarchy and the duplicated min/max/length/pattern/items + enum checks. ~-39% model LOC on a large real-world spec; eager (rescuable) validation now actually fires. Generated specs are meaningful (JSON round-trip / required enforcement / facade reachability) instead of empty `skip` stubs. Also fixes latent bugs: numeric enums quoted as strings, validating setters shadowed by property setters, BigDecimal JSON, ::File-in-model, unresolved Array(Array), stale RecursiveHash references, blank shard.yml authors, and a maxItems/minItems paren typo. petstore `crystal spec` and the codegen unit tests pass. Co-Authored-By: Claude Opus 4.8 --- bin/configs/crystal.yaml | 7 +- docs/generators/crystal.md | 1 + .../languages/CrystalClientCodegen.java | 497 +++++++++++++- .../languages/crystal/CrystalApiRouting.java | 143 ++++ .../src/main/resources/crystal/api.mustache | 200 +----- .../resources/crystal/api_client.mustache | 175 ----- .../main/resources/crystal/api_doc.mustache | 118 ---- .../main/resources/crystal/api_error.mustache | 39 +- .../main/resources/crystal/api_info.mustache | 4 - .../main/resources/crystal/api_test.mustache | 34 +- .../resources/crystal/base_object.mustache | 41 -- .../main/resources/crystal/client.mustache | 38 ++ .../resources/crystal/configuration.mustache | 225 ++----- .../resources/crystal/connection.mustache | 96 +++ .../main/resources/crystal/gitignore.mustache | 3 + .../src/main/resources/crystal/model.mustache | 8 + .../main/resources/crystal/model_doc.mustache | 14 - .../resources/crystal/model_test.mustache | 109 ++-- .../crystal/partial_model_anyof.mustache | 68 ++ .../crystal/partial_model_enum_class.mustache | 26 +- .../crystal/partial_model_generic.mustache | 286 +------- .../partial_model_generic_doc.mustache | 28 - .../crystal/partial_oneof_module.mustache | 125 ++-- .../crystal/partial_oneof_module_doc.mustache | 92 --- .../resources/crystal/recursive_hash.mustache | 18 - .../main/resources/crystal/response.mustache | 13 + .../resources/crystal/serializable.mustache | 27 + .../src/main/resources/crystal/shard.mustache | 2 - .../resources/crystal/shard_name.mustache | 44 +- .../resources/crystal/validation.mustache | 33 + .../crystal/CrystalApiRoutingTest.java | 132 ++++ .../crystal/CrystalClientCodegenTest.java | 614 ++++++++++++++++-- .../resources/3_0/crystal/auth-hyphen.yaml | 28 + .../3_0/crystal/collection-format.yaml | 45 ++ .../resources/3_0/crystal/cookie-params.yaml | 11 + .../resources/3_0/crystal/namespacing.yaml | 11 + .../3_0/crystal/oneof-discriminator.yaml | 14 + .../3_0/crystal/scalar-defaults.yaml | 13 + samples/client/petstore/crystal/.gitignore | 3 + .../crystal/.openapi-generator-ignore | 6 +- .../petstore/crystal/.openapi-generator/FILES | 63 +- samples/client/petstore/crystal/.travis.yml | 16 - samples/client/petstore/crystal/README.md | 2 +- samples/client/petstore/crystal/bin/ameba | Bin 11539896 -> 0 bytes samples/client/petstore/crystal/bin/ameba.cr | 7 - .../crystal/pet_compilation_error_spec.cr | 11 - samples/client/petstore/crystal/pom.xml | 60 -- samples/client/petstore/crystal/shard.lock | 38 -- samples/client/petstore/crystal/shard.yml | 2 - .../crystal/spec/api/another_fake_spec.cr | 23 + .../crystal/spec/api/fake_api_spec.cr | 38 -- .../spec/api/fake_classname_test_spec.cr | 23 + .../petstore/crystal/spec/api/fake_spec.cr | 23 + .../petstore/crystal/spec/api/foo_spec.cr | 23 + .../petstore/crystal/spec/api/pet_api_spec.cr | 160 ----- .../petstore/crystal/spec/api/pet_spec.cr | 23 + .../crystal/spec/api/store/order_spec.cr | 23 + .../crystal/spec/api/store_api_spec.cr | 70 -- .../petstore/crystal/spec/api/store_spec.cr | 23 + .../crystal/spec/api/user_api_spec.cr | 120 ---- .../petstore/crystal/spec/api/user_spec.cr | 23 + .../petstore/crystal/spec/api_client_spec.cr | 59 -- .../crystal/spec/configuration_spec.cr | 26 - .../crystal/spec/integration/pet_spec.cr | 36 + .../additional_properties_class_spec.cr | 29 + .../models/all_of_with_single_ref_spec.cr | 29 + .../crystal/spec/models/animal_spec.cr | 22 + .../another_property_name_mapping_spec.cr | 47 -- .../crystal/spec/models/api_response_spec.cr | 38 +- .../array_of_array_of_number_only_spec.cr | 29 + .../spec/models/array_of_number_only_spec.cr | 29 + .../crystal/spec/models/array_test_spec.cr | 29 + .../spec/models/capitalization_spec.cr | 29 + .../petstore/crystal/spec/models/cat_spec.cr | 24 + .../crystal/spec/models/category_spec.cr | 33 +- .../spec/models/child_with_nullable_spec.cr | 29 + .../crystal/spec/models/class_model_spec.cr | 29 + .../spec/models/deprecated_object_spec.cr | 29 + .../petstore/crystal/spec/models/dog_spec.cr | 24 + .../crystal/spec/models/enum_arrays_spec.cr | 29 + .../crystal/spec/models/enum_class_spec.cr | 21 + .../crystal/spec/models/enum_test_spec.cr | 24 + .../fake_big_decimal_map200_response_spec.cr | 29 + .../models/file_schema_test_class_spec.cr | 29 + .../petstore/crystal/spec/models/file_spec.cr | 29 + .../models/foo_get_default_response_spec.cr | 29 + .../petstore/crystal/spec/models/foo_spec.cr | 29 + .../crystal/spec/models/format_test_spec.cr | 115 +--- .../spec/models/has_only_read_only_spec.cr | 29 + .../spec/models/health_check_result_spec.cr | 29 + .../petstore/crystal/spec/models/list_spec.cr | 29 + .../crystal/spec/models/map_test_spec.cr | 29 + ...es_and_additional_properties_class_spec.cr | 29 + .../spec/models/model200_response_spec.cr | 29 + .../crystal/spec/models/model_client_spec.cr | 29 + .../crystal/spec/models/model_return_spec.cr | 29 + .../petstore/crystal/spec/models/name_spec.cr | 24 + .../spec/models/nullable_class_spec.cr | 29 + .../crystal/spec/models/number_only_spec.cr | 29 + .../object_with_deprecated_fields_spec.cr | 29 + .../crystal/spec/models/order_spec.cr | 60 +- .../spec/models/outer_composite_spec.cr | 29 + .../models/outer_enum_default_value_spec.cr | 21 + .../outer_enum_integer_default_value_spec.cr | 21 + .../spec/models/outer_enum_integer_spec.cr | 21 + .../crystal/spec/models/outer_enum_spec.cr | 21 + .../outer_object_with_enum_property_spec.cr | 24 + .../spec/models/parent_with_nullable_spec.cr | 22 + .../petstore/crystal/spec/models/pet_spec.cr | 98 +-- .../spec/models/read_only_first_spec.cr | 29 + .../spec/models/single_ref_type_spec.cr | 21 + .../spec/models/special_model_name_spec.cr | 29 + .../petstore/crystal/spec/models/tag_spec.cr | 46 +- ...form_additional_properties_request_spec.cr | 29 + .../petstore/crystal/spec/models/user_spec.cr | 68 +- .../petstore/crystal/spec/petstore_spec.cr | 19 - .../petstore/crystal/spec/spec_helper.cr | 2 - .../client/petstore/crystal/src/petstore.cr | 98 ++- .../crystal/src/petstore/api/another_fake.cr | 21 + .../petstore/crystal/src/petstore/api/fake.cr | 265 ++++++++ .../crystal/src/petstore/api/fake_api.cr | 108 --- .../src/petstore/api/fake_classname_test.cr | 21 + .../petstore/crystal/src/petstore/api/foo.cr | 19 + .../petstore/crystal/src/petstore/api/pet.cr | 92 +++ .../crystal/src/petstore/api/pet_api.cr | 535 --------------- .../crystal/src/petstore/api/store.cr | 19 + .../crystal/src/petstore/api/store/order.cr | 39 ++ .../crystal/src/petstore/api/store_api.cr | 274 -------- .../petstore/crystal/src/petstore/api/user.cr | 91 +++ .../crystal/src/petstore/api/user_api.cr | 533 --------------- .../crystal/src/petstore/api_client.cr | 183 ------ .../crystal/src/petstore/api_error.cr | 41 +- .../petstore/crystal/src/petstore/client.cr | 92 +++ .../crystal/src/petstore/configuration.cr | 143 ++-- .../crystal/src/petstore/connection.cr | 96 +++ .../models/additional_properties_class.cr | 45 ++ .../petstore/models/all_of_with_single_ref.cr | 45 ++ .../crystal/src/petstore/models/animal.cr | 55 ++ .../models/another_property_name_mapping.cr | 115 ---- .../src/petstore/models/api_response.cr | 79 +-- .../models/array_of_array_of_number_only.cr | 42 ++ .../petstore/models/array_of_number_only.cr | 42 ++ .../crystal/src/petstore/models/array_test.cr | 48 ++ .../src/petstore/models/capitalization.cr | 58 ++ .../crystal/src/petstore/models/cat.cr | 51 ++ .../crystal/src/petstore/models/category.cr | 97 +-- .../petstore/models/child_with_nullable.cr | 50 ++ .../src/petstore/models/class_model.cr | 43 ++ .../src/petstore/models/deprecated_object.cr | 42 ++ .../crystal/src/petstore/models/dog.cr | 51 ++ .../src/petstore/models/enum_arrays.cr | 49 ++ .../crystal/src/petstore/models/enum_class.cr | 15 + .../crystal/src/petstore/models/enum_test.cr | 80 +++ .../fake_big_decimal_map200_response.cr | 45 ++ .../crystal/src/petstore/models/file.cr | 44 ++ .../petstore/models/file_schema_test_class.cr | 45 ++ .../crystal/src/petstore/models/foo.cr | 42 ++ .../models/foo_get_default_response.cr | 42 ++ .../src/petstore/models/format_test.cr | 343 ++-------- .../src/petstore/models/has_only_read_only.cr | 45 ++ .../petstore/models/health_check_result.cr | 43 ++ .../crystal/src/petstore/models/list.cr | 42 ++ .../crystal/src/petstore/models/map_test.cr | 51 ++ ...perties_and_additional_properties_class.cr | 48 ++ .../src/petstore/models/model200_response.cr | 46 ++ .../src/petstore/models/model_client.cr | 42 ++ .../src/petstore/models/model_return.cr | 43 ++ .../crystal/src/petstore/models/name.cr | 53 ++ .../src/petstore/models/nullable_class.cr | 77 +++ .../src/petstore/models/number_only.cr | 42 ++ .../models/object_with_deprecated_fields.cr | 51 ++ .../crystal/src/petstore/models/order.cr | 149 +---- .../src/petstore/models/outer_composite.cr | 48 ++ .../crystal/src/petstore/models/outer_enum.cr | 15 + .../models/outer_enum_default_value.cr | 15 + .../src/petstore/models/outer_enum_integer.cr | 15 + .../outer_enum_integer_default_value.cr | 15 + .../models/outer_object_with_enum_property.cr | 42 ++ .../petstore/models/parent_with_nullable.cr | 58 ++ .../crystal/src/petstore/models/pet.cr | 149 +---- .../src/petstore/models/read_only_first.cr | 45 ++ .../src/petstore/models/single_ref_type.cr | 15 + .../src/petstore/models/special_model_name.cr | 42 ++ .../crystal/src/petstore/models/tag.cr | 75 +-- ..._freeform_additional_properties_request.cr | 44 ++ .../crystal/src/petstore/models/user.cr | 99 +-- .../crystal/src/petstore/recursive_hash.cr | 18 - .../petstore/crystal/src/petstore/response.cr | 13 + .../crystal/src/petstore/serializable.cr | 33 + .../crystal/src/petstore/validation.cr | 37 ++ 190 files changed, 6489 insertions(+), 5228 deletions(-) create mode 100644 modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/crystal/CrystalApiRouting.java delete mode 100644 modules/openapi-generator/src/main/resources/crystal/api_client.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/api_doc.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/base_object.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/client.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/connection.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/model_doc.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/partial_model_anyof.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/partial_model_generic_doc.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/partial_oneof_module_doc.mustache delete mode 100644 modules/openapi-generator/src/main/resources/crystal/recursive_hash.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/response.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/serializable.mustache create mode 100644 modules/openapi-generator/src/main/resources/crystal/validation.mustache create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalApiRoutingTest.java create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/auth-hyphen.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/collection-format.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/cookie-params.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/namespacing.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/oneof-discriminator.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/scalar-defaults.yaml delete mode 100644 samples/client/petstore/crystal/.travis.yml delete mode 100755 samples/client/petstore/crystal/bin/ameba delete mode 100644 samples/client/petstore/crystal/bin/ameba.cr delete mode 100644 samples/client/petstore/crystal/pet_compilation_error_spec.cr delete mode 100644 samples/client/petstore/crystal/pom.xml delete mode 100644 samples/client/petstore/crystal/shard.lock create mode 100644 samples/client/petstore/crystal/spec/api/another_fake_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/api/fake_api_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/fake_classname_test_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/fake_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/foo_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/api/pet_api_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/pet_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/store/order_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/api/store_api_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/store_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/api/user_api_spec.cr create mode 100644 samples/client/petstore/crystal/spec/api/user_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/api_client_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/configuration_spec.cr create mode 100644 samples/client/petstore/crystal/spec/integration/pet_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/additional_properties_class_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/all_of_with_single_ref_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/animal_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/models/another_property_name_mapping_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/array_of_array_of_number_only_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/array_of_number_only_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/array_test_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/capitalization_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/cat_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/child_with_nullable_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/class_model_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/deprecated_object_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/dog_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/enum_arrays_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/enum_class_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/enum_test_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/fake_big_decimal_map200_response_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/file_schema_test_class_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/file_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/foo_get_default_response_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/foo_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/has_only_read_only_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/health_check_result_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/list_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/map_test_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/mixed_properties_and_additional_properties_class_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/model200_response_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/model_client_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/model_return_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/name_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/nullable_class_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/number_only_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/object_with_deprecated_fields_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_composite_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_enum_default_value_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_enum_integer_default_value_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_enum_integer_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_enum_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/outer_object_with_enum_property_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/parent_with_nullable_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/read_only_first_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/single_ref_type_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/special_model_name_spec.cr create mode 100644 samples/client/petstore/crystal/spec/models/test_inline_freeform_additional_properties_request_spec.cr delete mode 100644 samples/client/petstore/crystal/spec/petstore_spec.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/another_fake.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/fake.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/api/fake_api.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/fake_classname_test.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/foo.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/pet.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/api/pet_api.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/store.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/store/order.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/api/store_api.cr create mode 100644 samples/client/petstore/crystal/src/petstore/api/user.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/api/user_api.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/api_client.cr create mode 100644 samples/client/petstore/crystal/src/petstore/client.cr create mode 100644 samples/client/petstore/crystal/src/petstore/connection.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/additional_properties_class.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/all_of_with_single_ref.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/animal.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/models/another_property_name_mapping.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/array_of_array_of_number_only.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/array_of_number_only.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/array_test.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/capitalization.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/cat.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/child_with_nullable.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/class_model.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/deprecated_object.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/dog.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/enum_arrays.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/enum_class.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/enum_test.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/fake_big_decimal_map200_response.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/file.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/file_schema_test_class.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/foo.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/foo_get_default_response.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/has_only_read_only.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/health_check_result.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/list.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/map_test.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/mixed_properties_and_additional_properties_class.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/model200_response.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/model_client.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/model_return.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/name.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/nullable_class.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/number_only.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/object_with_deprecated_fields.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_composite.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_enum.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_enum_default_value.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_enum_integer.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_enum_integer_default_value.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/outer_object_with_enum_property.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/parent_with_nullable.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/read_only_first.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/single_ref_type.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/special_model_name.cr create mode 100644 samples/client/petstore/crystal/src/petstore/models/test_inline_freeform_additional_properties_request.cr delete mode 100644 samples/client/petstore/crystal/src/petstore/recursive_hash.cr create mode 100644 samples/client/petstore/crystal/src/petstore/response.cr create mode 100644 samples/client/petstore/crystal/src/petstore/serializable.cr create mode 100644 samples/client/petstore/crystal/src/petstore/validation.cr diff --git a/bin/configs/crystal.yaml b/bin/configs/crystal.yaml index 76cdfcd88ac6..671c01c3e20c 100644 --- a/bin/configs/crystal.yaml +++ b/bin/configs/crystal.yaml @@ -1,7 +1,12 @@ generatorName: crystal outputDir: samples/client/petstore/crystal -inputSpec: modules/openapi-generator/src/test/resources/3_0/crystal/petstore.yaml +inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml templateDir: modules/openapi-generator/src/main/resources/crystal +globalProperties: + apiTests: "true" + modelTests: "true" + apiDocs: "false" + modelDocs: "false" additionalProperties: shardVersion: 1.0.0 moduleName: Petstore diff --git a/docs/generators/crystal.md b/docs/generators/crystal.md index cf41d7e11ab0..6ff0c6b7ba1b 100644 --- a/docs/generators/crystal.md +++ b/docs/generators/crystal.md @@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl | Option | Description | Values | Default | | ------ | ----------- | ------ | ------- | |allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false| +|apiNamespace|sub-namespace the api resource classes are nested under, to separate them from same-named models (e.g. "Api" -> Foo::Api::Pet). Set to an empty string to nest the api classes directly under moduleName (e.g. when moduleName already ends with "Api").| |Api| |disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true| |ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true| |enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response. With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|
**false**
No changes to the enums are made, this is the default option.
**true**
With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.
|false| diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java index 6fa3e18e38a8..7e7251694404 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CrystalClientCodegen.java @@ -50,6 +50,9 @@ public class CrystalClientCodegen extends DefaultCodegen { private static final String NUMERIC_ENUM_PREFIX = "N"; protected static int emptyMethodNameCounter = 0; + private java.util.Set resourceSegments = java.util.Collections.emptySet(); + private String apiBasePrefix = ""; + @Setter protected String shardName = "openapi_client"; @Setter protected String moduleName = "OpenAPIClient"; @Setter protected String shardVersion = "1.0.0"; @@ -62,8 +65,7 @@ public class CrystalClientCodegen extends DefaultCodegen { @Setter protected String shardAuthor = ""; @Setter protected String shardAuthorEmail = ""; @Setter protected String paramsEncoder = "Crest::NestedParamsEncoder"; - protected String apiDocPath = "docs/"; - protected String modelDocPath = "docs/"; + @Setter protected String apiNamespace = "Api"; protected List primitiveTypes = new ArrayList(); public static final String SHARD_NAME = "shardName"; @@ -76,6 +78,12 @@ public class CrystalClientCodegen extends DefaultCodegen { public static final String SHARD_AUTHOR = "shardAuthor"; public static final String SHARD_AUTHOR_EMAIL = "shardAuthorEmail"; public static final String PARAMS_ENCODER = "paramsEncoder"; + public static final String API_NAMESPACE = "apiNamespace"; + + // Generated infrastructure classes that live at the moduleName root; a model named like one + // of these would clash, so toModelName renames it. + private static final Set RESERVED_MODEL_NAMES = new HashSet<>(Arrays.asList( + "Client", "Connection", "Configuration", "Response", "ApiError", "Serializable", "Validation")); public CrystalClientCodegen() { super(); @@ -128,10 +136,6 @@ public CrystalClientCodegen() { modelTestTemplateFiles.put("model_test.mustache", ".cr"); apiTestTemplateFiles.put("api_test.mustache", ".cr"); - // TODO support auto-generated doc - // modelDocTemplateFiles.put("model_doc.mustache", ".md"); - // apiDocTemplateFiles.put("api_doc.mustache", ".md"); - // default HIDE_GENERATION_TIMESTAMP to true hideGenerationTimestamp = Boolean.TRUE; @@ -211,6 +215,7 @@ public CrystalClientCodegen() { cliOptions.add(new CliOption(SHARD_AUTHOR_EMAIL, "shard author email (only one is supported).")); cliOptions.add(new CliOption(CodegenConstants.HIDE_GENERATION_TIMESTAMP, CodegenConstants.HIDE_GENERATION_TIMESTAMP_DESC).defaultValue(Boolean.TRUE.toString())); cliOptions.add(new CliOption(PARAMS_ENCODER, "params_encoder setting (e.g. Crest::NestedParamsEncoder, Crest::EnumeratedFlatParamsEncoder, Crest::ZeroEnumeratedFlatParamsEncoder").defaultValue("Crest::NestedParamsEncoder")); + cliOptions.add(new CliOption(API_NAMESPACE, "sub-namespace the api resource classes are nested under, to separate them from same-named models (e.g. \"Api\" -> Foo::Api::Pet). Set to an empty string to nest the api classes directly under moduleName (e.g. when moduleName already ends with \"Api\").").defaultValue("Api")); } @Override @@ -283,9 +288,15 @@ public void processOpts() { additionalProperties.put(PARAMS_ENCODER, paramsEncoder); } - // make api and model doc path available in mustache template - additionalProperties.put("apiDocPath", apiDocPath); - additionalProperties.put("modelDocPath", modelDocPath); + // apiNamespace: the sub-namespace api classes are nested under (default "Api"). + // An empty value nests api classes directly under moduleName (no extra namespace). + if (additionalProperties.containsKey(API_NAMESPACE)) { + setApiNamespace((String) additionalProperties.get(API_NAMESPACE)); + } + additionalProperties.put(API_NAMESPACE, apiNamespace); + // explicit boolean: jmustache treats an empty string section as truthy, so guard the + // api namespace `module` wrapper on this instead of on {{#apiNamespace}}. + additionalProperties.put("apiNamespacePresent", apiNamespace != null && !apiNamespace.isEmpty()); // use constant model/api package (folder path) setModelPackage("models"); @@ -295,8 +306,11 @@ public void processOpts() { String shardFolder = srcFolder + File.separator + shardName; supportingFiles.add(new SupportingFile("api_error.mustache", shardFolder, "api_error.cr")); supportingFiles.add(new SupportingFile("configuration.mustache", shardFolder, "configuration.cr")); - supportingFiles.add(new SupportingFile("api_client.mustache", shardFolder, "api_client.cr")); - supportingFiles.add(new SupportingFile("recursive_hash.mustache", shardFolder, "recursive_hash.cr")); + supportingFiles.add(new SupportingFile("response.mustache", shardFolder, "response.cr")); + supportingFiles.add(new SupportingFile("connection.mustache", shardFolder, "connection.cr")); + supportingFiles.add(new SupportingFile("client.mustache", shardFolder, "client.cr")); + supportingFiles.add(new SupportingFile("serializable.mustache", shardFolder, "serializable.cr")); + supportingFiles.add(new SupportingFile("validation.mustache", shardFolder, "validation.cr")); supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); supportingFiles.add(new SupportingFile("git_push.sh.mustache", "", "git_push.sh")); supportingFiles.add(new SupportingFile("gitignore.mustache", "", ".gitignore")); @@ -310,6 +324,62 @@ public void processOpts() { additionalProperties.put("lambdaPascalcase", new PascalCaseLambda()); } + @Override + public void preprocessOpenAPI(io.swagger.v3.oas.models.OpenAPI openAPI) { + super.preprocessOpenAPI(openAPI); + java.util.Set paths = openAPI.getPaths() == null + ? java.util.Collections.emptySet() : openAPI.getPaths().keySet(); + this.resourceSegments = org.openapitools.codegen.languages.crystal.CrystalApiRouting.resourceSegments(paths); + this.apiBasePrefix = additionalProperties.containsKey("apiBasePath") + ? stripSlashes((String) additionalProperties.get("apiBasePath")) + : org.openapitools.codegen.languages.crystal.CrystalApiRouting.commonBasePrefix(paths); + } + + private static String stripSlashes(String s) { + return s.replaceAll("^/+", "").replaceAll("/+$", ""); + } + + @Override + public void addOperationToGroup(String tag, String resourcePath, io.swagger.v3.oas.models.Operation operation, + CodegenOperation co, java.util.Map> operations) { + org.openapitools.codegen.languages.crystal.CrystalApiRouting.Route r = + org.openapitools.codegen.languages.crystal.CrystalApiRouting.route( + co.path, co.httpMethod, co.operationId, resourceSegments, apiBasePrefix); + String groupKey = r.resource == null ? r.namespace : r.namespace + "/" + r.resource; + co.operationId = toOperationId(r.action); + co.vendorExtensions.put("x-cr-namespace", r.namespace); + if (r.resource != null) co.vendorExtensions.put("x-cr-resource", r.resource); + + java.util.List opList = operations.computeIfAbsent(groupKey, k -> new java.util.ArrayList<>()); + // operationId uniqueness within the group (verb suffix on collision); + // re-scan after each mutation so 2+ prior collisions are handled correctly. + String unique = co.operationId; + int counter = 0; + boolean clash = uniqueClash(opList, unique); + while (clash) { + unique = co.operationId + "_" + co.httpMethod.toLowerCase(java.util.Locale.ROOT) + + (counter == 0 ? "" : "_" + counter); + counter++; + clash = uniqueClash(opList, unique); + } + if (!unique.equals(co.operationId)) { + LOGGER.warn("Crystal: action collision, renamed `{}` -> `{}`", co.operationId, unique); + co.operationId = unique; + } + co.operationIdSnakeCase = underscore(co.operationId); + co.operationIdCamelCase = camelize(co.operationId); + opList.add(co); + co.baseName = groupKey; + } + + /** Returns true if any operation in {@code opList} already uses {@code candidate} as its operationId. */ + private static boolean uniqueClash(java.util.List opList, String candidate) { + for (CodegenOperation op : opList) { + if (op.operationId.equals(candidate)) return true; + } + return false; + } + @Override public String getHelp() { return "Generates a Crystal client library (beta)."; @@ -345,16 +415,6 @@ public String modelTestFileFolder() { return outputFolder + File.separator + specFolder + File.separator + modelPackage.replace("/", File.separator); } - @Override - public String apiDocFileFolder() { - return (outputFolder + "/" + apiDocPath).replace('/', File.separatorChar); - } - - @Override - public String modelDocFileFolder() { - return (outputFolder + "/" + modelDocPath).replace('/', File.separatorChar); - } - @Override public String getSchemaType(Schema schema) { String openAPIType = super.getSchemaType(schema); @@ -409,6 +469,14 @@ public String toModelName(final String name) { return modelName; } + // model name cannot clash with a generated infrastructure class that lives at the + // moduleName root (Client, Connection, ...). Rename it (e.g. "Client" -> ModelClient). + if (RESERVED_MODEL_NAMES.contains(modelName)) { + String renamed = camelize("Model" + modelName); + LOGGER.warn("{} clashes with a generated class and cannot be used as model name. Renamed to {}", name, renamed); + return renamed; + } + // model name starts with number if (modelName.matches("^\\d.*")) { LOGGER.warn("{} (model name starts with number) cannot be used as model name. Renamed to {}", modelName, camelize("model_" + modelName)); @@ -447,16 +515,16 @@ public String toModelDocFilename(String name) { @Override public String toApiFilename(final String name) { - // replace - with _ e.g. created-at => created_at - String filename = name; - if (apiNameSuffix != null && apiNameSuffix.length() > 0) { - filename = filename + "_" + apiNameSuffix; + // If the name contains '/', it's a namespaced group key (e.g. "dcim/cable-terminations") + // produced by addOperationToGroup — sanitize, convert each segment to underscore and join with File.separator. + if (name.contains("/")) { + String[] parts = name.split("/"); + java.util.List us = new java.util.ArrayList<>(); + for (String p : parts) us.add(underscore(sanitizeName(p.replace('-', '_')))); + return String.join(File.separator, us); } - - filename = filename.replaceAll("-", "_"); - - // e.g. PhoneNumberApi.cr => phone_number_api.cr - return underscore(filename); + // Single-segment group key or legacy name: sanitize and underscore it directly. + return underscore(sanitizeName(name.replace('-', '_'))); } @Override @@ -476,12 +544,24 @@ public String toModelTestFilename(String name) { @Override public String toApiName(String name) { - return super.toApiName(name); + // Group key format: "namespace" or "namespace/resource" (may contain hyphens or other non-word chars) + // Sanitize each segment to produce valid Crystal identifiers. + String[] parts = name.split("/"); + StringBuilder cls = new StringBuilder(); + if (apiNamespace != null && !apiNamespace.isEmpty()) cls.append(apiNamespace); + for (String p : parts) { + if (cls.length() > 0) cls.append("::"); + cls.append(camelize(sanitizeName(p.replace('-', '_')))); + } + return cls.toString(); // e.g. Api::Dcim::CableTerminations (or Dcim::CableTerminations when apiNamespace is empty) } @Override public String toEnumValue(String value, String datatype) { - if ("Integer".equals(datatype) || "Float".equals(datatype)) { + if ("Integer".equals(datatype) || "Float".equals(datatype) + || "Int32".equals(datatype) || "Int64".equals(datatype) + || "Float32".equals(datatype) || "Float64".equals(datatype) + || "BigDecimal".equals(datatype)) { return value; } else { return "\"" + escapeText(value) + "\""; @@ -530,8 +610,139 @@ public String toEnumName(CodegenProperty property) { @Override public ModelsMap postProcessModels(ModelsMap objs) { - // process enum in models - return postProcessModelsEnum(objs); + // flag models that hold a non-JSON-serializable property (e.g. ::File), so the + // generated model spec uses a lighter assertion instead of a from_json round-trip + // (JSON::Serializable cannot deserialise a ::File field, which fails to compile). + for (ModelMap mo : objs.getModels()) { + CodegenModel cm = mo.getModel(); + boolean notJsonSerializable = false; + for (CodegenProperty p : cm.getAllVars()) { + if (p.dataType != null && p.dataType.contains("::File")) { + notJsonSerializable = true; + break; + } + } + if (notJsonSerializable) { + cm.vendorExtensions.put("x-cr-not-json-serializable", Boolean.TRUE); + } + } + // process enum in models (sets isEnum flags on properties) + ModelsMap processed = postProcessModelsEnum(objs); + // flag each property that needs the unified validates macro (must run AFTER postProcessModelsEnum) + for (ModelMap mo : processed.getModels()) { + CodegenModel cm = mo.getModel(); + for (CodegenProperty p : cm.vars) { + if (p.isEnum || p.hasValidation) { + p.vendorExtensions.put("x-cr-validated", Boolean.TRUE); + } + } + + // Scalar default values for optional properties: emit the spec default instead of nil. + // Restricted to plain scalars (string/number/bool) excluding date/time, whose default + // rendering isn't guaranteed to be valid Crystal. + for (CodegenProperty p : cm.optionalVars) { + // Only emit plain scalar literals. Skip: containers; date/time (rendering not + // guaranteed valid Crystal); and any default rendered as a constant reference + // (contains "::", e.g. a referenced enum's `EnumName::CONST` — named enums are + // plain aliases here so that constant doesn't exist). + if (p.defaultValue != null && !p.isContainer && !p.isDate && !p.isDateTime + && !p.isEnum && !p.defaultValue.contains("::")) { + p.vendorExtensions.put("x-cr-default", p.defaultValue); + } + } + + // Models that allow additional properties (additionalProperties: true or a schema) + // capture + round-trip unknown keys via JSON::Serializable::Unmapped instead of + // silently dropping them. + if (cm.getAdditionalPropertiesType() != null) { + cm.vendorExtensions.put("x-cr-additional-properties", Boolean.TRUE); + } + + // Polymorphic deserialization: when a model declares a discriminator with a concrete + // mapping, emit Crystal's use_json_discriminator/use_yaml_discriminator so deserialising + // the base type dispatches to the mapped subtype. + org.openapitools.codegen.CodegenDiscriminator disc = cm.getDiscriminator(); + if (disc != null && disc.getMappedModels() != null && !disc.getMappedModels().isEmpty()) { + List entries = new ArrayList<>(); + for (org.openapitools.codegen.CodegenDiscriminator.MappedModel mm : disc.getMappedModels()) { + entries.add("\"" + mm.getMappingName() + "\" => " + mm.getModelName()); + } + String prop = disc.getPropertyBaseName() != null ? disc.getPropertyBaseName() : disc.getPropertyName(); + cm.vendorExtensions.put("x-cr-discriminator-prop", prop); + cm.vendorExtensions.put("x-cr-discriminator-map", "{" + String.join(", ", entries) + "}"); + } + } + return processed; + } + + @Override + public Map postProcessAllModels(Map objs) { + Map processed = super.postProcessAllModels(objs); + + // Build a name -> model index so parent relationships can be resolved here (parentModel + // is not yet populated during postProcessModels). + Map byName = new HashMap<>(); + for (ModelsMap mm : processed.values()) { + for (ModelMap mo : mm.getModels()) { + CodegenModel cm = mo.getModel(); + if (cm != null) byName.put(cm.classname, cm); + } + } + + for (CodegenModel cm : byName.values()) { + if (cm.parent == null) continue; + CodegenModel parent = byName.get(cm.parent); + if (parent == null) continue; + + // Crystal forbids re-annotating an ivar already defined in a superclass, and + // JSON::Serializable inherits the parent's fields, so a child must NOT re-declare + // inherited properties. Mark them so the template skips their declaration/validation. + Set inheritedBaseNames = new HashSet<>(); + for (CodegenProperty pp : parent.getAllVars()) inheritedBaseNames.add(pp.baseName); + + List all = new ArrayList<>(cm.vars); + all.addAll(cm.requiredVars); + all.addAll(cm.optionalVars); + for (CodegenProperty p : all) { + p.vendorExtensions.put("x-cr-inherited", inheritedBaseNames.contains(p.baseName)); + } + + // Arguments passed to `super(...)` from the child constructor, in the parent's own + // constructor order (required vars then optional vars). The child accepts these as + // plain (non-@) params with the same names. + List superArgs = new ArrayList<>(); + for (CodegenProperty pp : parent.requiredVars) superArgs.add(pp.name); + for (CodegenProperty pp : parent.optionalVars) superArgs.add(pp.name); + cm.vendorExtensions.put("x-cr-parent-args", String.join(", ", superArgs)); + } + + return processed; + } + + /** + * Qualify bare model-name tokens in a Crystal type string with the module name, so that inside + * an api resource class they resolve to the model and not to a same-named resource class. + * e.g. with module "Foo": "Array(Pet)" -> "Array(Foo::Pet)". Primitives (Int32, String, Array, + * Hash, ...) and already-qualified names are left untouched. + */ + private String qualifyModelTypes(String type, Set modelNames) { + if (type == null || type.isEmpty() || modelNames.isEmpty()) return type; + java.util.regex.Matcher m = java.util.regex.Pattern.compile("[A-Za-z_][A-Za-z0-9_]*").matcher(type); + StringBuilder out = new StringBuilder(); + int last = 0; + while (m.find()) { + out.append(type, last, m.start()); + String tok = m.group(); + boolean alreadyQualified = m.start() >= 1 && type.charAt(m.start() - 1) == ':'; + if (modelNames.contains(tok) && !alreadyQualified) { + out.append(moduleName).append("::").append(tok); + } else { + out.append(tok); + } + last = m.end(); + } + out.append(type.substring(last)); + return out.toString(); } @Override @@ -576,6 +787,42 @@ protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Sc @Override public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List allModels) { objs = super.postProcessOperationsWithModels(objs, allModels); + + OperationMap operations0 = objs.getOperations(); + String classname = (operations0 != null) ? operations0.getClassname() : ""; + + // The api classname is "::" (toApiName prefixes the configured + // api namespace, default "Api"). The template opens that namespace as an explicit + // nested `module `, so it needs the bare resource path with the prefix + // stripped. Defining it via an explicit `module` (rather than `class Api::`) + // makes the fully-qualified path actually exist even when moduleName itself ends with + // "Api"; with apiNamespace="" the api classes nest directly under moduleName. + String apiNsPrefix = (apiNamespace == null || apiNamespace.isEmpty()) ? "" : apiNamespace + "::"; + String innerClass = (!apiNsPrefix.isEmpty() && classname.startsWith(apiNsPrefix)) + ? classname.substring(apiNsPrefix.length()) : classname; + if (operations0 != null) { + operations0.put("x-cr-api-inner-class", innerClass); + } + + // Compute specHelperPath: relative path from the spec test file back to spec_helper.cr. + // The spec file lives at spec///_spec.cr, i.e. one + // directory level for api/ plus one per "::" in the (prefix-free) resource class path. + // "Pet" -> 0 "::" -> 1 level -> "../spec_helper" + // "Store::Order" -> 1 "::" -> 2 levels -> "../../spec_helper" + int colonPairs = 0; + int idx = innerClass.indexOf("::"); + while (idx != -1) { + colonPairs++; + idx = innerClass.indexOf("::", idx + 2); + } + int totalLevels = colonPairs + 1; + StringBuilder specHelperPath = new StringBuilder(); + for (int i = 0; i < totalLevels; i++) { + specHelperPath.append("../"); + } + specHelperPath.append("spec_helper"); + objs.put("specHelperPath", specHelperPath.toString()); + if (isSkipOperationExample()) { return objs; } @@ -586,6 +833,61 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List operationList = operations.getOperation(); for (CodegenOperation op : operationList) { + boolean hasHeaderParams = op.headerParams != null && !op.headerParams.isEmpty(); + boolean hasCookieParams = op.cookieParams != null && !op.cookieParams.isEmpty(); + boolean hasNamed = (op.queryParams != null && !op.queryParams.isEmpty()) + || hasHeaderParams || hasCookieParams; + op.vendorExtensions.put("x-cr-has-named-params", hasNamed); + op.vendorExtensions.put("x-cr-has-header-params", hasHeaderParams); + op.vendorExtensions.put("x-cr-has-cookie-params", hasCookieParams); + // an operation needs a `header:` hash if it has header params and/or cookie params + // (cookie params are sent via a combined Cookie header). + op.vendorExtensions.put("x-cr-has-header-or-cookie", hasHeaderParams || hasCookieParams); + + // raw body: an operation whose response media type isn't JSON (text/plain, binary, ...) + // returns the body untouched instead of JSON-decoding it. + boolean rawBody = op.produces != null && !op.produces.isEmpty() + && op.produces.stream().noneMatch(p -> { + String mt = p.get("mediaType"); + return mt != null && mt.toLowerCase(Locale.ROOT).contains("json"); + }); + op.vendorExtensions.put("x-cr-raw-body", rawBody); + + // collectionFormat: array query params that aren't "multi" must be joined into a single + // value with the right separator (csv/ssv/tsv/pipes); "multi" is left as an array and + // serialised key=a&key=b by the configured params encoder. + if (op.queryParams != null) { + for (CodegenParameter p : op.queryParams) { + if (!p.isArray || p.collectionFormat == null) continue; + String sep; + switch (p.collectionFormat) { + case "ssv": sep = " "; break; + case "tsv": sep = "\\t"; break; + case "pipes": case "pipe": sep = "|"; break; + case "csv": sep = ","; break; + default: sep = null; // "multi" (or unknown) -> no join + } + if (sep != null) p.vendorExtensions.put("x-cr-join-sep", sep); + } + } + // Inside an api resource class (e.g. Api::Pet) the unqualified name `Pet` resolves to + // the class itself, shadowing a same-named model. Qualify model types in the method + // signature and body with the module so they resolve to the model (Foo::Pet). + op.vendorExtensions.put("x-cr-return-type", qualifyModelTypes(op.returnType, modelMaps.keySet())); + // The template reads param types from the per-kind lists (pathParams, queryParams, ...), + // which are distinct objects from allParams, so qualify each of those. + for (List pl : Arrays.asList(op.pathParams, op.queryParams, + op.headerParams, op.formParams, op.cookieParams, op.allParams)) { + if (pl == null) continue; + for (CodegenParameter p : pl) { + p.vendorExtensions.put("x-cr-data-type", qualifyModelTypes(p.dataType, modelMaps.keySet())); + } + } + if (op.bodyParam != null) { + op.bodyParam.vendorExtensions.put("x-cr-data-type", + qualifyModelTypes(op.bodyParam.dataType, modelMaps.keySet())); + } + for (CodegenParameter p : op.allParams) { p.vendorExtensions.put("x-crystal-example", constructExampleCode(p, modelMaps, processedModelMaps)); } @@ -808,13 +1110,33 @@ public String escapeReservedWord(String name) { public String getTypeDeclaration(Schema schema) { if (ModelUtils.isArraySchema(schema)) { Schema inner = ModelUtils.getSchemaItems(schema); + // unresolved element type (e.g. nested array with no `items`) would emit a + // bare `Array(Array)` which Crystal reads as Array(Array(T)) and cannot + // (de)serialise; fall back to JSON::Any so the type stays valid and round-trippable + if (inner == null) { + return getSchemaType(schema) + "(JSON::Any)"; + } return getSchemaType(schema) + "(" + getTypeDeclaration(inner) + ")"; } else if (ModelUtils.isMapSchema(schema)) { Schema inner = ModelUtils.getAdditionalProperties(schema); + if (inner == null) { + return getSchemaType(schema) + "(String, JSON::Any)"; + } return getSchemaType(schema) + "(String, " + getTypeDeclaration(inner) + ")"; } - return super.getTypeDeclaration(schema); + // A schema whose element type cannot be resolved (e.g. an inner `array`/`object` + // with no items/additionalProperties) falls through to a bare collection name + // ("Array"/"Set"/"Hash"), which Crystal treats as the uninstantiated generic + // Array(T) and cannot (de)serialise. Pin the element type to JSON::Any. + String decl = super.getTypeDeclaration(schema); + if ("Array".equals(decl) || "Set".equals(decl)) { + return decl + "(JSON::Any)"; + } + if ("Hash".equals(decl)) { + return decl + "(String, JSON::Any)"; + } + return decl; } @Override @@ -933,6 +1255,111 @@ public void postProcessFile(File file, String fileType) { } } + @Override + @SuppressWarnings("unchecked") + public Map postProcessSupportingFileData(Map objs) { + Map> nsMap = new TreeMap<>(); + Map> resourcesByNs = new TreeMap<>(); + + org.openapitools.codegen.model.ApiInfoMap apiInfo = + (org.openapitools.codegen.model.ApiInfoMap) objs.get("apiInfo"); + if (apiInfo != null) { + List apis = apiInfo.getApis(); + if (apis != null) { + for (org.openapitools.codegen.model.OperationsMap operationsMap : apis) { + org.openapitools.codegen.model.OperationMap opMap = operationsMap.getOperations(); + if (opMap == null) continue; + List ops = opMap.getOperation(); + if (ops == null) continue; + for (CodegenOperation co : ops) { + String ns = (String) co.vendorExtensions.get("x-cr-namespace"); + String res = (String) co.vendorExtensions.get("x-cr-resource"); + if (ns == null) continue; + nsMap.computeIfAbsent(ns, k -> { + Map m = new HashMap<>(); + m.put("name", underscore(sanitizeName(ns.replace('-', '_')))); + m.put("className", toApiName(ns)); + return m; + }); + if (res != null) { + resourcesByNs.computeIfAbsent(ns, k -> new TreeSet<>()).add(res); + } + } + } + } + } + + List> nsList = new ArrayList<>(); + for (Map.Entry> e : nsMap.entrySet()) { + List> resList = new ArrayList<>(); + for (String res : resourcesByNs.getOrDefault(e.getKey(), Collections.emptySet())) { + Map rm = new HashMap<>(); + rm.put("accessor", underscore(sanitizeName(res.replace('-', '_')))); + rm.put("className", toApiName(e.getKey() + "/" + res)); + resList.add(rm); + } + e.getValue().put("resources", resList); + nsList.add(e.getValue()); + } + additionalProperties.put("crNamespaces", nsList); + objs.put("crNamespaces", nsList); + + orderModelsByInheritance(objs); + + return super.postProcessSupportingFileData(objs); + } + + /** + * Crystal resolves a superclass at the point a subclass is parsed, so a model file + * must be {@code require}d after the file defining its parent. The default model order + * is alphabetical, which breaks e.g. {@code class Child < Parent} when "child" sorts + * before "parent". Reorder the model list used by the shard entrypoint so every parent + * precedes its children (inheritance is acyclic, so a topological order always exists). + */ + @SuppressWarnings("unchecked") + private void orderModelsByInheritance(Map objs) { + Object modelsObj = objs.get("models"); + if (!(modelsObj instanceof List)) return; + List models = (List) modelsObj; + + Map entryByName = new LinkedHashMap<>(); + Map parentByName = new HashMap<>(); + for (Object entry : models) { + if (!(entry instanceof Map)) return; // unexpected shape: leave as-is + Object m = ((Map) entry).get("model"); + if (!(m instanceof CodegenModel)) return; + CodegenModel cm = (CodegenModel) m; + entryByName.put(cm.classname, entry); + String parent = cm.parentModel != null ? cm.parentModel.classname : cm.parent; + if (parent != null) parentByName.put(cm.classname, parent); + } + + List ordered = new ArrayList<>(models.size()); + Set placed = new HashSet<>(); + for (String name : entryByName.keySet()) { + placeModelAfterParent(name, entryByName, parentByName, placed, ordered); + } + + if (ordered.size() == models.size()) { + models.clear(); + models.addAll(ordered); + } + } + + private void placeModelAfterParent(String name, Map entryByName, + Map parentByName, Set placed, + List ordered) { + if (name == null || placed.contains(name)) return; + Object entry = entryByName.get(name); + if (entry == null) return; // parent isn't a generated model (e.g. a primitive/container) + placed.add(name); // mark before recursing so a malformed cycle can't loop forever + String parent = parentByName.get(name); + if (parent != null) { + placeModelAfterParent(parent, entryByName, parentByName, placed, ordered); + } + ordered.add(entry); + } + @Override public GeneratorLanguage generatorLanguage() { return GeneratorLanguage.CRYSTAL; diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/crystal/CrystalApiRouting.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/crystal/CrystalApiRouting.java new file mode 100644 index 000000000000..5f600b251b0e --- /dev/null +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/crystal/CrystalApiRouting.java @@ -0,0 +1,143 @@ +// CrystalApiRouting.java +package org.openapitools.codegen.languages.crystal; + +import java.util.*; +import org.openapitools.codegen.utils.StringUtils; + +/** Pure routing logic for the Crystal generator: path -> (namespace, resource, action). */ +public final class CrystalApiRouting { + private CrystalApiRouting() {} + + private static boolean isParam(String seg) { return seg.startsWith("{") && seg.endsWith("}"); } + + private static List segments(String path) { + List out = new ArrayList<>(); + for (String s : path.split("/")) { + if (!s.isEmpty()) out.add(s); + } + return out; + } + + /** Segments that appear immediately before a {param} in at least one path. */ + public static Set resourceSegments(Collection paths) { + Set r = new HashSet<>(); + for (String path : paths) { + List segs = segments(path); + for (int i = 0; i < segs.size(); i++) { + if (!isParam(segs.get(i)) && i + 1 < segs.size() && isParam(segs.get(i + 1))) { + r.add(segs.get(i)); + } + } + } + return r; + } + + /** Longest leading run of identical literal segments shared by all paths. */ + public static String commonBasePrefix(Collection paths) { + List> all = new ArrayList<>(); + for (String p : paths) all.add(segments(p)); + StringBuilder prefix = new StringBuilder(); + for (int i = 0; ; i++) { + String candidate = null; + for (List segs : all) { + if (i >= segs.size() || isParam(segs.get(i))) return prefix.toString(); + if (candidate == null) candidate = segs.get(i); + else if (!candidate.equals(segs.get(i))) return prefix.toString(); + } + if (candidate == null) return prefix.toString(); + // only treat as base prefix if every path has more segments after it + for (List segs : all) if (segs.size() <= i + 1) return prefix.toString(); + if (prefix.length() > 0) prefix.append("/"); + prefix.append(candidate); + } + } + + /** Literal segments after stripping the base prefix and dropping {param} segments. */ + public static List literals(String path, String basePrefix) { + List segs = segments(path); + List prefix = basePrefix.isEmpty() ? Collections.emptyList() : segments(basePrefix); + int start = 0; + if (!prefix.isEmpty() && segs.size() >= prefix.size() + && segs.subList(0, prefix.size()).equals(prefix)) { + start = prefix.size(); + } + List out = new ArrayList<>(); + for (int i = start; i < segs.size(); i++) { + if (!isParam(segs.get(i))) out.add(segs.get(i)); + } + return out; + } + + /** Route triple: (namespace, resource, action). Resource may be null. */ + public static final class Route { + public final String namespace; + public final String resource; // nullable + public final String action; + public Route(String namespace, String resource, String action) { + this.namespace = namespace; + this.resource = resource; + this.action = action; + } + } + + private static String underscore(String s) { + return StringUtils.underscore(s); + } + + public static Route route(String path, String httpMethod, String operationId, + Set rset, String basePrefix) { + List lits = literals(path, basePrefix); + if (lits.isEmpty()) { + return new Route("root", null, verbAction(httpMethod, endsWithParam(path))); + } + String namespace = lits.get(0); + String resource = null; + int actionStart = 1; + if (lits.size() >= 2 && rset.contains(lits.get(1))) { + resource = lits.get(1); + actionStart = 2; + } + String group = resource == null ? namespace : namespace + "_" + resource; + String action = deriveAction(lits, actionStart, group, httpMethod, operationId, endsWithParam(path)); + return new Route(namespace, resource, action); + } + + private static boolean endsWithParam(String path) { + List segs = segments(path); + return !segs.isEmpty() && isParam(segs.get(segs.size() - 1)); + } + + private static String deriveAction(List lits, int actionStart, String group, + String httpMethod, String operationId, boolean item) { + // (a) operationId minus the group prefix + if (operationId != null && !operationId.isEmpty()) { + String op = underscore(operationId); + String g = underscore(group) + "_"; + if (op.startsWith(g) && op.length() > g.length()) { + return op.substring(g.length()); + } + } + // (b) remaining literal action segments + if (actionStart < lits.size()) { + StringBuilder sb = new StringBuilder(); + for (int i = actionStart; i < lits.size(); i++) { + if (sb.length() > 0) sb.append("_"); + sb.append(underscore(lits.get(i))); + } + return sb.toString(); + } + // (c) collection-aware verb CRUD + return verbAction(httpMethod, item); + } + + private static String verbAction(String httpMethod, boolean item) { + switch (httpMethod.toUpperCase(java.util.Locale.ROOT)) { + case "GET": return item ? "get" : "list"; + case "POST": return "create"; + case "PUT": return item ? "update" : "bulk_update"; + case "PATCH": return item ? "partial_update" : "bulk_partial_update"; + case "DELETE": return item ? "delete" : "bulk_destroy"; + default: return httpMethod.toLowerCase(java.util.Locale.ROOT); + } + } +} diff --git a/modules/openapi-generator/src/main/resources/crystal/api.mustache b/modules/openapi-generator/src/main/resources/crystal/api.mustache index fe6b5857f8d2..7d3ff5965386 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api.mustache @@ -1,189 +1,29 @@ -# {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} - -require "uri" +require "json" module {{moduleName}} {{#operations}} - class {{classname}} - property api_client : ApiClient - - def initialize(api_client = ApiClient.default) - @api_client = api_client - end +{{#apiNamespacePresent}} module {{apiNamespace}} +{{/apiNamespacePresent}} class {{x-cr-api-inner-class}} + def initialize(@conn : Connection); end {{#operation}} - {{#summary}} - # {{{.}}} - {{/summary}} - {{#notes}} - # {{{.}}} - {{/notes}} - {{#allParams}} - {{#required}} - # @param {{paramName}} [{{{dataType}}}{{^required}}?{{/required}}] {{description}} - {{/required}} - {{/allParams}} - # @return [{{{returnType}}}{{^returnType}}nil{{/returnType}}] - def {{operationId}}({{#allParams}}{{paramName}} : {{{dataType}}}{{^required}}?{{/required}}{{^required}} = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) - {{#returnType}}data, _status_code, _headers = {{/returnType}}{{operationId}}_with_http_info({{#allParams}}{{paramName}}{{^-last}}, {{/-last}}{{/allParams}}) - {{#returnType}}data{{/returnType}}{{^returnType}}nil{{/returnType}} - end - - {{#summary}} - # {{.}} - {{/summary}} - {{#notes}} - # {{.}} - {{/notes}} - {{#allParams}} - {{#required}} - # @param {{paramName}} [{{{dataType}}}{{^required}}?{{/required}}] {{description}} - {{/required}} - {{/allParams}} - # @return [Array<({{{returnType}}}{{^returnType}}nil{{/returnType}}, Integer, Hash)>] {{#returnType}}{{{.}}} data{{/returnType}}{{^returnType}}nil{{/returnType}}, response status code and response headers - def {{operationId}}_with_http_info({{#allParams}}{{paramName}} : {{{dataType}}}{{^required}}?{{/required}}{{^required}} = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) - if @api_client.config.debugging - Log.debug {"Calling API: {{classname}}.{{operationId}} ..."} - end - {{#allParams}} - {{^isNullable}} - {{#required}} - # verify the required parameter "{{paramName}}" is set - if @api_client.config.client_side_validation && {{{paramName}}}.nil? - raise ArgumentError.new("Missing the required parameter '{{paramName}}' when calling {{classname}}.{{operationId}}") - end - {{#isEnum}} - {{^isContainer}} - # verify enum value - allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}] - if @api_client.config.client_side_validation && !allowable_values.includes?({{{paramName}}}) - raise ArgumentError.new("invalid value for \"{{{paramName}}}\", must be one of #{allowable_values}") - end - {{/isContainer}} - {{/isEnum}} - {{/required}} - {{/isNullable}} - {{^required}} - {{#isEnum}} - {{#collectionFormat}} - allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}] - if @api_client.config.client_side_validation && {{{paramName}}} && {{{paramName}}}.all? { |item| allowable_values.includes?(item) } - raise ArgumentError.new("invalid value for \"{{{paramName}}}\", must include one of #{allowable_values}") - end - {{/collectionFormat}} - {{^collectionFormat}} - allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}] - if @api_client.config.client_side_validation && {{{paramName}}} && !allowable_values.includes?({{{paramName}}}) - raise ArgumentError.new("invalid value for \"{{{paramName}}}\", must be one of #{allowable_values}") - end - {{/collectionFormat}} - {{/isEnum}} - {{/required}} - {{#hasValidation}} - {{#maxLength}} - if @api_client.config.client_side_validation && {{^required}}!{{{paramName}}}.nil? && {{/required}}{{{paramName}}}.to_s.size > {{{maxLength}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, the character length must be smaller than or equal to {{{maxLength}}}.") - end - - {{/maxLength}} - {{#minLength}} - if @api_client.config.client_side_validation && {{^required}}!{{{paramName}}}.nil? && {{/required}}{{{paramName}}}.to_s.size < {{{minLength}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, the character length must be greater than or equal to {{{minLength}}}.") - end - - {{/minLength}} - {{#maximum}} - if @api_client.config.client_side_validation && {{^required}}!{{{paramName}}}.nil? && {{/required}}{{{paramName}}} >{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{{maximum}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, must be smaller than {{^exclusiveMaximum}}or equal to {{/exclusiveMaximum}}{{{maximum}}}.") - end - - {{/maximum}} - {{#minimum}} - if @api_client.config.client_side_validation && {{^required}}!{{{paramName}}}.nil? && {{/required}}{{{paramName}}} <{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{{minimum}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, must be greater than {{^exclusiveMinimum}}or equal to {{/exclusiveMinimum}}{{{minimum}}}.") - end - - {{/minimum}} - {{#pattern}} - pattern = Regexp.new({{{pattern}}}) - if @api_client.config.client_side_validation && {{^required}}{{{paramName}}}.nil? && {{/required}}{{{paramName}}} !~ pattern - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, must conform to the pattern #{pattern}.") - end - - {{/pattern}} - {{#maxItems}} - if @api_client.config.client_side_validation && {{^required}}{{{paramName}}}.nil? && {{/required}}{{{paramName}}}.size > {{{maxItems}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, number of items must be less than or equal to {{{maxItems}}}.") - end - - {{/maxItems}} - {{#minItems}} - if @api_client.config.client_side_validation && {{^required}}{{{paramName}}}.nil? && {{/required}}{{{paramName}}}.size < {{{minItems}}} - raise ArgumentError.new("invalid value for \"{{{paramName}}}\" when calling {{classname}}.{{operationId}}, number of items must be greater than or equal to {{{minItems}}}.") - end - {{/minItems}} - {{/hasValidation}} - {{/allParams}} - # resource path - local_var_path = "{{{path}}}"{{#pathParams}}.sub("{" + "{{baseName}}" + "}", URI.encode_path({{paramName}}.to_s){{^strictSpecBehavior}}.gsub("%2F", "/"){{/strictSpecBehavior}}){{/pathParams}} - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - {{#queryParams}} - query_params["{{{baseName}}}"] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}) unless {{{paramName}}}.nil?{{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}.to_s unless {{{paramName}}}.nil?{{/collectionFormat}} - {{/queryParams}} - - # header parameters - header_params = Hash(String, String).new - {{#hasProduces}} - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept([{{#produces}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/produces}}]) - {{/hasProduces}} - {{#hasConsumes}} - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type([{{#consumes}}"{{{mediaType}}}"{{^-last}}, {{/-last}}{{/consumes}}]) - {{/hasConsumes}} - {{#headerParams}} - header_params["{{{baseName}}}"] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}}{{/collectionFormat}} - {{/headerParams}} - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - {{#formParams}} - form_params[:"{{baseName}}"] = {{#collectionFormat}}@api_client.build_collection_param({{{paramName}}}, :{{{collectionFormat}}}){{/collectionFormat}}{{^collectionFormat}}{{{paramName}}} unless {{{paramName}}}.nil?{{/collectionFormat}} - {{/formParams}} - - # http body (model) - post_body = {{#bodyParam}}{{{paramName}}}.to_json{{/bodyParam}}{{^bodyParam}}nil{{/bodyParam}} - - # auth_names - auth_names = {{#authMethods}}{{#-first}}[{{/-first}}"{{name}}"{{^-last}}, {{/-last}}{{#-last}}]{{/-last}}{{/authMethods}}{{^authMethods}}[] of String{{/authMethods}} - - data, status_code, headers = @api_client.call_api( - http_method: :{{httpMethod}}, - path: local_var_path, - operation: :"{{classname}}.{{operationId}}", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: {{classname}}#{{operationId}}\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return {{#returnType}}{{{.}}}.from_json(data){{/returnType}}{{^returnType}}nil{{/returnType}}, status_code, headers + # {{summary}}{{#notes}} {{notes}}{{/notes}} +{{#isDeprecated}} @[Deprecated("This operation is marked deprecated in the OpenAPI spec.")] +{{/isDeprecated}} def {{operationId}}({{#pathParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}{{^-last}}, {{/-last}}{{/pathParams}}{{#bodyParam}}{{#hasPathParams}}, {{/hasPathParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}{{^required}}? = nil{{/required}}{{/bodyParam}}{{#hasFormParams}}{{#hasPathParams}}, {{/hasPathParams}}{{#bodyParam}}, {{/bodyParam}}{{#formParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}? = nil{{^-last}}, {{/-last}}{{/formParams}}{{/hasFormParams}}{{#vendorExtensions.x-cr-has-named-params}}{{#hasPathParams}}, *, {{/hasPathParams}}{{^hasPathParams}}{{#bodyParam}}, *, {{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}, *, {{/hasFormParams}}{{^hasFormParams}}*, {{/hasFormParams}}{{/bodyParam}}{{/hasPathParams}}{{#headerParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}? = nil{{^-last}}, {{/-last}}{{/headerParams}}{{#vendorExtensions.x-cr-has-header-params}}{{#hasQueryParams}}, {{/hasQueryParams}}{{/vendorExtensions.x-cr-has-header-params}}{{#queryParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}? = nil{{^-last}}, {{/-last}}{{/queryParams}}{{#vendorExtensions.x-cr-has-cookie-params}}{{#headerParams.0}}, {{/headerParams.0}}{{^headerParams.0}}{{#hasQueryParams}}, {{/hasQueryParams}}{{/headerParams.0}}{{#cookieParams}}{{paramName}} : {{{vendorExtensions.x-cr-data-type}}}? = nil{{^-last}}, {{/-last}}{{/cookieParams}}{{/vendorExtensions.x-cr-has-cookie-params}}{{/vendorExtensions.x-cr-has-named-params}}) : Response({{#returnType}}{{{vendorExtensions.x-cr-return-type}}}{{/returnType}}{{^returnType}}Nil{{/returnType}}) + @conn.request({{#returnType}}{{{vendorExtensions.x-cr-return-type}}}{{/returnType}}{{^returnType}}Nil{{/returnType}}, + method: :{{httpMethod}}, + path: "{{{path}}}"{{#pathParams}}.sub("{{=<% %>=}}{<%baseName%>}<%={{ }}=%>", {{moduleName}}.enc({{paramName}})){{/pathParams}}, +{{#bodyParam}} body: {{paramName}}, +{{/bodyParam}}{{#vendorExtensions.x-cr-has-header-or-cookie}} header: { {{#headerParams}}"{{baseName}}" => {{paramName}}.try &.to_s{{^-last}}, {{/-last}}{{/headerParams}}{{#vendorExtensions.x-cr-has-cookie-params}}{{#headerParams.0}}, {{/headerParams.0}}"Cookie" => [{{#cookieParams}}{{paramName}}.try { |v| "{{baseName}}=#{v}" }{{^-last}}, {{/-last}}{{/cookieParams}}].compact.join("; ").presence{{/vendorExtensions.x-cr-has-cookie-params}} }, +{{/vendorExtensions.x-cr-has-header-or-cookie}}{{#hasQueryParams}} query: { {{#queryParams}}"{{baseName}}" => {{paramName}}{{#vendorExtensions.x-cr-join-sep}}.try(&.map(&.to_s).join("{{{vendorExtensions.x-cr-join-sep}}}")){{/vendorExtensions.x-cr-join-sep}}{{^-last}}, {{/-last}}{{/queryParams}} }, +{{/hasQueryParams}}{{#hasFormParams}} form: Hash(String, Crest::ParamsValue){ {{#formParams}}"{{baseName}}" => {{paramName}}{{^-last}}, {{/-last}}{{/formParams}} }, +{{/hasFormParams}} accept: %w[{{#produces}}{{{mediaType}}}{{^-last}} {{/-last}}{{/produces}}], +{{#hasBodyParam}} content_type: %w[{{#consumes}}{{{mediaType}}}{{^-last}} {{/-last}}{{/consumes}}], +{{/hasBodyParam}}{{#vendorExtensions.x-cr-raw-body}} raw: true, +{{/vendorExtensions.x-cr-raw-body}} auth: %w[{{#authMethods}}{{name}}{{^-last}} {{/-last}}{{/authMethods}}]) end -{{^-last}} - -{{/-last}} {{/operation}} end -{{/operations}} +{{#apiNamespacePresent}} end +{{/apiNamespacePresent}}{{/operations}} end diff --git a/modules/openapi-generator/src/main/resources/crystal/api_client.mustache b/modules/openapi-generator/src/main/resources/crystal/api_client.mustache deleted file mode 100644 index dc3cb6872de3..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/api_client.mustache +++ /dev/null @@ -1,175 +0,0 @@ -# {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} - -require "json" -require "time" - -module {{moduleName}} - class ApiClient - # The Configuration object holding settings to be used in the API client. - property config : Configuration - - # Defines the headers to be used in HTTP requests of all API calls by default. - # - # @return [Hash] - property default_headers : Hash(String, String) - - # Initializes the ApiClient - # @option config [Configuration] Configuration for initializing the object, default to Configuration.default - def initialize(@config = Configuration.default) - @user_agent = "{{{httpUserAgent}}}{{^httpUserAgent}}OpenAPI-Generator/#{VERSION}/crystal{{/httpUserAgent}}" - @default_headers = { - "User-Agent" => @user_agent - } - end - - def self.default - @@default ||= ApiClient.new - end - - # Check if the given MIME is a JSON MIME. - # JSON MIME examples: - # application/json - # application/json; charset=UTF8 - # APPLICATION/JSON - # */* - # @param [String] mime MIME - # @return [Boolean] True if the MIME is application/json - def json_mime?(mime) - (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil? - end - - - def build_request_url(path : String, operation : Symbol) - # Add leading and trailing slashes to path - path = "/#{path}".gsub(/\/+/, "/") - @config.base_url(operation) + path - end - - # Update header and query params based on authentication settings. - # - # @param [Hash] header_params Header parameters - # @param [Hash] query_params Query parameters - # @param [String] auth_names Authentication scheme name - def update_params_for_auth!(header_params, query_params, cookie_params, auth_names) - auth_names.each do |auth_name| - auth_setting = @config.auth_settings[auth_name] - next unless auth_setting - case auth_setting[:in] - when "header" then header_params[auth_setting[:key]] = auth_setting[:value] - when "query" then query_params[auth_setting[:key]] = auth_setting[:value] - when "cookie" then cookie_params[auth_setting[:key]] = auth_setting[:value] - else raise ArgumentError.new("Authentication token must be in `cookie`, `query` or `header`") - end - end - end - - # Sets user agent in HTTP header - # - # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0) - def user_agent=(user_agent) - @user_agent = user_agent - @default_headers["User-Agent"] = @user_agent - end - - # Return Accept header based on an array of accepts provided. - # @param [Array] accepts array for Accept - # @return [String] the Accept header (e.g. application/json) - def select_header_accept(accepts) : String - #return nil if accepts.nil? || accepts.empty? - # use JSON when present, otherwise use all of the provided - json_accept = accepts.find { |s| json_mime?(s) } - if json_accept.nil? - accepts.join(",") - else - json_accept - end - end - - # Return Content-Type header based on an array of content types provided. - # @param [Array] content_types array for Content-Type - # @return [String] the Content-Type header (e.g. application/json) - def select_header_content_type(content_types) - # use application/json by default - return "application/json" if content_types.nil? || content_types.empty? - # use JSON when present, otherwise use the first one - json_content_type = content_types.find { |s| json_mime?(s) } - json_content_type || content_types.first - end - - # Build parameter value according to the given collection format. - # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi - def build_collection_param(param, collection_format) - case collection_format - when :csv - param.join(",") - when :ssv - param.join(" ") - when :tsv - param.join("\t") - when :pipes - param.join("|") - when :multi - param - else - raise "unknown collection format: #{collection_format.inspect}" - end - end - - # Call an API with given options. - # - # @return [Array<(Object, Integer, Hash)>] an array of 3 elements: - # the data deserialized from response body (could be nil), response status code and response headers. - def call_api(http_method : Symbol, path : String, operation : Symbol, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of String => String, cookie_params = {} of String => String, form_params = {} of Symbol => (String | ::File)) - #ssl_options = { - # :ca_file => @config.ssl_ca_file, - # :verify => @config.ssl_verify, - # :verify_mode => @config.ssl_verify_mode, - # :client_cert => @config.ssl_client_cert, - # :client_key => @config.ssl_client_key - #} - - update_params_for_auth! header_params, query_params, cookie_params, auth_names - - if !post_body.nil? && !post_body.empty? - # use JSON string in the payload - form_or_body = post_body - else - # use HTTP forms in the payload - # TODO use HTTP form encoding - form_or_body = form_params - end - - request = Crest::Request.new( - method: http_method, - url: build_request_url(path, operation), - params: query_params, - headers: header_params, - cookies: cookie_params, - form: form_or_body, - logging: @config.debugging, - handle_errors: false, - params_encoder: {{{paramsEncoder}}} - ) - - response = request.execute - - if @config.debugging - Log.debug {"HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"} - end - - if !response.success? - if response.status == 0 - # Errors from libcurl will be made visible here - raise ApiError.new(code: 0, - message: response.body) - else - raise ApiError.new(code: response.status_code, - response_headers: response.headers, - message: response.body) - end - end - - return response.body, response.status_code, response.headers - end - end -end diff --git a/modules/openapi-generator/src/main/resources/crystal/api_doc.mustache b/modules/openapi-generator/src/main/resources/crystal/api_doc.mustache deleted file mode 100644 index e02ac96a0bd7..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/api_doc.mustache +++ /dev/null @@ -1,118 +0,0 @@ -# {{moduleName}}::{{classname}}{{#description}} - -{{.}}{{/description}} - -All URIs are relative to *{{basePath}}* - -| Method | HTTP request | Description | -| ------ | ------------ | ----------- | -{{#operations}} -{{#operation}} -| [**{{operationId}}**]({{classname}}.md#{{operationId}}) | **{{httpMethod}}** {{path}} | {{summary}} | -{{/operation}} -{{/operations}} - -{{#operations}} -{{#operation}} - -## {{operationId}} - -> {{#returnType}}{{#returnTypeIsPrimitive}}{{returnType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}<{{{returnType}}}>{{/returnTypeIsPrimitive}} {{/returnType}}{{operationId}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}} - -{{{summary}}}{{#notes}} - -{{{.}}}{{/notes}} - -### Examples - -```ruby -require 'time' -require '{{{gemName}}}' -{{#hasAuthMethods}} -# setup authorization -{{{moduleName}}}.configure do |config|{{#authMethods}}{{#isBasic}}{{#isBasicBasic}} - # Configure HTTP basic authorization: {{{name}}} - config.username = 'YOUR USERNAME' - config.password = 'YOUR PASSWORD'{{/isBasicBasic}}{{#isBasicBearer}} - # Configure Bearer authorization{{#bearerFormat}} ({{{.}}}){{/bearerFormat}}: {{{name}}} - config.access_token = 'YOUR_BEARER_TOKEN'{{/isBasicBearer}}{{/isBasic}}{{#isApiKey}} - # Configure API key authorization: {{{name}}} - config.api_key['{{{keyParamName}}}'] = 'YOUR API KEY' - # Uncomment the following line to set a prefix for the API key, e.g. 'Bearer' (defaults to nil) - # config.api_key_prefix['{{{keyParamName}}}'] = 'Bearer'{{/isApiKey}}{{#isOAuth}} - # Configure OAuth2 access token for authorization: {{{name}}} - config.access_token = 'YOUR ACCESS TOKEN'{{/isOAuth}} -{{/authMethods}}end -{{/hasAuthMethods}} - -api_instance = {{{moduleName}}}::{{{classname}}}.new -{{#requiredParams}} -{{{paramName}}} = {{{vendorExtensions.x-ruby-example}}} # {{{dataType}}} | {{{description}}} -{{/requiredParams}} -{{#optionalParams}} -{{#-first}} -opts = { -{{/-first}} - {{{paramName}}}: {{{vendorExtensions.x-ruby-example}}}{{^-last}},{{/-last}} # {{{dataType}}} | {{{description}}} -{{#-last}} -} -{{/-last}} -{{/optionalParams}} - -begin - {{#summary}}# {{{.}}}{{/summary}} - {{#returnType}}result = {{/returnType}}api_instance.{{{operationId}}}{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}} - {{#returnType}} - p result - {{/returnType}} -rescue {{{moduleName}}}::ApiError => e - puts "Error when calling {{classname}}->{{{operationId}}}: #{e}" -end -``` - -#### Using the {{operationId}}_with_http_info variant - -This returns an Array which contains the response data{{^returnType}} (`nil` in this case){{/returnType}}, status code and headers. - -> {{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil{{/returnType}}, Integer, Hash)> {{operationId}}_with_http_info{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}} - -```ruby -begin - {{#summary}}# {{{.}}}{{/summary}} - data, status_code, headers = api_instance.{{{operationId}}}_with_http_info{{#hasParams}}({{#requiredParams}}{{{paramName}}}{{^-last}}, {{/-last}}{{/requiredParams}}{{#optionalParams}}{{#-last}}{{#hasRequiredParams}}, {{/hasRequiredParams}}opts{{/-last}}{{/optionalParams}}){{/hasParams}} - p status_code # => 2xx - p headers # => { ... } - p data # => {{#returnType}}{{#returnTypeIsPrimitive}}{{returnType}}{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}<{{{returnType}}}>{{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil{{/returnType}} -rescue {{{moduleName}}}::ApiError => e - puts "Error when calling {{classname}}->{{{operationId}}}_with_http_info: #{e}" -end -``` - -### Parameters - -{{^allParams}} -This endpoint does not need any parameter. -{{/allParams}} -{{#allParams}} -{{#-first}} -| Name | Type | Description | Notes | -| ---- | ---- | ----------- | ----- | -{{/-first}} -| **{{paramName}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}{{#isFile}}**{{dataType}}**{{/isFile}}{{^isFile}}[**{{dataType}}**]({{baseType}}.md){{/isFile}}{{/isPrimitiveType}} | {{description}} | {{^required}}[optional]{{/required}}{{#defaultValue}}[default to {{.}}]{{/defaultValue}} | -{{/allParams}} - -### Return type - -{{#returnType}}{{#returnTypeIsPrimitive}}**{{returnType}}**{{/returnTypeIsPrimitive}}{{^returnTypeIsPrimitive}}[**{{returnType}}**]({{returnBaseType}}.md){{/returnTypeIsPrimitive}}{{/returnType}}{{^returnType}}nil (empty response body){{/returnType}} - -### Authorization - -{{^authMethods}}No authorization required{{/authMethods}}{{#authMethods}}[{{name}}](../README.md#{{name}}){{^-last}}, {{/-last}}{{/authMethods}} - -### HTTP request headers - -- **Content-Type**: {{#consumes}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/consumes}}{{^consumes}}Not defined{{/consumes}} -- **Accept**: {{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}{{^produces}}Not defined{{/produces}} - -{{/operation}} -{{/operations}} diff --git a/modules/openapi-generator/src/main/resources/crystal/api_error.mustache b/modules/openapi-generator/src/main/resources/crystal/api_error.mustache index 52678bd87821..12d46ac27349 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api_error.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api_error.mustache @@ -3,31 +3,44 @@ module {{moduleName}} class ApiError < Exception getter code : Int32? - getter response_headers : Hash(String, Array(String) | String)? + getter response_headers : HTTP::Headers? # Usage examples: # ApiError.new # ApiError.new(message: "message") - # ApiError.new(code: 500, response_headers: {}, message: "") + # ApiError.new(code: 500, response_headers: HTTP::Headers.new, message: "") # ApiError.new(code: 404, message: "Not Found") - def initialize(@code , @message, @response_headers) + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, message : String?) + super(message) end - def initialize(@code , @message) + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, body : String) + msg = body.empty? ? "the server returns an error but the HTTP response body is empty." : body + super(msg) + @message = msg + end + + def initialize(message : String) + super(message) + @code = nil + @response_headers = nil + end + + def initialize + super(nil) + @code = nil + @response_headers = nil end # Override to_s to display a friendly error message - def to_s - msg = "" - msg = msg + "\nHTTP status code: #{code}" if @code - msg = msg + "\nResponse headers: #{response_headers}" if @response_headers - if @message.try &.empty? - msg = msg + "\nError message: the server returns an error but the HTTP response body is empty." + def to_s(io : IO) : Nil + io << "\nHTTP status code: #{code}" if @code + io << "\nResponse headers: #{response_headers}" if @response_headers + if message.nil? || message.try &.empty? + io << "\nError message: the server returns an error but the HTTP response body is empty." else - msg = msg + "\nResponse body: #{@message}" + io << "\nResponse body: #{message}" end - - msg end end end diff --git a/modules/openapi-generator/src/main/resources/crystal/api_info.mustache b/modules/openapi-generator/src/main/resources/crystal/api_info.mustache index be6dda917018..c7fa37f0d659 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api_info.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api_info.mustache @@ -2,10 +2,6 @@ #{{{.}}} {{/appName}} -{{#appDescription}} -#{{{.}}} - -{{/appDescription}} {{#version}}The version of the OpenAPI document: {{.}}{{/version}} {{#infoEmail}}Contact: {{{.}}}{{/infoEmail}} Generated by: https://openapi-generator.tech diff --git a/modules/openapi-generator/src/main/resources/crystal/api_test.mustache b/modules/openapi-generator/src/main/resources/crystal/api_test.mustache index 059f66f11f51..b0061d69c0b7 100644 --- a/modules/openapi-generator/src/main/resources/crystal/api_test.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/api_test.mustache @@ -1,37 +1,19 @@ # {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} -require "../spec_helper" +require "{{specHelperPath}}" # Unit tests for {{moduleName}}::{{classname}} # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate {{#operations}} Spectator.describe "{{classname}}" do - describe "test an instance of {{classname}}" do - it "should create an instance of {{classname}}" do - api_instance = {{moduleName}}::{{classname}}.new - expect(api_instance).to be_instance_of({{moduleName}}::{{classname}}) - end + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = {{moduleName}}::Client.new(host: "localhost") + instance = {{moduleName}}::{{classname}}.new(client.connection) + expect(instance).to be_a({{moduleName}}::{{classname}}) end - -{{#operation}} - # unit tests for {{operationId}} - {{#summary}} - # {{.}} - {{/summary}} - {{#notes}} - # {{.}} - {{/notes}} -{{#allParams}}{{#required}} # @param {{paramName}} {{description}} -{{/required}}{{/allParams}} # @param [Hash] opts the optional parameters -{{#allParams}}{{^required}} # @option opts [{{{dataType}}}] :{{paramName}} {{description}} -{{/required}}{{/allParams}} # @return [{{{returnType}}}{{^returnType}}nil{{/returnType}}] - describe "{{operationId}} test" do - skip "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - -{{/operation}} end {{/operations}} diff --git a/modules/openapi-generator/src/main/resources/crystal/base_object.mustache b/modules/openapi-generator/src/main/resources/crystal/base_object.mustache deleted file mode 100644 index 4ee4a276ca0f..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/base_object.mustache +++ /dev/null @@ -1,41 +0,0 @@ - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - {{#vars}} - hash["{{{baseName}}}"] = _to_h({{{name}}}) - {{/vars}} - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end - end diff --git a/modules/openapi-generator/src/main/resources/crystal/client.mustache b/modules/openapi-generator/src/main/resources/crystal/client.mustache new file mode 100644 index 000000000000..14f8a6c9e268 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/client.mustache @@ -0,0 +1,38 @@ +# {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} + +module {{moduleName}} + class Client + getter connection : Connection + + def initialize(*, host : String, token : String? = nil, scheme : String = "https") + cfg = Configuration.new + cfg.host = host + cfg.scheme = scheme + cfg.access_token = token if token + @connection = Connection.new(cfg) + end + + def initialize(@connection : Connection); end +{{#crNamespaces}} + def {{name}} : {{className}} + @{{name}} ||= {{className}}.new(@connection) + end + + @{{name}} : {{className}}? +{{/crNamespaces}} + end +{{#crNamespaces}} + + class {{className}} + def initialize(@conn : Connection); end +{{#resources}} + + def {{accessor}} : {{className}} + @{{accessor}} ||= {{className}}.new(@conn) + end + + @{{accessor}} : {{className}}? +{{/resources}} + end +{{/crNamespaces}} +end diff --git a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache index ace95a8b28fe..3d3f7ab506fc 100644 --- a/modules/openapi-generator/src/main/resources/crystal/configuration.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/configuration.mustache @@ -1,5 +1,8 @@ # {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} +require "base64" +require "crest" +require "http" require "log" module {{moduleName}} @@ -13,18 +16,6 @@ module {{moduleName}} # Defines url base path property base_path : String - # Define server configuration index - property server_index : Int32 - - # Define server operation configuration index - property server_operation_index : Hash(Symbol, String) - - # Default server variables - property server_variables : Hash(Symbol, String) - - # Default server operation variables - property server_operation_variables : Hash(Symbol, String) - # Defines API keys used with API Key authentications. # # @return [Hash] key: parameter name, value: parameter value (API key) @@ -61,6 +52,15 @@ module {{moduleName}} # @return [true, false] property debugging : Bool + # Enable the underlying HTTP client's (crest) request/response logging. Off by default, so the + # shard produces no log output unless a consumer opts in (e.g. a higher-level client wrapper + # can expose `config.logging = true`). Independent of `debugging`. + property logging : Bool + + # Logger used by crest when `logging` is enabled. Defaults to `Crest::CommonLogger`; assign a + # custom `Crest::Logger` to control formatting/output. + property logger : Crest::Logger + # Defines the temporary folder to store downloaded files # (for API endpoints that have file response). # Default to use `Tempfile`. @@ -119,25 +119,28 @@ module {{moduleName}} # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 #property params_encoding : String? + # Default headers sent with every request. + property default_headers : HTTP::Headers = HTTP::Headers.new + + # Params encoder used to encode array query parameters. + # Default: Crest::NestedParamsEncoder (encodes arrays as key=a&key=b). + property params_encoder : Crest::ParamsEncoder.class = {{paramsEncoder}} + # Create a new `Configuration`. def initialize @scheme = "{{scheme}}" @host = "{{host}}{{#port}}:{{{.}}}{{/port}}" @base_path = "{{contextPath}}" - @server_index = 0 - @server_operation_index = {} of Symbol => String - @server_variables = {} of Symbol => String - @server_operation_variables = {} of Symbol => String @api_key = {} of Symbol => String @api_key_prefix = {} of Symbol => String @timeout = 0 @client_side_validation = true - @verify_ssl = true - @verify_ssl_host = true #@params_encoding = nil #@cert_file = nil #@key_file = nil @debugging = false + @logging = false + @logger = Crest::CommonLogger.new @username = nil @password = nil @access_token = nil @@ -147,7 +150,7 @@ module {{moduleName}} # Create a new `Configuration` with block. # # ``` - # config = Petstore::Configuration.new do |config| + # config = {{moduleName}}::Configuration.new do |config| # config.username = "xxx" # config.password = "xxx" # end @@ -183,13 +186,9 @@ module {{moduleName}} @base_path = "" if @base_path == "/" end - # Returns base URL for specified operation based on server settings - def base_url(operation = Nil) - # TODO revise below to support operation-level server setting - #index = server_operation_index.fetch(operation, server_index) - return "#{scheme}://#{[host, base_path].join("/").gsub(/\/+/, "/")}".sub(/\/+\z/, "") #if index == Nil - - #server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation]) + # Returns the base URL for requests. + def base_url + "#{scheme}://#{[host, base_path].join("/").gsub(/\/+/, "/")}".sub(/\/+\z/, "") end # Gets API key (with prefix if set). @@ -204,170 +203,46 @@ module {{moduleName}} # Gets Basic Auth token string def basic_auth_token - "Basic " + ["#{username}:#{password}"].pack("m").delete("\r\n") + "Basic " + Base64.strict_encode("#{username}:#{password}") end - # Returns Auth Settings hash for api client. - def auth_settings -{{#authMethods.0}} - Hash{ + # Applies authentication credentials to request headers and query params. + # Called by Connection#request for every outgoing request. + def apply_auth!(headers : HTTP::Headers, params : Hash(String, String | Array(String)), auth_names : Array(String)) : Nil {{#authMethods}} {{#isApiKey}} - "{{name}}" => { - type: "api_key", - in: {{#isKeyInCookie}}"cookie"{{/isKeyInCookie}}{{#isKeyInHeader}}"header"{{/isKeyInHeader}}{{#isKeyInQuery}}"query"{{/isKeyInQuery}}, - key: "{{keyParamName}}", - value: api_key_with_prefix(:{{keyParamName}}) - }, + if auth_names.includes?("{{name}}") + value = api_key_with_prefix(:"{{keyParamName}}") + unless value.empty? + {{#isKeyInHeader}}headers["{{keyParamName}}"] = value{{/isKeyInHeader}}{{#isKeyInQuery}}params["{{keyParamName}}"] = value{{/isKeyInQuery}}{{#isKeyInCookie}}headers["Cookie"] = [headers["Cookie"]?, "{{keyParamName}}=#{value}"].compact.join("; "){{/isKeyInCookie}} + end + end {{/isApiKey}} {{#isBasic}} {{#isBasicBasic}} - "{{name}}" => { - type: "basic", - in: "header", - key: "Authorization", - value: basic_auth_token - }, + if auth_names.includes?("{{name}}") + if @username || @password + headers["Authorization"] = basic_auth_token + end + end {{/isBasicBasic}} {{#isBasicBearer}} - "{{name}}" => { - type: "bearer", - in: "header", - {{#bearerFormat}} - format: "{{{.}}}", - {{/bearerFormat}} - key: "Authorization", - value: "Bearer #{access_token}" - }, + if auth_names.includes?("{{name}}") + if token = @access_token + headers["Authorization"] = "Bearer #{token}" + end + end {{/isBasicBearer}} {{/isBasic}} {{#isOAuth}} - "{{name}}" => { - type: "oauth2", - in: "header", - key: "Authorization", - value: "Bearer #{access_token}" - }, + if auth_names.includes?("{{name}}") + if token = @access_token + headers["Authorization"] = "Bearer #{token}" + end + end {{/isOAuth}} {{/authMethods}} - } -{{/authMethods.0}} -{{^authMethods}} - {} of String => Hash(Symbol, String) -{{/authMethods}} - end - - # Returns an array of Server setting - def server_settings - [ - {{#servers}} - { - url: "{{{url}}}", - description: "{{{description}}}{{^description}}No description provided{{/description}}", - {{#variables}} - {{#-first}} - variables: { - {{/-first}} - "{{{name}}}": { - description: "{{{description}}}{{^description}}No description provided{{/description}}", - default_value: "{{{defaultValue}}}", - {{#enumValues}} - {{#-first}} - enum_values: [ - {{/-first}} - "{{{.}}}"{{^-last}},{{/-last}} - {{#-last}} - ] - {{/-last}} - {{/enumValues}} - }{{^-last}},{{/-last}} - {{#-last}} - } - {{/-last}} - {{/variables}} - }{{^-last}},{{/-last}} - {{/servers}} - ] - end - - def operation_server_settings - {{#apiInfo}} - {{#apis}} - {{#operations}} - {{#operation}} - {{#servers}} - {{#-first}} - { - "{{{classname}}}.{{{nickname}}}": [ - {{/-first}} - { - url: "{{{url}}}", - description: "{{{description}}}{{^description}}No description provided{{/description}}", - {{#variables}} - {{#-first}} - variables: { - {{/-first}} - "{{{name}}}": { - description: "{{{description}}}{{^description}}No description provided{{/description}}", - default_value: "{{{defaultValue}}}", - {{#enumValues}} - {{#-first}} - enum_values: [ - {{/-first}} - "{{{.}}}"{{^-last}},{{/-last}} - {{#-last}} - ] - {{/-last}} - {{/enumValues}} - }{{^-last}},{{/-last}} - {{#-last}} - } - {{/-last}} - {{/variables}} - }{{^-last}},{{/-last}} - {{#-last}} - ], - } - {{/-last}} - {{/servers}} - {{/operation}} - {{/operations}} - {{/apis}} - {{/apiInfo}} end - # Returns URL based on server settings - # - # @param index array index of the server settings - # @param variables hash of variable and the corresponding value - def server_url(index, variables = {} of Symbol => String, servers = Nil) - servers = server_settings if servers == Nil - - # check array index out of bound - if (index < 0 || index >= servers.size) - raise ArgumentError.new("Invalid index #{index} when selecting the server. Must be less than #{servers.size}") - end - - server = servers[index] - url = server[:url] - - return url unless server.has_key? :variables - - # go through variable and assign a value - server[:variables].each do |name, variable| - if variables.has_key?(name) - if (!server[:variables][name].has_key?(:enum_values) || server[:variables][name][:enum_values].includes?(variables[name])) - url.gsub! "{" + name.to_s + "}", variables[name] - else - raise ArgumentError.new("The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}.") - end - else - # use default value - url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value] - end - end - - url - end end end diff --git a/modules/openapi-generator/src/main/resources/crystal/connection.mustache b/modules/openapi-generator/src/main/resources/crystal/connection.mustache new file mode 100644 index 000000000000..fef36492ccbd --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/connection.mustache @@ -0,0 +1,96 @@ +require "crest" +require "json" +require "log" +require "uri" + +module {{moduleName}} + Log = ::Log.for("{{shardName}}") + + def self.enc(value) : String + URI.encode_path_segment(value.to_s) + end + + class Connection + getter config : Configuration + + def initialize(@config : Configuration); end + + def request(klass : T.class, *, method : Symbol, path : String, + body = nil, query : Hash(String, _)? = nil, + form : Hash(String, Crest::ParamsValue)? = nil, + header : Hash(String, String?)? = nil, + accept : Array(String) = %w[application/json], + content_type : Array(String) = %w[application/json], + auth : Array(String) = %w[], + raw : Bool = false) : Response(T) forall T + Log.debug { "#{method} #{path}" } if config.debugging + + headers = config.default_headers.dup + header.try &.each { |k, v| headers[k] = v unless v.nil? } + # Prefer a JSON media type when the operation offers one: the body is always + # JSON-decoded (T.from_json), so requesting application/xml first (as some specs + # list it) would yield a response we can't parse. + headers["Accept"] = (accept.find(&.includes?("json")) || accept.first) unless accept.empty? + q = {} of String => String | Array(String) + query.try &.each do |k, v| + next if v.nil? + case v + when Array then q[k] = v.map(&.to_s) + else q[k] = v.to_s + end + end + config.apply_auth!(headers, q, auth) + + # Determine what to pass as the form/body argument to Crest + # If there's a JSON body, serialize it and pass as raw string form + body_str : String? = body.nil? ? nil : body.to_json + headers["Content-Type"] = content_type.first if body_str && !content_type.empty? + + crest_form : Hash(String, Crest::ParamsValue) | String | Nil = + if body_str + body_str + elsif form && !form.empty? + form + else + nil + end + + headers_hash = {} of String => String | Array(String) + headers.each { |k, vs| headers_hash[k] = vs.size == 1 ? vs.first : vs } + + resp = Crest::Request.execute( + method, + config.base_url + path, + crest_form, + headers: headers_hash, + params: q, + params_encoder: config.params_encoder, + logging: config.logging, + logger: config.logger, + handle_errors: false) + + resp_headers = to_http_headers(resp.headers) + unless 200 <= resp.status_code < 300 + raise ApiError.new(resp.status_code, resp_headers, resp.body) + end + + # `raw` (set by operations whose response isn't JSON, e.g. text/plain or binary) returns the + # body untouched; a String return type is otherwise JSON-decoded (unquoted). + value = {% if T == Nil %} nil {% elsif T == String %} (raw ? resp.body : String.from_json(resp.body)) {% else %} T.from_json(resp.body) {% end %} + Response(T).new(value, resp.status_code, resp_headers) + end + + # Crest returns headers as a Hash whose values may be a String or an Array(String); + # convert to the idiomatic HTTP::Headers used by Response/ApiError. + private def to_http_headers(raw) : HTTP::Headers + headers = HTTP::Headers.new + raw.each do |key, value| + case value + when Array then value.each { |v| headers.add(key, v) } + else headers[key] = value.to_s + end + end + headers + end + end +end diff --git a/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache b/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache index 1a7e69fd1cdb..15f3b69381a3 100644 --- a/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/gitignore.mustache @@ -12,3 +12,6 @@ /shard.lock /tmp/ + +# Spectator run artifact +.spectator-failures diff --git a/modules/openapi-generator/src/main/resources/crystal/model.mustache b/modules/openapi-generator/src/main/resources/crystal/model.mustache index 2de5ed1b7780..a6a7b4beb91d 100644 --- a/modules/openapi-generator/src/main/resources/crystal/model.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/model.mustache @@ -15,8 +15,16 @@ module {{moduleName}} {{/-first}} {{/oneOf}} {{^oneOf}} +{{#anyOf}} +{{#-first}} +{{>partial_model_anyof}} + +{{/-first}} +{{/anyOf}} +{{^anyOf}} {{>partial_model_generic}} +{{/anyOf}} {{/oneOf}} {{/isEnum}} {{/model}} diff --git a/modules/openapi-generator/src/main/resources/crystal/model_doc.mustache b/modules/openapi-generator/src/main/resources/crystal/model_doc.mustache deleted file mode 100644 index 6b4fb320f695..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/model_doc.mustache +++ /dev/null @@ -1,14 +0,0 @@ -{{#models}} -{{#model}} -{{#oneOf}} -{{#-first}} -{{>partial_oneof_module_doc}} - -{{/-first}} -{{/oneOf}} -{{^oneOf}} -{{>partial_model_generic_doc}} - -{{/oneOf}} -{{/model}} -{{/models}} diff --git a/modules/openapi-generator/src/main/resources/crystal/model_test.mustache b/modules/openapi-generator/src/main/resources/crystal/model_test.mustache index 04743fcb6784..0c3da07c9c98 100644 --- a/modules/openapi-generator/src/main/resources/crystal/model_test.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/model_test.mustache @@ -9,61 +9,88 @@ require "../spec_helper" {{#model}} Spectator.describe {{moduleName}}::{{classname}} do {{^oneOf}} - - describe "test an instance of {{classname}}" do - skip "should create an instance of {{classname}}" do - #instance = {{moduleName}}::{{classname}}.new - #expect(instance).to be_instance_of({{moduleName}}::{{classname}}) +{{^isEnum}} +{{^anyOf}} +{{#vendorExtensions.x-cr-not-json-serializable}} + describe "JSON contract" do + # This model holds a non-JSON-serialisable property (e.g. a ::File field), so a + # from_json round-trip cannot be compiled. Assert the JSON contract is present instead. + it "defines from_json" do + expect({{moduleName}}::{{classname}}.responds_to?(:from_json)).to be_true + end + end +{{/vendorExtensions.x-cr-not-json-serializable}} +{{^vendorExtensions.x-cr-not-json-serializable}} +{{#vendorExtensions.x-cr-discriminator-map}} + describe "polymorphic JSON" do + # A discriminated base type dispatches to a mapped subtype, so it cannot be built from a + # document that omits the discriminator field. + it "requires the discriminator to deserialise" do + expect { {{moduleName}}::{{classname}}.from_json("{}") }.to raise_error end end -{{#vars}} - describe "test attribute '{{{name}}}'" do - skip "should work" do - {{#isEnum}} - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - # validator = Petstore::EnumTest::EnumAttributeValidator.new("{{{dataType}}}", [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]) - # validator.allowable_values.each do |value| - # expect { instance.{{name}} = value }.not_to raise_error - # end - {{/isEnum}} - {{^isEnum}} - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - {{/isEnum}} +{{/vendorExtensions.x-cr-discriminator-map}} +{{^vendorExtensions.x-cr-discriminator-map}} +{{^hasRequired}} + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = {{moduleName}}::{{classname}}.from_json("{}") + expect(instance).to be_a({{moduleName}}::{{classname}}) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) end end -{{/vars}} -{{/oneOf}} -{{#oneOf}} + describe "#to_h" do + it "returns a Hash representation" do + instance = {{moduleName}}::{{classname}}.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +{{/hasRequired}} +{{#hasRequired}} + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { {{moduleName}}::{{classname}}.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +{{/hasRequired}} +{{/vendorExtensions.x-cr-discriminator-map}} +{{/vendorExtensions.x-cr-not-json-serializable}} +{{/anyOf}} +{{#anyOf}} {{#-first}} - describe ".openapi_one_of" do - it "lists the items referenced in the oneOf array" do - expect(described_class.openapi_one_of).to_not be_empty + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect({{moduleName}}::{{classname}}.responds_to?(:from_json)).to be_true end end - - {{#discriminator}} - {{#propertyName}} - describe ".openapi_discriminator_name" do - it "returns the value of the "discriminator" property" do - expect(described_class.openapi_discriminator_name).to_not be_empty +{{/-first}} +{{/anyOf}} +{{/isEnum}} +{{#isEnum}} + describe "JSON round-trip" do + it "parses an allowed value" do + value = {{moduleName}}::{{classname}}.from_json(%({{#allowableValues}}{{#enumVars}}{{#-first}}{{{value}}}{{/-first}}{{/enumVars}}{{/allowableValues}})) + expect(value).to be_a({{moduleName}}::{{classname}}) end end - - {{/propertyName}} - {{#mappedModels}} - {{#-first}} - describe ".openapi_discriminator_mapping" do - it "returns the key/values of the "mapping" property" do - expect(described_class.openapi_discriminator_mapping.values.sort).to eq(described_class.openapi_one_of.sort) +{{/isEnum}} +{{/oneOf}} +{{#oneOf}} +{{#-first}} + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect({{moduleName}}::{{classname}}.openapi_one_of).to_not be_empty end end - {{/-first}} - {{/mappedModels}} - {{/discriminator}} describe ".build" do - skip "returns the correct model" do + it "is defined on the oneOf union type" do + expect({{moduleName}}::{{classname}}.responds_to?(:build)).to be_true end end {{/-first}} diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_model_anyof.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_model_anyof.mustache new file mode 100644 index 000000000000..e11e05c9f841 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/partial_model_anyof.mustache @@ -0,0 +1,68 @@ + {{#description}} + # {{{.}}} + {{/description}} + # {{classname}} (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class {{classname}} + getter value + + {{#anyOf}} + def initialize(@value : {{{.}}}) + end + {{/anyOf}} + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + {{#anyOf}}{{{.}}}{{^-last}}, {{/-last}}{{/anyOf}} + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json +{{#vendorExtensions.x-cr-discriminator-prop}} + # discriminator fast-path: pick the mapped member by the discriminator value. + if (disc_h = data.as_h?) && (disc = disc_h["{{{vendorExtensions.x-cr-discriminator-prop}}}"]?.try(&.as_s?)) + case disc +{{#discriminator}}{{#mappedModels}} when "{{{mappingName}}}" then return new({{{modelName}}}.from_json(json)) +{{/mappedModels}}{{/discriminator}} else + # unknown discriminator value: fall through to trying each member + end + end +{{/vendorExtensions.x-cr-discriminator-prop}} + {{#anyOf}} + begin + return new({{{.}}}.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + {{/anyOf}} + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in {{classname}} (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + {{#anyOf}} + begin + return new({{{.}}}.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + {{/anyOf}} + raise YAML::ParseException.new("doesn't match any schema listed in {{classname}} (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_model_enum_class.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_model_enum_class.mustache index 02da11897ad4..6a378a3cb2e4 100644 --- a/modules/openapi-generator/src/main/resources/crystal/partial_model_enum_class.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/partial_model_enum_class.mustache @@ -1,22 +1,4 @@ - class {{classname}}{{#allowableValues}}{{#enumVars}} - {{{name}}} = {{{value}}} - {{/enumVars}} {{/allowableValues}} - # Builds the enum from string - # @param [String] The enum value in the form of the string - # @return [String] The enum value - def self.build_from_hash(value) - new.build_from_hash(value) - end - - # Builds the enum from string - # @param [String] The enum value in the form of the string - # @return [String] The enum value - def build_from_hash(value) - case value{{#allowableValues}}{{#enumVars}} - when {{{value}}} - {{{name}}}{{/enumVars}}{{/allowableValues}} - else - raise "Invalid ENUM value #{value} for class #{{{classname}}}" - end - end - end \ No newline at end of file + # {{classname}} (OpenAPI enum). Allowed values: {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}. + # Represented as `{{dataType}}` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias {{classname}} = {{dataType}} diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_model_generic.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_model_generic.mustache index 8d0ded604024..77a47cb71d75 100644 --- a/modules/openapi-generator/src/main/resources/crystal/partial_model_generic.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/partial_model_generic.mustache @@ -4,86 +4,47 @@ class {{classname}}{{#parent}} < {{{.}}}{{/parent}} include JSON::Serializable include YAML::Serializable + include {{moduleName}}::Serializable + include {{moduleName}}::Validation + {{#vendorExtensions.x-cr-additional-properties}} + # Preserve unknown JSON keys (additionalProperties) across a (de)serialisation round-trip. + include JSON::Serializable::Unmapped + {{/vendorExtensions.x-cr-additional-properties}} + {{#vendorExtensions.x-cr-discriminator-map}} + + # Polymorphic (de)serialisation: dispatch on the discriminator to the mapped subtype. + use_json_discriminator "{{vendorExtensions.x-cr-discriminator-prop}}", {{{vendorExtensions.x-cr-discriminator-map}}} + use_yaml_discriminator "{{vendorExtensions.x-cr-discriminator-prop}}", {{{vendorExtensions.x-cr-discriminator-map}}} + {{/vendorExtensions.x-cr-discriminator-map}} {{#hasRequired}} # Required properties {{/hasRequired}} {{#requiredVars}} + {{^vendorExtensions.x-cr-inherited}} {{#description}} # {{{.}}} {{/description}} - @[JSON::Field(key: "{{{baseName}}}", type: {{{dataType}}}{{#defaultValue}}, default: {{{defaultValue}}}{{/defaultValue}}, nillable: false, emit_null: false)] + @[JSON::Field(key: "{{{baseName}}}", emit_null: false)] property {{{name}}} : {{{dataType}}} + {{/vendorExtensions.x-cr-inherited}} {{/requiredVars}} {{#hasOptional}} # Optional properties {{/hasOptional}} {{#optionalVars}} + {{^vendorExtensions.x-cr-inherited}} {{#description}} # {{{.}}} {{/description}} - @[JSON::Field(key: "{{{baseName}}}", type: {{{dataType}}}?{{#defaultValue}}, default: {{{defaultValue}}}{{/defaultValue}}, nillable: true, emit_null: false)] - property {{{name}}} : {{{dataType}}}? + @[JSON::Field(key: "{{{baseName}}}", emit_null: false)] + property {{{name}}} : {{{dataType}}}?{{#vendorExtensions.x-cr-default}} = {{{vendorExtensions.x-cr-default}}}{{/vendorExtensions.x-cr-default}} + {{/vendorExtensions.x-cr-inherited}} {{/optionalVars}} -{{#hasEnums}} - abstract class EnumAttributeValidator - def valid?(value) - !value || @allowable_values.includes?(value) - end - - def message - "invalid value for \"#{@attribute}\", must be one of #{@allowable_values}." - end - - def to(_type, value) - case _type - when Int32 - value.to_i32 - when Int64 - value.to_i64 - when Float32 - value.to_f32 - when Float64 - value.to_f64 - else - value.to_s - end - end - end - - {{#vars}} - {{#isEnum}} - {{^isContainer}} - class EnumAttributeValidatorFor{{#lambdaPascalcase}}{{{name}}}{{/lambdaPascalcase}} < EnumAttributeValidator - @attribute : String - @allowable_values : Array(Int32 | Int64 | Float32 | Float64 | String) - - def initialize - @attribute = "{{{name}}}" - @allowable_values = [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}].map { |value| to({{{dataType}}}, value)} - end - end - - {{/isContainer}} - {{/isEnum}} - {{/vars}} - -{{/hasEnums}} - {{#anyOf}} - {{#-first}} - # List of class defined in anyOf (OpenAPI v3) - def self.openapi_any_of - [ - {{/-first}} - :"{{{.}}}"{{^-last}},{{/-last}} - {{#-last}} - ] - end - - {{/-last}} - {{/anyOf}} +{{#vars}}{{#vendorExtensions.x-cr-validated}}{{^isContainer}}{{^vendorExtensions.x-cr-inherited}} validates({{{name}}}, {{{dataType}}}, {{#required}}false{{/required}}{{^required}}true{{/required}}{{#isEnum}}, enum: [{{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}}]{{/isEnum}}{{#maxLength}}, max_length: {{{maxLength}}}{{/maxLength}}{{#minLength}}, min_length: {{{minLength}}}{{/minLength}}{{#maximum}}, maximum: {{{maximum}}}{{#exclusiveMaximum}}, exclusive_maximum: true{{/exclusiveMaximum}}{{/maximum}}{{#minimum}}, minimum: {{{minimum}}}{{#exclusiveMinimum}}, exclusive_minimum: true{{/exclusiveMinimum}}{{/minimum}}{{#pattern}}, pattern: {{{pattern}}}{{/pattern}}{{#maxItems}}, max_items: {{{maxItems}}}{{/maxItems}}{{#minItems}}, min_items: {{{minItems}}}{{/minItems}}) +{{/vendorExtensions.x-cr-inherited}}{{/isContainer}}{{/vendorExtensions.x-cr-validated}}{{/vars}} {{#allOf}} {{#-first}} # List of class defined in allOf (OpenAPI v3) @@ -108,69 +69,24 @@ {{/discriminator}} # Initializes the object # @param [Hash] attributes Model attributes in the form of hash - def initialize({{#requiredVars}}@{{{name}}} : {{{dataType}}}{{^-last}}, {{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}}, {{/hasOptional}}{{/hasRequired}}{{#optionalVars}}@{{{name}}} : {{{dataType}}}? = nil{{^-last}}, {{/-last}}{{/optionalVars}}) - end + def initialize({{#requiredVars}}{{^vendorExtensions.x-cr-inherited}}@{{/vendorExtensions.x-cr-inherited}}{{{name}}} : {{{dataType}}}{{^-last}}, {{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}}, {{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{^vendorExtensions.x-cr-inherited}}@{{/vendorExtensions.x-cr-inherited}}{{{name}}} : {{{dataType}}}? = {{#vendorExtensions.x-cr-default}}{{{vendorExtensions.x-cr-default}}}{{/vendorExtensions.x-cr-default}}{{^vendorExtensions.x-cr-default}}nil{{/vendorExtensions.x-cr-default}}{{^-last}}, {{/-last}}{{/optionalVars}}) +{{#parent}} super({{{vendorExtensions.x-cr-parent-args}}}) +{{/parent}} end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = {{^parent}}Array(String).new{{/parent}}{{#parent}}super{{/parent}} {{#vars}} - {{#isEnum}} + {{#vendorExtensions.x-cr-validated}} {{^isContainer}} - {{{name}}}_validator = EnumAttributeValidatorFor{{#lambdaPascalcase}}{{{name}}}{{/lambdaPascalcase}}.new - if !{{{name}}}_validator.valid?(@{{{name}}}) - message = {{{name}}}_validator.message - invalid_properties.push(message) + {{^vendorExtensions.x-cr-inherited}} + if (msg = {{{name}}}_validation_error(@{{{name}}})) + invalid_properties.push(msg) end - + {{/vendorExtensions.x-cr-inherited}} {{/isContainer}} - {{/isEnum}} - {{#hasValidation}} - {{#maxLength}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.to_s.try &.size.try &.> {{{maxLength}}} - invalid_properties.push("invalid value for \"{{{name}}}\", the character length must be smaller than or equal to {{{maxLength}}}.") - end - - {{/maxLength}} - {{#minLength}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.to_s.try &.size.try &.< {{{minLength}}} - invalid_properties.push("invalid value for \"{{{name}}}\", the character length must be greater than or equal to {{{minLength}}}.") - end - - {{/minLength}} - {{#maximum}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.>{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{{maximum}}} - invalid_properties.push("invalid value for \"{{{name}}}\", must be smaller than {{^exclusiveMaximum}}or equal to {{/exclusiveMaximum}}{{{maximum}}}.") - end - - {{/maximum}} - {{#minimum}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.<{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{{minimum}}} - invalid_properties.push("invalid value for \"{{{name}}}\", must be greater than {{^exclusiveMinimum}}or equal to {{/exclusiveMinimum}}{{{minimum}}}.") - end - - {{/minimum}} - {{#pattern}} - pattern = {{{pattern}}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.!~ pattern - invalid_properties.push("invalid value for \"{{{name}}}\", must conform to the pattern #{pattern}.") - end - - {{/pattern}} - {{#maxItems}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.size.try &.> {{{maxItems}}} - invalid_properties.push("invalid value for \"{{{name}}}\", number of items must be less than or equal to {{{maxItems}}}." - end - - {{/maxItems}} - {{#minItems}} - if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.size.try &.< {{{minItems}}} - invalid_properties.push("invalid value for \"{{{name}}}\", number of items must be greater than or equal to {{{minItems}}}." - end - - {{/minItems}} - {{/hasValidation}} + {{/vendorExtensions.x-cr-validated}} {{/vars}} invalid_properties end @@ -178,145 +94,9 @@ # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - {{#vars}} - {{#isEnum}} - {{^isContainer}} - {{{name}}}_validator = EnumAttributeValidatorFor{{#lambdaPascalcase}}{{{name}}}{{/lambdaPascalcase}}.new - return false unless {{{name}}}_validator.valid?(@{{{name}}}) - {{/isContainer}} - {{/isEnum}} - {{#hasValidation}} - {{#maxLength}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.to_s.try &.size.try &.> {{{maxLength}}} - {{/maxLength}} - {{#minLength}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.to_s.try &.size.try &.< {{{minLength}}} - {{/minLength}} - {{#maximum}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.>{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{{maximum}}} - {{/maximum}} - {{#minimum}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.<{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{{minimum}}} - {{/minimum}} - {{#pattern}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.!~ {{{pattern}}} - {{/pattern}} - {{#maxItems}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.size.try &.> {{{maxItems}}} - {{/maxItems}} - {{#minItems}} - return false if {{^required}}!@{{{name}}}.nil? && {{/required}}@{{{name}}}.try &.size.try &.< {{{minItems}}} - {{/minItems}} - {{/hasValidation}} - {{/vars}} - {{#anyOf}} - {{#-first}} - _any_of_found = false - self.class.openapi_any_of.each do |_class| - _any_of = {{moduleName}}.const_get(_class).build_from_hash(self.to_h) - if _any_of.valid? - _any_of_found = true - end - end - - if !_any_of_found - return false - end - - {{/-first}} - {{/anyOf}} - true{{#parent}} && super{{/parent}} + list_invalid_properties.empty? end - {{#vars}} - {{#isEnum}} - {{^isContainer}} - # Custom attribute writer method checking allowed values (enum). - # @param [Object] {{{name}}} Object to be assigned - def {{{name}}}=({{{name}}}) - validator = EnumAttributeValidatorFor{{#lambdaPascalcase}}{{{name}}}{{/lambdaPascalcase}}.new - unless validator.valid?({{{name}}}) - raise ArgumentError.new(validator.message) - end - @{{{name}}} = {{{name}}} - end - - {{/isContainer}} - {{/isEnum}} - {{^isEnum}} - {{#hasValidation}} - # Custom attribute writer method with validation - # @param [Object] {{{name}}} Value to be assigned - def {{{name}}}=({{{name}}}) - {{#maxLength}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}}.to_s.size > {{{maxLength}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", the character length must be smaller than or equal to {{{maxLength}}}.") - end - - {{/maxLength}} - {{#minLength}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}}.to_s.size < {{{minLength}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", the character length must be greater than or equal to {{{minLength}}}.") - end - - {{/minLength}} - {{#maximum}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}} >{{#exclusiveMaximum}}={{/exclusiveMaximum}} {{{maximum}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", must be smaller than {{^exclusiveMaximum}}or equal to {{/exclusiveMaximum}}{{{maximum}}}.") - end - - {{/maximum}} - {{#minimum}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}} <{{#exclusiveMinimum}}={{/exclusiveMinimum}} {{{minimum}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", must be greater than {{^exclusiveMinimum}}or equal to {{/exclusiveMinimum}}{{{minimum}}}.") - end - - {{/minimum}} - {{#pattern}} - pattern = {{{pattern}}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}} !~ pattern - raise ArgumentError.new("invalid value for \"{{{name}}}\", must conform to the pattern #{pattern}.") - end - - {{/pattern}} - {{#maxItems}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}}.size > {{{maxItems}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", number of items must be less than or equal to {{{maxItems}}}.") - end - - {{/maxItems}} - {{#minItems}} - if {{^required}}!{{{name}}}.nil? && {{/required}}{{{name}}}.size < {{{minItems}}} - raise ArgumentError.new("invalid value for \"{{{name}}}\", number of items must be greater than or equal to {{{minItems}}}.") - end - - {{/minItems}} - @{{{name}}} = {{{name}}} - end - - {{/hasValidation}} - {{/isEnum}} - {{/vars}} - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class{{#vars}} && - {{name}} == other.{{name}}{{/vars}}{{#parent}} && super(other){{/parent}} - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [{{#vars}}{{name}}{{^-last}}, {{/-last}}{{/vars}}].hash - end - -{{> base_object}} - +{{#hasVars}} def_equals_and_hash({{#vars}}{{{name}}}{{^-last}}, {{/-last}}{{/vars}}) +{{/hasVars}} end diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_model_generic_doc.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_model_generic_doc.mustache deleted file mode 100644 index 95bdb7107c22..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/partial_model_generic_doc.mustache +++ /dev/null @@ -1,28 +0,0 @@ -# {{moduleName}}::{{classname}} - -## Properties - -| Name | Type | Description | Notes | -| ---- | ---- | ----------- | ----- | -{{#vars}} -| **{{name}}** | {{#isPrimitiveType}}**{{dataType}}**{{/isPrimitiveType}}{{^isPrimitiveType}}[**{{dataType}}**]({{complexType}}.md){{/isPrimitiveType}} | {{description}} | {{^required}}[optional]{{/required}}{{#isReadOnly}}[readonly]{{/isReadOnly}}{{#defaultValue}}[default to {{.}}]{{/defaultValue}} | -{{/vars}} - -## Example - -```ruby -require '{{{gemName}}}' - -{{^vars}} -instance = {{moduleName}}::{{classname}}.new() -{{/vars}} -{{#vars}} -{{#-first}} -instance = {{moduleName}}::{{classname}}.new( -{{/-first}} - {{name}}: {{example}}{{^-last}},{{/-last}} -{{#-last}} -) -{{/-last}} -{{/vars}} -``` diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module.mustache index f18cd6f6d9cd..9febc79ebc23 100644 --- a/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module.mustache @@ -1,104 +1,77 @@ {{#description}} # {{{.}}} {{/description}} + # {{classname}} (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. class {{classname}} - include JSON::Serializable - include YAML::Serializable + getter value - class SchemaMismatchError < Exception + {{#oneOf}} + def initialize(@value : {{{.}}}) end + {{/oneOf}} - {{#oneOf}} - {{#-first}} - # List of class defined in oneOf (OpenAPI v3) + # List of classes defined in oneOf (OpenAPI v3) def self.openapi_one_of [ - {{/-first}} - {{{.}}}{{^-last}},{{/-last}} - {{#-last}} + {{#oneOf}}{{{.}}}{{^-last}}, {{/-last}}{{/oneOf}} ] end - {{/-last}} - {{/oneOf}} - - {{#discriminator}} - use_yaml_discriminator {{#propertyName}}"{{{.}}}"{{/propertyName}}, { - {{#mappedModels}}{{{mappingName}}}: {{{modelName}}}{{^-last}},{{/-last}}{{/mappedModels}} - } - {{/discriminator}} - - def self.build(data) - openapi_one_of.each do |klass| - begin - typed_data = find_and_cast_into_type(klass, data) - return typed_data if typed_data - rescue ex - # rescue all errors so we keep iterating even if the current item lookup raises - Log.trace { ex.message } - end - end - - nil + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) end - {{#oneOf}} - private def self.find_and_cast_into_type(klass : {{{.}}}.class, data) - return if data.nil? - - Log.trace { "INSPECTING DATA" } - Log.trace { data.inspect } + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end - case data - when NetboxClient::RecursiveHash - if value = cast_value(array_data: false, array_class: array_class?(klass), klass: klass, data: data) - return new(value) + def self.from_json_any(data : JSON::Any) : self + json = data.to_json +{{#vendorExtensions.x-cr-discriminator-prop}} + # discriminator fast-path: pick the mapped member by the discriminator value. + if (disc_h = data.as_h?) && (disc = disc_h["{{{vendorExtensions.x-cr-discriminator-prop}}}"]?.try(&.as_s?)) + case disc +{{#discriminator}}{{#mappedModels}} when "{{{mappingName}}}" then return new({{{modelName}}}.from_json(json)) +{{/mappedModels}}{{/discriminator}} else + # unknown discriminator value: fall through to trying each member end - when Array(NetboxClient::RecursiveHash) - if value = cast_value(array_data: true, array_class: array_class?(klass), klass: klass, data: data) - return new(value) - end - else - raise SchemaMismatchError.new("#{data} doesn't match the #{klass} type") end - end - {{/oneOf}} - - private def self.cast_value(array_data : Bool, array_class : Bool, klass, data) - if array_class == true && array_data == true - Log.debug { "Building array of classes: #{klass} / #{data}" } - - klass.from_json(data.to_json) - elsif array_class == false && array_data == false - Log.debug { "Building single class: #{klass} / #{data}" } - - klass.from_json(data.to_json) +{{/vendorExtensions.x-cr-discriminator-prop}} + {{#oneOf}} + begin + return new({{{.}}}.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError end + {{/oneOf}} + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in {{classname}} (oneOf)", 0, 0) end - private def self.array_class?(klass) - klass.name.starts_with?("Array(") + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil end - {{#oneOf}} - def initialize(@value : {{{.}}}) + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + {{#oneOf}} + begin + return new({{{.}}}.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + {{/oneOf}} + raise YAML::ParseException.new("doesn't match any schema listed in {{classname}} (oneOf)", 0, 0) end - {{/oneOf}} - - delegate :to_yaml, to: @value - delegate :to_json, to: @value - - def to_any_h - {"value" => to_h} + def to_json(builder : JSON::Builder) + @value.to_json(builder) end - def to_h - val = @value - if val.is_a?(Int32) - val - else - val.to_h - end + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) end end diff --git a/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module_doc.mustache b/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module_doc.mustache deleted file mode 100644 index 64a6c32dc854..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/partial_oneof_module_doc.mustache +++ /dev/null @@ -1,92 +0,0 @@ -# {{moduleName}}::{{classname}} - -## Class instance methods - -### `openapi_one_of` - -Returns the list of classes defined in oneOf. - -#### Example - -```ruby -require '{{{gemName}}}' - -{{moduleName}}::{{classname}}.openapi_one_of -# => -{{#oneOf}} -{{#-first}} -# [ -{{/-first}} -# :'{{{.}}}'{{^-last}},{{/-last}} -{{#-last}} -# ] -{{/-last}} -{{/oneOf}} -``` -{{#discriminator}} -{{#propertyName}} - -### `openapi_discriminator_name` - -Returns the discriminator's property name. - -#### Example - -```ruby -require '{{{gemName}}}' - -{{moduleName}}::{{classname}}.openapi_discriminator_name -# => :'{{{.}}}' -``` -{{/propertyName}} -{{#mappedModels}} -{{#-first}} - -### `openapi_discriminator_name` - -Returns the discriminator's mapping. - -#### Example - -```ruby -require '{{{gemName}}}' - -{{moduleName}}::{{classname}}.openapi_discriminator_mapping -# => -# { -{{/-first}} -# :'{{{mappingName}}}' => :'{{{modelName}}}'{{^-last}},{{/-last}} -{{#-last}} -# } -{{/-last}} -{{/mappedModels}} -{{/discriminator}} - -### build - -Find the appropriate object from the `openapi_one_of` list and casts the data into it. - -#### Example - -```ruby -require '{{{gemName}}}' - -{{moduleName}}::{{classname}}.build(data) -# => {{#oneOf}}{{#-first}}#<{{{.}}}:0x00007fdd4aab02a0>{{/-first}}{{/oneOf}} - -{{moduleName}}::{{classname}}.build(data_that_doesnt_match) -# => nil -``` - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| **data** | **Mixed** | data to be matched against the list of oneOf items | - -#### Return type - -{{#oneOf}} -- `{{{.}}}` -{{/oneOf}} -- `nil` (if no type matches) diff --git a/modules/openapi-generator/src/main/resources/crystal/recursive_hash.mustache b/modules/openapi-generator/src/main/resources/crystal/recursive_hash.mustache deleted file mode 100644 index 7d682f48af51..000000000000 --- a/modules/openapi-generator/src/main/resources/crystal/recursive_hash.mustache +++ /dev/null @@ -1,18 +0,0 @@ -module {{moduleName}} - # Define possible value types for our own AnyHash class (RecursiveHash) - alias ValuesType = Nil | - Bool | - String | - Time | - Int32 | - Int64 | - Float32 | - Float64 | - Array(ValuesType) - - # Define our own AnyHash class (RecursiveHash) - # RecursiveHash - AnyHash.define_new klass: :RecursiveHash, - key: String, - value: ValuesType -end diff --git a/modules/openapi-generator/src/main/resources/crystal/response.mustache b/modules/openapi-generator/src/main/resources/crystal/response.mustache new file mode 100644 index 000000000000..ed4b12933e76 --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/response.mustache @@ -0,0 +1,13 @@ +module {{moduleName}} + struct Response(T) + getter value : T + getter status : Int32 + getter headers : HTTP::Headers + + def initialize(@value : T, @status : Int32, @headers : HTTP::Headers); end + + def success? : Bool + 200 <= @status < 300 + end + end +end diff --git a/modules/openapi-generator/src/main/resources/crystal/serializable.mustache b/modules/openapi-generator/src/main/resources/crystal/serializable.mustache new file mode 100644 index 000000000000..223f3f9d1cfa --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/serializable.mustache @@ -0,0 +1,27 @@ +# {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} +require "json" + +module {{moduleName}} + # Shared serialization helpers mixed into every generated model. + module Serializable + # Returns the string representation of the object + def to_s(io : IO) : Nil + io << to_json + end + + # to_body is an alias to to_h (backward compatibility) + def to_body : Hash(String, JSON::Any) + to_h + end + + # Returns the object in the form of hash + def to_h : Hash(String, JSON::Any) + JSON.parse(to_json).as_h + end + + # @see the `==` method + def eql?(other) + self == other + end + end +end diff --git a/modules/openapi-generator/src/main/resources/crystal/shard.mustache b/modules/openapi-generator/src/main/resources/crystal/shard.mustache index 08a392a1a491..c4ab3c3a5c5e 100644 --- a/modules/openapi-generator/src/main/resources/crystal/shard.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/shard.mustache @@ -11,8 +11,6 @@ description: | crystal: ">= 0.35.1" dependencies: - any_hash: - github: Sija/any_hash.cr crest: github: mamantoha/crest version: ~> 1.3.13 diff --git a/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache b/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache index 85e39816da44..ec6008ccc211 100644 --- a/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache +++ b/modules/openapi-generator/src/main/resources/crystal/shard_name.mustache @@ -1,37 +1,23 @@ # {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} - -# Stdlib dependencies require "big" +require "big/json" require "json" require "log" require "time" +require "uri" require "yaml" -# External dependencies -require "any_hash" -require "crest" - -module {{moduleName}} - Log = ::Log.for("{{moduleName}}") # => Log for {{moduleName}} source - - VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }} - - # Return the default `Configuration` object. - def self.configure - Configuration.default - end - - # Customize default settings for the SDK using block. - # - # ``` - # {{moduleName}}.configure do |config| - # config.username = "xxx" - # config.password = "xxx" - # end - # ``` - def self.configure - yield Configuration.default - end -end +require "./{{shardName}}/configuration" +require "./{{shardName}}/connection" +require "./{{shardName}}/response" +require "./{{shardName}}/api_error" +require "./{{shardName}}/client" +require "./{{shardName}}/serializable" +require "./{{shardName}}/validation" -require "./{{shardName}}/**" +# Models +{{#models}}{{#model}}require "./{{shardName}}/models/{{classFilename}}" +{{/model}}{{/models}} +# APIs +{{#apiInfo}}{{#apis}}require "./{{shardName}}/api/{{classFilename}}" +{{/apis}}{{/apiInfo}} diff --git a/modules/openapi-generator/src/main/resources/crystal/validation.mustache b/modules/openapi-generator/src/main/resources/crystal/validation.mustache new file mode 100644 index 000000000000..afa8a85b48cd --- /dev/null +++ b/modules/openapi-generator/src/main/resources/crystal/validation.mustache @@ -0,0 +1,33 @@ +# {{#lambdaPrefixWithHash}}{{> api_info}}{{/lambdaPrefixWithHash}} +{{=<% %>=}} +module <%moduleName%> + # Shared macro for declarative property validation. Include it in a model and + # declare `validates(name, Type, nilable, **rules)` per validated property. + # Supported rule keys: enum, max_length, min_length, maximum, exclusive_maximum, + # minimum, exclusive_minimum, pattern, max_items, min_items. + module Validation + macro validates(name, klass, nilable, **rules) + {% if rules[:enum] %}{{name.id.upcase}}_ALLOWED = {{rules[:enum]}}{% end %} + + def {{name.id}}=(value : {{klass}}{% if nilable %}?{% end %}) + if (msg = {{name.id}}_validation_error(value)) + raise ArgumentError.new(msg) + end + @{{name.id}} = value + end + + def {{name.id}}_validation_error(value) : String? + {% if rules[:enum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be one of #{ {{name.id.upcase}}_ALLOWED }" unless value.nil? || {{name.id.upcase}}_ALLOWED.includes?(value) + {% end %}{% if rules[:max_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be smaller than or equal to {{rules[:max_length]}}." if value.try &.to_s.try &.size.try &.> {{rules[:max_length]}} + {% end %}{% if rules[:min_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be greater than or equal to {{rules[:min_length]}}." if value.try &.to_s.try &.size.try &.< {{rules[:min_length]}} + {% end %}{% if rules[:maximum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be smaller than{% if rules[:exclusive_maximum] %}{% else %} or equal to{% end %} {{rules[:maximum]}}." if value.try &.>{% if rules[:exclusive_maximum] %}={% end %} {{rules[:maximum]}} + {% end %}{% if rules[:minimum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be greater than{% if rules[:exclusive_minimum] %}{% else %} or equal to{% end %} {{rules[:minimum]}}." if value.try &.<{% if rules[:exclusive_minimum] %}={% end %} {{rules[:minimum]}} + {% end %}{% if rules[:pattern] %}return "invalid value for \"#{ {{name.stringify}} }\", must conform to the pattern {{rules[:pattern]}}." if value.try &.!~ {{rules[:pattern]}} + {% end %}{% if rules[:max_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be less than or equal to {{rules[:max_items]}}." if value.try &.size.try &.> {{rules[:max_items]}} + {% end %}{% if rules[:min_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be greater than or equal to {{rules[:min_items]}}." if value.try &.size.try &.< {{rules[:min_items]}} + {% end %}nil + end + end + end +end +<%={{ }}=%> diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalApiRoutingTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalApiRoutingTest.java new file mode 100644 index 000000000000..063723828f53 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalApiRoutingTest.java @@ -0,0 +1,132 @@ +// CrystalApiRoutingTest.java +package org.openapitools.codegen.crystal; + +import org.openapitools.codegen.languages.crystal.CrystalApiRouting; +import org.testng.annotations.Test; +import java.util.*; +import static org.testng.Assert.assertEquals; + +public class CrystalApiRoutingTest { + + private static final List NETBOX = Arrays.asList( + "/api/dcim/cable-terminations/", "/api/dcim/cable-terminations/{id}/", + "/api/dcim/cable-terminations/{id}/paths/", "/api/ipam/vlans/{id}/"); + + private static final List QDRANT = Arrays.asList( + "/collections", "/collections/{collection_name}", + "/collections/{collection_name}/points/query", + "/collections/{collection_name}/points/{id}", + "/collections/{collection_name}/exists", + "/cluster/recover", "/cluster/peer/{peer_id}", "/"); + + @Test + public void testResourceSegmentsNetbox() { + Set r = CrystalApiRouting.resourceSegments(NETBOX); + assertEquals(r, new HashSet<>(Arrays.asList("cable-terminations", "vlans"))); + } + + @Test + public void testResourceSegmentsQdrant() { + Set r = CrystalApiRouting.resourceSegments(QDRANT); + assertEquals(r, new HashSet<>(Arrays.asList("collections", "points", "peer"))); + } + + @Test + public void testCommonBasePrefix() { + assertEquals(CrystalApiRouting.commonBasePrefix(NETBOX), "api"); + assertEquals(CrystalApiRouting.commonBasePrefix(QDRANT), ""); + } + + @Test + public void testLiterals() { + assertEquals(CrystalApiRouting.literals("/api/dcim/cable-terminations/{id}/paths/", "api"), + Arrays.asList("dcim", "cable-terminations", "paths")); + assertEquals(CrystalApiRouting.literals("/collections/{collection_name}/points/query", ""), + Arrays.asList("collections", "points", "query")); + assertEquals(CrystalApiRouting.literals("/", ""), Collections.emptyList()); + } + + @Test + public void testRouteNetboxItemUsesOperationIdAction() { + java.util.Set r = CrystalApiRouting.resourceSegments(NETBOX); + CrystalApiRouting.Route route = CrystalApiRouting.route( + "/api/dcim/cable-terminations/{id}/", "PATCH", + "dcim_cable_terminations_partial_update", r, "api"); + assertEquals(route.namespace, "dcim"); + assertEquals(route.resource, "cable-terminations"); + assertEquals(route.action, "partial_update"); + } + + @Test + public void testRouteQdrantActionSegment() { + java.util.Set r = CrystalApiRouting.resourceSegments(QDRANT); + CrystalApiRouting.Route route = CrystalApiRouting.route( + "/collections/{collection_name}/points/query", "POST", "query_points", r, ""); + assertEquals(route.namespace, "collections"); + assertEquals(route.resource, "points"); + assertEquals(route.action, "query"); // operationId "query_points" doesn't start with group prefix "points_", so branch (b) applies: last literal segment "query" + } + + @Test + public void testRouteDegenerateNoResource() { + java.util.Set r = CrystalApiRouting.resourceSegments(QDRANT); + CrystalApiRouting.Route route = CrystalApiRouting.route( + "/cluster/recover", "POST", "recover_cluster", r, ""); + assertEquals(route.namespace, "cluster"); + assertEquals(route.resource, null); + assertEquals(route.action, "recover"); + } + + @Test + public void testRouteVerbFallbackCollectionVsItem() { + java.util.Set r = CrystalApiRouting.resourceSegments(QDRANT); + // no operationId, no extra literal -> verb CRUD, collection-aware + CrystalApiRouting.Route coll = CrystalApiRouting.route("/collections", "GET", "", r, ""); + assertEquals(coll.namespace, "collections"); + assertEquals(coll.resource, null); + assertEquals(coll.action, "list"); + CrystalApiRouting.Route item = CrystalApiRouting.route("/collections/{collection_name}", "GET", "", r, ""); + assertEquals(item.action, "get"); + } + + @Test + public void testRouteRootPath() { + java.util.Set r = CrystalApiRouting.resourceSegments(QDRANT); + CrystalApiRouting.Route route = CrystalApiRouting.route("/", "GET", "", r, ""); + assertEquals(route.namespace, "root"); + assertEquals(route.resource, null); + // lits is empty for "/", no operationId, not an item path -> verbAction("GET", false) -> "list" + assertEquals(route.action, "list"); + } + + @Test + public void testRouteCamelCaseActionName() { + // /pet/findByStatus → action segment is camelCase; must be snake_cased + List petPaths = Arrays.asList("/pet", "/pet/{petId}", "/pet/findByStatus", "/pet/findByTags"); + java.util.Set r = CrystalApiRouting.resourceSegments(petPaths); + // findByStatus is not a resource (it never precedes a {param}), so it becomes an action literal + CrystalApiRouting.Route route = CrystalApiRouting.route( + "/pet/findByStatus", "GET", "findPetsByStatus", r, ""); + // operationId "findPetsByStatus" → underscore → "find_pets_by_status" + // group = "pet" (no resource since findByStatus ∉ r), group_ = "pet_" + // "find_pets_by_status" does not start with "pet_" ... so falls to (b): action literal = findByStatus → "find_by_status" + assertEquals(route.namespace, "pet"); + assertEquals(route.resource, null); + assertEquals(route.action, "find_by_status"); + } + + @Test + public void testRouteCamelCaseOperationId() { + // operationId with camelCase prefix strip: e.g. "petFindByStatus" from group "pet" + List petPaths = Arrays.asList("/pet", "/pet/{petId}", "/pet/findByStatus"); + java.util.Set r = CrystalApiRouting.resourceSegments(petPaths); + CrystalApiRouting.Route route = CrystalApiRouting.route( + "/pet/findByStatus", "GET", "petFindByStatus", r, ""); + // operationId "petFindByStatus" → underscore → "pet_find_by_status" + // group = "pet", g = "pet_" + // "pet_find_by_status".startsWith("pet_") and rest = "find_by_status" + assertEquals(route.namespace, "pet"); + assertEquals(route.resource, null); + assertEquals(route.action, "find_by_status"); + } +} diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalClientCodegenTest.java index b1ca249b9c76..bd67cd2e6290 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/crystal/CrystalClientCodegenTest.java @@ -28,6 +28,7 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.List; +import java.util.Map; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; @@ -53,15 +54,23 @@ public void testGenerateCrystalClientWithHtmlEntity() throws Exception { List files = generator.opts(clientOptInput).generate(); boolean apiFileGenerated = false; for (File file : files) { - if (file.getName().equals("default_api.cr")) { + // After namespaced routing + segment sanitization: + // /foo=bar -> namespace "foo=bar" -> sanitizeName strips '=' -> "foobar" -> file "foobar.cr" + if (file.getName().equals("foobar.cr")) { apiFileGenerated = true; - // Crystal client should set the path unescaped in the api file - assertTrue(FileUtils.readFileToString(file, StandardCharsets.UTF_8) - .contains("local_var_path = \"/foo=bar\"")); + String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8); + // Crystal client should set the path in the @conn.request call + assertTrue(content.contains("path: \"/foo=bar\"")); + // The generated class is nested under the api namespace module and its name must + // be valid Crystal (no '=' in identifier): `module Api` + `class Foobar`. + assertTrue(content.contains("module Api") && content.contains("class Foobar"), + "Generated class must be Api::Foobar (sanitized, no '=')"); + Assert.assertFalse(content.contains("Foo=bar"), + "Generated class name must not contain '=' (invalid Crystal identifier)"); } } if (!apiFileGenerated) { - fail("Default api file is not generated!"); + fail("API file is not generated!"); } } @@ -121,29 +130,29 @@ public void testBooleanDefaultValue() throws Exception { List files = generator.opts(clientOptInput).generate(); boolean apiFileGenerated = false; for (File file : files) { - if (file.getName().equals("default_api.cr")) { + // After namespaced routing: /default/Resources/{id} with commonBasePrefix="default/Resources" + // -> lits=[] -> namespace="root" -> file "root.cr" + if (file.getName().equals("root.cr")) { apiFileGenerated = true; - // Crystal client should set the path unescaped in the api file + // Crystal client should set the path in the @conn.request call assertTrue(FileUtils.readFileToString(file, StandardCharsets.UTF_8) - .contains("local_var_path = \"/default/Resources/{id}\"")); + .contains("path: \"/default/Resources/{id}\"")); } } if (!apiFileGenerated) { - fail("Default api file is not generated!"); + fail("API file is not generated!"); } } @Test - public void testAuthSettingsWithNoAuthMethodsEmitsValidCrystal() throws Exception { - // Regression test: when an OpenAPI spec has no recognized auth methods, - // the generated configuration.cr's auth_settings method must not emit - // a bare `Hash{}` literal, which is invalid Crystal. Crystal requires - // `{} of K => V` for empty hash literals. + public void testConfigurationHasNoAuthSettingsMethod() throws Exception { + // auth_settings was a dead utility method (not called by apply_auth!) and has + // been removed. Verify it is absent and apply_auth! is still present. final File output = Files.createTempDirectory("test").toFile(); output.mkdirs(); output.deleteOnExit(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/2_0/pathWithHtmlEntity.yaml"); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); CodegenConfig codegenConfig = new CrystalClientCodegen(); codegenConfig.setOutputDir(output.getAbsolutePath()); @@ -156,16 +165,17 @@ public void testAuthSettingsWithNoAuthMethodsEmitsValidCrystal() throws Exceptio if (file.getName().equals("configuration.cr")) { configFileGenerated = true; String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8); - // Bug: the previous template emitted `Hash{\n }` for empty - // auth methods, which Crystal rejects with: - // Error: for empty hashes use '{} of KeyType => ValueType' - Assert.assertFalse(content.contains("Hash{\n }"), - "configuration.cr must not contain an empty `Hash{}` literal"); - Assert.assertFalse(content.contains("Hash{}"), - "configuration.cr must not contain an empty `Hash{}` literal"); - // Fix: emit a typed empty hash literal that compiles in Crystal. - assertTrue(content.contains("{} of String => Hash(Symbol, String)"), - "configuration.cr must emit a typed empty hash literal in auth_settings"); + // auth_settings has been removed (dead code — not called by apply_auth!) + Assert.assertFalse(content.contains("def auth_settings"), + "configuration.cr must not contain the removed auth_settings method"); + // apply_auth! is still present (the real auth entry point) + assertTrue(content.contains("def apply_auth!"), + "configuration.cr must still contain apply_auth!"); + // server machinery has been removed too + Assert.assertFalse(content.contains("def server_settings"), + "configuration.cr must not contain the removed server_settings method"); + Assert.assertFalse(content.contains("def server_url"), + "configuration.cr must not contain the removed server_url method"); } } if (!configFileGenerated) { @@ -174,44 +184,546 @@ public void testAuthSettingsWithNoAuthMethodsEmitsValidCrystal() throws Exceptio } @Test - public void testAuthSettingsWithAuthMethodsStillEmitsHashLiteral() throws Exception { - // Ensure the empty-auth fix did not regress the populated case. + public void testSanitizeModelName() throws Exception { + final CrystalClientCodegen codegen = new CrystalClientCodegen(); + codegen.setHideGenerationTimestamp(false); + codegen.processOpts(); + + Assert.assertEquals(codegen.sanitizeModelName("JSON::Any"), "JSON::Any"); + // Disallows single colons + Assert.assertEquals(codegen.sanitizeModelName("JSON:Any"), "JSONAny"); + } + + @Test + @SuppressWarnings("unchecked") + public void testNamespaceTreeAssembled() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CrystalClientCodegen codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + List> ns = (List>) codegen.additionalProperties().get("crNamespaces"); + assertTrue(ns != null && !ns.isEmpty(), "crNamespaces must be populated"); + + // Find the "pet" namespace entry + Map petNs = ns.stream() + .filter(m -> "pet".equals(m.get("name"))) + .findFirst() + .orElse(null); + assertTrue(petNs != null, "expected a 'pet' namespace in the tree"); + + // className must be produced by toApiName("pet") == "Api::Pet" + Assert.assertEquals(petNs.get("className"), "Api::Pet", + "pet namespace className must equal Api::Pet (produced by toApiName)"); + + // resources list must be present (may be empty if petstore has no sub-resource segments under pet) + List> resources = (List>) petNs.get("resources"); + assertTrue(resources != null, "pet namespace must have a resources list (may be empty)"); + + // Each resource entry must have a non-null accessor and a className starting with "Api::Pet" + for (Map res : resources) { + assertTrue(res.get("accessor") != null, "resource accessor must not be null"); + String resClassName = (String) res.get("className"); + assertTrue(resClassName != null && resClassName.startsWith("Api::Pet"), + "resource className must start with 'Api::Pet', got: " + resClassName); + } + } + + @Test + public void testRuntimeFilesGenerated() throws Exception { final File output = Files.createTempDirectory("test").toFile(); - output.mkdirs(); output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File conn = files.stream().filter(f -> f.getName().equals("connection.cr")).findFirst().orElse(null); + assertTrue(conn != null, "connection.cr generated"); + String c = FileUtils.readFileToString(conn, StandardCharsets.UTF_8); + assertTrue(c.contains("def request(klass : T.class"), "generic request present"); + assertTrue(c.contains("forall T"), "request is generic"); + assertTrue(files.stream().anyMatch(f -> f.getName().equals("response.cr")), "response.cr generated"); + } + + @Test + public void testResourceMethodIsDeclarative() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + File pet = files.stream() + .filter(f -> f.getName().equals("pet.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")) + .findFirst().orElseThrow(() -> new AssertionError("api/pet.cr missing")); + String src = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + assertTrue(src.contains("module Api") && src.contains("class Pet"), "namespaced class (module Api + class Pet)"); + assertTrue(src.contains("@conn.request("), "delegates to Connection#request"); + Assert.assertFalse(src.contains("_with_http_info"), "no http_info twins"); + Assert.assertFalse(src.contains("client_side_validation"), "no dead validation"); + } + + @Test + public void testNamespacedFileAndClassNames() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); CodegenConfig codegenConfig = new CrystalClientCodegen(); codegenConfig.setOutputDir(output.getAbsolutePath()); + ClientOptInput input = new ClientOptInput().openAPI(openAPI).config(codegenConfig); + List files = new DefaultGenerator().opts(input).generate(); - ClientOptInput clientOptInput = new ClientOptInput().openAPI(openAPI).config(codegenConfig); + // petstore /pet, /pet/{petId} -> namespace "pet", file pet.cr (no /api prefix in petstore) + boolean found = files.stream().anyMatch(f -> + f.getPath().replace(File.separatorChar, '/').endsWith("/api/pet.cr")); + assertTrue(found, "expected a namespaced resource file src/.../api/pet.cr"); + } - DefaultGenerator generator = new DefaultGenerator(); - List files = generator.opts(clientOptInput).generate(); - boolean configFileGenerated = false; - for (File file : files) { - if (file.getName().equals("configuration.cr")) { - configFileGenerated = true; - String content = FileUtils.readFileToString(file, StandardCharsets.UTF_8); - assertTrue(content.contains("Hash{"), - "configuration.cr should still emit `Hash{` for populated auth methods"); - Assert.assertFalse(content.contains("{} of String => Hash(Symbol, String)"), - "configuration.cr should not emit empty hash literal when auth methods exist"); - } - } - if (!configFileGenerated) { - fail("configuration.cr file is not generated!"); + @Test + public void testFacadeGenerated() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + File client = files.stream().filter(f -> f.getName().equals("client.cr")) + .findFirst().orElseThrow(() -> new AssertionError("client.cr missing")); + String src = FileUtils.readFileToString(client, StandardCharsets.UTF_8); + assertTrue(src.contains("class Client"), "facade class"); + assertTrue(src.contains("def pet"), "lazy namespace accessor for pet"); + assertTrue(src.contains("Connection.new"), "builds a Connection"); + } + + /** + * Regression test for api.mustache defects: + * 1. Trailing comma in method signatures (e.g. "def foo(pet_id : Int64, )") + * 2. Duplicated splat separator ("*, *,") + * 3. Trailing space in %w[] arrays producing spurious empty element + * 4. Form params not declared in method signature / body references undeclared params + */ + @Test + public void testNamespacingEdgeCases() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/namespacing.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + // /store/orders + /store/orders/{id} -> orders precedes {id} -> resource + // groupKey="store/orders" -> file .../api/store/orders.cr, class Api::Store::Orders + assertTrue(files.stream().anyMatch(f -> f.getPath().replace(File.separatorChar, '/').endsWith("/store/orders.cr")), + "store/orders.cr must be generated (orders is a resource segment)"); + + // /store/refresh -> refresh not in R -> action on namespace "store" -> groupKey="store" + // file .../api/store.cr must contain def refresh + File store = files.stream().filter(f -> f.getName().equals("store.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")).findFirst().orElse(null); + assertTrue(store != null, "store.cr (degenerate action on store namespace) must be generated"); + assertTrue(FileUtils.readFileToString(store, StandardCharsets.UTF_8).contains("def refresh"), + "store.cr must contain def refresh (action derived from operationId store_refresh)"); + + // /ping -> lits=["ping"] (basePrefix="" since paths diverge at root) -> namespace="ping" + // Design: route() returns namespace="ping", not "root" (root only for empty-lits case) + // -> groupKey="ping" -> file .../api/ping.cr + assertTrue(files.stream().anyMatch(f -> f.getName().equals("ping.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")), + "ping.cr must be generated for /ping (namespace 'ping', not 'root', since lits is non-empty)"); + } + + @Test + public void testApiMustacheSignaturesAndArrays() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + // Collect all generated API .cr files + List apiFiles = files.stream() + .filter(f -> f.getName().endsWith(".cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")) + .collect(java.util.stream.Collectors.toList()); + assertTrue(!apiFiles.isEmpty(), "At least one API .cr file must be generated"); + + for (File apiFile : apiFiles) { + String src = FileUtils.readFileToString(apiFile, StandardCharsets.UTF_8); + String fname = apiFile.getName(); + + // DEFECT 1: No trailing comma before closing paren in method signatures + Assert.assertFalse(src.contains(", )"), + fname + ": found trailing comma in method signature: ', )'"); + + // DEFECT 2: No duplicated splat separator + Assert.assertFalse(src.contains("*, *,"), + fname + ": found duplicated splat separator '*, *,'"); + + // DEFECT 5: No trailing space in %w[] arrays + // A trailing space before ] means a spurious empty string element e.g. %w[foo ] + Assert.assertFalse(src.contains(" ]"), + fname + ": found trailing space before ']' in %w[] array (spurious empty element)"); } + + // DEFECT 3+4: Form params must be declared in signature and referenced in form: body + // Find pet.cr - it has updatePetWithForm (path+form) and uploadFile (path+form) + File pet = files.stream() + .filter(f -> f.getName().equals("pet.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")) + .findFirst().orElseThrow(() -> new AssertionError("api/pet.cr missing")); + String petSrc = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + + // updatePetWithForm: path param petId + form params name + status + // The form: { ... } body must reference declared variables name and status + assertTrue(petSrc.contains("form: Hash(String, Crest::ParamsValue){"), + "pet.cr: expected a typed form hash for form-param operations"); + // The form body must reference "name" and "status" as local variables (not string literals) + // Specifically: form: { "name" => name, "status" => status } + assertTrue(petSrc.contains("\"name\" => name"), + "pet.cr: form body must reference declared param 'name'"); + assertTrue(petSrc.contains("\"status\" => status"), + "pet.cr: form body must reference declared param 'status'"); + + // The method declaration for updatePetWithForm must include name and status as params + // We check that the form param names appear in the def line before the form: call + // A simple proxy: the file must contain "name : " (form param declaration) + assertTrue(petSrc.contains("name : "), + "pet.cr: form param 'name' must be declared in method signature"); + + // uploadFile: path param petId + form params additionalMetadata + file + // baseName is "additionalMetadata" (camelCase from spec), variable is snake_cased + assertTrue(petSrc.contains("\"additionalMetadata\" => additional_metadata"), + "pet.cr: uploadFile form body must reference declared param 'additional_metadata'"); } @Test - public void testSanitizeModelName() throws Exception { - final CrystalClientCodegen codegen = new CrystalClientCodegen(); - codegen.setHideGenerationTimestamp(false); - codegen.processOpts(); + public void testModelsIncludeSerializableMixin() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CrystalClientCodegen codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put("moduleName", "Petstore"); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + assertTrue(files.stream().anyMatch(f -> f.getName().equals("serializable.cr")), + "serializable.cr (shared mixin) must be generated"); + File pet = files.stream().filter(f -> f.getPath().replace(File.separatorChar,'/').endsWith("/models/pet.cr")) + .findFirst().orElseThrow(() -> new AssertionError("pet.cr missing")); + String src = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + assertTrue(src.contains("include Petstore::Serializable"), "model must include the mixin"); + Assert.assertFalse(src.contains("def to_h"), "to_h must no longer be inlined in the model"); + } - Assert.assertEquals(codegen.sanitizeModelName("JSON::Any"), "JSON::Any"); - // Disallows single colons - Assert.assertEquals(codegen.sanitizeModelName("JSON:Any"), "JSONAny"); + @Test + public void testValidDelegatesToListInvalidProperties() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File model = files.stream().filter(f -> f.getPath().replace(File.separatorChar,'/').endsWith("/models/format_test.cr")) + .findFirst().orElseThrow(() -> new AssertionError("format_test.cr missing")); + String src = FileUtils.readFileToString(model, StandardCharsets.UTF_8); + assertTrue(src.contains("list_invalid_properties.empty?"), "valid? must delegate to list_invalid_properties"); + Assert.assertFalse(src.contains("nillable:"), "JSON::Field annotation noise must be gone"); + } + + @Test + public void testHeaderParamsAndParamsEncoder() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File conn = files.stream().filter(f -> f.getName().equals("connection.cr")).findFirst().orElseThrow(() -> new AssertionError("connection.cr")); + String c = FileUtils.readFileToString(conn, StandardCharsets.UTF_8); + assertTrue(c.contains("header :"), "request must accept a header argument"); + assertTrue(c.contains("params_encoder: config.params_encoder"), "request must pass the params encoder"); + File pet = files.stream().filter(f -> f.getPath().replace(File.separatorChar,'/').endsWith("/api/pet.cr")).findFirst().orElseThrow(() -> new AssertionError("pet.cr")); + String p = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + assertTrue(p.contains("header: {") && p.contains("api_key"), "deletePet must wire its api_key header param"); + } + + @Test + public void testUnifiedValidatesMacro() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CrystalClientCodegen codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put("moduleName", "Petstore"); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + assertTrue(files.stream().anyMatch(f -> f.getName().equals("validation.cr")), + "validation.cr (shared validates macro) must be generated"); + Assert.assertFalse(files.stream().anyMatch(f -> f.getName().equals("enum_validation.cr")), + "old enum_validation.cr must be gone"); + File order = files.stream().filter(f -> f.getPath().replace(File.separatorChar,'/').endsWith("/models/order.cr")) + .findFirst().orElseThrow(() -> new AssertionError("order.cr missing")); + String src = FileUtils.readFileToString(order, StandardCharsets.UTF_8); + assertTrue(src.contains("include Petstore::Validation"), "enum model must include the Validation macro module"); + assertTrue(src.contains("validates("), "validated model must use the validates macro"); + Assert.assertFalse(src.contains("EnumAttributeValidator"), "old validator class must be gone"); + Assert.assertFalse(src.contains("enum_attribute("), "old enum_attribute macro must be gone"); + // list_invalid_properties must delegate to per-property _validation_error helpers + assertTrue(src.contains("_validation_error(@"), "validated model must call _validation_error in list_invalid_properties"); + } + + @Test + public void testApiNamespaceEmptyNestsDirectly() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/petstore.yaml"); + CrystalClientCodegen codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + codegen.additionalProperties().put("apiNamespace", ""); // nest api classes directly under moduleName + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + File pet = files.stream() + .filter(f -> f.getName().equals("pet.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")) + .findFirst().orElseThrow(() -> new AssertionError("api/pet.cr missing")); + String src = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + assertTrue(src.contains("class Pet"), "api class present"); + Assert.assertFalse(src.contains("module Api"), "with apiNamespace=\"\" there must be no Api sub-namespace"); + } + + @Test + public void testInheritanceAndReservedModelName() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec( + "src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + // allOf inheritance: child must not re-declare inherited properties and must call super. + File cat = files.stream().filter(f -> f.getName().equals("cat.cr")).findFirst() + .orElseThrow(() -> new AssertionError("cat.cr missing")); + String catSrc = FileUtils.readFileToString(cat, StandardCharsets.UTF_8); + assertTrue(catSrc.contains("class Cat < Animal"), "Cat must inherit Animal"); + assertTrue(catSrc.contains("property declawed"), "Cat keeps its own property"); + Assert.assertFalse(catSrc.contains("property class_name"), + "Cat must NOT re-declare the inherited class_name property"); + assertTrue(catSrc.contains("super("), "Cat constructor must call super for inherited props"); + + // discriminated base type emits use_json_discriminator/use_yaml_discriminator dispatching + // to the mapped subtypes. + File animal = files.stream().filter(f -> f.getName().equals("animal.cr")).findFirst() + .orElseThrow(() -> new AssertionError("animal.cr missing")); + String animalSrc = FileUtils.readFileToString(animal, StandardCharsets.UTF_8); + assertTrue(animalSrc.contains("use_json_discriminator \"className\""), + "Animal must dispatch on its discriminator for JSON"); + assertTrue(animalSrc.contains("use_yaml_discriminator \"className\""), + "Animal must dispatch on its discriminator for YAML"); + assertTrue(animalSrc.contains("=> Cat") && animalSrc.contains("=> Dog"), + "discriminator mapping must reference the mapped subtypes"); + + // api return/param types referencing a same-named model must be module-qualified, else + // inside `Api::Pet` the bare `Pet` resolves to the resource class, not the model. + File petApi = files.stream().filter(f -> f.getName().equals("pet.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")).findFirst() + .orElseThrow(() -> new AssertionError("api/pet.cr missing")); + String petApiSrc = FileUtils.readFileToString(petApi, StandardCharsets.UTF_8); + assertTrue(petApiSrc.contains("Array(OpenAPIClient::Pet)"), + "api types referencing a same-named model must be module-qualified (OpenAPIClient::Pet)"); + Assert.assertFalse(petApiSrc.contains("Response(Array(Pet))"), + "must not reference the bare model name (would resolve to the Api::Pet resource class)"); + + // a model named like a generated infrastructure class is renamed (Client -> ModelClient) + assertTrue(files.stream().anyMatch(f -> f.getName().equals("model_client.cr")), + "a 'Client' schema must be renamed to ModelClient to avoid clashing with the facade"); + Assert.assertFalse( + files.stream().anyMatch(f -> f.getPath().replace(File.separatorChar, '/').endsWith("/models/client.cr")), + "there must be no models/client.cr clashing with the generated Client facade"); + } + + @Test + public void testAdditionalPropertiesPreserved() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec( + "src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + // a model that allows additionalProperties captures+round-trips unknown keys via Unmapped + File nc = files.stream().filter(f -> f.getName().equals("nullable_class.cr")).findFirst() + .orElseThrow(() -> new AssertionError("nullable_class.cr missing")); + assertTrue(FileUtils.readFileToString(nc, StandardCharsets.UTF_8) + .contains("include JSON::Serializable::Unmapped"), + "a model allowing additionalProperties must include JSON::Serializable::Unmapped"); + // a plain model without additionalProperties must NOT include it + File tag = files.stream().filter(f -> f.getName().equals("tag.cr")).findFirst() + .orElseThrow(() -> new AssertionError("tag.cr missing")); + Assert.assertFalse(FileUtils.readFileToString(tag, StandardCharsets.UTF_8) + .contains("JSON::Serializable::Unmapped"), + "a model without additionalProperties must not include Unmapped"); + } + + @Test + public void testScalarDefaultValues() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/scalar-defaults.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File w = files.stream().filter(f -> f.getName().equals("widget.cr")).findFirst() + .orElseThrow(() -> new AssertionError("widget.cr missing")); + String src = FileUtils.readFileToString(w, StandardCharsets.UTF_8); + assertTrue(src.contains("property size : Int32? = 10"), "integer default applied"); + assertTrue(src.contains("property label : String? = \"hi\""), "string default applied"); + assertTrue(src.contains("property active : Bool? = true"), "boolean default applied"); + // date/time defaults are intentionally NOT emitted (rendering not guaranteed valid Crystal) + assertTrue(src.contains("property created : Time?") && !src.contains("property created : Time? ="), + "date-time default must be skipped"); + } + + @Test + public void testCookieParams() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/cookie-params.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File api = files.stream().filter(f -> f.getName().endsWith(".cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")).findFirst() + .orElseThrow(() -> new AssertionError("api file missing")); + String src = FileUtils.readFileToString(api, StandardCharsets.UTF_8); + // cookie params must appear in the signature and be sent via a combined Cookie header + assertTrue(src.contains("session : String? = nil") && src.contains("tracking : String? = nil"), + "cookie params must be declared in the signature"); + assertTrue(src.contains("\"Cookie\" =>") && src.contains("join(\"; \")"), + "cookie params must be sent as a combined Cookie header"); + } + + @Test + public void testOneOfDiscriminatorDispatch() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/oneof-discriminator.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + File pet = files.stream().filter(f -> f.getName().equals("pet.cr")).findFirst() + .orElseThrow(() -> new AssertionError("pet.cr missing")); + String src = FileUtils.readFileToString(pet, StandardCharsets.UTF_8); + // the discriminator must be read from the raw JSON field name (petType, not pet_type) + assertTrue(src.contains("disc_h[\"petType\"]"), "discriminator must use the JSON field name"); + assertTrue(src.contains("when \"cat\" then return new(Cat.from_json") && + src.contains("when \"dog\" then return new(Dog.from_json"), + "discriminator must dispatch to the mapped member types"); + } + + @Test + public void testNamedEnumAliasAndAnyOfUnion() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/qdrant.json"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + // named enum -> plain alias to its underlying primitive (consistent with inline enums) + File scalarType = files.stream().filter(f -> f.getName().equals("scalar_type.cr")).findFirst() + .orElseThrow(() -> new AssertionError("scalar_type.cr missing")); + String enumSrc = FileUtils.readFileToString(scalarType, StandardCharsets.UTF_8); + assertTrue(enumSrc.contains("alias ScalarType = String"), + "named enum must be an alias to its underlying type"); + Assert.assertFalse(enumSrc.contains("build_from_hash"), "legacy enum class machinery must be gone"); + + // anyOf -> a wrapper union that deserialises by trying each member + File orderValue = files.stream().filter(f -> f.getName().equals("order_value.cr")).findFirst() + .orElseThrow(() -> new AssertionError("order_value.cr missing")); + String anyOfSrc = FileUtils.readFileToString(orderValue, StandardCharsets.UTF_8); + assertTrue(anyOfSrc.contains("class OrderValue"), "anyOf model is a wrapper class"); + assertTrue(anyOfSrc.contains("Float64") && anyOfSrc.contains("Int64"), "anyOf members present"); + assertTrue(anyOfSrc.contains("def self.from_json"), "anyOf wrapper deserialises by trying each member"); + Assert.assertFalse(anyOfSrc.contains("const_get"), "broken const_get machinery must be gone"); + + // oneOf -> wrapper with its own try-each from_json. It must NOT `include JSON::Serializable` + // (that would generate a field-based new(pull) that can't build a union -> runtime crash). + File oneOf = files.stream().filter(f -> f.getName().equals("optimizers_status.cr")).findFirst() + .orElseThrow(() -> new AssertionError("optimizers_status.cr missing")); + String oneOfSrc = FileUtils.readFileToString(oneOf, StandardCharsets.UTF_8); + assertTrue(oneOfSrc.contains("def self.openapi_one_of"), "oneOf wrapper lists its members"); + assertTrue(oneOfSrc.contains("def self.from_json") && oneOfSrc.contains("def self.new(pull"), + "oneOf wrapper must define its own JSON deserialisation"); + Assert.assertFalse(oneOfSrc.contains("include JSON::Serializable"), + "oneOf wrapper must not include JSON::Serializable (generated new(pull) can't build a union)"); + } + + @Test + public void testHyphenatedApiKeySchemeQuotesSymbol() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/auth-hyphen.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + File config = files.stream().filter(f -> f.getName().equals("configuration.cr")).findFirst() + .orElseThrow(() -> new AssertionError("configuration.cr missing")); + String src = FileUtils.readFileToString(config, StandardCharsets.UTF_8); + // A scheme/param name with a hyphen must be a quoted symbol, else Crystal parses + // `:api-key` as `:api - key` and fails to compile. + assertTrue(src.contains("api_key_with_prefix(:\"api-key\")"), + "hyphenated api key scheme must use a quoted symbol"); + Assert.assertFalse(src.contains("api_key_with_prefix(:api-key)"), + "must not emit a bare symbol containing a hyphen (won't compile)"); + } + + @Test + public void testQueryArrayCollectionFormat() throws Exception { + final File output = Files.createTempDirectory("test").toFile(); + output.deleteOnExit(); + final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/crystal/collection-format.yaml"); + CodegenConfig codegen = new CrystalClientCodegen(); + codegen.setOutputDir(output.getAbsolutePath()); + List files = new DefaultGenerator().opts( + new ClientOptInput().openAPI(openAPI).config(codegen)).generate(); + + File api = files.stream().filter(f -> f.getName().equals("search.cr") && + f.getPath().replace(File.separatorChar, '/').contains("/api/")).findFirst() + .orElseThrow(() -> new AssertionError("api/search.cr missing")); + String src = FileUtils.readFileToString(api, StandardCharsets.UTF_8); + // non-multi array query params are joined with their separator; multi stays an array. + assertTrue(src.contains("\"csv_ids\" => csv_ids.try(&.map(&.to_s).join(\",\"))"), + "csv array param must be comma-joined"); + assertTrue(src.contains("\"ssv_ids\" => ssv_ids.try(&.map(&.to_s).join(\" \"))"), + "ssv array param must be space-joined"); + assertTrue(src.contains("\"pipe_ids\" => pipe_ids.try(&.map(&.to_s).join(\"|\"))"), + "pipe array param must be pipe-joined"); + assertTrue(src.contains("\"multi_ids\" => multi_ids,") || src.contains("\"multi_ids\" => multi_ids "), + "multi array param must stay an array (no join)"); } } diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/auth-hyphen.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/auth-hyphen.yaml new file mode 100644 index 000000000000..c85ebf469d2d --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/auth-hyphen.yaml @@ -0,0 +1,28 @@ +openapi: 3.0.1 +info: + title: Auth Hyphen Test + version: 1.0.0 +servers: + - url: https://example.com +paths: + /ping: + get: + tags: [health] + operationId: ping + security: + - api-key: [] + responses: + "200": + description: ok + content: + application/json: + schema: + type: string +components: + securitySchemes: + # Deliberately hyphenated scheme/param name: must produce a quoted Crystal symbol + # (:"api-key"), not a bare one (:api-key) which fails to compile. + api-key: + type: apiKey + name: api-key + in: header diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/collection-format.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/collection-format.yaml new file mode 100644 index 000000000000..dd8d0b5313b3 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/collection-format.yaml @@ -0,0 +1,45 @@ +openapi: 3.0.1 +info: + title: Collection Format Test + version: 1.0.0 +paths: + /search: + get: + tags: [search] + operationId: search + parameters: + - name: csv_ids + in: query + style: form + explode: false # -> csv: csv_ids=a,b,c + schema: + type: array + items: { type: string } + - name: ssv_ids + in: query + style: spaceDelimited + explode: false # -> ssv: ssv_ids=a%20b%20c + schema: + type: array + items: { type: string } + - name: pipe_ids + in: query + style: pipeDelimited + explode: false # -> pipes: pipe_ids=a|b|c + schema: + type: array + items: { type: string } + - name: multi_ids + in: query + style: form + explode: true # -> multi: multi_ids=a&multi_ids=b (left as array) + schema: + type: array + items: { type: string } + responses: + "200": + description: ok + content: + application/json: + schema: + type: string diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/cookie-params.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/cookie-params.yaml new file mode 100644 index 000000000000..17a2d72113ce --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/cookie-params.yaml @@ -0,0 +1,11 @@ +openapi: 3.0.1 +info: {title: Cookie Test, version: 1.0.0} +paths: + /thing: + get: + operationId: getThing + tags: [things] + parameters: + - {name: session, in: cookie, schema: {type: string}} + - {name: tracking, in: cookie, schema: {type: string}} + responses: {"200": {description: ok, content: {application/json: {schema: {type: string}}}}} diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/namespacing.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/namespacing.yaml new file mode 100644 index 000000000000..22c5ed56d60e --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/namespacing.yaml @@ -0,0 +1,11 @@ +openapi: 3.0.0 +info: { title: ns, version: 1.0.0 } +paths: + /store/orders: + get: { operationId: store_orders_list, responses: { '200': { description: ok } } } + /store/orders/{id}: + get: { operationId: store_orders_get, parameters: [ { name: id, in: path, required: true, schema: { type: integer } } ], responses: { '200': { description: ok } } } + /store/refresh: + post: { operationId: store_refresh, responses: { '200': { description: ok } } } + /ping: + get: { operationId: ping, responses: { '200': { description: ok } } } diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/oneof-discriminator.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/oneof-discriminator.yaml new file mode 100644 index 000000000000..bf3ac4f40c9c --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/oneof-discriminator.yaml @@ -0,0 +1,14 @@ +openapi: 3.0.1 +info: {title: Disc, version: 1.0.0} +paths: {/x: {get: {operationId: getX, tags: [x], responses: {"200": {description: ok}}}}} +components: + schemas: + Cat: {type: object, properties: {petType: {type: string}, name: {type: string}}} + Dog: {type: object, properties: {petType: {type: string}, name: {type: string}}} + Pet: + oneOf: + - $ref: '#/components/schemas/Cat' + - $ref: '#/components/schemas/Dog' + discriminator: + propertyName: petType + mapping: {cat: '#/components/schemas/Cat', dog: '#/components/schemas/Dog'} diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/scalar-defaults.yaml b/modules/openapi-generator/src/test/resources/3_0/crystal/scalar-defaults.yaml new file mode 100644 index 000000000000..8eb50fc49977 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/scalar-defaults.yaml @@ -0,0 +1,13 @@ +openapi: 3.0.1 +info: {title: Def, version: 1.0.0} +paths: {/x: {get: {operationId: getX, tags: [x], responses: {"200": {description: ok}}}}} +components: + schemas: + Widget: + type: object + properties: + size: {type: integer, default: 10} + label: {type: string, default: "hi"} + active: {type: boolean, default: true} + ratio: {type: number, default: 1.5} + created: {type: string, format: date-time, default: "2020-01-01T00:00:00Z"} diff --git a/samples/client/petstore/crystal/.gitignore b/samples/client/petstore/crystal/.gitignore index 1a7e69fd1cdb..15f3b69381a3 100644 --- a/samples/client/petstore/crystal/.gitignore +++ b/samples/client/petstore/crystal/.gitignore @@ -12,3 +12,6 @@ /shard.lock /tmp/ + +# Spectator run artifact +.spectator-failures diff --git a/samples/client/petstore/crystal/.openapi-generator-ignore b/samples/client/petstore/crystal/.openapi-generator-ignore index 82e4e79984b4..6b5697cce839 100644 --- a/samples/client/petstore/crystal/.openapi-generator-ignore +++ b/samples/client/petstore/crystal/.openapi-generator-ignore @@ -21,5 +21,7 @@ #docs/*.md # Then explicitly reverse the ignore rule for a single file: #!docs/README.md -# -# + +# Hand-maintained live-server integration specs (the generated spec/api/* +# stubs are structural-only and must not hit the network). +spec/integration/** diff --git a/samples/client/petstore/crystal/.openapi-generator/FILES b/samples/client/petstore/crystal/.openapi-generator/FILES index 27f0b76ec782..2fba3109b505 100644 --- a/samples/client/petstore/crystal/.openapi-generator/FILES +++ b/samples/client/petstore/crystal/.openapi-generator/FILES @@ -4,19 +4,68 @@ git_push.sh shard.yml spec/spec_helper.cr src/petstore.cr -src/petstore/api/fake_api.cr -src/petstore/api/pet_api.cr -src/petstore/api/store_api.cr -src/petstore/api/user_api.cr -src/petstore/api_client.cr +src/petstore/api/another_fake.cr +src/petstore/api/fake.cr +src/petstore/api/fake_classname_test.cr +src/petstore/api/foo.cr +src/petstore/api/pet.cr +src/petstore/api/store.cr +src/petstore/api/store/order.cr +src/petstore/api/user.cr src/petstore/api_error.cr +src/petstore/client.cr src/petstore/configuration.cr -src/petstore/models/another_property_name_mapping.cr +src/petstore/connection.cr +src/petstore/models/additional_properties_class.cr +src/petstore/models/all_of_with_single_ref.cr +src/petstore/models/animal.cr src/petstore/models/api_response.cr +src/petstore/models/array_of_array_of_number_only.cr +src/petstore/models/array_of_number_only.cr +src/petstore/models/array_test.cr +src/petstore/models/capitalization.cr +src/petstore/models/cat.cr src/petstore/models/category.cr +src/petstore/models/child_with_nullable.cr +src/petstore/models/class_model.cr +src/petstore/models/deprecated_object.cr +src/petstore/models/dog.cr +src/petstore/models/enum_arrays.cr +src/petstore/models/enum_class.cr +src/petstore/models/enum_test.cr +src/petstore/models/fake_big_decimal_map200_response.cr +src/petstore/models/file.cr +src/petstore/models/file_schema_test_class.cr +src/petstore/models/foo.cr +src/petstore/models/foo_get_default_response.cr src/petstore/models/format_test.cr +src/petstore/models/has_only_read_only.cr +src/petstore/models/health_check_result.cr +src/petstore/models/list.cr +src/petstore/models/map_test.cr +src/petstore/models/mixed_properties_and_additional_properties_class.cr +src/petstore/models/model200_response.cr +src/petstore/models/model_client.cr +src/petstore/models/model_return.cr +src/petstore/models/name.cr +src/petstore/models/nullable_class.cr +src/petstore/models/number_only.cr +src/petstore/models/object_with_deprecated_fields.cr src/petstore/models/order.cr +src/petstore/models/outer_composite.cr +src/petstore/models/outer_enum.cr +src/petstore/models/outer_enum_default_value.cr +src/petstore/models/outer_enum_integer.cr +src/petstore/models/outer_enum_integer_default_value.cr +src/petstore/models/outer_object_with_enum_property.cr +src/petstore/models/parent_with_nullable.cr src/petstore/models/pet.cr +src/petstore/models/read_only_first.cr +src/petstore/models/single_ref_type.cr +src/petstore/models/special_model_name.cr src/petstore/models/tag.cr +src/petstore/models/test_inline_freeform_additional_properties_request.cr src/petstore/models/user.cr -src/petstore/recursive_hash.cr +src/petstore/response.cr +src/petstore/serializable.cr +src/petstore/validation.cr diff --git a/samples/client/petstore/crystal/.travis.yml b/samples/client/petstore/crystal/.travis.yml deleted file mode 100644 index 2072dbebc539..000000000000 --- a/samples/client/petstore/crystal/.travis.yml +++ /dev/null @@ -1,16 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.19.0-SNAPSHOT -# - -language: crystal - -script: - - crystal spec -# uncomment below to check the code format -# - crystal tool format --check diff --git a/samples/client/petstore/crystal/README.md b/samples/client/petstore/crystal/README.md index 9b900c3e4772..627f5d4e9517 100644 --- a/samples/client/petstore/crystal/README.md +++ b/samples/client/petstore/crystal/README.md @@ -2,7 +2,7 @@ The Crystal module for the OpenAPI Petstore -This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: diff --git a/samples/client/petstore/crystal/bin/ameba b/samples/client/petstore/crystal/bin/ameba deleted file mode 100755 index e708bbed7199dc90ad7e84b721e54e9f99572845..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11539896 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

P`J&LmE6@UmwP_AKVew7&E}YNm11*!MXrIJ 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

m(NE75ukI0^ojK_ds&Up-eJ%`E7_76)(T|qP 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


`?!hqK6r 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 z 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

gL>aqtUQFhu2@Y7+osrt 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%0DKj#lgmKEM%gzVyu#gt;miYGAN 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 z%0D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%0A@3$~NIy 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 Q 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 j|6y~#TM;EvUBXe7lJMrV( zjo*JE>)RJ*w8jz2+dFga&&ANs=zKBnGn#uD%o%HV>SAuj%s**ek2OAbHd1Fw?_|z~ z`xP>GkoP8d*a$D|T{ZT)b7kzBAZi}yh|z3D@?pDB}j$@{Cx{U6a@8FPjKeHq{m zI{NqH8Yc&L2Yvgebsr$}6WmdMVMg}$N#b+#=ju0gH^`pk{%P5nKdt^@Pj7trVr97vbB% za~?F3KlsT$o^zL?7vWc>7lwFvqiz7Kr7h_45q_3?4=&@0kE82V!)`U&uN z`uNnD(D(3t;NwO73h-S%J`Nsw5&iZl&_6Ju-v<6ae0=H*=zI9sA;IiB7Oz<79T$aJoF-b z!?bj6QW4(<{#YMB2|V;7d@K0cBEA#+Odnqh9(obJ3;dWOz8CydA3p{>^dfv7{OBS+ z2Y#%N9}OOQ5x$|0^8`hFfUh&$$BzIHy$Ih5K3>GvgXd6L)P8eu@X(9!UEueG_asVx z65wC(@p}@ieR}vj_&19972xwe{tfWZi|9Ahr*p3r@onHA_3^KPhhBtl1;4w9?*#u7 zAHN$s^dfv0_!o=#Uhv=d@h^ghUWCtsf4+#%f&Z3|e;z#aB78$bI`?c5AK-g_!^b}h z9(obJ75qREUl0DPK7If^^dfv0_@|5b1o$ud_@}``&*E>gzo}>R}tR}{?E)QM*QCe9(oZz4}Mb-p9BArkKY6ydJ(?iuyk&H5g%}u z`ZGR$J$UFv_*U@UMSMN@U;FrO@X(9!UEpsm;uGMR?x1 zz+X|sC%}Kg$6o;+dJ#Sk{<0!|1$geiDe`|Ac<4p=hQ@U6(jvYM{MkPKQt;4=@U7t2 z6!D$lPxA3=z(X&>cY$AB#P@=Kua9319(oZz5B}mJJ_r72AAd1;=tcO3nd#g`MSL&{ z|KG=71Ri=3z7_n+BEBB{WFNm0JoF-b7x?8xd;;?Qk4Hv z@X(9!4YSg^yU6+TZQx&F-XYSrCE%eK;akBkF5)}Ea|WV_Uko045xxuj=|y}m_@{jQ z>ENLk;q%~6DdKbBAMx?0fQMd$Z? zcY&W@#3#Vt>Eq{vhhBuwgFn8AUje?$#~%+KdJ(?i@N}-Jh;IY`A3nYbJoF-bEBLuZ zd?)zpef(VT(2MY0;O7+az2GnR@pHgKFT&@+&o1I~;4ksuB77J4x*|RS{xlz72OfG6J`a9M5x)X_i;tfI9(obJ z;Yj@dBEAj0&ICmIKM6eaB77_O+9JLa{7fHT3m$qAz6<=ABEA>=R3ASEJoF-b9{lJc zJ_mlRj~@*ldJ(>1jyX@vT;X{3v)>f7%}JlxZ1*sX01GYV@}qT*YhJHBZ`y#Lbw!o9 z7UDizC9aSD>5{TIfA3m;1oxy9pSNpMiK}$Cd2ubl%`L{zv*l%UTwE)2VCPnglYdwx zt^wcWmq+$NmAEd_4GmS+nJ#SeAFIT*Q!md~iEBZpcUFnZ z)89T-C9a*g$Ew8T;pO2fajleZYn8Y@ca*AAKtrtV9=DpMwv4rsc9MdbhGBK^^c$PKl=ij)iyel(=re8t@OrEr!UNY+{XV> z@qDjRe9FeNp0wP?%a6(Ny;SjQZ9MBci)=jQzB$MD2NmCK<5{yh!N#vwJm2(x<9jyS zc-FO=ZTwdh&-XEk@3--+CC#?+@+-6-e}>|>+j!QSIFoPW_pgfQn|Mt@y5^dfM>KUSjCDH`wx+Im)gMPRu^)0$fpt6+wi5pSFrw*tg|V(@!WP5d zizAx2&tX!5bv_f8gufR?G_5AAC%G(R!sf!?^COzruQN&SV4AS$@b}z^rn42+Z^LTg zuP~zNM1{pK3~_Pzdv-+A@rEAnL_9O1>1ade!c5qo6z}zQeP#^1eZyd7yWL9MRaN5p zu-lhciEG6kex^!X3vsKf#I<8DR#k~>#a6afiHpI@`Bmb&u<47d#gXpRDsc_;AtzLc zYo`x+UzNBn_-v{Y7h{g_s48(?#LcV{mnZJfDsipEO{o%>r+nk9#I;bj`&Ws};~(r> zEe?CX=e5fE(!d(bV3oK&Xueb>u9bApRf%gsCkCp-H4yikDsk=5e6&hjo;vz@S)9Ko zn7wrw_MK(0Z&AOL;4ZESvQO5&btdaF#=e0&4xGMA>>KvZ*f-*_i^l$y*f;E*v2Vm5 zq06cTw(+va-3jKH_ew5|=0L`YLfTe1j{i#P!h@ zE~^sP0?mJ}5|_sge4;GQf5$@daAz#d9tFlT{&|AVWbnvcrw(@LE-#IXa*U@qFU|g= zz4s%u&_))O<>h1&gO5|H#5EB2{wi^;=-zv)#5IuLaaH2liJMa;u8+9JDseIFQA3ru zR_fs3Dsk=DzuGEsUC`XGN?e{gA6_LcMt*;JwXzL}A(z*x#PyNiAF9N)5VxyJTm$*- zs1nyg+>=$}TA}&NDsg%Ee5guXJNDs$YH`@VEmh)T=zFFt&bKQ$Z~stE`-SjbxVtmU zyF%P|&(H3|+0d`Ok#(7M{ma?kv)tR?Q*7@gbk$a%(S;4lLsN7%U?ZaaI@5zk-nhTU z?h*26`1c|({@1=S*(&yCa<`%O-cEzYg_&K@U)2}B(bdNuN_=qcURutX{N>!kG;MH0 z|5W(phi|gs1nTj4%97+az}dGrZ**Wc&D}|{;250`H0Rx7;oVaHJqc!SFMcL}H|lO> za~BoqInz3+p1q)Dd$GcO)sz3qnLpBxQ=ZIm1jEf)r|h*OIP1Y&O@0phw(zUvx9!4D zWB=38#gy}TWceKV>)j{qv861g96sN}M#|QB`>j&m9fOR~sox>(Ju~^pM&W-KwBHLG zrF=Fbh_I6!p_NUr6!_0fWLNOPxK8xK4Ced22uIJYh*w7t~zr%BFI;_>Wk;>Nh+`;hh8X_SWX8!#p}@bUPl_ z<3!aV^IL{D%7*>Via)(u4AM;+`A;DtZGp0Ip_yl}S0iSSpI?|Ti9_1RH>D3sB{o#%HBGPG}<`3_EwIg^> zuvj+6%+Y)Ked`q7AtYSoP@X!A`gvP6+I+T}yd?L=eM-+gebS~={pP3(?UyW(N2++| zW1c*nymuY=*X4cQTakBJJ9D}zJ(H}&*RY^%+zR;8-dWjEqi@LLC$vYWy9$^5ZX!&+ zo7xEXFCX2)9nX_&yXqqBLNAT4?;1PmPS5A?J2s}Ufy_T}mtUrfvDiw{luhiH4c6ZC zkry-9a2Dr<$NTNf#A7qfJ-_SieZ-rmHeW~m%Xc*P)TS>yXyd!5HuuDXrh4KvhBZE= z?5>B?es8a8 zJk+mp-jS<0Gve~tEd%8Ip3bsH$$C^&q&wK9EYP0Rvd z$G#YP&{A60-)}o%KO)j6XmhDp{W4@`@Mp zdWLZ4&jP2@K%Z8Hgc%9AB|2b@?FT0Yv)4YC8xWmbRU=HW1XT!q`(n{Bo z@Gt`&W^>QyoWzjcbo6;qygAo3$=v;He2D^bmXD#gLpQ>c@o~`2=UCs`)dbDClpi0+ zy)EJ2Z)too`q#)Oqb-}hmNv#4NtC5{pW2>&-G6!jcQVAyT9a&Zfi_Wdbz+{!)3~jw zcj}fq-0d9=QwQDsr=4-`olEi7R-C&!Q_Hvyf_G>7!}laaD;Sv=`f)$^??XfVy=<4} z2fNwpypH|QUF=C_pD}uNK6K6}Y$me5ferTrAXQPdw`Yt(nV%w2jK|2vyl!~H~l z{~-U@$YiCJ32U_2fg!!|$@@Fmd=qkE?RJ3mUY~bEFS$JPQ|LcK-Y#F>p&rUFf!1RE zsM{sXzG;kjl^^3#E|Z*mrXMM-YNPYdh?+- z9bGvkk^R|CZHs=79zRcgKZjoLl0Bw<<K!9*R5Q>YwX!@-t`#I z`%4ox{5d(?tXra=*&I6Y9CcAwA6#+=Hb-_^cI`y`e(l{?d>;EhUUKJu&HpQY>jA+r zpCR61bgoeT>f_MjzE$2XhEMDQwysJ28udN?gGbrEA{sMILBE%pzVuY`)?I97+(EqF zS<$!FLd64j+S6vIBF|-+k5Vq9H~r{Lig&J3=R@aw+R4(vjj2QE*AD@E2>KLzm2=x6MQuP1HshrcG?)r5P;j+xPDNl|v)RSI3 zIDR|h!C9>J5(X`>8%eVhq5HB=S9oGzSfC z=${1tli+m;`7J^B&qepoMfcCoeU2b|G& z?1ixb=ve`~!MKR^`l8L?tx)u)G@p|C91&z!y80~kU8X(@O6*+2e?G1o%c)V1hi3Z7H6foo|43(?KR==`mO-9p^TVd=-% z@2>j9=NYee=v1EtXzaQL{H>hHSuFcHad2aDB6U15)6+j8)6G8pb;)zkopWf57iO;T z>QsCO>#f_DY*mt z(>7iC8Fzo4Zl~=#2j~}eU`y1;t54Tl9d;+X3H!u-&6$m~b&Yq`2g$Fixjr$khP9jm z@|SNTf71BD^jjL|$j7J@4sClTwm8pMG6usB(>#d!3YUjjL)pz53VFq#tNWvl`kFZh zJ4@pL`MZAqq`o`A7tW!x>bo@;tpBm$*^;pmHo?8k@(l3<!=fa39T`?vO30s& zQ}O*J`8x7JHJ)*P+AZt_ucuFy53~xux#p^1p7uBV6nY^hd{ad7bH3|3jg7#|j;mjO zy6=^a-eJLU@(bkK3fE12Z-Iv2H}j4l_VN5dV`Jltol>U%$G&MSBzs@||%^T-xP%+~0E^Hg6F&?@WA$eT>Z$FZ1YkYJy>ReDa5^@Q_LM&zEViH$&5M-|+A9C8l%I8iy=cGN(N=rc+!pqUIVJWh zLOTg*rlE`bzWGY5!9Ckfp}PeSmsS@J7x8OIPdZhCaOYSl)h(O;K16 z{ArG%fZwF~njM-eBK&jMW&M@RC3}_YW$BiDd~BVOO9elwTrRHORCd`3(dqop_C+5< ze_a{P-Kp3K#+yUC7D7A8xyKpU&4q*|xmTKeUH`i=e!*MthxgVc)x*8E?A!$#jX&y- zZeR3s_F22JN6A}DUc1AuH)AB@A8{{)=_`?s@qH-QSCF6aeI!flcn@;|;oK?mnrr1{ z`{LYO^oad!J4_#3e1C2Dk+v^K7P6&!v&p?HRMMvsFMmjVs`_G6kF-UNsdc_|D&<_4 zI)w3?{2=*5+{v26=Sf{a8!pcOb~0v;Q4dj{N?r3-rfFkl{E@=9>0g%F6u)rLj9akN zX1t00=uUC(7Iv98but?%yZoegs?EcP<9P-5=T0X~I-vVP%(;E=N+%uIh1^SY02{oH zalwWpdL5sVxs7o^cXDZlF+paEbbz#O9@~tG=y$92x&9kUoHw5I9e(1iyszy!!pa<5 zEt%d4&hIZZCq`c~WZpWaPvE`pY~J=2X6#NM@H}$!&fE?L!xKZdA)ju_$vvW(m6X$r zOJ_ifKG$FK^815aoc)2w(#Rw(nbGf>HW$oNpI*bfYz|xN_Z4m&t$w5h`@iMOdNZc< zjCYNlL)D$HSN~@*evj85s*H@AdE=UX5#K=Lp8PI9tGo@Op)vSd?bPMNmo=00XZOa1Y4_I`*5 z$ivK~(;n$}jIH~ChVY#uI%m7|?ZG_J7!QqJ z+O*b`h1I($b#3&0%=5{9n)y4|_sa&*erwqCqPbh)zwXgK*U=ssnEMSCue&H+8R$bT z@4=AkS617wx~V}{@6P$Wm*^1ns5zAZ^-$ zYagH)4`ACgrq{eock04H*|C$*%B1yv$DeXXb^n%nxNRQ~z%G!-s;V zKiA)fu1en8E2nys{55|qx>~cijr_XFm$$t#dT&epwscmy8e*1Z79hXQWZ0+6e>UOC zWf>me>!1#qcMpB+t;o&Awc9kWI6C0hk>CF8`8D;ed0^|0NS|Mr?avj^motC7Yc}%7 zKlvs!zQ8YjvC%+>#CDRV>2^U7+&?CE_498@gVL40ssyx1J~ABM^IgE3}R-TIy;Q~U3+(!=$@QP zcVv2PT72Zlw-Ni|=9aNH_=v@POZcY!k0c)7*}Quoy;fhl`~I@Ka{B+VZ$tcxtpnLi zy}5~hJ;ZqICE2fC@PJ(&rFviO>WY5m&F&!mh{dVz_xl$oKlJ~l(EqUe+{?N% z#oSGUzqk>3IiIjI89bsk`c`D5c^S23)dOQ>+H#QH%a8H+GQKN*tJVmN&qKe84K7&= z^5@K})s4zA(!P1P6dB155VqI*1%Li-@gCIc*q5Zb7Z2jM;(U%@|KQx4hrPU2a)$HM zMwa<$W#!ZTMe@yA`!e~I$T^Oj@egFHx@l|b1N7EuXtO*${2OWFFPFTJpfwG~e;V7o z=^F`WI$czILRaun@a24d{?FXGIs%!i54}+3;%{ttBKwT{fB!`G7B9Z1xW=3@Ys|=B zV+W5_e!pU-pG1>m(Psepzev=@rCu#uX8d=GG|TuHe(s=n9s)* z7E|rc)k|$WI+@iR@DILJ`Oei(I2>bB<@HwHck|y!*nu2nUsYdPYY%O$e5G(4YvL%o z?Ao5Pc=bn>`kXSq&AeS%)o;T#7vG;Mo#S{bcWHiSy?2*p2`x`IJl(@T7($1P-o2Us z_old{)*S4+(V|BmsW~LADac-{kJejO_yRWtz3)no{`SiqhuC`Rvu|0=K$i8I>qqul z^KRtZze{s*w)`&5;#!LtPt&L0sXO-ZX^c-${+1Pe`q#oXHcNS!JNB{H+6%dhb!V+P z?_`~Mfc0kPEVIXvzs7+6J`RoHUA_71JO7A#Hn-3h*PHhZ-`vl=*W%>6nST88k+;-b z{*znw#A}{c|6H)+`b`$6vX=OUUR{;=hS>adj6q9$L-{w1=~(yIoamr@!?WZYrY_{0 zeYV&G^R88RcYc<4uuY#F`i8~&DYskf-`eZW&3vY89O3Dx+Mef6-V`L}rvLR@FL&Hv z%lP;D-YcA}%Kb^&kGntrkaw2)ljZeq#|7y3-1K62`|v-Aw|SP1bUGRrs9k$^Ztgm4 z?{UEwk>^_)7vOUZU?7sq z0N-~|V`A-t^Xa&uikc= zzx)ln-TOE2_MwS?g*UGqNCwVFh{ens$k{mk)QmN}src`3=T1 z^7%J1ZxW7Y>^M+w9dE>58$X-&?u}bixeA&F?YR)O>J=iJ3KKWRfi~-ZX3Q z%#B{h{Q8UZLlt@IFP>ZGY|@bSis-J}AO7a$4)%NxviDSWIz#`KZCn_hm1qxrJo;qz zJTmV8DYm$VIL-H&vaojM_L*w_S$mkbvR7(6|362YJt=0+He8~9=H!ONyqWo$OEf=@ zowWPVi|0Afv68)#=G`H5_71qVMz%4&|xkKl##8Wgs z%D2`a!n*R#ka%`ObfxPfC-N>$Y~&69^$y0orXATaFX4w`OEs63xDT88H0O`DF)v5H zPCsiBA&r{mV5sr9a4amJnmN}&jfM5Mq>oLNp1Y7g^u(ikI?S4Zd@X1_Tx1~=Q@$IH6v{s#p^`|-Zy=z8q$A=qEu znAEsoF8r*1EL@KYrUpYF=YQo}e*(PYzcjX>3;KHkc>J-N*m3E`nPFTFI^WnbY~K8_ z!8~Ei_X&JY2V^P)VD zu>5SW{M;F2L;uPWp%XoSDdun#?{P^j&9^YWQY8uw;J*XAzFetxU|**{3sW z*yB$+`MB{0bj92=a!h&{e-{MDruX6RRc*(nFP`~I$ED*3J0ASgZsUjf_34l0>e0;r zc{o3?oR^f%Zmh6ex3bifvhYTG#Hn>@9EyC7Ohi*Q8$i}ZEzV6?GOY&M@ z1oL6O(f3*UUu*2`w7Dzy=bS6Q4|DeH1ipVqdtMGMVQrnT=O`V2buO!Bp3+Vo>=_>1 zdjxqaJ~@tg2>zbVU)pt8&avS>D`Vr$?1dz z;XbV?vCtl@xiH+1#CKszOSWLo;p>ik<*oe!N7F~_NgbG0KjH3ZR$QLEUIi!le375- zWM2M9+W-6*cWVvH?pm{exxQFdb0k`iWo^~$ixjR$IPT-j%^k-20yysT+z_YyDeXrf zK7I(l3kD0<^4>)4uNWsgrL?R?qfN!aIDut;;vGx=-g$+>qRM_G+s zPLjWT0PZU-#KU|v-l@kfvo{eRa6z2%MR|^%yWNc?hWMr zMoV@V_isMOot@8dhv+Wu1uaZLep8Uk9&8!DqT64l@~vWRi}i%@w~=R_dMK={Ne2x< z`X;T%zd>K{d`$Dr<9F?$|0zpL`f%R~Jl1Ia=MCsNg^twfFH}sy2nRQdq z>nWqxsD0ZW584x;`YvpXWpmqOW)4AeIR`&me+zFUvIXi>`z@qHt}XZMp3?lq0|WYl zDeO^M%2}kkS?#QSnsq>M0X9MX^E31XDw{9?bE}^P!}qwJHB*{%ludg-dv-4kb$a-) zreh8a+foO*x`jN{Hk7uFbF}{?`lQkMpq@2LLp$+W=vN3+&)LuwV7ON_TX+pw+O}c# z)WFjLv|sM*X56+k(+T!$$II@6n>(>T(l^mb5cfgiI+5{VgsI$*!jJyG$X~Tpm9K$* z<7&#M@QW?K@_F?AZrWha?(;()cUvCGSG1eNBVmQz_!sb~bwkY)J!WOBeIIw&{I=V_ zl0_1lvUB25{2vCL73daoF5`6&8{hGB_^6BIJ@WFu^=3RuHfy~8^Y^33n zuod7!*+6Sd+oIn>OR`azY@TpBH+@bSy>`;R2YS4jFlnpBT_s-G@7={dNtJI~39slP zVGj`2i#)YvZFu0k_I$?!>BPhLJswm}!vnH8wv2~9(oV5FJZ*VcDIWSKXS({&Gdygx zJUAIkUf&S?5q4i7TJh6L`Nx*=(?Zy5zYJx3 zsKw1U^#|=_$j>z%ZPy-jr@$`Kxq4}U&g-?dUX*S)?O#0GdT}yQpY?nh4>8g{1})W# zWTJBq;&-a48~BKae07zWbo<>u4)s>#h8FQ)AL2{9JmK^$p@w7W_KwC;72&wiBL? z_VP3Bma-g9SU@|%*A4YY^-g}$gMj-*8u;FUo$WdO)sFlYZ20{#?I{^oh>w^jy19XU z(|6qTY9w=4H{zo$vM1*nxsA0lDQPqKj17s2Y5e5K?&)5W)wXUp(^*osAK9{PR@su2 zEg6>W_3!)b9Xm+bULkD7zCqKwZP{8W%m3%5HulWGkKDC>b1z9X!LyLA=7(!(N_dF9vlLGjf=e{xdq_>aqns zj<9n0fz{7XtK4zQ9S_U>y|QxWpno4>(og3%>Moz7T)9an*?iOT;OpmwqRknTuKp!P zU%uhdc09F0s|KE&es=La8QQ*nwiC8zd)U66eS2cR!Hyql1zIn4K4CpFi=ul9Z# zy~KuHBmTw)O*h&)!Dv%%c;oDgboukPjH)xytifNCFT`(=@r8F!Y%W;6?ny1l)O|nn z?+P!5a|t~wmxMk6-|7!~*4Xdo!?OwHGz)|mp0{%eD1YM91yCWW-H5~bUp)R;tI^0SAUqHsjml~MZ z+zDUI`;6E7Dx#~tQh8lXUQroZ!m)(PFcECefaQ09HU#$f_FB7z22csAkA{pAP?xCW9U8w&d6uY#O44yBO5ATOEiDGzgaGd|o3&450)g|MFFIiY{|WRO)~qkP-w_qTxIE_O2p z>RD_tj|bTXhoOCZM;O8m5uKG5vpv*((OChVJB1-kw!UYL#XRi%T`>5>w+Ta7;bEuy z6N~d`+ilq5iOpMS13IHrc-)31CpOnGM%u2hCllFK+`sl9|7WaxInXBC2W>3+b!lnD_3EV>k45AGjbiUn0_l)Fp}94 zVF)vF-EA>joR1#L{)560R@h?YH87zl*M1weeL_*L58AN)2}QYXOJuLJay4z8Hd$C2 zFh=L>8NPMEn=2QNeMS4?Hs+Rc{*3awxeMuN>=1NwNr=y{53(;zLuc1BuZ@nbz&898 zpV7=?EJ+Og?$%iLnOkDno!f$;fg57k9sR*j{xZg@Yxv0@NbNhXkov&9XK!uE{_d8R z>@(XELpyJ1$qw|h26$OZHorz=+92H+3$p(XAM&p+x4JM@x{#beUw*b}S0j*((S^Aa zn$;Gf_JQ9MNNyv8rgKTJGJK16roY4d_SPL_@1QI@y7z8xvURd^G28BZ{a6HF(z~9x zt+QLLe!!RXBY!`66K3?I)?#k4`XLPZ@hf2nGx{;zVmhpTfRTPYEDT{rKjvD@TB{$z zkk#AGap5g;&FNCwXgrK(gw?j&=5rr=LH|$a@oc z8F_CW-`q>vn+H}lB0<}`jkr$aeU6p)*;d}S@8{XK8-wf_lJ|{!%liw2tNwgB4?be$ zoH{FPhc{R`!;j>At;$ZAk@H%Mxz@^A81?_c5N71uZ80e;XE2iUr-dQR$a%BHTw&!b z40(NA7{UrySow92FSf&!4O=_D*bc9?VX5)Oc6bBhY}*bc=i9BEFOr;-$T=Cx`AqT( z^}1Bf0eqZHoG<4$kgw|MRA0`Q1=&}pBInCW<*a`Es0woaFDK`?E&HWTpF=qxp|TSe z>a)eHarzv}`5nR#7V5Lbtakbw%5aJ>goXNSF&8_14(no^FofwmtntsLdvacF!)iS_ zud!iqPtKQCmh=8bpKHxaH+7f-vq0fIH&X;qSmGd7*d-{A4`x_+Zi%R9( zj+`GOyj-8(@8q0X9P0B*r_YOxK5r*a?&i1pY%$B7K7&D@e<}=Np*~y8Qm4<0jjr|y zLs+QK7PG|ZGZ=I}BMf1MC02gjwMBhiYQxsn7WH|#4NKJ)^?7AwId9hdRuVZULpgt) zyh44hE$Op6(dRD{r#|~%tle0MoQref6Eb<`mqy#M&YShwFZ{yx*>PLm#ZHGq*?vyt zB`nloi#grta46d~!Vnhfu*IC>bU2jT$Alp))M1NR=yW)gf2%Nr6&6~VP4{GbiVdsv zWP7>|i+i$NT%pgd^ZM-egVL9bv3)jcQ-7iSd-d59g;m&t6QQy`DZhNq>F3?X$aw&ntAFFz?xm=(AVSXWvDiy_i0GJ$-hP zKKuA$pWOu?exKciKXnUZGT$d}C9EBs=2WKqIqYj17z?JsX*?o-ydHmi403e-wVOL@ z0e7v3lWiVuaid7csQ+rF*XtrnxiCU(1HZSabQLqfI)| z{vR-o2hkU<0o+H+%9N)~oodVE#&~_;E^zcTCj{mROV8)^3*t2euPJy1^N8hDI%dYX zg#C;#jn&=U!{thoBu$bu*o7b2G@|SJ&^&(740syv_=Zlia8gDv! znuqRVY`2exO@O`9!@4o-yO32~A)Jd=870$R>h@Bwo!(q@7xezXn4vf(ZZTtoRp^cM z*Np?ed`PK2x0CLnhxc?0A`{(BB)R0N`==}|lOJ+fYI#$=x^mPc7~96jWoq89eS2dw zBaAMLMHkM@^pfU-q>*XyIC3#3VgX7AZkW$G2a zk|AH)Ebo3>%|k0$#z!AvGod5<`diD#C8lnm6+gq|pYh7*=RbvX&R(=Y=kQ2=ArBiX z@X!kG&@vtx2&=I?$R1v5`8XXua&zL@{G4P~`tW7TN2K4_leF?czh_xlFHoA4#Wl0G^E zPCO1%-qXo@Ix-{uNj7gMvjBeIPgwoILDQo)?^i~Wrj9gqVVd{YG}1xQ5x-4@v0l~G zLzvS6@mEj1Nyn5{xFdw4J;?rk$-}D6P4KYw@NuYzm2Gfz^OR?lhfRQ;R0SKu=i5Ws z9S@yg_p5?!WzFhk58DeiRt4J*-CaJGd9+vWE0)dYw*~BPJ*>vK&sV{Af!*$5+rZ|k zU>m@0^{~BQAFYCI1^ayu+X?ok7OT2<{oC}0&@Shu#IxE1qq}8tQsZVE zMIIfk*JQjrwGI*06Z0OO9#-q=cUmkye3YlxH~gZZcSiay^xWvnLBTJAw#M`h{w_$& zO#ku_>!YH_F3oLVrPrsTqjg_nKMZ>vkuo4O7p`Bbp2xT@1+lL_OXw)vXk+O z+J)$7u2y5eI6A0#^0N;P*Q@m=;Kq-0ipXmcpbX#Tqmp5_u( zPoGq8%hQK1b_eA%?T~b$JCGTYbkBOaSAt^wTV!O8aLz&&I! zvVF4Y;%hkh7sr{?GJoP8;kw?ipLYGP%G1i6@oIQ?GP#v>8fU5AoW8Y#Iqjj)R@X3B zsy&3#sY#^EYfg0xd$EXj{>#5ZqX(W6=<=T|Kfh7_e+n*XXTOB_yV~XxBcI=aQ9r~U ze#86ciOY>ac4Ly+1akWEcS3(fzKL{2VZDU4VcRzmCVH*djwHW#5cd&&*YN+2_`b6) zgvXrqFGa5noA@o!L(kpXyyPIgor0Yy-_IrfL|^4yNc=VS`)qiuyDfGJw9k^PM0*8! z{wK8kwboNqmeG`DbTX?t|B~WuU*pC)3qKWM5xRPJ8F zE>IXgjn;m|>;5XY8I`u z^+Dq*m9dR{enptSFG=ll9pMd!dgUX%+T%k?UsgW(5g6(>E#FG7d<`lad8ps{a+UJ6 zK=aTlG*v#gFX=*+?+wcL#sX7^->~JAeO38XubqVXKKz-asr!o8hDn>FY+trzo9NY@ z{GOl+ACj+Z&EdrR?X{gWyIHF#uW$7^&WArre7^?YuZ42G)bcG|65qY>{VBpa*-vn@ z?Y0b1;&1T%u6FWYTF+ntj*gSqdVzyFOufPP(I6uclzY^X-P-B;Q4_HJS$y2 zbWbN;ul09gR({YqtK3%gLFb+dbfoL<=j8TVaA(=F{hqs*bI-%)^T>m;&n+ukK)-w> zVV$h?yvL?7ZHxTAQXxOlk&SO4O`vmysw=)1@au;DAZc>0?Shp*I}xmGxNN2HqOU#V zZ58ONEN%|t`|w_OPwbLP^3Xc(C#$5_zJ%}FcG^zK#sZO6DEWoE(Xv^D9*oUlq?)K#a4YiM-iw5#>c1rST zg`egs{J477K8V9?9-oq|wt8(3+LHZ!&@PvKJG2|B&~|eg7m8k{vh2G^KekGG$^Kp| ztJ5T_0c15m8$$LsTUoib*hblJB&^)6 z;3?8Q@|2!l3RY_mpR;mm6i-jX)6>Mm(`xaA?44~=A6H<^;QH7+ytHy|#eJ9aB%W2j z>&Pnwz1#S`g58SvP(H++O+KmzzyFFcuH90hoN5E_ce+Db^;y#25A*jM{C3Tr zyS56yPJWVw`tbp1{D{BL@Oyy&zwhzu+w=x#e!dD#^+%G0+OqySy}up2Yb$wVA^8m8 zL;ad?Clf!9R`U4Bo8)np)z>b`?{Vb!cxamoo5Qvp^?526VV%q;yRj?-kelnStK3f7 z$#-Fud|g@A5U;ZXMvs*LcJkjI*1=Yrzq2j9(vb_VueO0ua?S+PH z%YCBZ>9^^V;H%-U@O2vTt{+<}z8;3Jhr>Q(9W*6pjiFpUs1MM&7U|Wcq^(pBedHUj zlCSF5-Bm4Fyia*w^FpsA(9_2UpdO7)wQd($8{tb*> z`zqw?;$y^TE5z$AO1Ed~RqnIS^}|blXj|WF<>PcUKn~4>^&+1WEdL)6Z`MCkAFH(L zBaT!#ymhCiMH^n7znTK$Y{iM#wgmd*`e>D>1%AI+fnQgiR^qR&5FdjF{e+XhcQ+VE z_XqG$_lqj+3VN4Rp{Kt3KHHw|R5`XFqb*@uc=_95dsZIu1rwC(MZ$VV1x?E=AF_`> z(EsCr$w{8eZk*JRrqsd{WS4SHqVs!ydOUA4|VmY&~)wR z2#e_>FWEWAmwc6+YwM&_d-xvd%KMl;czI_PUYyNd3EiupufF9Pe);%5>;WA<>kQVw z93Q?t%|ml+6`F30bgQj{Q&qP6DBFEuJ6VE6DfX#W#KQWwxyIm1Z+(Hi!M# zHJ&^^YB9$Na~GJq!hZa6OIP+m>Dr+CS;Fe^Yn_~BqvQ+r(WV^_N*@sZ3GqNZx^`^Z zDeD`LBZErzLGM4RF13%XK;NUiY({UO|6%AoL%*c?7mcg)jH|znyei33>n}g3l85Ft zXW4wjyX?IDfI4VJ{8QF?!ryE8ueEsbuQi+XRcO2UO3_t+o#e0d{eddBI|i+rtI$%L zb9%i6jPCf;_e0zdoZCblZ3^ptysaZ=qf|#@R7b28wpqS=NmF;X=f{#(_Io%uf4<;5 zqP-s4>qFXq{#Mv#G=E)ZX{m2ie{h0d-{9qoz64(N?aQm3GA^xBMqmHCz@1qEr+G); zo_!8Xi{+(-zDc^Le)>oJ{kYE)Wt1#_R)MEJ@;a_UUdl&vhLUp&Y1i>{?fC36+MUGR zYiaxQXnAPYRiW+10Wr~rU+G6X*h)GaV{Uu@Ds(iD_BqSvNvgAM>a3eKha7H#C+V^4 z)5YfvgaxC6rVFgxG-soB^-EvpNuL1Qru5X|c#Ab{7G9p4Qn}4K9i0fT?{oBR`My_1 zzn=P9Wo732B-7VH|G%ryFW7QAnXR{NUj9LY&F>?c=lovSugQOMc4U}jLtO^afBNVI z=ZF1#TgmsH3i&FH_-ZHqjtcS86ZiWS{C(Z>_&e@l*7y$jo4H#vH-ao?Q|1-e;>#_+ zzX6xKl{&jMY=_eoPo1efe8gh53v&yYTf%G(1*SG#X`Ro{{1uaO7;OCIa_UGCWm=|GOSjqu(}9r$Ba ztzC_;kgvs5rUU=Hpmo95VZ9U`r8{|ZhzBrR)uCeG=ETqrq0=KvNDxkh_@7fuj21-py$gphrjV2%3WS>UC_V1 z0)1C+Dvw)3&Bvg5BXw{i?HGEE(5pv|2U>X_PQ3bA`q*)Wx>56bCk9Pf8~5Kzdjn~2 zpuMw(IJqqCRO0h?o_>-fGmgJr!k@Y;@y;N>Zgmmik#(r0yC{hG5K8@#;hs^lGG96tIjc-=JQ`CAIF#0<9+~N!kV??5rG-+UPqqjh`A%Mmw5B8 z3Yb0Q<;wZ|kLwLc{o&OMZmyE|Iynq{lhE@hKle&>Q$ z9Y%LXjj`t~;m6VV6*O{$>pr4J-ZWJmy7bEPG-&8;2i>{Rc(m@pE#6n;?w1L8^UB>T z6NS|m!}g?fm+VOHonnQz1o$=sgg?vW&Kq3C}3{-v4c z+2j3t_I|&ROl0qjPtDwsoSNChT~8bPr-ISFe!PE@vdkU*%QAPyFU;JTssmS- zG4Fl!gW+x$-BYrGdrdZ^pxw{k{tGgCr*SLtQah6E)j1{Ivu?)gb%~)%r626~*8L?p zzI*L=p@}<0+5fHkKoWo1bJib`mEpO+LLReu=NsEDpQSL@-Su=5@5Y61ruzA6&#Uq| zPx;I!=DW^*7iN?1j0*X3N7i0tn_jtWW#D1GQ0MTVX58ZR3`u#7` zmfz{PuhNaEa1X72hf_Ql%EiO`Qgknahh_;Z{$Os6BO>4~A;+{LJOJS4*e^IXr~X?)k?6vueGLw{csCRLZA zZpI52;Nv|7E-@)+>Q|ctlNTllon%PoQN`0Qm^6fGuiGyahJ0iLmFCyF2QsC)9%4Q#v#zxyH$FKC++6y*rKstx~7Ht=MxOxKckjC^1HCU?GJ|0vUJwI%7E%0J)91{>F7`JDmpX1@Tu zzk~lv%h;U0l`?L@j;m~|RW|IpU$(;gRJJLUZHg`1A6io%ZAP0t8Ccp zlCqJe7kPcqD_gBswli$mwy12_byGI%wkunWD;xG#@0*C%=Iz2-zrCHhVNWuAn^*Zvx4JSz@=5Z(YI0d7 z$Jk^FWuZR`-;e=kbhho?>62}~nj85cWgb9BBzo z<#{ttW90UX%}>7OUHnhK6yAT(lE~5^i{IGLJ$#EU_lez{pAB!Pz}s|q!~c^_r+*lF zoc1f5D|zcoZi%0UEz5(=3meBS>l_KT$($p>{?s&*j`HbF*lybMPUtYEx!I?&lk^4V zDD>t6d0>Bs&Dv3`wxD}OV;g0kbpNpIfbLs7Xz5_b;qjL{>UED~s`yrsc!rnk-MaT{ zM0mzbWxxk1y(84?m-6&~=1mrOJTZt}EZ&{&o;NP+PsDqk{v-$Qt2gO=v7-OxmqYxi ztlX!Y)t#vFU1KwYpW%!je*C!p3p2auL${(&C4L*ei1FKKOCzN_&hOxR zk^R5tX#&08^=c%*E7vcLD<%=Av`XZ#& z{BOy9x6&i(+x7Vc_A2VTj=LvKT^teC$ElJ%;U;VYeKqwl*AKgsFzTb3Fk^G#b=c85 zWFGeMvIWLhFuH2*(oM3)vRD7_y#>+l-PcN8($=y&=HS2658Q@r(woY=u>ZWZZSMNy z-Dc{NI!p0WJyYMCQu@{Le;r}^N%r{isb$nHf6;}%R=;V<*{k0t?04n*g)aKER~{AX zw|Mt!rTSe{R=?k~-<9fDvIupTGWlg2U0HXHUyjb4FPgM}Gv?r1_y6gec4pqc^>x?y zv*^$-q(e#7P4NzUUx(<=!gstX_=RdSx?k1Z0oaJ1HO`cuQa9L$t(E<1#K!heS9(98 z@rYnZ??^Rn2ngfvouLn@yG(h%TJM5Z&>_!<^!dattMB+EZ-CYDPG38IkiI8VW;f2( z_a}%)FK6k0**4~;%v@VR7zu4}yDicenbgeNP=U=e`)rn(?jd*~bVoa{#he z;5YWEZR-E!gR=dyVTX#Y@jOH3j{AJI!=hQc0Lxi6VP1#`G6{2r^ z`kQs{c@EhdJ{Je`a`ZX*#ff=4C|ijgj!Qq{8~)rMq|G>ly3$)p#-5L4Z`Id0--4Zc zXZI@|dQ(a7SSWACCl~wUlOG=#_9x;)JY4ztS31_AE1l?vctBs8?fXH^;XV4k{V3jt zuKR~ou5aOEs6PzY>)(!?K1jWYw!+LD4t3Xz9d&hg2JsGGwR~2up5~2JUvC;1|DA%& zRPWpM&TNWtLyB<)`5>Y5X7tN`va$Xs(N!nH9M_CDZ@QrWS`vpmF7~+Syt$M2zp&$7VtX=eON(1rg4evjrcms@^>yceV-_uutN^l-9_PI+Sidi>?_NQfGUhAwR>|7{-bE zUv#ARC3oKYdJRT?$-AV3_$9)s&UQenM0fo(wk>=XS=SvC-SukjFn4!gZ?$dV5a{ZT z%T{cF{6ym`!YjTaXP1so-wglav6H*UOY$pgE7D2XvbQ`wFYnXn&#>o1HQ2ry-OY-x z;e4rmt?rwC223M;u6WXzVVAz?Z=KyTH0-$D*k944pEfjQC(Fm|^r7^}8_92|KpU0K zItbdk#@P7)+N8+?yIYdyouy;=&Sdb2>eKb_J@mn%t8r&1b)z`-4We(_ehfchxaz&w z_m%sjHPqi^&H+k)dUYl(@t*YI8_jt*Gp9NXe>u*XYxpYhiH+?dza7}8?j-MCC6{O9 z6Qe)IM#`^NKXV&x{Rrx}Bwuu=KwSnc+{dt)x3bX_>8oG&ig!AH9r1pgWF%eCJ-^XB z18wf14Q8#y*x#Q~E@A4`#*`OrY=87wx~DeN3BC`!+Nk7d?qde`1L?D;t7cw-aHFf- zt-4EXm+yNl{Th${D_iz-XszDo)%U+;n>GHBp7?(JMNSXszc#?zNOaHnh(^B%kMs+> zYIU|rGE;e$xb)ao&Eu;7u4+H2vpn`oZCr1l>fO_0RA!woR3A;a^A~!EKY}=?_lo-* zGDlZTKl*9PuDUbhJmSLk{N8k@WW@JpR6p3^E$D~74~CZd68RQ&#|D@5+59enj%41; zx7MCa{LJ8zdd@q_7Ax&aXu1Ade#;1GmF9bV`bzS3wr7>wJ5JiO#0P22{o;J%7i2zQ zd6x{8->M)uMzVa2`cr;kS>BhHf8uENP*%g+*F#>-IW@5FvGmQ_3g40ZknOQ$d`o9F zUX>1O-l>?^{PZF#H}y5^lFKun=X)n(8p>_jqRz{y@7G(oNcC^Q*U|tC%>*r-vv1Mk=(_xp*(xucRW3e`=nZot!zQo z`G<#P^FKhA4|7lYlMAvr;`BC$$t$HXKEJusntP`6tK}D;)~s=!k*)fr_|(Bq>it~K zi#F&kf6`AjZRHT=x-Ky1FIV)0Hdt->F@7hS{(V|FFAPTWVN1YZ8_Zm$eAhbJhW&!G zTEW-Ar+6}U9elvPh*Lb8I@eUgx~wo-r}5_?ADqV=WO8Cg_a>fbbYWt%`07jzdt}?c zhG&RnkIcRVcsF&oGB$*l)lonmW{!CqGNZpom%_PL@r*Ay3my{qlG^ZoF=w3O#-;Q4;! zs{F+JZQ`B3uMgUG$N!p3eTnb7&xQN6gyp?QgEw+q92@!{;hh}s3VG|X^V6c2CtiI` z=fT{)h^&^ap}tb%2Rq~Ak;Pezz0VrlkeV{s6KB3PzBIZERd$ZwIMF(kJa2Smxr?$a z_RA7WFQzPWe7;VJ4Q=)Ly4BV%>)MUrHl&s|>rL9_x_9-yTMssGu&+1o=#J7G2^-?I zS`)yo)DHHrHd0s^^Zd1O)?XVp*pmw5o?F;r-mUpt-b>J3pxWEA#Fg(>%6E!azF=5- z3gwecHFg!5{#%($Ymg~ze<-(Uc($TciOVycqz5nL!#HDW>w_*2z%{A!31bFR9 zT@b}N9ofn`e)>yu219A(n-#7I>- zi`vPhA#baw2lW?ftB+gy1D8_&Oq9C(#{edFo`p)}!!LBRkzawz-r2t=PPxoMyy^o_NiZ(~^+4t&~gtea~E5PTKJ- zzQ5r3Spq*ZJbn_f^atVR2r!XNq>npBG&Y|Z*7w3;S=klI<%f)Ia>-J=eRQ+6+sOsl z{1xcxP@I6qNk zz7V?Vb6TyxVcHPyy)5>1V@@awr?*OX3h_1jXigxEI}v`=4g;qrbI_C8Qa$+*`;-Pp z+qPZDdpRdy|M4sFdon$?K8}K}_9Dw}7<;s4Y;z;$iQcQST0QS!@BTIVPFeX*8D`#R zGi?#QpCtJbW^`n&#Z2<*fHk=Tgdwaj$?8aIZ1JATDd-6LvJ;-V=(`g5SeO0t%N+^o zd^Y*2{G%lwjqCWohr7v)+(yKPzUua#jc6I_|6Zt9Jz$0V%d4_qXNLM!8_KO<_a~R= z?g(oy*Vy*McVR@xlNmEX%jCBw7}^ER$kxRzP1-Q+1l_za6X5TiD&DCd+2*fU`47aY zpFPYyKr0-(?UTL$-t}#0zZMMrw@>>u?rg+wTV?I&(a7d%N9(ng?2gxbTEo*PLF;l? z*R}92-`Cb(L3UK_Ont|*rF7-ju6F63Z87O4THP>wy%-GL;qx_6ntn9c<&Lib_c$KwqJiPVu7E1rJ%)0*bGcU;Q#}6KK_0dH?(^DI^`K{KzcE-;ilx+33 z!q5TC1>KK7aPjc$u8Z*p9_Ov24}|X{1&qfhQXb*+__*i3_OhYv+MgRc@D9u1Q}?4A z&gOD9jD1hz3->P=Dr|=K<^@A@KOMd=S9mrY_Y@v)$s)&N)Sqz|KXXTu@sZ9O+!_S; z%C|Ru0$7dV>seP-Tk!dw${n9O)(;!XcSCk8cq zhIXyz*Ma}Bmb4uUhH`5c3_ZKn*zb*nr!8*}Qg85P=G~qSc{6uG$#((shUKXfesBLO zZyZw(vcr0JEEt&>I%q8CF%Ah9U-uGrE;%{V$=fQ<_We71a^<^=wtQs8@gB@z4QGct zk-=WFC9aG5yjt=lU+JBAlic+Gs(piFj#t^>L33WMw3kQ0`gF{`z{!d18s5=Jpu6%p zgjaZs@U5B$Y#*7{-(j&)>3aA#V^x)FJ9AjNyXWy>=r6B$ZS}rTZ?8kAG-swUVj*t* zyKAYFIDOu=3x@Wj4o+)+%)N8gGs=#Q?nAd9XKcMa)bCGdFRSILW~A12qd8{d+si&{ z3=?7CyC;rpc`xQgm1`E~5o5u4`ACJQ7wCPmCe67zxo`*nPy@2j+D(r2{MzI2gCF0A zH?{T&`|6do^K_mvm#j^%XnNJ$f2#B~b?u7^yZ6bOzi;f5E%eu>3){ju*+#_;?2|Qr zpC>LA#tongrfqKHj=JHMN&0O-(Sjwn&uvT?+5pwPqPw(GLUIpmMZ(jlZ7RJLW_hZLW z=KCn~W?SZgabcPJ$EBxJX4fYh9;yV)=F2V()9eN-z8@FgOW?a3zPl^%O*-keWYY$%hoIGlUph@?5ii`A@9LO# zVEXJFcjM<)$ILq%@;YNtlWDbJ~lJtK%0FmkQ$|9lxto$A5fKaQ8Qm`RlfC5cBW~zg&)WLYw0Wy0)bjCnuG<4$7iSJFP#_EYF&s$mi_5f=~RB6{7W^oEPqe%43qT2Z-u zj_hj%8;oAsw}B37maKK&O!oK7ybYGK=aPIG;g{Xr5FC(RN1pUMyk~Q6IG&mx%c^ae zvHSj^oj1Pn_Jf*bw{?d?&u)w5u5I~L5%zJ$M!J8SyR}W40n#u&(0SUz{FZFZpGGuk zp553;bSD3J3|kY=?&?lvcQwVbjri=^cOn0r@{HSx?$wC?_H)Cr&fHj5V^Hli&CRjz zJ~rX2@a?B_I-8qAJ0p#Fte1Tvjq?u*b4f>8^_HmV9|!Pn45WwH4}|utKe^^UYqJPb#hRnFmwn4^!uBsq?ke`51h{YIWXi>wL6V=Ob*Lk9m_i zA3>dyCaQDNM0Gxzbd*(fo>JYuiBA)?r?m%_w5MP2o=ZLLiTw@Z_mXYm!1T{K$8XwG z%E~M5$##O*p4ND>U2Cy>!u<`VJqfG!L|9>uy=y<^$u?dp+jmH|4sN08m zbE{h2CT-nr^Xm3NTelCtN!>n3-I6A%Thc^zyNz^|Rqf{bx7u#z9#qn94t%qA(>pdD zIN46O^6K|w%NkQOXH)CRcCN*4@nkEk+6`gR`%}|B+4h&pwnt;^`;hHQWV;gC-p_u! zYO<}hvc1of?Pe?6``<*in~^PPBH5BAlI?w@qpXr`rFQcZ-hZjoZl0k3*sI;Nj7!h< z+s)~=-7F4)UEK+b5N@n=`2Y>itb^`dv=8{Z_Uq zPqwFd?Pjwl+wB&6g(q8K)ouuj-izw@WSc6L?Wt-v>yd2|*(Q1_Zb=i>Eoq{{MZUGjw-)&x z&%WYn@?C7@+vLf2u9ffcZzA8h$d@#cd`T0@w~2I=SLd@eZ>cfPD#kdPQ)Bu)3i><9tr-bRufvMBEUY$-VtOfJm^Z1@5!5MZqBCnScB_~2m2!2eI)yT?g&l==UsX$EE>NPr|< z1{la}#Qc4872ucToZ|= z+o%D@3tkh%Tg+>i2^d-K2mp|q;eNNS>dg`g?R!=?k z)XS$DAoeDZ8e)I#(sTbQhj{V4+@6X0|mLeZB@!gz5n@3qYv?PD9iS1-R?0Vj9 zfEVZUPHT66Jfw-`?uQ@L*XAkp7qMqeDZ9qDsXai|U(UO?@@_eDm9uTM$yrvusc84z zmlUas@1x!n>N%{d_3Z|H0RFz^57K^yd;|XX!l~NCM{@W04gF&Cu$}b$bMEjRU@;)ETE(b=tg7Z9VE&ZtoJ@KHTbCjr&*B zb1ZJh;ji`M(8KM%JeYED>-3MMpdZ2Y3H9N_tzc0fkJ~Vw>Hf@>sgbG(~qZ6i8_O&vYGku-J zOm_4~2J>x_vm*YpP+icJIg2UzCAk?4Ox7GiziG*(rf5a{FnVGqFm)n74~y=KToyu z?S8@5mOTTbcuvNg=#-3ooAwO3-HLs)GmlEQF)rk4mz9f(Ta5yvfvx7E*t@@mo@3mc z1v2MJFCj+WPg8#l4%YO7gJTyL#zDU#IC#7W4mJn}KH7N>-2bKYQv;mOF;Dq4#NN%_ z|Gr^h>{f3tQnZAwFth}&pLxMYOU%7&0MXLj7FN!93Fmy{($f0{t1q6Gxo~NTxlxR? z&hq*3rxK4{gU z6VI;+r(o}v#c*#x2TuPg`VL&|FJaRQsNdz@guE zo+SGcy6-AS7Kxsy5sm>vkhK9^Yi-2iC=FUc#yl{+4m-YfyqxYme?2e(V43s-)Ca5 zr>RVLRz|R?RioA8_I+|kA$Sxoe_5)r8F;n<&odBS+;v=n{k`Fm-y~+jW@`6 zgYJ0y*ztP!-vAEI-ivKbZb%ak@AXwv9-E-Pwpe=OdyV-|)ZGA|7#iME2>xNfPpp1r z@L>C0PTItNcx~2~$A+rS&H1<~kBzYJlbaa}eHt3Ri?M)%pW3R55Ahwu@~+8 z88-yos9`7hLmLZH~D15|N*5!?* zW=yP6ZQhH7;xYXPg`)2Ao;8JllnRfS&jjdF>bxv9_i<$Q|V`DeyeQiGO z#>N)d_wBXdi|^X&_zzs>j*C_NW*$tAG>@MG6|r~lO}-9FzDC?n5dTnD|5*D1J1%6~ zK5UIXc3k4$_64*FKD==mIaN~;n^dUHW3>4iur$-=d|#W))rqfU^;-LU+N95%HtQ>5 zmlSIA8QMHWn=5H^Ubf9fX!&>kHs{eMede^ezan-HA6$>I|CBb5(PkxW&ds*DoUymr zHjS>FOPloRwYio#t@xNPr!)8p1IIV{M)Kqxb`Do*?%O!W*2Z};_-MDvp%c?4^YW0^ z`kDC|7yAt`a@W1p*_;vMnA?4xQAZuew;XoF7VLRFV;ST|1+o$K0Lips(eV%(QZDZ$msazj@dZ)+p))4Lt&E} z+g5$cZulDVxpAU1eGYMlA;(<{!{hh?M#neJNFkfbQ>t5G@Z;KI8^HO880$FsgD4x} zD;tMDsgAOC`f>etF1{D*9cL9@1>cR)+EfR&Mt|D(Y_%}o-9Vk?e5ZHEY`uVd8rNj& z?ZbCC+gI-u@TB%?sCUX&Pr1m-Rpx$`uJ?pEtk9v~|)LTKlU;FDZ zj*0^H>Z$irU%f`^U0R^t3i7`0_tkUY!-2M*^r6OU=!P+q(=ENy@Cs|7D&kPbIP-tt z`&PNb&V1R$spdkypv<>Zo%GlE*7$LzhST>-GBbspVNxi^#JP&PIS6=PdSQQgT z$$Yn{?Qve~bDhLoTSq>!pQsM+u2r2XTW7YD(76k>(@35Ds>8c#)rr_TtVL!2sLlrJ z#8roPlT~NFt;4>{cw1*Vb@r$Z?{wC)Wu>jddUlwt6Q<5Xs>3^ThGU(r!#Z1jb@erl zI$u>CyY_bXbjq`5I9T_Zck|1uy|dbxy`M;Vbtz|nbRG~HVD}EntLLQpPyd15&9?6< zY44T((;w5jx%S;K+B@BUdaK^e3nw=HssD7vpvCyp+&{&--{Y4FK3b7aeJ${c|3nAI z$4ULI(IxTb$dY)I@+|JVBDT(cuQ3kid(mU+f6oo~_*m`K(at{N{1oqIViCuX4+UEI z-X3gP+EiS+@?8p!hiSv}C4QfB!Ppm>)e>A1FD+wV4F84X)+V1G&WGu}KA8R#N;T-* zV83%OnZ1Y(d>Lx<^T_WWI%NksD)e;j4H3n{ZV7-YV{xu<7- zK)Kc(CPp$?>&8>!{}TVIy^ARykN(<oi`Ud%lwZ`Gh z8Dq5P92dKM$g}pQ&(Y^c-_oZki55)n>i|BEchZk|6I%e zTD;2#0lZfh!u!48>=5`~>Eca3AK||d7;^kP{qZ@__XdMc>hy;;jQ^{!e+SqcXEBQVPE>g6DM6VLk1n9Mo;7R6yxu3TA$Ch1GIk`ovid-lJrFOac*P`CgV`DdW- z;^+C>d^y*EL;kTFfL;4u^6LbMHUC$5qobTM{BtHpa5*_bg5<8-sP`KJP!>a+*0_ z79Zf0PCm*U*XeuCM(cmKdq#S)`TZF0&IZ>W{q6muCItozAP?2#)xdp)r3L1f{3X7e zHGaR6#nUY(T|Bjbr-~DSwH=)A(HH~ZPybmDk@MHuO+0^>=P#`}-LORadb}5H_-m;?Z|a7>Hn@3V~pnSNQaexc)2WRkxU~444E&0i}tpD#3jdY)VVyNP^cZp7T z4{tm*K74uXW#~n1mOA&kao|6)=QOJ-s^jz*EV*3~|<8&zU~qql$hsmrFI5(70s3WWD_Pp1jd> z{#*)2@;wy9A+$Bo`c{-T$3Lf>6;h5%a~{&nDg5QlsbDkn2%NvM^XQJLGWI#f9qPe4B-4@4&|rR}%sSDqq&Q3tfg{_14Weh(YL*Oznw z`Zu9`id);3#g#`RBvJpcaz_`Ev*%otQh_N#QF_T#lz z_~cGP5wqoP7$pLUcd9KvF@~m}SH~X#r{IBL*Z+<^j*?v}A-IHWph|h88 z+4a}Ao@>jycY?l6t`YirTzyZ?_T5)~^Q^tw?x}fwBMW04KtE0DXF|50 zqxQMr{TA?3kA9H(z4h~b+s{U|i;VSfDW2A|bcgOy$iXH2*P|bJy0?C|+kS3SyH?I> zeBZRsh3~m2&<}jnTR(T(e&(xPc-b4zefHVv;GFSDH;Jz5`L>6A!`4vD$$jvqcvA9h zC~~6_o|Mef^8}ttMU(tqL0e~$*XUx_PA;#00$$X!__mmgkjzp{gks|)i#|$!v}y8x zsxOUMbg3~J`-XZQtU)iw#yr?)>}VsyUE1}@t~^^`eVDy%`dIqB9TUHAroRpJqrUrs zD?{h}zDad#KabIm2h%?6Ea^|xPf;&`$W`!eWZHd{d-ZeH8vb=3_D2VN*a>epBbWSnwx`g?4rJGM zWBB(!TPcjYpW#k$%ED1k&E+Z4^+sqez{g?Xk=$_|4+UG)aFI%L?7_l*W8>5j+ zw7XvI!WV|Wc>cb9W`2t1-hNX270KRja%48KG3cM?<`KU#A04!Sd8;L!uMQntg)hL^ zOvDv%p1gZDxzf=;$IwH^(MKm1gcC2+h7%|2!ilSx*N2(cJ?O68=&oJJ`JL#J9nsP8 z?QPs&6cin3F41Y|we9Gd9q5^z(IxR+ZA;?2gG=LkBKoV~cLndpQZ|-4=&B&J(xz|q zw-mZSHwJ5IkN@aK#b6i3*Gx+jRpInh;RhLG@Wu1L*k}0{yU{s0@)cU^(GPmf>nB4K z=sA}rviD$QXo9{CP0-iH>I;7G`d(z8&D~7stDL^!haP>yPhQ_W=$?KIP0-IP&(RNh z&Fg2T`r+B+{GF254?NeSAM{*r{TN+EKmVhC&}&{lSEwJJ75mtYzRDR7eBGm;ir)J% zx{7|jr+(lqub+YHhiAjb@MBItZ3X&4&-FGQqpRqrMg73@UOz9{XRST(A?5ZXxs*?X z@Oy9ld_p>re!i%7;cu^>-`Z!{{^YsM?I%*8ANakuewNsNKBjijn_fTPvCrthL^nFo zk2j-xp`rIkHbi~?8Od>IXRCM*e&~jN6d$u4KGz)y%0DT;hKZH+%WU{nGTr18is1L? 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

2)b{G%I7znb<2?ThaplHl@FZSpGf&7HfQE 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

visPt87Hr3KzToP`1u}Zk5$z9M1lAv1^8M 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�lNd4 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

*v()bbIec=<9MZ?M_FrZO5qW)lf!%i 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

G~*#CeIU*|fDYav%(J~xB;FQG{l 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 z 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 !5V+i>a9fZ9yn1%dX>z!Yy^_{0y9#7Ez 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

}Sl%?@hwC*b@UJ-u_8M;> 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

Xf>KMKBX-E4Qd?7+{>qn06K5cWdpWo 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

}#*o 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 z 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%0A5>7w{=q#F-10IMG+JkF+mVkuc9W?j<9ZuqO+Ky zwxFyiif%Fs3p&f_s4b%=qv*DdAgm~gvZAA==zgn-`90@7_i0aV$$MRuoa;QF-rw)@ zy#JD><-N~;EY0gq`7@jLJ%7^oIsaR)@cb!jem?)+ z{B1v^SC(&2-@ox5e)bQ!{?ZTVmF4sEpZD;c;XjD=E6dMF>-QeM{%p?QIM%N$UzNUp zq8uSxU0hwljg-QeMF8q_H z(<{qQP2PL>`Qbl^{VU7o=O6FkNBo%Ue>fih%JTXAdky@zkVgnqBn=#}LMr`Hef;X9_&uM_v5HMuzN_}XDPexu@s4<$do$ndR~ z(Z3q&SH|)1dXFLRJ^X+f^sV8Q<@58W_wd8Q-xvE=md}6w=)KlftYScWMep}Nx2L?M z$bG&4TyO=~f9qfQ^^daV55;d@+>mkpyvO<%hd<#j^vd%2{fGDPE5nb7`O5P7{^LFT z>?^tcQx|Z)vV8vf(R=uX;opClUb#Q-J^YIBFT{Lh`KI#OTYLVzhi|-!>%T3|pR#;g z^4`M_m`T53cxCxf$$Jk!D*Rc0=KhuC^Vfggm-iq3k?<=b%jf5R@BRLJ!)Cqjzilbs zUF5#*zr(KP{x8^@|NfA&=8sPM_a5t?82;_>%JQ?5_a1)mHJm>uyt4fCPi4)|&p+N{{d2>QTTZVmpWnZD4?pr+?tewhSC$`}_V2y# zzqEPp{U4F?aYgQH|IIP~>34>f|NKo^^Yiuh9_#N4|L9}%%JTW~<30R1h2iQ(Uk`O5OO z>Gj)tzy2Sk>pfst@B2e#k^8#-?bmVr6PFgR*Tqm}&CmB=@3H>jEph!`rdO7qkoNCA z{Pgg%UZPi)?@aGsy@#)B<@^I)p;wl#+J*~2F4^(O@J$cW5BmqbGJ3rBtuB7yh79jL z{G^BIuYZ+ZS$(ncP{08W%*8gQrz$X^Sy^3@eKWQasO4u@t8m8%f)|+8#282@Kyhz z-!2|M$~Yc=eDMo6dGFz8gugtzvizj<{NX+P>JK=7z*6pCS-x_!^7u9Lz4zyz=hE}d zl9X5X^ZZk>(GKO`yM7d3Kb18+qJVVr+$>|a^FHhJ&iXM{g0ys~_L|LHw^d-!2-{gve_(|qsY7l!{= z-2av3=OphveA5=(|4-ulDa+^AAMfE?x1{gdh38*cKEMC+zP$eM8^-xt7+F5QfAJo^ zZY$2ebbHQMme0>W-owuczfY`RSw5eC@8P?`KNa_XW%=54{=J7ET*>uU$N5*5uS(u~ z_?qy~#{QM%Yt!?W_wZA<=KNB4zH$S$;+G-osBFL4RX-W%=s#`r|!($M*DF#`#y4 zA3l%^KrY$w$ncAIqW^sCUl~2#f3+6Ba6^Xo-rxV+u|@B%x9&>$#Ul6h^;gr*oWJ-k ze*Z{W^M{tFubuBb);~S`oVoPM^7;LP_wa4uC&YYZ`HnQ-d-$qEv$~`p?~}_xjII`Nksmwf@0-aQ^jOoUg3;iMAI?{n&#%AU!%q!={MYG~ z_@3~K@fB7|fW%+#n^B#VF_(5;bE6eBCZ|~ukhd+2Zy>frv zd-x$==lTCt%vY9Qoc8a1d4Bjqm&N?Z^7;HNw;sMH@|myGE6eBCU+>{N_T~C7kMplA zUzyhLJ^Z5Z_r&^@{&^2SwwCLkANyC9&(9y;!%q+Y zYFvM1`L<#WxFKWx-ouaBkMoa=`@gb$M_I4+-uvTk_pkJR{8gtsuE>2o{+7i2zdg$L z56YT9A#yBE)*oJ3KEM8Z4?i>frQwz3Ytwx1eg9wDy7&IKNO|8P_qG4-m_IAt zzbR{eW18dX{LPQ~P0w)s%9=kloj>of{+c?Tzm3By%jd_R_rCr`X}!;;{NH}oKRM1gBe`fg4gjbf& z_aE=!7lgm(B+gfsA3T~1KrY$w$iDyfZF}$k_LLtja$o!JzJ~j6`vw30ma^vO^Y1;@ zUwtk8J3pgWmY-QeMDg2J%mF4s6r}yw9S~&l*>p5RpKL7no@8PSjkMne0viywXy@y{Ke%jADUs--q^4`ObZsq(t z;`}Mg*Cy{h{EYA?hgX)*&)?p|w`+bpew5`a(|qsY7lwZ^9zV+RZOMBNKk)|c{~K}s zl;!iEA9)Wy^G5m$T6q4I<@49C-otl>-#X5pvV4C1@*ckWmz+QI8qQai&(B}p!?%TB z9*`pTGa&J^aL5>9>u?ud;ko+Q0YkOTw>;*FRPkAFaEbkuY6#nX%uPmSMf8N6{4PO!aSC(%}=ihty=6T$IbDV!= z`BBMx58n}fhw#es`TIxS`~C0S5xwt!=coKgk^8#;O}dxsfA2y5`_;;tU!DH^-g~Tn zb|?Mo_tPuOFU2Rt4IfH&JTm;W`{~aPuZ$k|ohijH+>qhDhwll0{GT{qSw260yoVq1 z0Ot?1md}qr@8PS%?|2`*vV4C1^d5d<_}juO%P%aSy|w4h zd-$q{xc*E3!1>DZL-0v)!-tX`j|^Y?F#WoB(<`IL^;=&2!VMYTd-xFx=>KmXy|Vmt zd{W%-0p5G~xqqgA;vRZs9FO^}>CgYYhabI={@9qWEMJ%I|K7vTe3btDdpTcOz8aqt zH+;bQy@y}eML#;$uZ-id{())z-otl2PCp>7pR#-lJ}GYafcf6TPw1vUtAp!T#_^ax z8J`q4e1P{Je$kWk)8g@?jN{>lrS*Fczw+<&3p+VqS$_Oyi{GTUA!EMx@S|U(zdi1M z%JLofq`2V&y!Y?}UZy`hp8u3lVg0Mp_4gir)vNRm#p7RDemp)YZuo%t-ouYsMt|o6 z+`lr8$NZ`Iq`2V&y!Y^3uhBmp&wt7|zAx`ReEl2rqvHH4%TGz?-+O=kxqQ3cuRm9& zd~1>Wdi|NdlJn2Hh=2blFlJhGqvqqgsT{=b>>8Aa~v{I87pH8EdV^Yin+ z_gMdc_qqR-%{+g~^6~AzHS6~tesuV6Ur4VkpU=Pd@DsyVg;(y+dk;S?{LL3|zH)!w zd-%5S_2HHK^WMXEh945=U%5Z;J^bSE561adme21WyoVpOir4RzIDg9WBZ^Cm8*<5x zM~1Ho|9I?Q89knV@_g^%8^eDoyt4d+;`hJ}8S}k|Ul9JR@XGS5%X+Q%9=`M6-2XbU z|24UASbt;k-op?3Kl<;*`B&EbeEz(LuM2-!%vbKudk;S;{H&O-ET11g-osB1e|OAR z?$3Mg&p%u2(EItPGUa27+}HEZ?3lmqM*RDu%9=khoqzAK{=xs@`QL3rdgcDS_wY^O zTf-~M&rkEc_x*1^viJVCOnH|g_qG2~tGWK0f5rd*oU-QUuV1{!`s>5*6JA++(@blyNpNCiO&wKCJ@0oPH zo=f@dey-o(|8oBq-OBwdYkq$J;XT$rJp57NmF4sEhxhQK!`~NPS$;^m{@%ln5C3so ze`Wc)_!nZnvV5NJy)-hkXKkq&KkdJx&Yr`w|=e>s?8UAare&znW_we=MAB_3R z{dw=+qVbvgf~ z@XGS}{~zEzeA{~Tv+m@4W%>O75AYto>GSln=g=$5*QE7(4?j2jrgzaR%hxCGJ^bqM zAI5xT`TYLLd-!RCx&DoR&-u#o9cjMz@YP?Szy7!M%JMDAdk^0o{_eT-%JPlLdki{2CKnFRU-{?X zyf5#6Bd-7Zas8?yYkq$JM72!B}I zf0gBH)A{ore&8mY|K9DKuPmQmf4qmU41Y>Ie<{mXrup8(*M@&J{{Jh=@@>g`55F}0 zKmNe=E6eAf-|`-QPzCq@Y}|j9HG<@3*Pc@Mu} z825icoIhpxyngTD2W~R;Loop zYkq$J<2}|tJpB2W#?Q}0mdA4-ZpbA&9vQwqj(;xx{{hPAVYBxhep2{9U(Wf;^7;AG zd-!SLAD=<5EdPnuPum}S^;SH8n_Wh)EZ5*6ON3Sejm*#s9-xYpx9lf%AbMoH9 zkKUT=@7kYUSw8>$W$)n^52xQQ<}1tR>*qcEpl#^?9bQ>JzyJ3hzApR*as8C#E7ShH zho2CB{{y*yW%+#lyoYZIUyAFmET7*$cn`lI{CRQymF4s6kN5E1+w%Oi#QK%xr=NH@yPHC!XI=8y)t_2Kfiu@55Fq>Z^A3fFD!l! z+>kNfd-%>>x&B*!!}-ecOM#1mWX<@3+) zdJjK%5Bh1h(<{s8pWpQ!zP+0M-{Fk55Hn>`em_xW%>N`yWYbO--mwln6E6K ze}30{_!0Zk?-|!mSw8>#uJ`csYw7>e&hw`%pMQSWd-$sT>F|5KLFKfmie{P@G^tK#`jSw8>#uJ`a`j-vllJpPsC^Uv>k z4?kxt{Y&xusVtv=e%E{W5#OYr6wiOk{dw=T^Pk@!{{8>Rnm;i;f9QDhSpT#*z9zhKf8Kle72z)ruPoo1=6mn^e?RT_ z|5E<$*ZSW7^b@)Ntyb{{(hd=%WdS&_i`s+P>$0V-*PjApG%jef$@8P?`cP*h; zmd~%h-oy8VKlMd=W%>O2>plE})42Y>Jx#AHpPxUxhp#+?{-kH#z6llh3BVJJzo(pI?8yhi{)k z|IxFYuPi?({rwH^;pd)5zfoL2W%*h7q`2Wj$&N>cuREW9+#=3bMvwP@lkiD#!v}cp z%kzIkzfRnL=PDP+!{^su@8P?e=^uNE^OZ3Vz9Ien4e#NHUq-)koIhpx{PlzP@D(#+ z{r}|rH96*wOwWJb!`IEEKXQ4TzsQ=OA3r)CJ$&2M^t-=KuPk4+UU6V?LoV6z$nf1Q z^q-37A7%77f1}g$ulMl7enH>x7UwI==huJl;aghipN#XTEZ>GtiW@#){ocb@-$=jZ zQqEV#@mT+ib&LNLH+k>j7u-Vs%s=Rr<;SMSkN5BuzovgX<}1rLrStDS{ER#3uX>a7 zmF4sK^B#WCT>6Swzp{Ksy8n9*-+3?nt*>ytvV6tod!Ik=;TJ8SKjBq+W%>E({_j2f ztiRE38joLP`N?Vh-uwHPZTIT^{%yOIFD`Ol@81Ugo%8qHgzw*!HGcxPzvlkqJ=Q-l z{O32OSMJYy58oC3rtr%0OYli?!-tX`kL>$DXz$+pKP2Vji`>`#+n?tC8~5V+mGS%I z@iRO<{=F}+|5^Ht!gocMZz_Hd+>p!bx8B!3xTg2|*H3vwk^5SI?PAXFJc9Q>Wz8Q_ zp1yXz_gMd!@aKeAme1dR^B#Uq`2E5w%jfrx-uwQaP5XU5<@fs8|NNN$>T%q^vgYUg zdyn;Zhi?n7ET8x9J^aY$c>YfguPmSU@4fH8ZJ*xP|CW^RDRQ6JKjzoQ|G&C6vgYGH zj2m*P_>cEK|AepiopZC80%G%!R-#X<3irm-wE0%Nq z+o$l~PgB-+vQZ*R{3^xygXr>yxi2KK&w-ediBwe;hjpjVb}Pp^O8 z!>`z%{;9|5mF4sIAH0X3Z~*-!kI^g3=jTuF;irVZ>TmSQ^7;D@-osBnkn=Zul3rOp zfB(UI__pvX9-&v3uS)kn@8P?{U-T%wvV8vjgZJ<)2XXy%3+R>Q$KaFVh7Tn>9vOc5 z!Sv6ES4NN5j{N-x@5}42r$20AtUt1R{{BO^_3#ac(!ci?dS&_i{Ri*iSB<8>?yvO9 z^7;D@-osaqq5oH`Us*nX|G|6s$w$y19qU(?&)@&|9=_=)`kNl+`jzGL_y4_zAAB@@ z&qMUe^7;G!-osD*CjEAC|5cXH-+%BPzNLZw=`PM!me1e+_a1)L3G~l9pTGa_J$&m)^uLV9zp{M({)6}Mt0&SobaTG4eE#~?d-$eP=r@Vy zPv!o+_wXxErT=Q2e`Wdn{eSQM^=J70z2ColHRbb)+}Hb;iDz;CkA}wAe~~qRVsV{t zLoOBn(ecPwe|H=|CI0@mGI~7!WbZwE^$$7!!|=-TON-wFH)PEB-uGW~K=1wUoAQB0 z?rZ-QXLJ7FH{}0+L0R+j>xcI~|M@iU#gyObXMR=8-*DrB{P%w&YkpIC_iOjBQ9`1Q=C6#`F#KN9=wW*fGUe7H_jUhY{x{A)eGi_0WzBEqQty|6|;LmC@t;<;TDG@O95{{{Q}u=TBLFR`Gk_hK%{% z!!Hj1+yBrj%QxVY;)W0K-osZd=KRC1q*uoASbx6%dJjM8dHOfMORp@S?|o(;@8O5PNPk-$y|VnUvR>=Ghp!EPaSgq)e187&9)42zmtTwhN0zU} zC&djPuznqn3_s^3uK$Cn^vdXQ{+Ffa5AWe;zCu6eczR{|eEz+MAN>#dvwupjET4b= z*?ahgW%Q@)ORp?Ht=I!@$R#@-8GcFlb@rrRlZzhvZ!3P`ChtA`)YmxwsDtU1aXfrG zaB-9O9)9@i^gFyruPk4SPt1D{Kj97fH>c1m%jfIoJ$(I}^sC0vE6eBW=RN$u74(lU zrB{~Ek00;h2fR(cU3g{rynpZEYyU-m_PLy|ET8x9J^b)@>1)1CuPmSU?>+p|_vpv9 z&@0QYE?>R1*WY{i#qZO<9bUOV?>&6?D*Ag5*qauP53=y|H|_D z_1k;+Ss!u!R@37AN0!fzKOK)Ae#(HI%Fm5GC($d*=j-P^{HRaSU%w8opR#=UH!o%( zm+W}tvi~&w)gN>IsL1m9{_8z_(?I%*|3|MZpYK23!w+7Ue$Tl7D9h*jkN5BupP`=^ z??05~^Zm#B^8Ul`8}C0xMV8O^AMfECkO^QZUlLpP-V^F(@O`F#Gohwt8q{=$J=zp{M(`oVkn2}9|3iTx|f z=lhTM@SPjeKl?t{uPmSEdk;Tm6Z(r*(JRa6`QF2~Z%Y5-74*vT`TTnizic!59pdX3 zW%+#my@zkxoPM`|bH1{CH9jeB_)xOrk>M8)qd)9jdS&!@|C;Z=-osaHN&oW;=#}O3 zv;6=OSh$e=R5Su@_GN>!?%v0-!t~FET6BR_wY-$qu(g5pR#sOY~>-Qdh>Q3}O{TKJIET7l!J$&cR^j9_0E6eBgdk^2XYwSPPuPmR}?>+qZQS|?M zoAZ_B^ZLDqZ{3~#GqHYU`MiGb;hU@JZ#t3lmF4sLy@#*ai+=J7dS&_i`0*aTJN%BZ ze`Wdn`0*ZoL=ESk5sx2b`TY3t9)7~t>35F(E6eBodk-#6(!;h_}e=ENKqTHYN9)4B$S@HcBW%)V9I&eeA`n`v5JB0Il z-sJj~<@5d5d-&Cd(y#szy|R41{@%kcIgI}BxczxVLn4fG!_r&pHG>-Qdh$g%YAoKLSTpV#j_{HpQvO|gDu`MiGb z;pZMlf7i>LuPmRxf9E~?oa5;)KZssgehMCZ#SOV+$0NfJZ=}EQ>-5U#@%)j${`4Mx zO!)O;{mSzB{Cf{S^90WS_c@%eET7N6_wY><=${-zxVJ}-=lxwF?wbB@`)?X z19HiZM=tx5=(mWk|EnU)=kxD9e0v6PX4{=J89Yob3b_OC3T_wPOYoU`bs|C#fZ<@5f%hhOnS z`uD$2uPmSU?>&6?IrJT4>6PX4{=J8vaUT7Y1@y}DdH>$Sw@jsf{$YA$`MiJc;TNAz zzj`vgvV7jZ_wb#~^luzRuPmSU?>+pK3uFHe(ksj7_y69*559gy$NrV&^ZvbuA3vS`jjK6dSw3HX@8Kt2O21@2y|R41{@%m4 zUq(MIuD`N;zW(0B&$xpA{v$bGSw8RId-(dR=+pi ztLZO1gY%W;^ZvbupE8U7%_HcQ<@5f%hadGb`fvY%URgfx-+TDl>*(+ApjVd9`}ZEc zxrP42N%YF{dH>$SPxuA>S%=dr%jf-j4_|o${rB&pSC-HF_a1)ajr5PqrB{~E`}ZDx z(l6=PJC$BpKJVXq_%S!rzjzqEvV7jZ_wa*f(~pbwE6eBodkJ)lq`MiJc;cI?FKQ;ERET8x9J^bq1=(mXVE6eBaA9xQx^LF~{W^(kd+pYMO(!?!$4e{`&0S-$+lSv(ISm+W}tvR@GA|BqaMOJw=HfA8TJ z|C#>X)997u^Zvbu?_5ZK;~08n`MiJc;io)8zuhu=W%>N~ue>kMe~kW%`^Nmp@-^x2 zPj*@lzxrAFo8srsmF3%t^NbsE$&N>cZ&^&getiE~89iRV2Be>#_rC1^L4UzNxc-*N z@}IbV*26DeM!(`bdS&@fT)#LTJ$&aI^p71E=P$DSC$69M@KgRtzibx0vV4C2^B#WM zoAlH6qgR%1!#ON&$R#@-8GiU%^n1qhpECNs{`|pv_yyrB>N#IoeopcG;D(I(-osB` z!TA>~p;wmA*Ux+Sxo^`?jGy0Bme1GEd-z!^=`S6}`O5P7`gspO<~{nKzCo`npP&D| zhadeu{nz9ADa+^YKY9pwHT|E?^b z&%gKZLs!#(v61IbSw5eC@8P>Yp#R0s=#}MHm+yUR?|-sSq0 z<@5f%hp%0S{)YGHmF4sPy@zl46#c1J&@0R5{d*6;XdwN<`1u!Q`MiJc;b(q^{_yzu zCuRA3|Mwogdp-JJUC;F^%jf5B@8OpWqF?eVy|R3s?>+pm&(WU|uV2dY`SIsH{D3de zpA@fO%JTXAc@N+DMf%NR|H|@t|K7tdT%Z1Hv43UxynpZE2W>#V>Rg^bW%;~+@8MT$ zME~j7zp{MZzxVL%8`EF%66Y(+=jVU#;b(6`|8TtjQkKup|K7t7+m!ye`1(^>K0p6^ z4__bt?=N!w%JTXAdk;Uog7Z&_KmSvf&*$HJ_(_}7e>?vCPgy>nfA8T(Y(c-vbzHx) ze7^sA4?k*4`p?Ddhq8Qr{qP=sks>pXYlIUtLMR=moA{Sw5eC@8PF>nf@PV z(<{s8^Y1$SFWQybM`gJ^d_{n?G9}s{3 zp)5ZDpADP}xKT(#? z`}ZDx%zpG+$M;{9<@58W_weKQr~h$$|4+F;?>+p)1L(iL7q6ePd|Po2aYHWI@yPIl z>gcbJuYZ-%GleEqzKZ#k5HkNEzR zvV6XN-ouX_P5<9cu3uR`KmT|SKjtv{m*V;<%MUBgA#TVeJ02N+Quv$V`YEHw`OnY) z-ov+q|H5*vUs*n{-+TC3C9Z$V1L&3I^ZPgN;Rhd1|5~hHSw64dd-&?`55@Z*W%>O6 z#e4XwF`Pd!{{FhMd`oc-aYHWI@yPHC!@qL__pgi|=YLH8_y6K}`HHcee|!A>3uXEI z^`rNgKly0-EiUAIW%+#n_a1(11O1Hn`y|^jH5sO z`&_@Wd|toz@S~2SKWHqyvV2~@_wXx^r=N8{y|R4%{;~Jv`QM>m{->B9Sw8Q7l=bjU z6X^dJe}14WpZD)Qe8Wlf=f|HPD9h*ldk;VKWcnfT_pg-Y^W)!p_#vmz4~(DRRF==r zU*5xy4F7(-e^r*xkALsW`wzdtr}+2B8Y0W*^Y1-;%c)%d4byo2l;!jJ_a1)g>Ga>3 zNUtoP&%gKZ)syM3+>BmXzNUB%!40`&$0Nfxg&!AQ89knV^1namJ^ZvYIsbQY{*>kO z*B{=)SNwqf_)qivE6ac4`74e`4?nqye)p@me`Wdn{V(s~=lqa<$OrVw^7;PjJ$(Dw z^o^_OmF4sO$9wqYQ|PaW=U-*{eE;ztzUw^tlK%WTvV6Y(=y>$-)6b_rBc6Yh<@5f% zhoAN%`bXpEmz4YS-orQln7%$9|H|_D@$Wr+Yxupt&hxJI`4%jf-j z55J(9>!1E}&R3St?;pH}@4SHi==lDHvV4C1@E(4^#q_^;1Ei*ZhTX{Ar)z^PjTj=jT7~F~9Ok zu78t@xqoH(eEqzKA9ywWb|=#-%jfIoJ^cJ@==ZvtURgdre!Pe8yq12!EA-0pUBxxP z4Y_2;Bg0RhMZbS|W%M}z)%c{i;RC$)@biC4|MBIq{>V5UKEHnGc=Yf+*U{hnZF*(- zeEz(LpZ9b6-Qw}9ET13$-k0aM($9P@=0}#V#V5rLA4oVKZpLKXJUS2`F#BcS`T0MTl(+B z^;ee9*WY{i5p(JP`84M%%jf5B@5}oSf6cYA|H$(B>)-j-!w>1;{B2^svV6Y&-osD) z1N|FkalW#A-oN+oqvz3|7uR1|K3{+D;RpSZ{*t(U%JTX8dtaXaC;AH(as8ts%jfIw zJ^YOO>0f_@URgdre|rx<{Q>&g@XGRezW4A8=hL6n#QDnd`TTniKj&fkhrda$ET7N6 z_wW<{O#k5D=#}O3`S-p&e$S5BWR&s`&e7%JO;t-ovkYn*Jw8 zbH1{C-oN+obDyOjdo{hXeE$Bq_wb#I>35w^uPmSU?>&6abM&8@Os_1T_wPOY(k1jq z#oxbCme2e59=`P@`oXtwzOsDYzxVL%FVnwTORp?HyLbUnN`734g zc>mE>{K5?x-h22J;TIju`O5P7-#_#oe%33T-*_{4_iOj>J$z62UE}_v+@JRzzI7$%zoPROS$h6{<@5RT9=>Ni z`X^)m%JP-?q`2Wj$&N>cANE=L{bK*h=&}D=d{W%-0p5G~@t>o=Z!_*+8OOup7jE+2 z!#9Wj-=p-(^0Ud;c<-QdhLHJi6qF0vB z&mZ2y_iV`dqhtTd@_GN>!&h%if6-B#uPmSU?>+pgP3RxHhhAAe-+#P^Z`qW7;yij~ z`F#KJ9=@r9eutQ^ET8W`-otlpM*rREoUbgO&!6}3t2d{AI)461Sw5dX@8LVPpkMD^ z&R3St-#_*qzIjXf-`q{FET8W`-oww^ivG&q(JRa6@1J;IUVkP1in>^TWcgv`d;i+| ze~0z(-H{)yp;wmAfBxk?d{6i{?xI(guf-?D4IfH&JTiRESGfL5PNi2ykLQp4{>6Lv z%5CTmjGzBgme1GUd-x^W(!cs!&R3St&mZ2yH-44=xbVvI`TBbg-!g*!{hx5YvV6Y( zdk?>8d-^*^(<{s8{d*5Tb0qySx6>=j=l37pm-oLT{RVUB8zal-_aENF&)SLphTG_s z<@5Uw@8MVMOg|vbpR#;Df8N87*p>eIZ*ab{d_I5P!!O&7e#=^Tme2e59)5T={TZ=;W%;~+@8OqzjlR2`^OfcE>yP*F)Api2 z>o@eu^7-}0d-%q^>4(RBW%>O2<2`(P4gHtn{42}n>*qau(?0Y!+{*PU%jfIoJ^Y-n z(+`d7r!1eZpZD;~Yv~8a^;4G5*Ux+S+56LP8tYe<&(D9}!;d(C{>Q)K{*~qP{=J89 ztfRj&{`^^4KJVXq_|}8ye;VKaQkKvA_a45Xp1!q$>sOW^jZcajK9uZuWdHw%)g0LS z{~xw*%10Hsum6A8>_a$z=t2DRdu9Coc>SAD{K8H1y~p|o9ZG-p{`AW7qsZ5I@8N60 zzqBvCvi#iSy@y{Be(wY5mE~6^?>+pIZ*cuL)zT}=&%h_e4IfH&JTm;m!{|R7^Oe!# z{8bgda6^Xo9=;{~1>u$DYsz}9_a1&x`2W>${mSx{$$JmKD*U}MUs*n1Kkwm3l(_#F z_v3tJ`TYLPd-$>8zY^zPSw4UN&wKdB!#RI!>|a@aO4`5o@QcG=ejwMcEI&DU@8Rpm zaQ@M;e`Wc6{=A2u8vfCkuPmQ`{>OXxX-9DW2XX$C`3~3W4l__a46XDEi^?_*a(C*WY{iN#Spa>!&QAAHUwij~~nVSH}5Qme1GUd-z4+ z{~PyzW%G}TSls7)8 z@8|!jV`BaPTA%;_(#V=WG|kuX=&}B~IR3pi>6PWHllLBeYWUN`E6d|Ph#PXrjz@-X z3qLo!GJ4qj{OLXXlJNg{i|bdGA5r`sxFKV{_wWN7c>Zo%L9g7O_a1&^_`2}Q@|YtjWB>X3c@IA}{8_PoW%+rO4={@|Y@Q=UE^RF!5mgaj8zbO1BasOAA??~Qz`03-h{xf2}vV6Y( zcn?1}{Aa@}%TK~5#SI@yc095_{^u8u?+G|CZV#utxSz-Wu;aM?myhG?pE7>`z8*i` zWBm=`Zw#+2KPlFOjP-jDzaaeP<2hehKL7cR_wb{S=lb9IHodZZKL6gsH-(>mJiW5~ zRD4q0@B!=h9)4vb=YJ*kuZ-hy{wj)JxXF7DKj;Md3E`FHbxq~Hho2Pwxp7>-vV4C0 zcn{we{&&aHE6We%^4F~2d-#s<*TwZyme1?=9=_s4?thP1zp{LO|Lr~e?C-?+i}}j( z`Te)|@QcDP4X-SpUq8HuA2NaS=fwR_S-vuzKkwnI!fzH{Sw3Gs@8KtepBd**Sw6r2 z@*aL>_z&XxE6eBi-`>NwewX_n7wcD+&+osyhadVq`t9QJr!1e>@4Y|&U3hTs=f8_n zZY^?OU;oy|{9Sh$QhxuVtoix=?>*K(HvIA`dS&^Jbp5@DA9ND;|NEWjmF4sPy@wwa z{+%7^mF4jqgd1|njz@-X2!D3WS4Q90^OyJVlf&;8URgdre!PdD6aI{yxqfB&{QT`b z{G#wRasHM2^WMYvg#UZYSC(H;oCn;HOLjam{QQZ$e(iDomC@t;<@=BK<@JaEIL_aq z$nyF9m-p~9PUif*V*SeU`T4{9^7_Ny80T+(WcjvY54a(hivM`;kH7l*-jBa;q&nyD&iCHuzm?|wE9L+8Gk|6R;i*8F_`^&aPMY4~~T zasA5j`SI&L{NPi$|2sZIuPon^_U}FX?C`g&ORp@SufO;3i^D$=URge`-+TChleqrR z#r~D$ho$v<4__I+KF+_gd|toz@MFX85%ZPh@fgGnxn##9!%qqSZg^$%uzCO9!_N-i zqw^nGen#NK9e*W&ssqsROS#V_2D;k}2S75?-%f6DUt{_8z_cle31 ze`Wdn{OdjZ>hM2~^()Kg_rKo54>_ItKQz3ud_Mo)!`Fo0I=r%c2ROXK z!TBTN{3)Zy`OoY3-k*P34(a{;_luN&Tjai;{{~Iw{7wJyh4S;CvgYUSKYEY#PYFNZ zMS5lV<@lty;RE*XJ$&Ptod4X*^vXECul;*po*(}7XJdY3`H2`_+>p!jt%qM4xoRoB zvV0|Qag+BRe!vg7{^OU>E6djc7dLtD;cLU6@eIAPe184*9)4{2D_*5nmLHz}{R{8m zr~HuXzd6povU~@Zzh?d3!;d_hew&!DEWZe!6gPY*+40Em1J0q}?7299kx}9L=jRU{ zFJBYK-~Ix;Fc0W%=ghy@#I`zV#KZ zUs=8(dGFzugnwf(y|R35^4`M_JCEzXE4;FNe*N?wzB>FbSd-&zy&y4e@EI$ID6gPY*+40EmL(b>^Z;!{nGJ4$qKJok?$II75{!*MjW%;Sa z?|~aK=6jF%^TK~R)~_s|zklF8{POU>i|0RO`PJ#)fASuFX*2h~I?lhcd@UAV+>o(; z@8K&ipg$uXf6DTWz{O48d-&$?tHLYGcayL2-ouZ%kn@}3`YFrTChtA`%&6&H2RO?`A1oPLGs?i54@Ou%=3Ky zP?leaPl_8pl$mst?Q#4;@%}?u zKEM8W4?lGV=N}P|UuF5~Vh^|>m+W|C_>S1-+TCBS8)E5as8F$^ZPIF z;b(+@_9b3FW%>O4>3wYnA&(B}p!_Nv| zACDhp`TY9hJ^bA8|A_g@@~hJGpZD;yujc-bkMpN2k86ke88EZ>&A_wa4uUyJ$5 z@}rXX9)3~yUxrtfpO?J%@H2kK^>6cY?q6AcMDpIlcZ44m`&aJIdk?=P{B1E`S$=Vv z?|pgxbzJ{;as4|Y%jf&Q_x||X;~Tvne_u=a$RhXk_*)qBezNF`<;S10=6~Y($JU4S zFN?g<)AY*nW7Gb!FmN=;!*ai247n;`vk7{PGK5aUVo3760)b>tFG6-v9RAEqrA8 zDFb;2UgNEYpKv4n|8}8Qme1e6^B%sUjee_`uPoop@oU!aJ$y^}9d_k>W%)ecd-%~e zbN&nAmE~K~eDC3xh5t!-WqDm=Lp!mF4sIU%ZE37Jk`b^vd%2{g?OfgMQ8RcOOo#ET7N6_kR8# zDbDYN*egCfmhzoP^nLy-WB&V>ey05TrL6h-J&{Yrf4s-~r-k4D40>hxQL!d@@8Rc# zzq65ESw5dX@8Oq(ANWIhW%UO+q3@PBEhSC-G$&wKdk;g3I!URgdre!Pe8 z2!FyU^vd%2`&Zt>&%d4ffBFJ?W%(&-|K7t_&x!MQ9KEu9{{Dma@Xg^jYNA(`pO)r( z4?pm?oIi5{y|R2h|K69^AO4@`#QG!4Pfqizt%q-qJoS6@%JTW~=RJH^_-D_fSC(%~ z^Sy^3c?b9Z*URaZQ4F_E~ZyTkG1FP=RN$C@aJ4huPi^l_&sn# z#(eML7lr@PRrJd8i^_Vf_a44|F4uqFPw189^ZLDqUm5;^S@g>CO=-UO@DuLh{QIWU zE6Yzz-h242@Q;nBSC-HBU+>`u{EqXtJd<8oKHq=6ho2n2?L>NI`8?ly_}StAb2h!Q ze4g(;{LtTX{bx?3SC-F@AMfF-!#{C8y|R2`I{)6ow}k)MOnPPc{Pmaj@EzfQc?G?) zd|jIFJ^bqM*IrGpEMJ39iW@$Z?095<|1$Z=-tS+2kn%A{_5J>3)E{{M|5(lM-zekv z$GIO`{K8H1y~q0N!(X{My|R3M{q-Jxn*2z5W%&^tzh=Jo@N>d%w=2DJf8KleMd81- zGrh9>(lpQ}I{+`&BURge$KkwlehM%@Qy|VngG~avp=6g7Q(iZf}^7--OJ^bwO zb2p<`?$3K)UVr$ytz!L=<(u;Qt%t9f$Mw(HfnHfYKmT|SKRNt+qv)08+tPgR;fLJI z`OoY@uPon@y!Y@6!k;#rURge`-+TDg;j6c%SC-GOAKt?^{*mi{aa($2`O#_p-owuc zKX?SavV2~@_wY-@fB0p3W%)ecd-##}as9V$L$BPQ_a1&q_`|oOSC-G~_uijBE5`PI z{@gs}uNAqk?_bV|`3raA_kWZ%KY#t{z0ZF;&0CrB;G_GVzaZwH7xR@hzad?J?{WTy zb@Kf08(vwyGI{TP{r4B^n-It1!-FY5-_QDMV*ZHu{-Ltw=hqMK%hx~rLp$^QPl+s_ zUq8HuZ;Rvq6JA+9zy5pg`@i&?z4t#O*Mv6#nz!mF4sLy@ziNUl(3kKHq=5_x%t3R`309n(}T%?rZ<^V*cH6|54Wb zeE;#@=f9TbEl+vJWBZ=p9rOQJyI%SGU&@-V=LFwmqPURgeW|I2&$mihE=#r~D$tKvBo zxn##9!!Hc~#Me1r89m+)@B<&@{Bd#pl;tan-vc*f%=aFCc=+mlIbT^mUqA2R z8^X7Jjb2$kfB(yS_-WzKiSw^4pTGa*J^ajvxc}Q?{mSxF%DZ2?fA8T3Jxt%SAJ?xe zpCA9;!w(N%iu<3kd_6uXZun5L&6yUpRmNn6E6K_wPOYfWOjT zQ^Wbn^37?!_x}9(uj2V}LL7?^@1|TmuJ7m1=9quPSsRw0Kb19qXqxXm);}wJ=~Q}U z`TY3z9=<#LmfxpWmd~$$-ovjB|M?%#EBEKUhp$}7^S|Ml^vd#s@JVsQhmswS3_s#; z^q)S3UK#!H;#WR@-ow{~UwH<-vi!W__rMJq^Sy^(75=?A|H|_D`Oo|E`XAx?Z`1lC z%VQ6?A!Ggs>)}U79(EenuPnc~tk-();fFuU`S(tySC-G~_a43>{6}&9mF3&geDC2` zhyQgG=PS#1B=0@^oGz~a%1QLf@_I}nm+W|C_#uzckBj{)qsO_=ufN{I*M=V-_a9~X z{QBWN{Jiijr*r+v@+*rq;D(I#dk^3KIM=^AuD`N;p6|Use|=CqKj~ayUQfyuMe{PWMqn%|1wthga#{W=~Q>+g)?4+yV}9_PQQ_=OuXy!XETu3~+@{wGp? zzMu71b#wj4#rNNpHDAA{=6jFz&kFyiWBL7CW%>O0@g9C*_}9NhuPi^by!*BL_a1&p z_+7`*E6eBgdkE z^Vf;%w#~_OC3T-@kefKQH|H;g#j{`&aMb z7cAob7sUFN<@4j;d-$5C>4%0_mS39ApZD;?o}r%>=U-VqzyI|fzB>GEx_*)6$EW!^ z9zFc5IKC>pvV2AI-uv^%+28K{{Bdr|KPhrwUw_Yu`8UV+|CKdAKYqQ(`sarqw=ute zsVtxG|K7v*gg;>udS&_i{>^*%;m`8=y%%1&Kkq&K={ zW%+#myf3dm{3~((hDVm4m*#s9za);oJiM}ezW;a+zbgC=;g#j_9E2Nk$&N>cuXv98 z|9yC6^sxE)!+ZF;@O#AhSC-GuU*5w{k&pYYvV2>y2HcRbe(%fcf1c}~6uu&|d`DTY z_1?pG#qk@)`jzEB@%mxEzdwGrJ+AlTce|7iDRN(r-=6sW#=KOV?_#L3=I7@x@5}pt zf&2e__=?E#lQ-cBK*ss=9)9|}^nZDg^OfZ*)A{q>_y4Kmd+&eUl(#8zU;A&5`Tu&7 z^OZF}UqA1${_*c|{YN}SuPon{*6%(1i1+C)i}}j(b@-&X;RDW}_wbWe(a-GWd}SPu z$4}KZ#ea&My!Y^}o9$BWZu&dDvixfDHQsypSzn^xD!j7%vgEyopRzgqx{EkpS$@zU z{szb;J02Ond29N6pQcwvkNxMrKkGew`*8X_!z;@-6u$><$e8av{D5uf?~L^;%lD+e zKj=Mt&j|Weas8C#SK^c6h7XwUJ^YI8=^u*wpE8ce{@d|Mal;3A@8M^Sr0;ox=T8~O z!{>j0*?WKdElH2Jms9?@pU2;rojCvC8T|QSWzC;dtN}M%H&k){+c95RKEM8Y@8|#C#@^3=ohiRm zR@VHXY5m?~{nNtVIi6lwK0kkY4`00t_rGs=W%>O2?>+p4@K=rF zd}VpuhjBwL+40Em)5E_NUKu@XKL6hP`M>^z-sk^@l%E7c8~&FU(JRa6uYbLVuNlSp`^Wl~)@i_mZ@JVsQ2YBz{2k%LLSgcBQp@>ozxuiI`$uKXuP*k08#4CqJ=WhHe*LBN%JTX7+k5zi z{W$+uFVic_=l8GP!#9QB>lJ!s`TY9tJ$zUAn`8aT^3B+MaYHWI@yPI__viYD#QK%d zm+ybYN8FI%y@y{Fe#bcf%JTJPz1Dm0*Z-vN^uGS5q&%z0eO>>W1GxU5p2+84WzEm8 zAKqjAW5OR9URgdr|9THUG5pjMIA2*lUw`l6r-lDQcxCzV>HK*Qzcl=^@XGRe|K9ug zKYBv%^WTv2bw%#${I81n=ReQ;ud?Rn$Dj9D|HwLCzskk*%JR)=|K7vT3BSd&^vd%2 z{Cf|-F#NP<=#}N$(|qsYCm+c5-}4;3vV6Y(dk;S^{H3veW%>O4<2`)sL7d+i=TBKa zKYw`d*T3Pry|4eclz&p>zOH{u%pY((@Bhl0pYMO(WBqf&-*+6nvV4C0c@MuJ{EPAa zQCU7;fA8U!hCd~|vV4C0c@JN6Fwg%Xv3_OwynpZg{MUc4_xb-u$|n}Nuk$}9=8yX- ze|}6^^FQ(ROB|0L>+g*Gt!?O)$(4DhSMv{=ly#R-x$7rTY6>rMQOhG z@S_gl{42sM%TG<-d-%EGH;er%%jd_B_wa)b<@`l4Us--u`u9`3hi@HCKO@ecvV1;& z-j~-OzDMhiEWae}f3EfLGY;eYo8$hYET11g-ov+t-zvPad{3J1J^btv=kFE!SC-HF z_a1&;`1aVpvV7jZ_x|`Ba#HWd-$p5qEOK9uzgdTK{V#r<-#=H@{Jehe%jYlr72(?> z%Xj4SXFdG*F`U0ocxCyvAHrE6Xn^PhUIVd-zdDa{WJz{VU7o>*sxW{ozN){_7*l z&r9>YhaYeh=kKsL_pdCUU;n&^uLyrecxCzg{R{8m>%!j`>sOW^mDcY){FLw;gjbf& z&mZ2y&kDaV)~_s|*Y7?2{P35>d}aCk=NI1l<9|tdyuY0C#uNK~{I87p!v^sC2g;hC zUw^&F`p1vu_20gSKR=)>pWpv^55Fw@`ybFN%h#pr=RN$0qd9-@NA$|_&B=QY-yZ(s z|I#bV=kMQm4?pS{&c7%2uPmRhpZD++!rvF`SC+3y>-QeME&Tc)bN$NlmC1V#KR^5? z|D#uy&yOGP;a7#f;X`_5`F#KP9=@`H=dUf!zp{M(`33LcM}CX`+*rS|{FJnR@8M^M z|5=M-9&HXgoJ&OBR zmT$xG;)aa*-uvV4sp9eFkH4o=UfIv%Z_IJr|4%2!pPxn6eEpu9uj7%i{*E|)_G$FW z@_GN>!!Hj%_f&di`7Ug}xFKWz-k0Ye&-EV{z9X`HLs_r&-op=Wr2p(B&R3SNNMHYX z4?p}w`WNE-Da+^g58lJi4F6u7KV|v+{=s|ritlj#7h}G%e187%9=6Lv@!#e7J2>Vm%jfqm z-owub|3Y|W`TY9fJ^aG(51hgME6Z1=^Y1o=8ojc7e*W>ky#AB9|EYV?S48g5dk(JbKEMC*9=|Ep341i7G7CCKYw`-KPLQ`*uS!Te*WjIas8C#+lq6D z8*<5xNA}0xlv8^@{?1GJ@*?;3_!~Zn`yc*W{`rrx<~J8}aMOJ6vHscNKRkq9S-yvS zjrShD?KIB+)t~5<{cmt2 zy|R3M{_q}tS@>-pq*s<7b6|P-Yu4{Q{HVJ*|Kq>XE6cAUU*o-pA8`-;MfcDv%jf4W z@8N60-yL4LKkq&KnDC#ygY%W;XQcPf-or1sm+L?JetKp3eEqzKANWW5hE95A`Py{; zyoav~e|>mm`TX^V_wYmRDZ)oH%>@b%$;&_S;(KWiX=1LTq&j|{)$0nR`2 z&vE`DqsQaFuK0x;GQ5sQhOeAY|H}pR%IM+ii(j}Q!+Q@uG5k7R^lNf)JbZrs_a44A z{QZy8D`Ot~=;9Y{$e8av{POS>f1_8HA79pMz4!2S4|4xU#q+7n>m#fbJeP)vsO`}kU*x|zAm_Sw{t!p z+^)}czPo?tJm)#jv++l4^4`Nwy(j#woUbgO|NNWx@Jm;PKlGkBer5SQ-+TD3d&B?V z9pRPb*T(X9tlxY1Y4?S{o#$U!epd3{!w=G5!pC1(zAJg};m7F@qgR%nm%R7zv+j@e zf0M_rET69*@8OryxAXp~EZ>DsiVYtswm&j_%>yz2lf3^aqnhmb<2`%}eGgxMmF4@3 zuY(O4^Sy^(O#dkFf6DUhz{Mu-J^V)cm-GFLvV1*0G4DP6wjamwf9b)v{*>kO`%mxT zTYeIL3h#f)W!`)Ee)@0o{;Mp%EtbFI_`QdpGamEb&*N8?&)1*#@SEvh$@$9i)6?sx z_wWrrjrmLX_$$lj*B|fUXVIU>`haUR;O=<*<}k}|O6Sk}>ijja{X@%ApI^Vchu=>BA$n!`*?1Bb8*;_=M~3hEzgYiwdH+>L51P-v z_we)STfQCZSC(Ip{`{`@@QqK#{P*1#URi!ou?B3&Sikr1%jthfuUzK6hwu7#%zuQ> zUuF3@)#*Fudk?>Y{(8RuRhG}|_a1)se`5Y$`TSRwUz+B74_~`I{E?imEI&Va@8K8F zH!qL#uPmRB-+TCN^wYi*URgdrf4qm^@Kmh-gZ%zaSw3HX-orOM9sVoy%JQqz@q1sL zPyaQpe*?4pK=R(hcRdsHzsmEcET7Mx_wXy|NA8UCrz}5ZYAgV`V*4Y*uipER>T}~a zeEn5MkLPdx`LFlz+vs1c*Dq%IeEn#D^zieh#{3`h`L8UW|Nfcx@JsgzU*Yj9%jf&2 z_wZAn7k(FdW%-d}o!F2owm&lbV)`b&e^N$YJ%8!-%X|2>^)df?zJ4gn*B4(08#3m5 z55I~2&wTw<-r?~{vEc)}_wd`FAM-Ee`B%pNSpOJ4DK>n7_a1)P3&Zcv_fN{$A3i_- zyocXJehqA z&+GRde(H;2{r{`$k6C_U_2_pVzxGEDzl8gLnl*#5}y z)0)Enjz7OqMvv>av9|b6u_42I58u%o{tuk5EI$LE6dOLkdk;VGitrVBW$cgn)6)IJ zd-z4K3jZHI{>t);llLCJ{Wal_rB{|;l&&A|;nyD&{sNvqCEEH>nd z?T-v!-xdB!zJF6jkH>!_J}EYQfcGAL+gro0;r&k;`@`q^ulMjX-WGn0$FD43hfj(P zA28p0_|~_FfAIJ?f6CY&^Sho?{HNIDy@#KFM)>{t`v=N9JU%h+J^Y4ug?|U%e<;f@ z2)<*!_wfB^hW{gfeyuD&EqU+Z7t){l<2Zh0`MJq^4`1IC^Pj#Tyt4eP&}n$?>j%{E6Y#EC&h*j726*fzU4#VXVNR9$Mutc ze&RiR=LO+!{8Y?Wmfu!<4Q$Am?>&6`K=?1bExdA>_a46W!tg&oKfJR1T6|J$_<;G| z!%z8e_)qnPSH}K0{_MSn-!K?{&r8B9%eUf_V#5c__a46C;_wg84X=#-F+V^5y@zl5 zX!tjNI=r%cp6@;U?789Vc>a~;XQunN_wb7^4S&&PF<)6epFi*62QLeM$(7-i<@5Tz zhhO&b@VC+{%jfgwJ^b=dgg^PsF<)7JF+M3ae5ly|$nf2t41e1x;g!+j@mo>+!iEg* zJ$%Eb!avTR-zv*DRP|2pJ^T#%J9=WivV6XOc@IBCzy9>_%JR$8eDC2~FOT(a;e2KJ zo-^VLAXjXEWcY;}!|#4Y%vVN_^OxU$c@MwxvGC9E{;w?GSbPm^$e8av{CfJAofh+z z<=d)yr}rMd;ZHID7QTKd%jefG@8R3&U&i$-%eSZb-op>k_w(m}%JTX6y@y{!KRg=8 zuPi^1=6er6byFPw+xh!<%JTX6y@zk5--BMc%zF>tL;q-htY2AvB(2|j_^tGZygR(I z{G4?E^B%r?a~%I!pAD}ppI`sHhwu7J`1ASvQI>B_>-QdhKK&8&%JTEl`#pjvV8vj-+TCmf5rSy(ksi)t4`lJ-+TB)^eyzt@@ta!9=>l|%)glTKV|uR{df=G z`(*g5c>a{-SEc#h!%zEn_=B&D^QSC7kiLKNzIy!6gm0~cU&JiGA1&}MYKQes%Ug6)>74wzRHy6M1>!0`Vv*_3G z{gbkM{`X_Nho3n$=AXsuM_GPlu?B3&Sikr1Q}zkJ_{Lbjvi#QFs(gp{9=_&9;k)UT z`&e=KqJ+zp{LO|K&aW=BDspe>(6`mu2+R$&+p%qy&eCO-J zKb!NF<%fzjU_-|Gy@y{-e>&g4Da$Xf>Yd(u_@P5${x0;&^7-}8d-zrK*Yo|KvV6Y( zdk?>|CFbvc5}&`!@-x!)uW!`)E=A&Z%59pQU7pM8&!>^`4>g}<9W%)U^@dc18wm&lbjALW|5Bc*~W%PLd zcNM>|A;WtQKac)Y{`^x}z8$#Oq{up{?`L1;T^S-+NO3Z)i<1xR6S$=hz?>+o#?*CPKW%=6t z_}kZqA3rtb_weU8%JTXBm-p56pBDbheE(F#EWa6_6dOKN@E_~pH+O|UhL4{zcE$DA zpU$86@ZGb+-^KUO%JTXAdk??to#CJ6_n*r0i;Fd2L&o~OhwthR|B_4N@l%%1KmYL_ zelGo?1L2kB^Y_o*!_Pb;=I`DSURge0zuv^*%#pi@S_{%Y0S$;TN1A{&1duW%>O2;XQoQhr)lIe}6$)zU_?@=X(#|eQWrQ55(~+ z%P$GO+pC)iJ;3vhd3C`R5nj!*8em;!t>H`Q`Ye z*zloZ`y<1T{W#{Y=KV(*J)S?k>GjWh_=cZ_zw~o4Us--z@inj^W4`zBQ-2=*YX1CQ zSw6r2_8xvUecOdGUs=AlI(_GS@8PHaBIbXHURge$fA8V9(O=H*UzFv$)9a7-@Li9@ z{9F0>E6Z<9_b>0^JO3yAlYIZLEI%iG|K&aWvPZ+;O|LA!GMzu~;rlm+Ka%hNl;t~< z_a1&ZeIMs5%dbl7_a1)kpJM(Mi{kNDmTyh-y@wy8|31C4d`I%$!*8R1gs;EK^2^ix z%X|1`n`8YS|46J~S$-Iw6dOKNY=30<*1v{-E4?y$Jbwp@U)Yf0y@y{)U&Hs`%JTW~ z^B#UH{p)%EQI;RWC&h*jnD0IOk}a|RxAFd?jQz3x?7fHY{zv#Re*dp5pI^VdhoAD# z@MrP$Us-;rSOYd>tlxY1`Sj1?`_CP@*dOa(SNy^z?>&6))|mh4>*MiP#{Tg6{Cf|- zl>RUD%JMVP>!0`V>-T7>uI-=v`M)#*Fudk;T0HRj(+uPnbIdGFyz_6h$*{`^r{eo6A)!?!&z{KI_y zD9eu|?>+n)`X}j?<=d0@9)9Y+F@FR9{D`uAzW;d-Kac*&_s02GmY-V_)CxBd}jIHJl}fwP0Yu_q;UbuRkZevV3cL z|KdIT!Y2AJg;$o(>-QdhJN;L=er5T(J>me6E4Du}eC>fTzllHpQ$}BX{^FBj!v}cp z;TxxipZ~5{zcTiRUsL?TChtA`X8M-y@XGRAUpUcw55J)!=6`~}|EDb99(>1q@8O%? z9KMbBUuF4x|Mebz`SIaj!~2)Ae7^sB55I-}V*dP4Sw7$YyoX=h8S{_j{a0B&-+#S_ zUqSy9&R3St^Sy`fe@o1NG4G$s^7;PjJ^Y*#!oQpMPi6Uh|MVVy>WSfRwWe3XU6>Pyng$c<@5FHJ$!F(_~*Ve<|~(Z@8M_94gWarf6DUX z_@vnIptN!`FT>{C&M~{*>i6B=0@^#xI9|EziHQd=Eacwa<$afLyWtk>O|E7yecJ^B>CSasB4|m-p}+=&$)g z%vY8lExraeWX$&-e(3&~-$}15zZIVp8$Q5$4?plg_yr$|`O4TI>+dXnVUzbBeg*xN z{QD2e^2^fo?>&6qgE9Xb^JBiUd`o)&=so=C!{OJ{E6Wd6SHE-p-orQjGW@;#`J1wQ zWAfg^x6v;?H`cE#pMU?zd-(QW$NX#OgjbedknX?U!>{>k_?Pqjo3ea<{qr7v^l#yR z!PhTk`TY9lJ^aXShgGkQt(>ncpXYlI-&+@cgs;EK@_D}Z@Uxr3kMs3kSw7GA9)8*Z z;k(a>^RFzQ=X(#|_{Q+}&?}dD@8PGO68?Dp{6blNcDnw&ho3|LAwGV}@_GHV^#OJ$&16_y_2f#1>uk5-~UsV?~3s|*6%(12>nyX#rl=yN0av+zU7*j ze*@<$%MT{+J^WJor}*cGl;vyE`v>o<{<@fdEzjRlX8G~#t%o1{T=-@D{##joRa(FI z@NL(J{|B#MW%>O6!F%{|`hDq@uYnC2^Sy^( zLVqsTuPmR}?>+qBl9+!7AAe=}{P=qhKSuxdx5n`+mwE5ux6og}zdxp2=DmlXesiq< z)4cwa%e?pSbLij6pI<7==l37p!>^?O0AK%=6PWz2 z|5iqi>o>ptdJn&e{!P69E6Z=*r}!ephK%{%!>=8W`M2`*TUkE;{R{8mw?7pAm-Nc= z?HFEc$e8aveA`dM|C2v|Q+8;gq!rzDAV>rCB z{P>iK^Sy`f-5h?LKmSpd&wu{Jd-&N;g#SL@|0>J(;ge#+hl=fw48Q7M;rHa@uZ$ko zPyYF-_wbERhQFTQzbMQ17GDD!GUj^^KSY1p2jcuG%jf5h_wcLf|4y$gpa1|jzXK<)*zol##eckqU&Z}v zc>OACet!SqJ^V<`>#JY8{gOEU%JQqy^T&Jm*?Wb*;_~py@*T;055MRo;lIK4E6eA< z|L8sZ=zifx`216rpOc<{-ow`&82;}(er5Sld{S)qP_g}y;g?Jg{|kNp&Ws+9Uw-_x zzxE#1 z*L*%6e`Wa<>H9D5;hPQ*U(4TrRhHjWTRr?8$L~FS-J8NckH3GVEZ=}niVYtswm))p zetY<E6cCL;)_k*d-$H?!+&XE%vY9Qn;t*!;ag4!zXyN+Pg%Y`dGFynXNF(+<(RK5 zpMU<~J^VWQgFg~pSw6pi_8z|eq?kYJbK#Zc=fvsTasIrApG*Ho&R3RiNZxz+5&E+) zj`_;+%aZpVzM~TBzm0!>R#`sJ_a45R{so+`ET89l4?pGPn7=p4x6!v>7W0+m*W#06!-tCPj|@M4TFl><-@huO z$Ni(X_=OD_-h22NUExR1kNL{-bMQ&A;RC$)@C)A>{vGtn*dO!r-+%BPer3ezoDa)?_E;f1Z;k!N&^S96|%df^K=Dmk+{ABnJ{`_BAK7aq|J^aY! z;XAL4^QSC77UOrU-+TDZ;qb@s{hPA4K;_we=e!{7Ign6E6~lDzlT`JV}Y`sv|2 zndS5EpLh?ymixbqURi!H9l!VRGZ)1Czj6J_@{5x99)1)34VK`T6HP{DRMg{~YHl%jfyt!w)PBe?I3c%jfyt!_WA9 z_&WaniL!iKI)C27_tBqrN*uqk{L1wF@g9EqjWPe5{Qgy0KL7ib-op=$hCi4;KU9`) zOzZa^euVxMdgU_jJ^V8I&HVd6%JO|_zW4BrUyk)Z$e&*;%g;;Rd-zfM3kTx-E6e9U zf9E~??3-f#FPDZ_me23MyocXFe>4C7p|bq)w0`g57k)kF|A^P0vi#EIy@&5u68^V* z|D!BFJ$dip`{}>M*FWVl?>+n?`d9G#59KoNJ^X6=f7~7CUs*oCfAn5I8^IwS)Hm_} zUpXV?i;Fzj|G#nr=O5I#TTOE@R9W-$`#evtd0^3w3i z^8fYxwXY99!h9#avi$n=_+&v^cn<=3Y9-otOC zzwX5`Us*o?`6ch+w|q0^zv(66mF4sAKY0(|a9jBC=Z9C8-;|Eud-$5M@M8_(mF4r} z?>&4A{bMf*uPon`&Y$=2UG$sw39l@_CVB7So4+0FKjVermF4U4NwMKW#r8*rZ@n}8 z(ffv1MvwPD^YKZs;RC$)@T=|$-^=r_jQ!zf6u+>^dk?>r{y3h0W%>O2?LGXAWzDaTy~q03 z(%<=(@XGQFlJ_3I_j@t_^v>|g^0)@EAy;gFWcXqFlTQqSVbKR7GAGJ2f9?7fHIN`Lmr;g#j{{mXm!p&!NZ-+X*{W%+#l zdJjKB-+xMYW%<$K7_cE%Y=305g@ZQ63qCb3Q%vYA5iBF0R zAK<;O&c8S2cb^cxg;{=c^4|OXZ(Ay|R4%{>6Lv)%3srUCdXO&)+|I4?k;ltp9-x;g#j{_3J(SApPT9zq0(C>Z7;w z@$(*j1O2}_Us=92dGFyH9*FgS;`gzBW%>T(y@wyBe=g6TvV4C2c@JOzlbGMk`O5P7 z{e$=L9rX9nE6eBW$9wo8`YU<2KiqQt9*Ev8s1^@8O5(-=ph~S-u^g6dOKZzV=6kU;WdVe+|!{GI|_;e*C=m z``_*#oOu76lJWsXp6vd&o%6T7EbhO`nx9{PyvO>du8H;EPOmJVUq8HuUqyd@Q_NSE z?M1zeUXQqv`m)hi_XO^S5yQ%JTX3 z!+U@J{vW0lIL$9=TF&lO7;DVvgQw`^?Q%?Z>2wdkMPR!+miPle)Gd|{CCkS z%eUi`V#9}u?T_roe|`VN`_~OA-(2L$?qAa%iTU$a>{&g2Wqf@+_j`(8*figJtbacJ zpFSU6Sw8>%o%irvzl!;fEefwJ-&CExbH4ZR1N8H52(K)kpa0&&FQVUbVR+>-?>+n~ z`nU4!}Tl6=liGk@U_2=^Y?`>#QK%x^Xsqo@J;lu<@%N7^L+2&Tj}e# zer5SQ-+TBj`tNbRvV4C0yoaAl{~tbn%4Obr_{H?c@%mFP^WMXc)9-d;oPTBceE;$u zemng|T)(pX=5+mg55MU*@%aCYkH4~fK7ZcBPhB7W33}x+?>&4geHXoQnfD&PhyGi< zew5|A)A4%`zk+_4kDs!9KL6gsZ>GPMUb)PB58wFPIDe1u@l%!`O6&I?ei8j`D|r85 zmhVYk`=f{7&i!A)^()Kg?;pH}uls$h|1_R|W%>N`XYZ@Wzaf09j-OdR&u_FIe%k+p ze}?mw<@3LP?>&6;qv2cVmF0WW`STurnEqj&e`Wdn^9S$!_4kDHC%*oklyYB@Cwu+f z%K4{^#^bN7`GaZw-ediJ8{_zI`Eqz=`TYLVd-&ErhX3{#!z;_@_ut;b570mVtKpU9 z=co014`1_G%>N9%vV2~@_weKNulQ2TSC-G~_a46PPrQD3{*>kO`n`uAq5s-fV!pEc zymb8D!#8Y-`Jde)zkwer5DH{t5eE;+wej)ukc>K!p`TeW+e*JAp z*V{i+e!ArP8{_JEWa&z@8SEO z75>uW!z;_r$0x;x4;9-V8GidN;eX8QPZ>R)fBF9BJ^b`%hyNYduPonId<|^KnD0IO z9Qyxo{mSywt9qyR9)5)Wb@a;e`TFx7ezZ2$|508)%JTX3&wKcWUBmCi<5!mN#wW#w z4;9-V8Ghh7;qN*w9zSLDIRDFwU)Yf0z4!aqWdjrMU-MF4TI9*@U(yMS1$A3!`JT~ z>pySz@XGS}?;m>)KYfqzTXzkwEdO8E5BEn8-_Crwt{?01*ysDF_LpzlGvKa}Qs55JE7_lJg8 zmd~$W-oy9q9qXUM`O5P7{Cf{SLch!FW4^L{e*St7zlQ#4dS&^hbo}1KZ=pY)URge$ zfA8U&r^fN0qQ{R}KEHlyfAsLPxc}#P{*~qP>!;C_wbwOkEU0a&(DAF;TP>2^WVYepR#;=n(w_o|4+DR z;`9Hcl>3W3+4Fxr=YR9bsnyqSWzDZo^S#IVx6q&af8mwo^Y!mN{Pg-b{*(U|URgfB zet8eyMc-TeMayQ(WnTNEho4LT2`8eRclxWBs>p<$PxOeEzzuho8fI^%LQh z<@5Uo@8O$X5c414`B#>2O6&I?zMXy_dS&_i{>gjzUiz1E{mSy)X}0^x6=PFAAe=}(KO$C_>mXJ`J2h>Us*msf4ztAYzV)W$FD4(Uq8I}=kI|Zp7{Jd zIOXGuJlXSikn@jtQQW_jH9x<8dyn<6r@#9J;g#j{`S%`v>Wkv|FL-`f6DUt_1}B=n#MSP_wn&pmd~&M-osCMY50@4 zer5Um`tLpbJo+Pe{*~o7r1R%JeD8iSf7chs`B#?Dum9e|57A%3=by5CzJGfU-@1Ry z|2vOgS-v5y-+TC3^s6~vS$=Wy-uwOM|I+HK>SKl^|< z{!jff<}1tR^XGka{q(!@`1_dU^Y!OFeDlj<{<%E=%JTX8^B%s9{$Z|PS-v?PzxVJx z^tW-ovV6Y(cn?3H{$d`#vV6Y(c@Mvm{yDsUmE}j%`n|8N|K)N1X4CgD%a0}RJ$!w0 z_)e~0S^mFXf4Dz-fBxQ6JU{hXiIMlE{F{>JZwJ5LgI|x||5MideE;*ldi?Z{j)m{B z_2IG4*N^w`gWUghUkk5XHs5>r5&8@62(Mh`y@y{$|2cZ)GVeY7IQ_2{$9&~7?>+n` z`cEwjuUzK6hp&A_Tt8#<%4Obr_$K<#@bOcY&)1*#@U!S!?~L^;%jf%#_waSEjP)+ny`X~7OQ!ew~!>^+M6z~7aW!`)E4fJ;}jq|5m z=DmmCPTxtdT;{!pZ#XipznQ%MDVKTg;aljx!SkhF%zF>NjsDg2%4Obr z`1+&b`q@CQT;{!ppFw{*y>glN9)2eM4BkJK%e?pSbLboR`lnpxy@#Ji|AHm)_$ilp z@8L)3U&z-_W%=Rs@0WQGKkb+}|9kQIqb#3aKfH(UpudXuf8{doJ$w)SL%e?~mwE5u z=hDA|Ub)PB55JK9VtVB=?>+n&{jR)zl*_#L@N4Lw;{9K_%zF>Nnf_{CKgwm^d-%Fz z&4oeG|X`R4()0!?)A7@%m9N^WMXE(+~3gsa)p0haaT>InTdxnfD%k zg#Ij^f8{doJ^V8ImYd`GuUzK6haac^9p@{TdGFyj(O<#&%4Obr_}Y%RejeBN@62Uh z`=f_%;{NaD+ngeH-up%4Obr_yzRu=lYe) zy!Y@+=}+bRcjYqgJ^X6=m+<|ca+&uYek1*#dH+x@^WMYPyg9C)i@1K}GVeWnBmGHy z{FKYQ_wcRsyYc%cW%-rG60spyY=30{#}ONH#r8*rpK^RWe&6QtE2E$6@%J8n8vQeR|HWM9wLg0J4(?y!`xoUh?>&4E z{cm~yRW9@1!_TGf;qfb%dGFyD((g&HT;{!pAEO`R>z{I&_a1%?{R?>f%4Obr_|5dE z^8JT$nfD&Pt~0KmX1)JnF7w(SJ$y6w{{Zjb%4Obr_;&h3`Tj?_%zF>tO}~NjmCL;M z@PqX4)cY^yGOzv7!;f(PYdBxI%zF>NjQ)P!Ka|V7_weKNyYul^F7w{QZ=#=0uUzK6 zhp&B0Tt9!|`jyMP_wY^hhx7TPT;{!pZ==73kDqdx_a1&W{WX05qg>{_haaHd#`h1( zW!`)E1@w>d_kWb-XBXEQHsp%!j|{(w{`LI*A7%8o|92F>upz^H@4x@~$&XC@{mp6mq`QF2CJ2m`)^vd%2=U3jt*Pj;tiPyw@ zW%>N)SG&6)+j#z3!z*KdJbwBAf9yT{w9~_P9Kz#gmTxP*1~z2O*Z#=W`P_dkeQ)v$fQwDu zd-$!~|N1w@d}Zv9^$!9Uo4oh%eeaC*Z#*=-vV6Y(cn`mY{_C#}uPl!>U_-9h{>bq4 z-7){c&hX0UVSCfhZ@q^fJd=-Kdw6B}{QLLb!!Mve@%Zq{^0n#jPkRqP^6r>FR{W1b zn=Q-t6~}-LxsrPLnzQI%7hYMuz1Rhty!Y_!^iA~2^7;AiJ$yI)ZoGb!<(sP0ch2`7 zelGpv2gdr9jX;ge#+hl=fw4Byck{=#EozA}1TKl%5My@&6o zziLK!W%;?q*T9C1`QF2CroZB#@XGRYs(PpQ9=_|nvHqj@`ll@4l)U%w1N7${74wzl z+mrVmevJN#W5X-U&q&^T_>J`2`TD6W-6K&e~A9Zdj9$ z8SmkT`(yp@<$PuN{P=qhznuQpQ)9lee18AyJ^WVs-#st9vV0RxUa=upY=30<`txJ` z@7^c8GWy9LKkwl?>A&*a@XGS}{e$=L1M~;*{42}n@Bh4qANo+N|LSw3HX-or1T-}2M&%JS3FeDC3x(_i!R@XBT0d-x6XNBu0k zviycL-+TC#19AQ@d?38Cd_I5P!>^^^_)vId`TY9tJ^cI&WBxyQ{V2;1r1g6bUvp9T zb9w%iE6a~2?|t?7>F-&~<7bv1OMb2O@WUUD^-t&dQ&4U{d#)kGVi?~ zfA`SD<3BUyONu<%@sDzT&5BsRa@lmOET6Am@8R3H|Ig@^%e?n~{-5*liRXX!lpBgX+4=A1{Oi9T=U-X#yVCu`d#ryI z{YrXe`H|$khoAk?IDhBUE6cA;-h23lx#3^_%N@ZQ5W-5dViPls2QuTS24_!jz2^vY%4 zd-zWJ+b)m!%JTXD-|jv9+WTYuv-$Wd%jfrB-otOFf8Dh)Us=9A9l!VRZL4Gcd+3$r z^Y1@+4`25{`2TSI%JQvgzW4C$^zWS?>sOW^sf{myT(SL;;nzMG^KbcVcxCjs{yU0a z*pT79hi`Z&{0r%oTRC4D`%gCCd-$2Z2)`SzKV|u~7+!41nD0G&)7tQl@%$^x&#LO3 z-h23d`gT74%JN;wdk?>gzK&j5eqQq4!*@O$>tAzKTtCY4`TFr5elh*Eyniaocj1#_ z!-tCPj|{)MD7$9wqckA(loHL-qW`TpW-U_-`y@8K8GFXH`AS-u^( z*yO#3Ur#?yuPmSc{|DZ~Z&?@X|IiJwer5T#7{6n__wdty6@GyCFXb}tJ^UQ{>v{bv z%Wq5by@&7lb)#IoC-hz1idYI)mCGUN8{_kS_H}U?_$t>TSy!Y@+x&L%}W%>O2zaahonfLJZyT$y& zKNsg;S$=Xug<6M=JS6Yv;08v-owv)Zp^=!$FD4( z&!6}3WAxAA>#wr>l&P@*ql8W|M>^+;TP{8ehs~{e7=8r4`0_5euQ3Gexz6@Hsp%!j|{(v{w%(K zQbu1rf9dthd-(B}#r%W$`lT#iUwj>G$e8av{092(@&2j2!{d`;!v}cp;kUj#=D&`| zuZ;b%{xN(~Z1@20J^Yeags*=K{KDcKVneRj{>bp7^m|+p z&mU#9A-J$!$A_!j;AlvzH%|JVNL{pZ);Nk6Y%k@EVIpIrwlr_IA&G#PXukqMe z|6+P&`NrhEuRi|tHysr7Tbbn>lJ_2d7WZGp`O5NnzW4Bb^m7l6`O5Os(|qsY7i#^} z!z;_@^?MJ$jQ*{huPoo0=6esnjedW6W%-5pq}cGGV*4Y*FL-l2ewTCo%IK^2pW-7n zWO(o4m(st5kDqdx_a1&V{i`@%xy*YHzmfiNdgU_jJ$%h^as0>AE0=li;T!39=kY6- zdGFy{>CfhT8$zIbXTVdk^1F{~XR&F7w{Q&!=BauUzK6hhIWJhwE3C&+k9I zhhIVeJ9=gL{PR!m{r-9CyovYEx2Ak{kte%{22XVoUbguraFD+eDACCJ7fJln$IlXgineMAF%#;*26D;OZfj= z9qU)d{5TDq5@8Q>-81oO~@hi&@ zRrSvGdk;T*X80H1AM=&v^W*P5{2KaybH1{Ce*C?MuQ@5^zmxNo<@5W0@8MhMZ>Lw5 z&+GRdekuJfeEgN=htm5m@8PGP8teZKy|VngbpE}EUq*k(19AS9<@4*e_weiKucud* z&)1*#@LTEE&@0R5`;YhV9jC?d&*$@3S$=jpe(&KI(Z7}FPg#B>dGFz8bjAGlbH1{C zp6@;UFnvFdUs=8<&G+8#zk7ai;{A88l$(n@+5LAD=byIclyfY&+J;g{**O8|NO#xtiS#3asIYn9bQ>}IGum*;aAgdogZFVKEHqR z9)3Oj8J`ZXEZ>{vdtY7u>{x%7*3T@T|NMKq_3-2G2!AN&E6eBCKkwnU(_cleEZ>&a z?>&6$>738UPg%YxdGFz8(|?!qmF4s6ulMlt>F?$FQ1P>+s7b z-oK7a`HUh@cK_;qSImEVZT$R68DAgk&-1;<`sbV({`Q*i%JQSd*T9C1^?MIr*Au>< zURge0f8N6n(ckpczSaA$vV6Y(c@IBA|BnBJSC*fee}2jR(Zer3E7t#)XT|X=%jfIY zd-xUf)3(QaW%+#n^B#UP{UE)v{A!&1VneRj{>boS?}_zyZ;ScL=<)au6~C|{!+Q_k z(i{F(dS&@dRlU=D58wFS@L&6P%vY8l#wW#w518*g{Nne8U-x8qW$cgjFG`P}_weoK zgnvEfE6dMLKY#WfeqmquXXusXTk%P;;RDw1J^Y$;!+(VL)gQ^x+7--1ty4IkjWho5(T_@#XQC}V&4&UF60habNn zd>fy?%JRdz6x-9diXnz-+TDp;qaHyE6dMJ$L~G-vMa;?{@HQ-%JOsZ zNwMKW#r8*rpFThQ6Fh!p^mzP7@kz1a1HAX}<5!3On;w5=><_=bw)ju6$!mXP_$Akd zfBKoYewF3B()srue*0&`pYn8gW%+@0{do`He`EOf^86{w=kw=1{N^u){|wi!EI+n; z_3(EbzxVK?OTvGb>sOX<*mI)y9)9^9;a|o1%JM7I`S%`vaC!KL`TCK+n`~1ym-rrK*>x#+eH?55MHS=S> za@lr3W$a{kMA-@E$$M_Kc?q~rJA=g+%x;{3}~{(6xoJO8ae zjN|V-GJgK1toixhSw0`X_wY5Vc>a$KuPmS6e|rz#K>tOqUs*nX z|KUCS0{TbkmF4sO$9wqY^zY{SmCL;M@EholJt~f0Sw5eC@8JjTjq~^V_VCJO-h24E z`@%oY`O0P9d-z54OF3V;%zF<%u^v7d*(nDdq8^UsgGhu=v5;@8D|W%;(W ze(&L%ei8Hc;Nzz(-;})f@a^>7oUbgOA3yKm2k3vo^QSDIe}3*g{3!j4=#}O3&(FPw zU%EDq|La`8vV4C3;5~fv!+iXC{*>k0)A{orzL)+PdS&_T$$Jmq^UIij(xLJAE6evM z@4Y|&f1jT3e@JIO^WMX^)9=FLS1$A3!*|n9;p4Ad=Dmj> zq~DM8mCL;M@FVm$@%mRT^WMWRqra2qU%AYC4?j+SKF_~$nfD%k6a7Oxe&sUnJ$&t^ zxPFFt{K{qCd-x{$bNKivmwE5u+vum$E0=li;b+tTlg}UJGVeY70R3Ni{*=qS_wWno zKf=dfxy*YHzm)!3&Q~t;-ovk^|05qi>pNiLi{SvPli{PA5HK7y@#Lj=Q#eeIA2*l|Nfiz@B{QW zbH1{C{`ryj@EhrO;e2KJS!w;=!?$dX^}mSMpR#=Z{>OXxS@c8v{!3Xt|NO*z|Ni^@ z1rxvj9!UABB2V`7?_SQ|bZh+mQDx2VO2_X#*1w#-hhAAefB)!x_59O+o_-^0J=VX1`KDKeSC-G$ zkN5EF=x5R^%jcgTdJkXo*EoM`=#}O3&riIEZ=gS)URl019l!T}{vS){`|*@7xOVdM zKa2A})fB&fq^$X~@kz1aL#6nS_ddVnx`~hf8&d8l@??+ylE20I+xx(H{FF66-@m-a z`J1{W{5h`)uPmP*KkwmN>A%G5Pgy?SKfH&ZN&g3WW%;`F=l8sa@A^lq{~&s0`F#C) z58qGU&GV-$pUKQjDQ?%&V#E2GEHzT1mm*pT79_vg=}>G|?l z%Ks^O{sOY~>-QdhJ$)V5 zuPmR}?>&6owmAMCu3uR`uitz4M*6!rUs*ms|GbCqpnqcjIDg9Wwfq9e726*fzO(6# z)#t_@eEm~KkLOQ*{q!EbhyEwL{*>j{ysG#j#fFUe-owx6jQJmFiuEhY=j+#d_&M}# zFAJ|+=Dmj>rQiF2@XBT0d-!$qw{X64nfD%k>RaOYPvd;$GVeWnC;fpuf68Uvd-x&x zKXSfunfD%kIsFegU%AYC55I-}XYqPS*8KeX z<2}~jds6s0M~7FI&#yn;!w=CnbH1{CK7Q}vm&{{&)}H@!?qi`+5GA<@4*0_we2HBRqe~^7-}0d-&;J zius@6`jzGL_3J%+Fa5Nm`21lm^V%Oh{37oE!Xv{gmwE5u*J}NouUzK6ho3SU$KS>I z%4Obr_zwC`o
?>+on`gNSIT;{!pAERHx`O0P9d-%=txAOW|me1F}_we;!j`MdN zpMT2o`Sr(p_{H>(^6^ua&#yn;!*8X(mgi4dK3~7y`|D5FXD7b?yglW!i#*xu&-Aav z@$d4hxPFy2KfnHXkM;K~4*xfLW%>O2<30Rb`uo?#d}aB3|L`7ugnsG6;g#i^cmqYQ z*#5}yW6NXxjlT}BjDE8B&)&n2(;va(SC*fe=6esnemv%Xn_gLdPO%Pb$XLJk@Es3^ zzkps@K41Ud!}rlQ{W6YUSw5eC@8Rds-}^{-a{jy!Y_+55?pE9eE;$ue##$X{ZsqHE6eBk z-orQ3|DNktme2Pu@8MgXjQQ{6`BRq9_b>0^7tuG+E6eBmm-q0i=y@y{% z{~exxW%+#myocXH-+OMHf8{doJ$&82C5AysemwE5u=g{xN^(&Wo@8O5&pW=MwGVeY7Li$(m`d5~3FYaU5kSn%7GWKQerM&EeJV z@E6DVS4I!J_yxs(iVYdwd-&xq2>)juzp{M3e|itUhW>W0Us--ddjIS_{QLuB{;gcU zvV6Y&yoVp29{z;JIDX|a?>+pygTf#7lJLr9-h23=gTvp>`O0P9d-%Dp4SxaWE0=li z;Rk1ge-F=}a+&uYe&BWCpX7YyGVeWn{~_W3!uiT&-h24IL&NXJ>ql8W|NS-ZtH<9G z{&uc^kXb%oKi>QO`-1ByzJI+auGOmgK#M-%S4p z&R3RiOWu3W-2f1X}hKA(T@;YaAt z&Y!Y;e*N+uel~r}t>KmB^W*0|{0jP?e?7dieE$2p-otku9>@QZTf!^L&q(Lbd-y^6 zFMKP!vV4C0y@wy8|IM=S%JNNVzW4BJ>DO_-vV6XNy@#(mB98wTOJcsVeE$6d@8MhM z-@@~+ET8Xx-ov-I#r%)+_?6}J`!Da|m(zd$j#$64d`CKe-otOFKj7QpmE|`l?>+pc zBV+xSaK5s9e*C?MZ$2vgg0YydEZ>;sdk^1EKgRVdmwE5uyXl|)YRp%b&(B});rr?5 zeIvZGe186V55JavG3P7G=lR~lZ=#>Z`O5NnzW4Am-xTNnt&3y*%JO->_wYURzvX;o z`8?ly_*L{b-W2nd<;T+p2_E`VP^vd$HllLBe6a7EvmE{}K_ix_A*Bl%3pUuZl zSw5dX@8Rp|Ke059Us*n%KkwlO=}+bTTUmZXI)3lrXLrQ+od`uFnr zr!2oVdGFze-W>CH;p@M$e18ArJ^VuY7T&*=<@5d1d-$ox#r*wv|5cV>k=E}${5buU zy#Fi9_u!La!-tCPj|@M(Gv@z*?_ZSBHy6L!i(lA~;k}3NqhG@3ud;l;{=A1DqCe!D z@%Sst=j+dV_>J^6Ukk4+pXYlIzm0xA=PS$S`QF2Kza`G!3_gF9%e?pSE9qPK`lT$t zta|o$o`3J*`%j4Zvw8f=^7;6^ho49P7>{3BJ|DmL@SEs&*ZqrGek&J%T(SL;;n$xT z>)*uZuQGaEe+!fM9)4gTeD7D{@mH45$L~G-F#QI;|5cXH$L~G-X8PMXUs*oS_a46H z!dU;_^vY%4d-!_#E4Y4T`MiGb;RoqYbn&-1;9-$MT_Ucbun zdA|4XwHL+tdlTP(E6eBk-owwKzn1rJW%+^PA;N}SvHg+Z*VE7E>z^|E=Hl0u;ukh# zc<N`7w_Rm=%1ojF7w{Qub>~MSC(H@J$pOPpZD-Xm&Ey7GZ5=n zmd}r$_to{&pLa?45oY=2X}O0c@IBG|9j3?mTyV(y@y{){{dcq z%JQShdtY7urLq2FKFako%m3H+n)`i8-n zuUzK6hu=>B8b1G&%e?pS(}v>wt>S#;GVeWn7yXr-uUzK6haaL}{oy!%aE0=li;aljBn;XZkT;{!p@1dW;>rc7N zdk;UKet_p+xy*YHznp#v*RNdWy@%gO|4PnRF7w{QPyKkD{~z=IrCjE{hi{`lkJrC) znfD%k4t*W3Kjkv-J^Tp$zxn#7T;{#^_b<=={KWS!Q&XN^THN3L?ymbHe9)1J;BPWGdmTybHf9*YdP?KEMC-9=?VC zTpqu&d@o;skt?=8GW^12F@Kz189iP<^8Lqq_|^1ZtHk=1<@5RT9)9L+F~8-M@XBT0 zd-yf3Ya zlKV&VoiYE*&xt=jp{)7&&u@B<_0L`&zJK@d%JTX5Z@h;epl{%OW%>O4_a1&e{h9R2 z^7;D*@8QSj&)p@~uPi?^-9NmCuX!+ze~&%FE6eBgdk^10{}|V=EZ>&qdk^3BKQaH7 zx|pvlKTs?Y8*;_=M}}WbfAwzRmC@t=m)}2m55JZEWq`#T-mCL;M@C)eA-ZkbcmwE5um(XwJeC0ClJ^V`gWqkfBmwE5u z*U^vg{3(}t@8P%5cX9p7W!`)Ex{Y!DJizm(EZ<%{2eBbnY=30e;fb*1ZB<7uOHrH{UeXX@t;VqET7l!J^WJo z&UGL=#}O3`&aMbTj|gFRjglGKCj<<_*wKDeiL4~%zF<%hyI9PhgUB1-op>k_pJ}F zT;{!pUr2u==PQ?a@8OrxKgH`uxy*YHzncC7Jb%h%-h22B^grd}r(EW}hu=p3N1i`r z`S#*IfepE0`y<1*PL1oYhU-^GKiU1qd%yo&_=So0pTU%`D)MCapIMxL#guseudMm` z{^LE?Kks?5{x{Mq%eNNCfejhQ?>+nq`j)zwuPmSc{O4^B#U3 z{UcnzvV8vg+up-3IVE0=li;fLri+B3XznfD%kIsNZBU%AYC55I-}!#sb=W!`)EX}xj&uHpGpF7w{Q z_s}22^(&Wo@8K8H{}0cfviz*-vuEe?$9woq^etS!vV6XNy!ZRZA&Vy7KMqUzgd$IN z|7dz|oWDDEi+{gHdB^rZn|nTOl~zb+;Y{b^=toHS**IT>Z+;5)a2rp zORE;cFuEA742#L7;r}`Jbq?pgy6^Afp*fH9dG7W8yg#4s=lk7gJ{$hCFOKt9E_v_a zm(C4;=nmnPOWu3+p=lf$3Q`N}2lJ^Y%_h5rcmPr2m1hwq;k{#;&v zW%+#ly@wy5ujlzI%jfIoJ^bcVV*VDcU%BMHhaWmM{50Nw%JLKOH`NP2)a-a<`1<+b zujBqJqsRBJyngTf`T1CSUOtiXjz20qKTnVOw;dGsUjwt|=kH(MWBs$v2>)zjcxCzg z{PZ4v9{n=TSC-G8AKt^Sp#M4NE6aCOdx#fu&5lQgZ|I2iUvezh-%y|8Kc|W%>O6 z^B#UZeLeS2S$Sa>;uSznFe0_fNUx zy@&6o|03@{W%+#nc@IB8-^BA*me1GEd-w@|iT#_*^H(l;@8MhMKg{QsvV8vj>^=N) z`u}jgvV2~@_x}9vsh;m`)q7m8U#EOk;rYLT^FR2a`1O;r=I7_X_gMem@8P@XU(NGZE_v_aSJGd^`O5Nr>DM3L z!_WUm?BA_B#QK%x^Y?%6;WyD=v3+=D`TYIgd-%E=WB%Q|e#-Ls^UHhqN%Y_5`jzGL z`n`u=LVq&XuPmR}?>&4k{dLdoIQ-{7D$D2JzwsWv@98-IPwW``r!1eJKiB z!?)AFj$Ro(zCY#ldk?>Xen-B4l;!jKy@ww=DbD{1dS&@M-+TD^^nJX3%JO->_wdW< z4}LE0KV|v+{PKSI{OJeA#QnE{x#YcvuiGci|2ocBE_v_aXV4$X=dW_fdk?>m{>5Cs za>;uSzncCrzJHZV-h22h^!xGst1O@2zuv=-dwuNRx43>~`F#Dnhi{_)GWTD(`-Asb|Fk!RzisF6%JTX9gZJ<)^xxejyt2H$6Cq>&yoX;!e+JjDET8Wm z@8Q?dpU3qp%jf5h_wbGT#raRCSC-GuAMfGY>F?zEE6eB4Z|~t3(2sj*?4PoH{`Y6R zhwnd>*MHaW%JO;tyoVp4e~SCBET8}V8SmjIelX^L>g6$CS-!ct?sy^B?097OR{HPo z{FTw;{gc=4J$wg!+bd$evV5NJJ^UK_*74z$<@0>+;n&l@ye_=5{H*F6@ItQH@yPI# zXT|=#@nzwa(T{fi-orQ1Z{+za%jfyt!!My<$MaW~&*$$wd=LG{c>c=rGpqB!3%O>; zBf}5TpThH3MnBs5dk38D&t1O@Q&wKa<^wT(BSw8Qd_wY;T z-^Kf1x#Ycv@1ftG*I!va-~ZmjZ=v6j*I!vauitz4aUY8PznuH0ET8w!d-yr@ckuj` z<@0>+;pfx8i_c$W`Nh?Jgcownjz@+c`{7vs{(Sx^qsRT%RQ-h)GQ9Wj&GbFI|CQzQ z{(BGKMZcQ&zp{KjfA9VK!#)>|{QfXGx~-}I5# zzhD17yt4e<;oW;-|GbCqq5uBc@XGS}_Yb^>Ur&GkP2rX0>(hMi;Ros8u|B+V$$JmK zjeaxNuPmR}?>+pakH-Ej=6vOn_a1&G{nOlkW%>O5&3pKE`ZN9-=dUcE|M`da@bl-y z`Y+)AE6cZ~{r4Vz1N~9F|CHsIB=0@^+>gclFZ2AB<@0>+;n&g6;q_CNpO)r(4?p(f zF~9F`v46_)oymI--$lO@*RL#Jm%R7zOX=T7uPmSMfA8UY=(k-L>sOX%chg_W`&U^$fB*0vehdAP^vd#i{occmYmM_i zdtL0GvV4C2dk;U8{ww|AmF4sO?>+ng{pmM`SC-H7y@#Ll$yonkH-uM~&-1;9Urj&x zAK{hdXQk`sJ^c9NV*YN|hgX)*^Sy^(PX7?kUs*oS_a1&L{Ysv{vV5NJJ$%>kvHtly ze`Wc6|9KC;p8i;#zp{Lu?>&5bTg-nW-+#*T`Tq4Dej)u7-oMK7dH=j0UO)Xq{QO$a zET89l55JkmzlHa|vV1;&?}yj_sW|`LdHokM%jf&wd-y&c{}A_ISw7GA9)9)-G5<#H zpR#=3Kkwmt=&$4XE6eBk-orP2I_CHD^HW(qfB*0vzMa0t&u?Y<{QcQ`_#yh2alW$r zvh@D<9)3xCtp94hf0X6(_46Kn1N{ZOe#-KB|Gf9_&zsWsY!~5^8;g#j;yrxV=fc+?5MEinG3}rC z@O|`uc}sX@`L^V}ho3wz=I^+FcxCx~|9TI=Sw7!?-or1YKa=G`4#E>y@zi|k)9?1S@XGS}{Jn>7rEh*?c;%A!9=?nI&)k1y`MiGb;k)U3 zIA2*luitz4we%mF8tYeF4VHWtPwTujA3fujTRY zdL8fIY{++!3%JTX8dk^2dKIWgt^H-M7*WY{iLHbMi z`K2tMufO;3bvMWSNxXlQ59{I5A*x#Ycv z@4hGee9l)cdGFyT-xt1}`=?y;-oy7i5PpdBl}p}x_^JO2zlHOaOWu3TS`b}AWVS4|055I=~ zO#b>uSw4UN^d7$b-!cDZoUbgO-@o3&chi5EURgdr|GbAE_gKuY=l3sV`Q~)~-owwN zU(L^NW%>O1?LGWz`m^}`Sy{d-&G#O@>G4?qKHPt0`R?Sshu=j18@_*(<@58)d;k5P z|F?YPKR;cX^2Jpi?Vq2v|0mYJ>nq~1h2UizKsmE~tA?>+p4r(^y` zp1-nu{`~eHehPgX=PS$S=a={JYv{ks>#r<7Kds+;_^JPm_3yn$?4PoHUcdM7&Ga|z z6kb`rd5>5Ca?OrMhVR+;p^WR z{@#~|SC-H7y@#K*fB0H`cxCxn!@Kvw{&^3-g8pwje`WbR-+TDMH^=_wW-QeM@9nYv{doP9<@5dPJ^Z-o;s1~Or!1f6dk;V3 zpzzOf|CHtP{&^3-jQ(r9f0gC)eDC2mHpcuGetsy+FHHB3_waKL3BR28ud;l5`uy}B zzVDsk@8JEbEdM|I&*Rawdp>6PW{)Bbx8zl#1qdS&_i{mFayb@XHCmF1_W`Q8uj|KV}| z7txPnme1e+y!ZWoD(&~SlwbOj(f5BU=Y8Ps@$U~SYkod|@3H=w^sDKW<@58?d-xUf z3+a{RJJSAn58u!n`}f_y#rl=y8%%LTy!Y^}^e?4Xme2Q}_we)S7t<@3 zy!Y^3^bd0Xl;!jF^B%sNzUihoe`Wdn{_`Gw8~v^~hgX(wO#AOW{PZK@`rXF!SC-Ge z|KvUVLi%etUs=92&G#ODfWC`fSw64dd-#d(j`bf#uPmR}?>&4Q{aM_9W%;)B{P!Nd ze@4vzGrh8WLpp!&;Roq=;{Bs6pPxV8!`B@d^AF_vPg%Y@&G#OD6@AMsasMdGPe|T- z__g#O<9ucLJl}ixc}KplF~qhtN&bG~xPdk;U8zUd#a zer5TlY7g;3uG#U(@Qdj8;{BtH9{Zo~AMfG2>Fas^%JTXAy@%gSe?Q;<%JO->_wZwD zv487%{>t+C`gspOg}#UDSC-G~_a1&e{gb?Y%JQAn9^!>uv*VHBhv>h?^(&(v?f&=P zzrXyV`hL<@8NDt^c}?N_OT+tO|BikrzCS8!emj3cWUSwNtiOx?*?)ysme2d|J^V`g z=Qv+kz9G%`9)2DDB6?-{{Q2!Y{AT)Za{bEkOVWJr;TN{V{;lSGW%>O1<30SQ4}|~b z=GZ@F`TYIId-x&x!|0Xe^S?jlJ^YwsV*a@g#C&D>eEq$LZ>QhD`O5P7{p&saLi+2t z|H|?mY5%<+K7aZlu78MGK3_lY;TL@<&j0%l#`!Cky!Y@89}a)^V0h({_a1%~{d1hJ zT=L$-&zK$adpTdZ;uSzm$F! z?;mCPW$FI$9)8+KWBzlTuPmSMAMgG7`>~&neEznkJg>^5{rbJ1^T*#B_m8sX=l7rY zSpU>HvHmr;gjbf&&tLE1XVZU?^OfcE^T&Jmx%Ai4E0?_Y@C)gWrdO8F&u{PHm(d@| z^H-M7*Ux+SsUM5|d;3k?KW6#7|2iH${8AoY$3H(=Sw27iyoX;&-^ukW%jf5x_wbWH z9_#-l*RL#}&)<9aHS{ev$N4Lly!Y@epWyzj53gME-otOAzk>6XOWu3D|Cr_T z^GnC0A3lE`e=>br^7;AWJ^Vr*e*nF*=1))S_a1&V{T6y<`TYF$-uHi9+V7iE{&!*j z2RQ%SeP2BM=SL}PzJ5)CT&w=ad#u0tQ?dU~PYSOrKP{cV_wXI`Z{>Vt`TYF!9)2t+C|3B?L{Gt=%{J+HYE6eB4U+>|^ekS})ynmJD^Yg=d_y+nPasA5jP57JYg&%5m zJTiRiXJh{O$#MOZ(c||IwpD-Og$(b#KRud9>&EoVhXoM-Rq-KT=uq z^ZUvi7R-zFU)>zvf0Q*p|N6yytbY^zx9FAS^Zn~R z{PpgrM{UMyMET7l!J$wiK z?wqeIpZDK;_yPJSIA2*lKmWXkAEJLB=PS$S&oA%c=bakY?+#u+W%-75|9TIJLX}6m|LaeS^>6vn4#VGHl{LRD&G#Pb@1Vc$2jP|F^Yg=d z_#XP5e;i&}KL7i>-osCrAM0=C`jzGL_4girDt$ZWE6dMH=kGmyC;g)r#`=}z*C+2i z{Or?X{XgOQmF4sLy@#Ji|CyyRUs*oC|GXbwKmB{p=lYrD^Y!nv9)6H{XI_70`TYIe zd-(Zh#QAssFy<@E=kM>{!*|nP%=IhF=kFih!w<+Wi}}j(4e9!M4?m_O*8ec)E6eBm z-+TCJ^k;Mbl;!j1xA*X^^nJYk%JTX9yZ7*OzYyzhO1?LB<`f>{5{`213qUzO&258qFJHRmhKkKHkT z0_2(e^-As=AS-4e*L1X`T70h{qX+LkDV8OEwg<7{O}%r6OW(q zx$w&JxCVG35t=lW%;4Bf8N8d{8sGW7dT&8KJTCRzJJ$O`_sl*_+f3z1BLzTc6de7=9Zho8GT{CDY<<@58? zd-$dFNB<}GPgy>nzxVJf=`ZE|qb%QCT|>N(Yj!*`{8svx4#j+B^rKyW@8QQ^5$Auw zw(!dGdA|4XE%bNu{FUYN`FjuFPJhgQW4^Ndtm-`QLay2I$nb0E&*1qhqaW@3y@y{< zzboH=%JO->_wbW{ANx1y$ymR#d_I5g;hX4}^Zb?NXIAHd7jn&xM}}WSe-z(;%IHTs zfA8VD>BsQ;DVMzW@N4Mj@cvbn&->>+eBB>n|6a!RE6eBo^B#UO{VMH0bII#?^zcnQ zzKQq0vV6Y(y@&6lU&8%Ume1?=9)2197+!y6`MiJL!*8KKo%gS@{Nn07@j|ZI@yPHC z*Tnw+gYO?@^tgYTs=x3;hW8%6m%g3*uPmR>-+TBC^qYD9%JO;tz4y=WbALJV^ZV;5 zf4|D3eSe*JWt{&h{QOha{QUXtJ=Q;+{?Cuc`(IhU8-G*1@B{YGd-#oijQJb3gjdG# z!|&f6pkMIb!*9Jd{P|qJ^7B6U^YgujAKw@LS*~AMzH$5b36QaV@8M@$7ychxWBtnV ztJ8e%;m7oce=EJR{EXziAD&Nt_`f-ySw8Ro4C~=HUmx>tc`Uqg$$JmK_%GqF=X~Xo z_a1)QU&A+Y|CLMLd-x513%>)`uUzup!!KAD{u$nX$|dhTe8Y|5&*gmOlJ_3I@22qQ zaQ~D`-h24=o5O#b`=>0w3V&0*@I%dxM~0txYxu*ser5D{|K2M*fa9^^Ny5T zsyy2Br*}il|Lc=48UFQ`vgYUKkM~&rM*98fmF4sE*L(P_^pE@}<}1s0R(pUKGWO4V z_>S9R{Xd{rme2FOhhI#8EWNUP&+zmY=6es{czev>fnHfY&-WgF7X6=}i1SyL&!4~E z!>^z}oBOXUpMU?>d-%FLV*O`uzOsD&{Xg&Fr_*mY6zhLJSNn$hw?6Hk_wY06pW7N< zS@ZMyy@y{#Kb!NF<@5e~55JavI?rEOz9X&Qdw>5uo!)QHr2O(rMt}b`Z;bsv?D05% zWzEm;Kku>rR{HUeg;$mzNbC0=zUj`G|1iC>eE#*T_wXy}&!JbA&%b{49)2VJJ&(lt zmE~99Z>kr5sM+zz@SXpR^`FB1Q$|1h{iXU5FJyS{;g``L$@MGCPr~0+FZ=-SJ$&y# z%%AgUtX~<&WBx$(7hdw-!!N%({7(N4uUzup!!Nui{ASKqE_v_aTkj3u!THK1?>&6e zrttf3iS;X&y!Y@8_l182*RNdi-ouZ%Kl~M(uUzup!w=B^nDdoO-h24o2V(v@?w_*! z;PBPA>(ArS!>n(saQn1^EiH+lZb^7-@2 zd-!_#dj{hCmF1`M0~EPt$0Nfx?|SI)v*9kzS4KbD^UHhqIrJak`76tB+qe3Osuwcm zdk;VR;Fv$>?pVLFe7=6(!;fzaztg?pl}p}x_+I+WoUdH+-owv7B<6Q;zH-TX4?p?P z@cZ8r>sKy$@8LJnzk=&mE_v_a7r!&+U%~mxCGS0ab5r;qbG~xPdk;TEzmEH-EWdX6 z?s?(<@gBbKT`~W2T)(n>zJI*;=hw-<8u|P>CFQfLJld~cIu48Zw>=csPg(Qx^UHgz ze+m7&9t^K6KO>#L_wXC(ci?kr5sM+zz@LkQ}Kd?F0 zuZ$kgkNo`d9)219xm>@peE$CDJ^c71V*Y9Wiuua&t<@UvLdN>Nho4KoBiFAipV#j_ z{6hLY?~nP)@{<~e$3H*cd-(3NV*Nknd}aCk>j&@Q*Uk;(Cfc- zH^^M_-ow}R#`!

!&Q=8n^HB^Sy_kN57o=r!1fEU+?|-|N38#eEz>7<#$$jwCDe7 z&cE{ExPO&3KR^Gy$NJaPpG~hU-=5Cjd-%qyWB*#{mF4sG^B%s9eha;_e186U58pw5 z1b_XkT=L$-FQUJL&p&1PeE#0UZ>7J0^OfcE^V56y@z=!u?ZWd{me1e+z4!ZPFx@W? zr95`!==V=2=dbu@+&{{ipYI>Nzuv>op}&jsmF4sO=RN#9`gicxKguQVJ$xtq_S%1D`T6Pnr{mGX5Apc3 zc>c=r4as{CKcO%7@ATVa|CHtDa08HQc04lt{0-rk^8A(2kM`>~@8K8GH*x*S^7-FC z@gBZ^bIc!mN3362KHq=d!w=B^b7OerlJ_2di2f&>uUzup!`D3=>wiDrKguQVJ^W<) ze{sHY$$JmqME@IJf8~<*9)31`C-+aeWG>{!4C+fBvbg`T6mzah9eQ)jSC((b-&8OB0Pj6~|D)m0q*uoA*uVVw?>+n$`mf&-^OfcE z=b!iR?OS60$rc)^7;AiJ$w)SYd6IDl}p}x_+I*L{|K)vzaD>6 zz3@ZLjz@-H@>rbz=Q&>){b={E_rvR_znuHm!z|x|zo}mM0rS0w-}ZRSUvOirUm3?^ ze!hRahi`i#{5#f%S1x();n)5reBDjql}p}x_-RAoFXDXVlJ_2d*;C;^$oa}8?>+q3 z|Av1v_fNUxy@#K>E&RQluUzup!>@lP{I#5~T=L$-H$E5sAijT;`u=`Y|v|5lc7NZ((*hab0R%)f;5 zmF4sPdk^10|0?dEvV2{d?>+p~H^ux{Jr(<>ET89l4?lzc#;3z8m%R7zt@M|0zH-TX z58pw5DDPk8lJ_2dG5w>QuUzup!>^$KJFmZT$$JmqOMfQ!Pr2m1hu=W|Nv>bHB!%uy4+&>3!{mSS^`~3IbpMR5oGxGWO#*`1L@@UV$8Jz#I zzs2XTvgYUKpZ8dQ8~yET`T5T*pYMMij~;#jkFWo0cxCzg{PG^Yn|>X=a>;uSzn1FT7UlkZ|HdZ{O}W+fKX-P_-<|W7<>y!H z#0$A*$0NfJ&@beCW%RiJ^1uJ$J^c7%WBz%ZuPmRR|K7tl&^O)?`>!mY_s@Iy>GXH} zCA@OUdk^12|7XruE_v_a+vyMI{jXf|-or1XAItSCm%R7zOX;`r{#7n{@8MU{f1UG{ zOWu3f8eh8?^h{netv#>kM+-@|K*+h?_V*?=lfsBqlcf%<7eF-URi$p?$v?S z3mN<8J$%Q!*uP!=8D3dF&-WgFG5teazq0)1^!>?u_yu2$`JLQ9W%-Wb)xWTQ@8P%7 zPo`Iv&%b}*J^ZAv#r#{jf6DUt{Jn>7r2pZ@*gxfx_a1&0{YiK5`ZJfjjz*-osBiH}0SRaK5tq|J*-39=$(*&j0Pm?{62R{Oc-@_WiAqKi`Hf-hcM<Zeo1=%c@IDR!dU4 z@1nn$^OfcE^Ur(u)$}js`76uk?{D72ucd!Ky>iKW4?jTv-p<&6W%+#nc@MwwcYObS zHN0}kdk??ivhcTYzH-TX55NBM@U49RD3`qV@atBGe!g z{?Gg8J$(P~!~c}?l}q!zhwuAC_-}K*a>;uS-@7LK<=j7I`RVwZ>V+R_c04lt(3Rmo z!u2boAMO0T_vh~iSB-rBekkQrsyy2Bck3Tx{!3r-+TC}gE9aA zasQO%^YhPp_#XO$=#}N0u=&*sxn{>B!*8a43(sE}J?@|U{PP}u%!9H1#q`Q0?>&4y z{l&a~%JO;ty@#Jd|E<@=^;0f+@8O&2k9>7_<&yUveh&SMc>R@2-h24@^xx%t<&yUv zei8i#xqr$f?>&4s{ad(y$|dhT{2KZvIA6Ksy@y{d#qdI|+40Em_5X_d z?=J42GJ4#<|8xKFc=Z1Kd)@CwKL7Sf`M@fV_WYZ|pYQKC#-Bf{toix*=RMXxgTC`0 z;g#j{`n`v5rT^I9!Yj+?-@o%7zUSH4zh}69W%)ecd-y*3UantRKL7rm_wZwOZ5qC| z-{5>@`FYhLcp=y9c>FE=Jo=|NUl~2FfByYD@8OrxH*>zSeE$CKJ$xVidhWlneBM9r z;WyHMWnEl9<&yUvek=WPe-E!*^4`ObuaEtIkn@#G-h22-^grQz<&yUvzLEax+&|@# z_a1&0{S>ZWx#YcvpG!Z1>sKy$@8LV?n|S{z%Qsc`AYRBdJ02OnkN#fHS4KbD^UHgG ze%+p)S9hlTaN+s2k@KH^PyF*YWzEmeFYmGbA^MF+gjbf=8j*4S-oww?J?_6f-W^_9 zKEMCGhwr4n`mpfI^4s_TK*oIU;TIkr^Zzs>yfTg-ZU4Q8UrK*8*RL!;`3==iRK1Wf z-+TDpxiSA#?!U79l41RV_a1)MN#VcB`O5N5$$JmKg#M+RuPmSU-+TBq^!sxEl;!jH zNAKa+(a)n-E_v_aH_^9n{mSzB`RhIWHu|?69@k%4KHtCI!?%7e_W$;uSKl#+~hx7fXT=L$-FFGy!7_MKrr{T)(n>zJI(|hqvhB%SL|x{BFuW zt@3E!KPNAU`P=oy{r7yXeoj2U^7Gq!tiPH5*lWToYyJ8C<30Qw`p;Y&URgdrKfH(U zq(Ahk@XGS}`>Xfx>lVlP_woFd<@5TzhaaS0!t+;_&);9YhoAJbn13nHUs--WE^hTg zuG#U(@Js2}a=tQpT)*knUw9$Idk?>k{!Kc6X8HX5)$!=zH}Uv0=#@*}d-x&xNj!gL z`F#Dohi|wj_U|{m{>t+C`gspOo&LjD$Ni&R^4`O@&>z|xUb*DGhi|9v<$UFm_a1&B z{h6GvT=L$-FQq?``=?y;-ovk?-+}8_E_v_a`{|$HeC3k&9)5s+ci#WX@=eu!iWhRt zjz@-XxH#^gE4hEl=qFWw{m=cw`f&iQ$#y^ZUAsFO@Yv-+$g?{r&XquL`d$ zpRd37@KbwYe*2!`mF4sPdk;UG{tuk5ET89l58q4Q$N9?gdA|4XgY=U*Us=8t7q5CD z*X(#?_!*bP`R~v9%IHVC|GbBvM}H5mpR#ynhOEZjexod3uh z9_44URge0Kkwnk{VMivXi9ix`F#Dnho4IS{x^kJme2FOhhIv6 z4A-wLpXYlI-%I~{dS&@mUJ&G(9ghs(@as7LH9UW1^rPKB-owwJe-*v5e7=9Yho3{= zPOmJVpI_el{r8D0M&5tNrF>?UNBjI7x-`yz-mG|jC~JPc|GfA4Z~Xnp`EN@3@G6fs zzy3Ed|F{>&{i9r(?>+W!D*cW-@cv_#-{J&@bWnE6eBm$9wqA^jB;b=dUckZud9=;uSzv}MrH*&sm$$JmK z@}BS~jg9%rCGS0a&%NPy=lYdP-h22Jo5DZB>#tn$-otm_7k&ljE0?_Y@XPNH-^u+` zE_v_ampu@^pZljQpa1(|-VdMuVEB)6{VSN|^Znz!KffMI&#OmL-u@4xKfk&kjQKx% zD!#ufYkq!ydXM$@()SF7SC-H3Kkwl;(4WBh%JS{i`wlPUnjMb}-}J9o{~PF)(U11| z=RJHo{jK!M^7;AYJ^TXt{hp5VS1x();TO{%^F(-M`S$8O@ItQH@yPH)^k;FtGWyY; zf8N8_Jrw)5nb%KQzN7ki@IuCX@8P@XH*o#R^7;CE55JuL{3ql5l}p}x_|^0$|0le1 z$$JmKj{YS)f8~<*9)6JiH=M6r^4`Ob*&O@-b?%>X$$Jk!fxemhr(E*h!%wAe;QEzI z-h22N^ljWfW%;J+6!Ai?+40EmUGz_KzB2mJ?qBcy`S;7}`PNn$y?&K)f8qJJob#Xf zQ+$6^*8KeZ^B(J8Lw|E`cxCxs{7v=34>*7C;TJp-*Z8ppZDK; z_yzRm&@0RT&;Idv^zd7m2e0A&S&#kypZ&8QzWK3O|K9YH0IvHvv~Kc^!`oKke~Y{}f(7W%+#ly@#Jc|Gw*D|CCGK zd-yr@mvjG=<@5FT9=?PAlUK)lW%<1S-or1aznWgT>EI&3q|GkIrI6LO=$n#g0&-ah_{`r6UnvtLX9VvHJd9>fZncf-m-_#Jl z{#Dle{QU7A>z_q`{@&r0<=d)jix+aujz@-HP5-{v@Yny$=<)v9QvHP&GQ5sQhF|g3 zSpU|&!YiYPZ?FEs3mM*f_`0u!Ka^fszIj-`;Jt^RMSqvhpIJVCe&~4g@a;T)!K7Hf zvV8vj;641ju2}y&6?t(*)A@T3-$TEE=dUcE=X(#oY)#C+p7+19e7^s^hhIhiQQp7G@^jMqy@#*6 zGUm7Q{#BOG>-Qdh%pb$=%j>5spYLDq;hX8l^7<*u=lR~lPrEASKgsh~me2Q(_wZfx zTY3J<@_D}Z@EyG|zlEP4%JK`-{(BEUM86xKU&``B$$JmK= z{2JcB%JTXAy>G)oeC>DT$nP)vr~IBOkM{j#(zP-Fnfv1Tp{)7&`-}Hje-r)go5Cy0 zPv`oOYj!*`d&9moAsmY+AQU+~_;uc!YJ=PS!kN#1+-G4(Nj+Wm3<%JTX9gZJ?D z^xvUZme1dxyoaB-d(1zO=dUckKCRz-_$~Ci-5u*!me2Q(_wbYVi247yC%kgWdk^1A z|2xiCE_v_am(rhjZ_HONdGF!Z(Lc-i$|dhT{J05m{@3vRqg?Xd!#B}C#_O*vpWi>; z!_TJwA@^TdK3_lY;TO{%$MaV%dGF!->96PhE6cZ}`_Fs$39pR(o5A%f%jflb@6X?@ z>3REP%5{Gn{rTI%`IFbi{iCe;`T6TT)<2j2{_Dak%Xg>q_a44(&p7{M{}NtVz9V_> z;k)SPT_0XqerodG!>^{_QupZ@eMauZ$k&pYI><;p>)iKF?oSKHopy!#B}i!S|1{ zd_%PcypXYe@8MhNkK_84<@5Tzhu=W|S*~AMKCj<<_;Ejo^Zz*4uPony#aAz6tlxY1 z$@FjM`jzGLzdztT{Inm&{6~2IE6eBShxhOs=&%2CTz}<~_a1)1`7wXdpTaAby!Y@8 z%fcVb=bv)Pdk^17zn=4zOWu3<_8-OkW!yjIlJ_2d`~~6H^7*AKpPwJz!%w0=nftFS zpRb?y@cr}$@%)ub-h24D7smR3sLvl}`3=K&?+f>@jzct zxyt+C_m8}XpVS@ae-7s>%jZ9T*?ah|i^6YL zi~V~(^ZfHa|L`7uCH>C4{>qx4ufO;3lP`|>i+TSk%jfIwJ$wiK1YSR7`F#DnhhIeh zH}0RZd_%Plcp=y9cx3n<`e*q6zg0$$`)5)5{bTRpr(YT8{}k7+ET5mB-ov-hf0+BH zET8}UMDO7nZ;bi#kBsZDET7;1-otm_6n?MwhF30m@8QSa9R5W|g;y?l@8Rd)68=2S zS1x();WyqI{xHs0E_v_an{NxhANNnW+q1yTYHt^()Kg`^S6#{5$Qck)MB`Px-4=9_{!4<_yIAy@%ram$K&P z&p+?6{to(GpA4@oKfQVns{%EdWSw8>%pZD;~rpEjY^vd%2^UHhq@ox#=Nv|xQ_s@IyX8QN>{FUYN^V@s) z+4QG#|CQzQeDC2G)7SqeuAg$rdk^1F{~YHlm%R7zV-AS@Tfq6sCGS1_boxV{i1jO% zy!Y_)==bOPl}p}x_!acma=voOdk;TAe>vwXm%R7z6W$v8_Ydx$vV8vj;5~dh{Q|CE zSw7!C-uv_G^}QpXUvEfxdX-0eel6$xZ@zN;m`T-8WzEmeFYmGbHS}jr2(K)k*Y7?2 zR{E273$HAnpI_d?4}CQDf9#&&mE|W?w>VzNH9H;|zHUzV%ej7K^mu;e=a={J1LuT4 zjQgi7pPyge!?$#Xe}wau<@5e|58p+91?MZv=jWIA@XP4`$^BQB&-1;9Ur+z#J!1cr zOWu3<@n4PeKXLc)$|dhTd^7$1oUdH+-or1TznJrtOWu3t=PS$S`^S5Ke%+RyR~u7)yzuFWWzEmeFYmGbG3UnqJ<9)nnX-KT^{4mnlj$#`SC-HJ{+IXgi|PNy^()Kg z=a={JE9j@(7U!=l-%*_+UdS~&9vQx&E6)EZdS&!@{^j+158p-qS$bvpyno)qucYsx zS1x();WyBq!u?Y&dGG!H`_a`SKR=hJ{M#yz_W3#Hyx6~wZy*2v7iG=Q_n-Gz|3v!z zwhON;pRd37@YCqq>6PX4{(BEUhyKDB#eC(G_a45J{vrPNtCZ!(rhk9Vd-$&9v40P6 z|CHtP`Fjt)oc_l=e`Wb4>Gwapho5#?%zu#QuPnc;dJo`*T(jem;n&e`m0= z{=y3x-h24w%VYkBIA2*lUqA2R=hAJ`6;C$th_a1&LedBX+{>mlqJ^c99as4K8{mLcpJ^Up48#rIN z_I|NjwNAJ)I5`U@}od^mp{j|@NO zin#v2rB_A|pWnaU!*|l}#Putey!Y@u^dHjsGt2i@YrqQ`>(}wf@N<73>)&TaoWC-9 ztiQYZ3om4N@8RqI5dKf}%JTXAy@#Jpzt>SQU%BMHhi|1nyg9tG{DS?5m;e0wy@%g8 z80$ZS^OfcE{p&saR{Do{{gvg%>^E}0_rrdd=Hazn$@On#me2Q}_wZf2hClh;asJ9B z?>+p)`tU~|5nj3Ey@y{(e;em3m%R7z&AY|?Z*jhI$$JmKf&NtPpK{524?lPJn7=32 zuUzup!;je`{EN7L<&yUvehK|sc>gHN_r&e<{Qc`aeA9%OzmD^j<@5dHy+40{gD zclVUvSmn{4zw0^w=Fi0Er?Tef=dbrz{}%ckKO0_Ies(&4@8M^>GR}V~=PS!kPu_b! z|C`eJ-jeeDh4Wv?`R5-PzyGPM`T6|4$NHDix4$jCvi!ERe(&Lz?iuHQ^a0_O<=fMr z-{L*|n74%Q=lYf9^YhPp_zCns<@%N77uUxLAlK}8WcU?F#QeiKUl~0$N`-orP}2!Hfj!z-7(_wdt? z4F7k|S1x();inxHei7#@m%R7zQ{NlDgZrmk^4`NwnHj#G>sKy$@8KsO9eym=uUzup z!%wP(--q{)vV8vU_jnIK=Y8SVa=x;BzJI*;=TBGP$mj1jQvN}eM|=LxZi)HV92}qD z%9@{_Ki*^g^XX4ID7><~)`(oQsOXv$1kABnD0G&+r=^eXwFxb@2nhN^4`M_(r@H^W%+f%pZDIwuU--J zH*o)y<@5e~4?po2;ZJ!7zrQh;ypBf?zwnpgTc?LtE_v_aH}!D+oUdH+-owxMRrnuq zzH-TX58w0a@ZaJ7DVMzW@O77le=XOqT=L$-&;L#MS91NzCGS1_hTn#t!uv;AKL7dU z-or2aUHCh6{g~zR{iEa2tHUk&jz5ij{xqh1RFy}2{%pD|=09E+|NKT-^Yin^d#r!V z<>8O253elWhQ(DcG@8MU_*S|dGE6eBq{+Rdhb$7@7k8uB$<@5I^@8K8H|AOC)jNe(me2FOhaaNfVVCgA^7;Pr9)9M1vHpvB{>t)szW4B3=zqrZ zSC-H7y@zkUKj!bn`&U^$&-WgFkp3v1zp{M(_iw$2pY}k^-^BA*me2FOhu=W|5&6|mRSEb?w_)J zUcdM7P4wfqer5T*e(&LD(VxlnE6eBipZD+!=nvc{_Fq{(|M!!;hwmSI#PE0PUvd4) z^7;Pp9)5tnm;0wIpa1(w-osCPWz4^f>sOY~^Sy_kMt|DAasJ9B?>+oX`lDVSUb*DG zhi{`F;C$th_a1%${Wm#Zx#YcvUqXK(_fNUxy@&6ie>K;yT=L$-_t8JY`N}2lJ^V)c zYkB`G%jf&wd-$;qdb3Q`TYF#9)A49IRE3her5RuX}+Jv@KqlJ_2dJ^iITe`Wc6{k(^7es%2M65c<` z^7;CC55I`Mj`Nk}^Zt7eKkhX#|2Eyf%<_5vbv%0bDLnosynf2^`T65L{4DyZpO5RO zEZ@YR0J&zzBf~FwcdY-by#C7QvG)A@@E*R0{u4ZZW%+IC&rk9me#OZ#|9q}rSw6r2 zy@wy5e^W=CzjDcY4?p2^G5@t^gjX(k@8MhMmvFvv$$JmqMgK9*S1x();d|+i;r=O? zy!Y@!^#A01<&yUve(Jo~zdJZzx#YcvZ>PVT_rJ1yzW=?4UrgV|=Z~^{{`~bGzTuQu z{{y^!%JMDMdjK!wnjMb}Kac*0+&^XXc>m=4*L(l`eR==L&);2Ao>b-0K7Utm{-U?V zzrU)i`T6tLd#t~Y{-kN)mF4sLy@%gMe=z4O%jf5}_waL1js4%m`O5P7*FWCFFQxwj z=PS$S&oA%cd+5g<$bbKrx#V>`diY)*f6!aPE6a~f&tLE1`+gYbe=O%K%jf5>_wXC( zf5H7zme2qHFYkxX|C*S;itF!Tme1GUd-zQ}{!?#_^H(l;@8Kt28}pkF2(Mi7-owwL zU&r~%CGS1_BKog#zH-TX58p?BBKJ?Z;1QE@A~w-TbuITh3DT^&L2E0{`tSM=I7_1_gH`3 zpJM;cI48Wae0z1Ccp=y9cx3nv`aS5C(c}4_Kfk<(UrxX0*)d;PKL7b6-ouaWkM*BK zuPmRRf8N7Spzozumd}5Fn)iPF&bxl(=hvc?&#&@mpI;3(#QLv2IDY>_S@ZMt^B(JO zq<`HZ;g#j{_46LSo4&s>ys~`0e%`~cr9Y5fSw8Q-_wWPskMjJL<@5FT9=`dnv43ZB zzOsD2e%`~+{CoJ*xPQv>dH=ol>)&|8$m{>kls{DE(XM|x=U?)8eE(K1&G#Pb@1(zA zYj|b(eEq$L-%Q^~uPmRhzxVL<>tg@z=K7W8^Y!=M_ixN!M(*GCDc4nbwEdgR`Lo{{ zpP$N_pRb?ySbsBpTT^&t`MiJL!}rjSr&pHG`{zCUdit}uer5T*f8N6n(*KEGSw7$Y z-uwRlI_>vwQvOR}|F_&2*Z-(_asMf6e%^oYvHtNlg}>mG@XGRe|GkHwPk#`-vV7iu z@8OrxFXZ}_<@5e~55JQB4tnL1_uluvW9`WM|4S(^s`6;}e;?=X^7r`v4=Zba-hc10 z{sH;}*M(P>&-?E^{EYQ+{ch)cW%<1S-owwMZ=zS0&-?E^d?)=k=#@*}d*A=5e;v91 zZ%z5VRUU2smva90r^fxOtoeEWy~p}j(ZBz+@XGRe|GkHwcysLkBb=`+pZDK;_-6X) z^vd#i|GkHwP5&Kw<&yW__y5VX-%qFf(!Y(q|8qHi-|6xFMOpLn{(F!0chMj5j_}Iz zdH=nK-$MT{&R3St`|mycgj?eJ&7xP9&-?E^{1o~h(JPm{_rCv^RQuajeP7pWWy;qU z_P>eq-}6v>ekyBz-hc10{yFrMH-}f2&-?E^d>{P{oUbgO_uqT?&Gcu`E6eBo_ulvK z#J`W+zqu)YwaTMCKgQe|*MHkxasMf6e%?Rteg0e4jhsI%<-@By+Wd)}|LNP}`J-H# z?>+W!I{n65!Yj+q!QWIb{7|#wk>QtYi1Xk5*6_;cNBi}o_wZ}zJ2!+^E_v_aH__if zuPnc^S_fXpSikqf>%T45f40`oEZ;e-U+_z;ho5kJ_}6g0vV6XOy@zk2zn#}lx#Ycv zZ>Rt3O|gH<@>}>DaL6?~9vOc2plEd`s2C(%JO;r-ouZ7Y0N)#eVo6te7^s^hi`vb_&aar{xg@n zjz+qH`tU#G{wd2Z$KO;h{7|#wk>MBZ9{vcfUl~2#Kl%Rg z-k<-Q()0d-l(!b1|ATwP{96{p@4qQ)e*XON9_t@FA^htWhF6wvtIh#0WSqbE@a^=M zo)KPIeoFf9A9@eJWY3uYgO2dZ^7;AcJ^UK_mwzd|a>;uSzlr|i+&^XcrNd|c!ufj- zzu;A|{_VaH^PkU^!}VXDy!Y@ECx$(9|`T6HP{8aj%(JPm{_wdd1ALRZi%eUZf zsuzB!+40EmOI{u8@8tO_qsRHz<8P`Let`ELe#L9TpYz4oKV=*bpRd37@ayO|^Zb=d z-h22V`crxTDa+^gkN5EPd&T-E&?}d`_wZBco9UHH-h23&^!IW9luO=w_;&gS_5Nip zc^!`)zLUrQetuj(W%&v3sSd1O$Td428GhLbv45BGpMNN$$Mw&j-`>NoqF>AXQ+htL04;a|i1zlm8s&-Z@#{8xsb{N>ocxy0Q_s@IyZu(F0`YX%l z`QF2?`+dy6o%g@8{NnWf^B%tS58+SY{jV%PH+_He9)9hW;ZNfJE6eBo_a46PkKreA z|CQzQ`Fro*pTGN$k-vZPy_9>Zd_wgp@T+Gwe;QkYpC9uZdt?5a$Hed7C~JQH{P!My zHvQ|Ljo<%LmY;#Ysb2V@X2&DLFTXnG&wnnwGWto?U-{oZ@*ckKn(#m4d}aCk?;m*& z-$;L)&YxMnzFGrb$XLIQM}}|V@%7uq{wbr!`m^^QzKwn(&tF--z4|%uLdJaW;n&jd zL9Z-7by&aPy@%gMe-+PPSw64dd-%F*WB;#xIUkH-8X{~PO9me2RE_wZx>9e$T*!Yh}&_wX|w3x7A~E0?_Y z@QWW0e-`H}m%R7z8@7gj{kB-Ya>;uS-|(OCPxJaKm%R7z?N5gPJ?ATzy!Y@chr<6K z_fNUxy@wxqD*Tda;8GgZk!_VdVmC@t<{rP>&jU%7mvs3<5 zl~1Tvk)Pjv+hYFp_wb*eGHZT*e(QLxe}KpDc0d35Y4UB=IpBrkasE19zWJG$|FXNn zE2GExZ?68rOWu3z-_&QrA5O0O1;XQmm{Q>_BuPomZ%YT0T z-osCLF4n)4`=>0QpP$~tPockqUb*DGhi{@kiRZ5@-;vhuJ^X6=UvmGIvzW$DwuPnbl{rQ{T!}q=^*1y+acxCzg z`QttO2Kp@zgjX(k@8P%5f1dlVEWhv#u>r_6J02N+-t1U^GvEKp=<)u`_rLe>1N6J` z`YFrj``>%`smI3r{doS$^7-H2@g9EqN5h{&uPmS6KiQ?_Xv4{O|vH4?pkY;eW{a%JTXC^B%s7{$2OR{iiJ7T-^hBA=m79 zWcao8U*Y>l8U1L_Z|~t(e+;U^y#{#2g7vV5NJJ^TXt4xYcVe4g(;eEab+|5ck}{mSzB z`RP4;Fa5iC{>t)szW4AwZ886GzWc=rdA|4X z^V?(oUwQv3%P+1j5njkOJ02N+?1|z3!uwYlJ)R$v@i)~AKfrqrKjkywTe<(rI37Ol zzxVL-=)cVUSC-G`@4bKj9(&Ws@83J7yla(DsLmpP|DN;NSpTDk#IK)}H9vp<_8#l+ zpx=)F{_FFZ=bt~nyoVp8zu?fAudMk~s-Fih89nyDzWNIe> zH~shMmF4rVU%iK4OW(xxE6eBW?>+ng{dx4t@_D}Z@Z(O6>-Sc!Us*n%zxVL-=>N(2 z%JTX1+k5yf`j2zIvV6zz)8~cfkN5CnPK)(lL$55K=X>w>-`~^yc4Nw$3isax&Oh_L zasMl8e!l;`$NHzyA4RV$pZDK;_+|7H>6PX4_4gjWkG_XqSw7!?-otO8e~MnY05V=^()Kg``3H;E%bk&SC-G$&wKa@pXc+F=dUcE&)<9a zF8UQbe`Wc6{@%l{qF=UCoWHVs{`0%MhadBeSpS~&;g#j{_4j`G{OLc<^-o}y&wqZG z_wchWjQMZeIp!;j^&ijopR)Yo^!e{S zd^i2A+<#^HrsTaJK7aa;==_=G^ZmEUdVhX@;MS4P?_*N_OqEA_esAN?clrGI{;90_ z`T6ZV)<5CLv43BtSC-G8pWeeSq<=lVvV4C2c@MvW{y}$>CokE2(X&%b}=J^U>C2f2P_`TYLz z9=@IafX8F~%JTWw|K7vTyC~MbBj+p2=lj=t_(A%|c>R>+SEv2+9)9`7G5;%Ezp{Kj zfA8T}(YJBFvV4C3cn`mke&>gI{h8$l4~`Q+uG#U(@O}5j`qy&(%INX?XZii-{qTJH z-*f#NndO(}`PReF-)qM3@6Daf^()Kg_mB7RYv}iVG|peSBqlcgL+BpB4IbXTty@#Jm|0m8@E_v_a zSJB_k{Zp22t=5Sba?OrMhOd8JtpA%_zcPBW{eE$6K9)9ZHv40ys9bQ?!wc10xkZX24 zGW=rtAMyN^(U11~@7}|A)89p}ET5nM-oy9o6YKvL&tF+SKmWalpY;0hFXs6x%dfA_ z125#79ghq@M87xx`-#fvM>~J-;m7YA^B3~^E6eBSzxVLd=s$jZTt8*`{QUPGe&X>l zzn$w>me0?B?}z8p-^le(W0ud)fA8VfUJ&yq^ZF^vcUJp|7jn&xM}}{?F#M^!e#+>v z|Ff&V@Ir?79)1P=9NvG*^7-F?@E(5rPh$R`x&O-Y`TgrX{4Dwpek!h?a>;uSzl{E< zw(!a&?>+n``qiATT=L$-Px)z_|5rI*x#YcvpHF`l_fNUxy@y{zzXR8=T=L$-kL`~2 z@4)pdm%R7zGwEN-`(IhU6*ph?Lay2I$nZV%S988HdfdPH{_);FzvkaI^4C9Sq}*BM z(SH52mGjSkD!%_HYkvOx@*eB2`&sPY1KYwY%jfr>_weoXr*gise0#MAcp+o|yoX;$ zzaPD_e13j<4?jfT{YkU>J$yU;Tzch__a1&R{kowze`Wc6{k(@CqW{Hn+<#{I{Q0Bf(ZknW z9Q*$S=PS#1RL9|kT(jem;k)Q}=6q%J*uRGAFT9Z9y@y{x|3Th=$~YcAuitz4Uiw|1 zj`LTR&)3g;_(A$x{u^GoiKW4?jTvFwb9EzGZm&3-i5)pZfFIzc2CrQI^lw z-+TBO^nc?0qb#5I-+TDQ^oMi4vV5NJJ^Tv#ukij+me2Q}_weiJKg#`6me1?=9)7|v zV*f7W{i7`3nfBj%_+|75aQ({idHvq|=jYzHkNo_6eaekh9_{n9kMqBBb-e$SH9voT zdXM!F(0{Bqyt4d~bpGDM&;MoY-vOMjEZ?5I_wXC(H*&tReBM9r;m7vG{GVMD>sOY~ zpP$~tPoQt1S1x();iu4Ve`U;9me1$!J^T{-SM`Ngme21W@8Nssw_F=uS$<~PfA8Uk z=r7>@E6aBz?>+pyOJe^o;e2KJ#^k*pUO)XOw0>s!8Oirp55JZ9H@yFp<=c|?9)9+( zV*UT6SAO27|NpA@@M~6ve=*muET4b>z&6uWikJ0 z&Q~sZ@8Q?c-^lsOCGS0a+vPF;)qMXc%P&j!ulMj{R)_E5`jzGL{o}oV{@j;7Zw6C- zw($A0g!BJBfzPl1PuCs5`90Tv06z@FFdT-%Vbx)DI2=ZYVb%3BIvf^3`MA zV(R)gb!la>e_f?owQAK>Cnt-GVYIZebhMZnhS6xT>i>QH-mlm8x_9^eJ|5@p^>}@s zdw;&)-}m?Z{qA;P*8KeXqy5oi{foK(eS3yime2P;@8Ory-^%&Q^7-eF-orQF9_R0L zdS&_i`y<}NchZmFE7q?ppI?8xhwq~Asu zU*5xydn&G<9l3sG`Tx3pxIcQoe|`H;!{0xDH{~To9_jsaBmcas#_;;HKOf&e=KGiS z$9$~6mHVH#LwIGazd0Sh_waM*AKNy(vV05Q03%mye`NT<9o|~~-n4zk@XF}1{(Szt zhaaN+He{^dd-%4d@B^H$ERSQrCht9b7yZ{c zUs*oif4zsFOaBjgy{tKM1ET8ZH-ovk< z{}UfSW%;i3_<0ZCaa^4Ld9|^AW%>O0dk;V6`0yXyBfN5%_a45V{+QjvE0=li;X6-= z`7d(5a+&uYe(c2XvpHY6%zF<%K;Odir(EW}ho5$0%-@geS1$A3!`Ge^{z=YPF7w{Q zFQLDT*PpU{{`r&l@MGQ*^QZ9oQb*Pr**`ScI+{4Zga&)1*#e*Zk?@!|K+<5I2^ zd8GU2^p;rvJr~5^e=BQ#zJGd;^>@?1|Ge3_iUr!3!`{`*_w4=HJ5gE6eA{-+TCJ zSBHPsxv_rbGVeY7st<&3JSV(znfD&PeP;LvIbXTVdk??-n(#9@U%AYC4?p>T!ngAL zDVKTg;g@uU--hc~F7w{QH-9Ajlbo+y=Dmks{L%1jy#AEs^ZnC%_>J^$I#_@X(zi4*MU-Nu;W%>O6%X|3RPlUf^ZFpt*$;Di3$e8av{8aiU zUktA-pa1^Ad-%@lWBw65f6DUt{_Q>d3i?O6er5RS^L+2&7t)`wF0LPC`F#GphaaFni~s#DW%+3nVgbk%+aDQz z{EuV(^Eh7_{YXE5@*aL7{VRO_D$C!-Hvq_(?>+pg$724YT)(n>e*Sw8KWQj@@3V3K zl*_#L@CzRgf7LTQ|IB4x`=f^+^XKq8^Z1p^y!Y@kR)z25eC0ClJ^YHlgzx70Q!ew~ z!#6(_elpLWa+&uYe!=SS^<2MlnfD&P=C9%3%k!r!zYt#(8$MNRe|!nQ@NeN?)8ogC z9@lTaezZS&b;Xx8{l)8BC%)izN6L?sy#9@OCgvYBIevbotoix%&wH%Df&Q;&gjbf& zuV3E7_t5`@URj<`zfI@Qd-#6(^SFLx`F#KJ9)21959pQ4y!Y^{=(l@o9KW)BUcdM7 zqo0lQe*%wRSw5dX@8M_Aznk-w<@5Is-otm(&*Xe%`TX-2@BR9l_2=Q&-?b^vEAmL+ zzt%h#$3OGb`0qa`Ykt1|yvO?M=uf0qme1$Ud-yr@W9gOU^W*0|{37~q(JPmE@8MU_ zf8~@oer5T*e(&KYu8s4z#ia0?a&aFR>GjWh_%{0AalW$V=f~fBfBYw|8vgjdCFOIA zJksO8jPu7d#?Q}`H9tT8-edi1=zsC%@XGS}{g3zX?a#;gJD6Tso^L-k-G97?pF`im z^()Kg`;YhV^XYGj84b_D6=_NdKe5+o&FU0v<&-E+I=lhTM@B{SEa=xwhU(H{JUw>PrJg&$iU4I=f#`^y@ zE}lQinxC&f@3H<_^o!}0<)^3hdk?>c{(5?4`8?ly_)+U({d?^d>sOY~*N^w`6X^irI^m-mb7 zUs?0>`S%{{pF)4<{^6D7+tcIkJ^VuYgXopz^W*0|{Brv1xqjs`?>+nm`j2tGvV4C0 zyoVqAa-6@PalW#Ab2@(S{qg(wlf$3CpGf%&MIPz-JDKx8b#HwCqpbOjX}Oj^w?EUrE35j_}Iz`TpxYeC^-k{Qa0-S$=Yw?>+of`cwO3zOwv^z2gr+uGs#_ z@QpjYt$J_2{}9VT)(n>e*N?wzMK9)&Q~t; z-or1TzlO)JET7l!J^Ud32RUE4%zF>NmcENn0_y=Us--iaSdZbuGs#_@HM-} z`THQB|H`Ov{SWO{{G-^A;k}0+dPDdpe;Vsomap3xdb9T)enV6EhC9P6%jd_>d-$moZtLO+jQxy*YH-%kHDuOH+ns&FA%_T;{!p@1}o< z>sK!G-oy9OZ{YnyS$=*z{F|;H@8O$|iN|l7yW;#S%jd`6d-y5zxA6K^mhVXOy@y{+ ze-ziRET8Yc-op>lAH@5QvV5NJJ^c7%-QeM=AGf!(<_&G@8QSMAGai~f8{doJ$xg5AH8y!_a1(-)=#fo=DmmS zpg;6iv3}(;?>&4M{d?(^%e?pSJ@nt8S1$A3!!M-&{N1sB^;CG#FmF%zF<%x-G8Xt$rO|xy*YHUr&D$y>glN9=@5ri(a|Rdk;T_ zelfjrnfD%k8vQ{(kKNlKy_(KbgzC_D2uDj{85s z*AL|~?>+qJ>*D;M!~4H-nfD&Po_-v?a+&uYzM1~TzPNsr<>#jNKi38P$kIH4< zd-z%O*YNsLmS2}%KfU*#f1dEv@SlI4l=9g{9_iEHkN9)9Cv zvHq7n9`lvu@iQ!J$Q9ck8NU8c;lJ>i@XF{%`uVT-@Du6ppBG+PKA%7D;pfv|!1>DZ zdHvqQ576&JuPmSc|5e_@uO8y#KP%R+EWZ?A6dOKOY=30Jr({Yo_}TRkNNrj>plE*`r~;0D$D2d?>&4E z{pGV`{mSyI((!u_KjUw){@?NZDa$V^jsY8T#r8*ruUiv-G>=~yJ=VSmUlbcY!FvzC z^qKG*yJG#y*dKmr@qta=d-$Gb!;kOb@iWUW&&O{)e8&sn2RL6@zB|Tmn(saQ8u~MC zjQPs)`SJ4}e$0z8|Lr_~%JTXAc@N*eE_}naF<)7}F&)46)%E{9`~sf8HO%tMlJ_3I z?;qiR_oU2iLs>r0_a1)C>)|iq{aaZ+ zKYzW4A5Z_eo8tJDTG-orP)A?9Dq>t9(uU;p02k2*N~7kK?D%jduU@*cj8{u-Wt zW%)(h3}3(Z@HLGwzx#7>{*>kO`n`u=c2xM!@coyv{FL5Yvj||`59DW;mW%PLb^S^)MJ^b?H!k@y&Us*mMzxVJ9P7MED-oKUQ>x(sDL&o~O zhaaFnpXX0menwSq_TIx!IEm}${Zm&6;so|Tu4!?Mpm=%<}pBH|>uezK{FguJ1pS z&)+|5fBDti|J!{0lr?`9z9=?)such59`gsM#`=5s{!1DA%I{J+pE zV}BgKe#Rp2J$(K2@ZYCbmLI|w#U}4P{Kof%Z=Dn8Pg#Cu^4`PGxGH=ty|Vm&egDJ# z(Zkox2tS)%S$<)4^_$o4J^Ud3!~FhDxy*YHKmF>Me-*D^W%;S;`R_ga(hr93{@*x% z%JO&&u_0G%e`NTz^vCl1M`iS|t!cjZ@Xa5J`M1sG^PgG1zW6h+A!EMwM}}|b{?Bs# z%IGn_rTD;x4DUVseEPfi{8g5pRMnfk_wYmXd+7Bmt$!T;pkl)(%-88-yHe`73;cx2-|DEgN{3*-V0~edT_wa-Cdwe>)vV42+P2PL>x(~_waQekK;d!*N?LN z==A-U_toRSKK!!J#Q7i3EZ>vvAKt_F-4K2h?;pyWe7gR;hoAJx@Q=|e%jfIgd-w(P zTk!d}DHn6`{LS|d@8MU`FW~)OS@W~^9)A3%V*M|El;@9GK0p52AAR-sx&N;8lae1O z_QQt#E5$#&hp*|5`5)r@XJu44{`%qr8#282@b&a(a=tQlh0pW7haaN<7O#J0`FX{k zfejh+y@#Li=~(|CdH+_H@2u+0-h22J^jGrrPg%Y`dGF!Z)9=jpKg#l}llLBe<^RU| zx8{6h`L0p%2Ow8$e`NS6p9}vMUjNGIasKo3-+TB0`tkhvnX>$U{rsQ%qlaJJ6Z2oa zHm+Y~`T6*w*zgJK_a1)MP2r#5`yXZOkM-y8|GbBv`GxRX(JRZh6@LacWX$&-ekpxF zUw@R#y!Y^R^J4y0yniT{dGFz8&=2tWqg>{_haaSG;(X;Y?>+puFUIon zHlIK5;d|&;alW#APx9Ww*MBMI|BBb2vV48=-ov-h58f2lpR#;@|L#5f8v3hv|529D z^Sy^3eRHgT3%>qt%Eh{I{pR`J!!M?Pfv>;Hnm;WazxVLt=EwX`(<{s8*FW#!XV8D1 z=U-WV3BD*ce5%;~$ncG~#QbYMALm~gJ&r&B{LXv$jsF*ZPriRtmaj?gAH1*nuZBOD z&)<#A@)NVS9=`eO;Sc8Px3YZx`G@!LZQl&PoIih7me0rUJ$(Il!VmEAQnfA8U!{XG0ZeE+X3-&u^nhK%)l58v1y{w2;= z-sIEIkGzMUcUSmr`210p&+GRdzT=+ocXGb6eE#{L_xjlmj_zb|eRURi!Fz9=?) zs@VR>@S`6N|1i&=GI~7!^3Pwrhi|68j_X&JpIH1E*pM;bd-$33pXBwUEME^?Z1Ud2 z&!fMe^OfcE*LE_q*^n42D;h$2r6%?>&4A{kZ$XE6djg z-{ifAZ=-*j^OfcE_3u4=5B*o~jrq#*4Qamj@cr~l?hCJ6=DmksMSmE*vi!<4-}~zP z6>V|@%mAgpPIb))#In1%K599<@5c+ zd-&Qv#QfH!asHL%d((XH;rr-+Os_28m%R7>{JXn&e);q7*D1eH^8B0jXsrLOhw=53 zS@T=ceC>}O>tD$Ie?qS;uQef8Y=30nchVaVrlZrnB z8#3m54?l|29t-~}k6&3nzy5j;zl8p7 zu3uR`-+#P^-$?(&gjm0_e0}xkHy^+E@O6KR_3uotET11g@8PG=@5AF)md~%h-owwL zpUm^GET3P0y@&4}iuGU4^()Kg*I)19YaS2(B(FbZ`TY9pJ^aik!k>S5oPTBc{QB!X z{G30B-<@7rzAim}-uwOIhkqS@|M+prj~98Q-=FX0{9~Vs`=7Gr=j+FNtbYmp#m|OU zmd8B+8*;_=M}}Wbf8C4WmC?i279ZG<;k}37K>r};E6eBSkN5CRtK$6Mu{P!_%jef` z@8PG?*Srv3xy*YHKZpLp=ff+@=htuVtMmU7>tFW_=QGRa^EcIc_!-Ox@%WYH^Xs?w z@C{GK{9AebD9h*9Z||$ePyYeVpTjJl??2wd_jCWR@cb*w_u}FyHsp%!j||`bRIGn2 zuRmqTz4{XTr-uv_KD}NjQ{QFwUcNKZ0=iivsF~9ZU`0rOKYkq$Idyn-u(09=* z%a5zBe)Iahhi{>O<)N6bET89l4?mUu0M1t~^WOXU`@ovv=kJ=7KV9UJ&R-Yj|F$je zzsj1Q-#>Vd^$*bB`p)pm^7;IE55I!`7S30e&-Wki;m1B5kN+;`#C&D>eEz+MpFsa7 zu3uTcGd=#^!}ri%a#qY&me0>W@8JjOx0w=NSw7!?yoX;&zxUbUmF4sLy@#Lp*EoN7 zbH1{Ce*fk@{L;ULU&G^9me23syocXF-@)}O%jd`6d-$d`F~5P2pR#;?di=bHZ=;{j z`O5P7@$(+On|^N|zp{LO|K>e>AN?nJ{*~qP`#105mpl{4|3|K0S-vYBzxVLX&xSvn z&p&1PeEz+MpGm(Py|R4%`&aMbSJ8is=TBL_JFVY)_-W6@`mf;QuPmS6e|QhyL;p6O ze`Wa=d{J!pRI&Y$;g_$C`7ONvD5J;g-^Stt8#282@XMYL|7m(<`KeXC*?aHz|0ACn ze*Zr@<+m4kr2Buv3o-wUop!1I{7G5!^Zna}9(_h5vM_Il%t>63V`d^Cme~W$|vwUCj-uv_K)%1M(XUh9LJM!~y^2;&*f6m#l z`utPY{CW7I*zl=R{KI>!f9UVwKXiV0W$cgV-m>BYo4oh%3)hEVL$55q249%>9=_+* z@E^P&<}1q&rr&?`9=`3h@RQoZE6eBSulLpY^k2J>^O@x*$MQEFe~E15sZ`O5P7 z_cy$UpY}S>|GQ$ovV4C1^&Wl|{cD`BEI%i$-+TDZjWPcm9>21DNAljo57KWxHP){z zzdU*G;phD;=6~v<@XGQn$$JmKf_{6hUs=8*dGFzy{vGqbdr8b!mY967WQ_wY5_#ql@s{3*-l-=FdxzHUtTuk!pU%jflb4?mUuR6c)|<@5KC z-osDZG3M{f`1L{oC)0_h+5FR`6+M%G*CT^82^OU1R=_-yh#UC~JPc|9g-1x6wD#E0=li;k)R6 zbal*Eme241y@#Jm|DGA)mF4r}=RN#w^ha>MvV4C3>^*$@ZgKv`UlsF}T z$neYPf5i1GqsO`LEk3Xz!+Q@uy*B3WNv|y5RMnfk_wc>+zvB9p<@=NO-mkw0i|fm; zzlT%)N6GcqzI&{H=Dj;rzkg8H{QUaoJ=Q;y{^a|@E6eBmxA*Wv^mlQ-vV6XOdhf^I zzjpZX-;wffiagTKFUIT<$A8^#x2_()vgYUO*L$pgJpJAD%JO= zFBup9w>*Aj`TY2M55JE7!(6|zeE$B=d-w@^#r%``_$kZRe#XhHs_+5$7wT zAL;S)9)33c+j#uS^7;Lj_wbA8f5!8#ET3P$y@&7Ln~xvYuPonH90xY!itUdK-?&fs zt>~4}w+qBe&Ju^^`|VKuV3%|{@3;V@cZ9KQ~rFB zN4o#j>>u+V?~cE}R@VG{|MMQ}A4h*ay|O&c0XAfuKkwlu(*Ni)F<)6e-@m+vpF)2t z=PS$S^XEPMT>95P9rKmt8>*|{yngTD`{?if-|)(1-h22V`l-@%Yv9 z_?6}J`SZTIe)1ae*fV;{PY82{+{&8^7;PdJ^Xz7`{@6X?fFARVFz9r=giagTucM9j9 z{ZQOLl{G&jjBUwQtO(c`r*zy5pg&;RXT9RB>@ zG37&wJks-j@gXsP-kf;-QP%wY{P!N~UrN9J`tZu~I0kIUIDYTp*V5njsqo73`T6TT ze9fV;{z+WFvV6Y&y@#Jj|FaunzOsCN{q`Qdlm6SE46j_~y@#JmKY?CZeh??G*pMr> zKQjE3332>iy z`F#KI9)1@6KD>UE<$H^BfDO4~`y*G^e|W6_YWg~6`99!cllR`Ae?#f{_UDxUQ}X;< z&Uv%G6#xFDvgX&t_)YV@$NJaOf0tfaK0klGhadIkIQ}!}mF4q%@8Rp|cc)h_^WOXU z>t8qg{&h#nzbW!a_pgbZfBKeVsy}~G*8C~y{CSV{&!rzruPi?&dGF!JHpcn8d5f5@ zET7Mx_wW((uQ> zE9D!DJksO8ob%VU$L}91Ykt1|y~q03&>wkzcxCy{^!R%Z-+Dwm{s)~GURgfhzr2T^ zO~3WI;g#iE@I|rVQ^od2hF@}I%wNFuE2GE#e`E214H@2h_<^Is|B}D|r7WLcKfH%u zPCuW=uPmR>pZD-hO)-Bqk6&3nzkl`~e#z0{FXwz^`TYLbd-!$qf1y{FpIAM6o6n#3 z@Dq-S`QPXDrz~Hey!Y^}^n24Q%m3H)!~N02&t`s1*N^ph{PXLt_LpD8{ZFM=*8Keb z*?Y|IKQ@kkD%YuWBr}w92bw@uXYQsT;{!pZ=i3dSC$_vMqop(*#5}yYv~W;@hhVr>HK+L zUH|d1{y9AU8fN+a;?Kc`jQQTf_jCVddS&_i{PP}uHT_-m%JTX7?>+pu6Jq@b@%mAg z?=6;$4H@hAzPf(;_tEz=%lB3FX79Z}|NfPpZ#91({(RiC$Rj=frcaFZ?|E9h{wZsI ze*Srn_0OSSMXxNMuYd31m(brzuPi@39l!VR6Hbivzj{inUs=98dGF!-=%1VvURgdr z|GbAEqJJ0HuPoo0=6es{a#E~+G1spwpRYgf;b+nxdvdH_Sw7#tyoc|m?>aTSvV2~@ z_wZ}!x90kl<@5Uo@8P>z;`mSHd}aCk{=s|rh4lB)E6eBW&wKdQ^tbZySC+3&kDvGO zqfURj`pWi=t4?p9SSpVrO0d++zp zd(!>#-jx4ba{uh${AF9l>#wrr=liGkSbrD&M0#a;oC9pgIDYTp7tsH3>zJ=BpP&EU z!!M@4gkD*`uR4A6eDC2qPml9IW~-R5ET6Am@8Nss=kWNI<@4j`J^V8IM>t!{4v;r2M@ikM#a!_FH59^ZpQj z|Dvq<`T6HP)<2*A*x!X$me2Pu@8MUzE#@~o8eUmG-@m+vU-9d-%pP z*%#Q|Uj!^RFzQ-#>T{KW$3PU&Hk)%jfqG-uv@^>MO&a{}-n`tH>ig z|5tJTQ*-0*f0Q*pKmWbQ`Zv&@O0O)RUw^%auRAM_e~+G+uPmRRKi!0`V^XOltS1$A3!w=AZlwMgrzy5g-Kl|)Bf9v@B8_M$e{CQtp zKmDg~jN_ljET3QhyoYanXUsp8URgdrf4qn9qJMy1Sw261y@y{!f92<5{mSya>Hgt; zb^UFz{w4IS%<_H7d+*P`H@`ak`FCW>twkQ``B!sJ%%8nz`|98SC~JOOn(sZ<-$p-y zURge$fA4+$uc!6?JLSFqG4lFnbN;{Dx2vvSS@ZMyy~p}j&@Z4@me1?=9=_(>IDdWT z$9!e^4R4AQh+MJ#@g@9*kA=UKUKu^^U5&f}Aj5kP-|(&Q|E5=#U!LZB@8^G6aenn$ zUyQ2xP0BBooc|3E#r#*s#r31C`T6{NkM*}c9RADn%JTXAdk^15f8ky+Us=AT7Du!B z`ycP&`=5;YKcZKbpP0P&e*V6@Vfgv`e#*Zs@<`9W^{>YKYj)bbdi^SEe*X8zy!ZJx z{d4&IFQ)wSB9An`ZbQuf&Yf}nDr~)rS*G{_1FC~j{msZ!Yj)+C+|Ic8-4e}@XGQ7$$Jk!_O+OQ z<2S=A%jfqG-ov-jAN`&1%JO|_zW4AougCm-c>a{-^L+2&C(2X z^VjkG*D%Zf*L>@%^O=|P_$OMA`{$x`{NBT_;r=)C_?64%d+*opiLVd8ep^!RE%Hd$ z@A!Yk@xNoAc>XJE{_3=T@3H>T{|^5My|R41e|Qhy_@D59tBd){@_D}Z@U=DXsNNec zqgO8T-uwBxWaIGj*O~IQMIPz=ZQ%UwZ^ZSdtohyP{CSV{&)y=||BtVSSC-G;e|itU znEq+bSC*fh=6hc~|69iVN%W1(@=eKm@8_@aU&GJeQ7Ku=)zuWS`wSswQ=Y{(Vc9~r)#{zT4KMh~0cKY0&7hyI70 zuPk3z{2ADgG2eUmUizzxVL7=x^fsmCL;M@C)hp=i{d=pO4>r_(A$kdgU_jy+42c zk)AKFrM$;~Mt=UR;{4MNj(`7LS@Wmi;wv`fO7RcxvHr>1#^e9Qf#H?qSKy0c!zXy} z;p?^wfA#qA%Ge*zpZxySd-x{$TXzeuET7l!J^TXtCpceOzP?xkHe{^dd-wtRb9wyA z@-4u{ChtA`M*3~(mE|V|-{ifAZ`nT1-<^BM@hi&@ChtA`s2#$usSB?xzZ72-8$MNR ze`NS&W5Q3_KfE$}Jbp9Ne}BdM>iWlqZ`hsdXO^E>{2ADgF~7xn_*u*!sSmF#-vV50 z^4`M_(Eo0a@XGS5gKzTQ!}snI>#yhaqb%Q-y!Y^JyN3VWxR|djpWi=u4?jeI6pvq7 zz9Y@|9)99(G5?SB%JR#T_a1&sZTQ395bIZ#Z%N*J_*VModHpEMcO>sU{380HU1Gkn zd~NdH!!My<)(~D-Qdh?B3y@ zs|~L#-;%ud@Kfl&ORp@SU%$MEpHBZZ-oKRP>(hMi;pftSao1SCvV2eS-ow}J6UTok z&!4h<{{G8*_(^r)uj2KqET7*$cn?2=ej3l8viz*He(&Me(m&4m%JTX9AMdNjzi+Jn zS-$?&G0SgA|NR#4;cM%|kD^zWZ%OO-9=?tKu!G|9QW%+#n z^&Y-~{yg4)mF4sO*L(QZmY9Ds@4w3O`TpxYeElim58?esSw7!?yoX;*-@@mQvV4C2 zdJn&f{xDwu%JTXC>plEN`Zx0aqb$EZJ^#IjUw2v@|K)uCD9h*PkN5CRr-#3v&mU#^ z{QU7Aegpm8eEulQ=jV_2@JlAg{9X5p>sMJmKYzThuD><>pZNS~VwPW>?tk9Hk9$Y> zkMRDdET8Xx-or1We~`~VW%>O4^B%sf67zq;$4^;4KYrfB&!=zU_YcbQ`SJ4}e(ISq z|7?E$pe&ysKkwnkpB4TGeEgK<^W*1zb^UGO+xCdZe?GH(e*C zd-%q4!?%u$`O5P7@$=rle}Aa>{=Add8a^#gd1J}<@BN&A+a>Y)Z_1jV@4wz-{mbYN zr&pHG$L~G-?DOLI|8h~xSC+5mF(FrMe`NSx`m5=c(U0dx@oCfdU*5wH(tofc<}1tR zpC5P+KScl5i^D6+PsQ+JL&o~Ohi`6=T(z4zV#BA3?T-xK^{!a|wPV67qsRSYG`=V{e1i8Le)dJ-?-(0i8T-TM|Np%A@Z&nd zpRj#+W%>O6(R=uX^q2DSQ+qBW#PBs@|^QT@jC_=UXwmF4sG?>+p?>EVy(`B#?D=ihty zG4BiiX`VmjO&(tq8$MNRe`NUE-XH$`JI3)VqaW$~c@Mwns_;ELf6DUt{CN*Q>FV$Y z?hx~p<@5RT9)1P=XL@S|pif0^e`8U0A- z&wKbW*M#4e_djL%eEz(LzwJZezs~cgET7Mx_x}2O;g-W+e=kb;{Y4(>^|$GNV*ar| zjNji<*8J|%iW5<6$T)xAWBmgI;jicmuPnd5syBP@;TPW-{*iBnSC+3$-h22#`mMhe zUb)PB55JQBtG9+%mY~G_wdW%dU$2|d86VFK(5&S z$nb0L4L|Us@XF}%{GC*MU_*xY9=`Fu@Y~TV%TKQA&E9+XF8ZVTW4^L{Q}W)!FQQ-f z^YF^@t;u^2zk&X`pN3bK&)@%f58t*lj{lik!Yj*<#}~zhPZirA8NTcO@Fy?k@iU{x z`CnLkU_*x2{>bq4576`Zr;Hwc0lp|Ue1i8Le&E6IALD#w>_5_c@8LU_h2MtPpR)W4 z3@jpT+yPvV0r9C^mem*#5}yW0%MLn|c3KMvuoYKYzT3pG5!B@5K6* z{YV`DXKoL#EI%>$ zrup8(Pon=2?_bJg-h24j^!M`mSC-$9=6es{^}AUA4Lp8j`F#C(55JNASk70LpO9XE zy@zl3L(IR2kH4~fe*N+uzJtD>?|+o#$ED-u4xzJF7eZ^x6c*pMr>KQesh#_+%3{Z|=1Xg>em z!!Mve?Hh6al;wNU?=N@{KcS{lUEA^>hgX(gP^kFQear=YLZ!9L`@}zxVLdwv74hJbq=(UzFy14_~`g_;2(0mF4Fq z?>&4k{RjE}TUkCIzxVK?N5%aA`F5N?W%>O4@g9C1{nowVmF4sG=RJJG)-k`CURi!= zI)3k~^Xb=f{p*`n|&MMz1VCFZd?!J$xVi5q$roET8}XL*B!$-Y4e&m9HPl z^0jHc_wXC&H}dsUd6UN%#fDE6+aDQz%)T+dhv#1zJ<^!xf8N7ypdaA(Ps;N7{h#;n6ZVh!SJ5lW=f~fB_#XOMeEgK<^ZQ@#;n&iy<^4lh zKCj<<`1<--|LeN`nC0ge=MWom#r8*r@8|x_{}<1HW%M}z_38D~d-#BXOc4H@&jho3Z_>(~2lX8C;nwLg0Jh1~xZzWyo8ug36VL&kjX;pe^~<{$BuIDTdM zMfjrF@Cn{~_~ti-pSd8sGWN&$s~c7PquAuVhi^MHd>7{{%QxZ+^WMYHnGk+8A3tUJ zhV=f|d-z3%hyOgivixnydk;V5i12^p@hi(ONY{_|@N1jGZ%41Z$*1$@J$(0Z;X8j2 z=U-WV{2s&4pZC?{KQsL8JpYTB?!AW}b58j6{QgNbp_&JDjM zU;mWRKkwli&I^Apk6&3n|NWo$@Qv-^>*$r`7jIK6qS%nJe(&K|T@-#EzkgSj zudC|K-h23s^grPJPr1x{4?phWn12t?pK_V^9=?hGWZr+2W{%W2-&6W&%*zM=TBKaUq9Z%Po@6==PS#1rup8(FQFgcd}aB8CoALog z9_jDDX8k;l|J|o-QT_KXl{J4wn(sZ2-{;-Q;zOwu%d{J!pRI&Y$;V1nf=AXTPcxCi>{wyy(upz^H4_|vn_;b$+uPi@Q z)tkNd@ayQW-6g!T{IcY|haVV-`Au&RuPmSEdk;VV&hUTUKD@Ggp6@+;=P$#zy(7G` ze4g(;e9K+o58g4nvV5NJJ^Yv@;SVYTt{-LjJl}ixHS{x|i|bEWKF{|azVBBt|FX+s zzOsD2{=A3pzdQW1#p1DkW%+#lc@N)xPx!t|!z;_@5& z_=Bd#d}aAO-+TB84~5@v-|))vdA|4X8|jBQUs*oCet8eS{Nb4YH0LYJ=hrXq;phD( z{J0BZ{mSzB@%J8n#`5sb>>XZNK0p56!%zHe__p)IE6eBe?>&6WBjNYtd}aB3{=J7E z`@8V}*B_wb`vhVMK#ys~_L{Jn=C^T+Tn?h#&DK0p56 z!w=E_@SO0<^7;6^hwpzZ=1<^!W%+#k-owxNQ}`9dU$l?6ET4~G`=f{N9twZz?%|c? z^YMER-~M>`y*OW4J|DmL@J&yI|48u{x@Y<@0>+;io(q{%ft_mF4q%@8Ksr6@FUr zFRJ4FE6eBk-otO8|K-WymF4q%@8MUhj``m#zQe$LW%)ecd-&d`!!I~7ys~_r?>+pi zzlMMF#(4j$ET89l4?p>D;h&or^OfcEeDC4MuL(cn^_Z_LpXYlIzmER1C&YYZ`8?ly z_+`(;{D1s2<}1tR`QF3Ne>Qx}@iAXnKHq=5hhOkq_!~FGd}aB3|M4Dv`r7cf9vAbK z<@51-4?p?&@Q?i?<}1tR+;Rjxf`8OOD z^OfcEeDC4suM2&wU~0E6eBk-ouai zd-(C3uPmSEdk?>c{;SW&d}aAO-+TDJ^)dhKH^=cS%jfIgd-(oW!r!$v<}1tR>)(6$ z?pMQq{oUb&as0~idA|4X-5bNN-{VV(@-WFb2KF{|azVYAT_v6pMl;!h$@8LJn*YN$1vV5NJJ^af5#QbCV{zq9p z&-Whwwwg1mKbxG@5y!7ApRa%K;TLWZ{=oynE6eBW-+TD3EyGW{FubySp6@;UtgXVI zQx{%YKF{|azI9aihxq-svV1=O-orO+9e&Y1F<)6epMUS+*V7-z>t9(u&-WgF`8F}X znb*Ive4g(;{DN)6-&l$DE6eBk-otl|4*&6;`1mo)=lR+nJ^ZBY!avQQKP$`U`QF3V zZy)|EJH&it`8?ly__g#8zBRnEe4g(;{L&p_{sr5GSC-H7y@#JSCj9&<;g#j{eDC3B z>=^zhW5X-U=lR~lPuwZ|zfKCTET89l4?k|_@QeNxuRqH2dA|4XtLYCrGUhAG=lR~l zFBu#2A9*q6E6eBk-oww`CH$kDuPmSEdk;Tt*YN+lF6JxC=lR~lH|-YwvZLepmF4q% z@8QSRhOhiR<}1tR`QF11(ZAapA8!HrB5!pXYlI-?Ufwn_r3f%JO->_wY4)hd;72 z<}1tR`QF11(ckw5K7P#ddA{~X55I7qm_Nk%%JTW~_a1&xUHEI?81t3o^W*P5{H%S$ zKf}L&RhG}k?>&6`e&Or*{##i-AHVnTzxVK~=og+5URge$fA8T}zcJ?T z$ob0h`TTni-}k2Qubv+BmF4sCdk^2!5dIz8gjbf&$L~G-)Putx%=yal`S`tu?>Hp< z2eyv+%JTX6y@zi+H2kd7!Yj+?wuPmSEdk^1t zSj<1{KXLz8me2FOho60T`0u|Z<}1tR`QF1%eRKFL{~hy{<@0>+;TsymSNQ%+;k%9sf7Bsy{*~qP zeDC4gn!-2o_m7n2^L+2&>yHlq@T8cpET89l55JNA^{v7y%jfyt!!JE1=D+gSc>I** zCls$!*pMr>KQjD!`lGpiW%T&{r~LZieRck^F~5!LU&<_>Uq8HupW7V%6Q{=UE6W$R zh3bY+Sikr1J;#N=Y0L1+*dOc9_b>0^JB|1ac@Mvy{#o9?l;!j9KY9;8aAM4_;oqMq%jd`6d-$G{!e7Y0 zKT(#?kH7cuZEp$R-xTLhSw0`X_wX$(;lKEDT>r}Q`S`tuAANH8!#H1AJ|DmL@I&+) z`S%CP^7;6^hwnWl=6~#nIDTdMeEoS3KkL-+wfz2BSw3HX-osCx6#mym!0WHFd_I2f z;p&6$Tf={k^OfcE_3u4=^V`C&;(TTKeEoY5U-S0xpFT8> zUs*mMzxVJf=)b-uj$c_mAHVnT^IK#78oquj%jfyt!%u%l_`mb@TUkEO_a45n68@`v z{Zy9kOZQ*z;aAhIpjVckki7TsW6zBFHys@3Us=9BdG9;16SpPl_r32)d1cA(e>Zae z3eH#7{5t;m$d%$B-edi(^#7z+me2qGi1+ZF^gp0ime2FO_v62A)bQVbzaiz`B9HX@ z@3T3-=~K1U`*K(Z%RCVw|p|ZGWH)|eB||e55Jhci}RJ`^ZD~0 zekuK;IWb>ZKF{|ael`7a~k zy!Y^J^aGr)T;{!ppF#g5y>glN9)2$UJzT$XnfD%kA^jsf|H@_Fd-y^69eMpJmwE5u zSJ7X|^(&Wo@8LJnZ%40O=Dmj>cXnKVNAvtEmwE5uo9H+4{3(}t@8PG=H*x*SW!`(g ze@)qX`2FjhDR&lmr2E%&&i{UQJb#rne?{^4I@pja#Xr2q`dg+Zp^>2Y1``kUs>~~$M{Y2y~p}%&kKKRV|Zox?&Q6PUqIh^cz9*`eEz+MUq}D3 zBf=}o_oVsW!_RJy_0M>7cxCyy_@dbGsbc#h!;iTjd;{kzqsQadSbShZhW8$RBK?FT zW4^Nd#H!xxy@&6jpM6w#W%>H#y@#Jq|0&K_mTyYld-!GaJMr;Xme241yocXFzYEX5 zvV8GtsnrdiDz-l|{HUpM{-5LemC@t;cNHJlkm0?DpGCjx(Q*Ei$Nb5~2R3={{rS7)w!@#lTc>U$JZT`Kzq?wK0CveDAUT zA^LUG!Yj-7CGS0a&qZ&6o#j*YeIbT_RRhsWT{6_lOm&SZ$`F#GphacM!^WSlKcxCziG~avprS$uBhF6xy zImCusvHg+Z*V6C6$4?nOZ1&z)*MCW@|5nZ)%Pc>$_%pB}W4`zBbGZL^dHl-qO;x?w zdk^1Fe<`nDW%=IZz4zzef70`9%hAK1j|Ufdq~~AzrE&bW{42|M54BvZY_%n9r`DaFt=l+89_-TLn ziSG-)h+bKKQu^=5c#rwBXN13=>sOX9{#vcN;S<*HJ$(Pw;h(ML5mn^Sy`fx+eUKyT*KF?2q~R{lE9{i#`tPRhIAGwz~XHkH7cuQ)Y+%FwdW|eDSZ9RyTaA*#5}X^?xG#0H42$n9<|-=cLEq zd-%p1!k7(Yj@hfZo4E}kV z?>*MvdT*S+t@aJCEdO7Bf5rXL!#Cd-{`T?VmF1_T`QF2K)34qyys~_2^4`O*pnv;5 z;g!q0_we;gWBo7i{3*-l^XEN$5Bz7Us*mMzxVJH?vM3v$>Ucp z^WMXE(Vw$_oIhpxY3clXUtK@_5a+LAme0rUJ$&N>vHooji22H8-h24j^bhd*RhG}^ z&wKb~^at!6^OeiI_weH$jP)<)`jzDurt{}L{1W=f2gZD5`F#GohabBv=0E#}@XGS- zX}uzK32}enxuyy@#*= zO|1Xxy#AEs^L+2&XV72B^QSDI&!6}31N6V(`BN_Q-ouYx9_!zo*T1s-KstW!;RoqY zEdE2O<1NcKC$Ig{!*8U2o##(keqQq4!}t6))_)DxuPnbPdGFyTJ`(;EK7WEI%%--+O=m_Mz>EzkmC1%AYUtNI!p@%lW;B#Pz4F`Q2&0_gH`J z%2@x;-V|P0erEFC!*|oa#`CW%pRYgf;hX*#^J@-``O5P7{kQk`Ivb8l;!jLU+=5)hhqJE^ZIFLmY{3ZMkjtH-e{c-#Y ziVtk^-ovk@zxSx{%JQ>(ZxTC4H@2h_=zus zf1K-AmLE(%|MMQc=H>7eK7Pvb`TpxY{9O9K@%WYHXBQ)|A!GgC!;krU%x~lKPr1x{ zU!70?)i=lapUW&iy*l0ITMxg1`7vI9%JMUk_a1)Q`dEJ}pFhg-`TF-Bel`7`Jb%ja zi||FU;Zw!-NA~;QUSo#e|LRgcwa6pg|9W1H_5Wd7{QqB-@#o|E>nuL7X}g{3QArT)(n>e*fw{{8akOIA2+QZJO^r{NxR> z{+XA=`jzFECGS0a?LWhBPp>TBp1k+))9Ih4SC$`_-v4_KKj-zB-*iQ+Us*msf4qlZ zN56rOzp{LHTEF-3T^nQmp?v(5jpUw3v%TG<-d-!qxj`iQz5$ji$&+lKo zho3-S!{b+$&-V}S;d|)6eQC^BmY<6+iVdGCwm&j_UCmk5?()v?%IIT{-%bApUjNGS6ROiU&-Wg_kG`G9uPmQ`|HOOvC0oSt@5k#$Sw6pi z^&Y-?%kbaj`BRo(mDcY){J5>cZ?EfzS$;|K+8;gqO78z<-hY(k^ZEB4zIIg1-j#QHzT^QSDIA3yJ_>!I@W(QuODUk z-ZbBP_=WV3^Z1qJ^Znat9_55!i^INBcAI&UZhcAi^pDM*ayoVpZL-=Ff zA6^;zF??cuPi@=FNzJHFyDLlrX6Gc4=xI?jQufxZSjFk-h24^ox*QC zFTAq+(%_rC_wZ}zr(7IfSw8>%nD_9tV`KhTiU%6kkFtE8?>+nw{UUBlnO`O5MO((fO655IoT@Y|gq$FD4(=X(!7FfROyoUbgO&%gKZ zYxW9%BIhg1=lR~lFWx)+K^?JvW%;T2qS)}MV*4Y*kEsiPHRmg%$Mu`%dk?>Y{=$x! zuPmRhfA8U!>>KmH!}-ecdA|4X-TQ_A0_Q8sPfg!HdJn(4KKx%eUs*oS_a1)H0paiE zd}aB3{NBUQKQMgl1#$kA<@0>+;X4ir|1Zv0mM{Ld3e^ptDz-l|eAoE!Z|8hv^dmj~ z-ov-NA^eG##QK%x`>WG8Uw_`iZ=nAS=PS$SHK>SKkbn4PhS#V zxu`~b{qY{Y?a=T?alW#AK7Q}v>n4P+zcl76%jfg&J^Tv#_jA6oe4g(;{DQ+`{yRBe zSw27iyoc{TJp9)H7B` zesoj#CpceOesy*F=I5XH@N4NOyernPET50xd-%SiWBvi1;gvUed{J!pRI&Y$;b$Ei z{wmH_MnBT=dk;UUIsAE?uPmS6e|Qf+^^^g5Q5^$~=Gh`u85bcVf)nk?-G?%jSCzKkdZuM{~Zie7^sC55M%J z@F#P=vV1;%@8Nsi68=N<%JOx^dBBETvHg+Z7ts&$`wwOGxc*iZAJ~xLy@#LM67%=q z`(I`GJl}ixh4h{6@%&Mi&&TgQ{EU-h{!BjqmF4q%@2l&lznk};xy|0zEH%JO->_to{&AHnnA#w?%bdk1aup6@+;&1o_JlId~%D9d-@;w?7hitUdt;k)SH#GijCqsR51 zfBxV-{Jhg+{?hlxd}aAO-+TBmXM|sHPIzVc;$f+7$XLJk@SXIHoUbgO=X(!7M87NN zE6eBk-orOdj`e@>%2>a$e4g(;{37}r+QKW#=lR~lk9up&-*`oMW%)ecd-z%Oue~$8 zvV5NJJ^Tv#i#T6dKF{|azV&Uf{wq0OSw7GA9{x7^CDUU4%JO->_waRZkNJJ z&-WgFCjFZ@Us*oS_a1&N{h6GvET89l4?n3j*5Cb}SiiD-p6@;U0R1n|3a>1m=X(!d z`;M6Z$os-8%g;#9U+>}P(7&IrzsmBh$$JmKoPPbgW4^L{K7Q}vCs$(q#oNg0`+sHm zeEi%k8KP8UV3HuiOG8p-%9_} zpT~S<`TYLdd-z4?#Qgn!5nfq7U%%eNk3Tp3_4LZ}^=bXy!%w2WgO9(meDSuXx*=C= ze`NT@^yl;OQ$~;XFWtolHe`73;hWEk^*_e-E6X=j^=9uqdE3 zS1$A3!;if%{0Hfk%e?pSOX(k=S1$A3!_S@?^AA`O>sK!G-orP)i|eOXF7w{QucN=8 zUb)PB55MrDnBVZLSif?a_a46E;_#2sE0=li;m37^KjQ9~uUzK6hhI*A9ldgy_a46c zl9)e4uUzK6hi|zw{NeY+`jyMP_wXC&=M08dF7w{QFTRZHr&liX-osDp41d$FW4>~k z_a46f^6<~!8(z80dk?>o{&4!{p9;&{mNzDd-xew#QgX3^+&nPdk^1mW%&2<^+UPLdk?>g{yAPh%4Obr z`1$XR`Nz;JmwE5ur%VsO7uT;`=Dmj>{l4(?dHpJvdGFzu&|k;w2E|`}4Uz*Pr`rPD{!1^WT4X4!`Hq(SPfW(Z5)J1Bw?L81+4eKcD_E`eOO{`Q3B) zi|Ic_Uo1b@_Z$-n;*tA1^H_BPI+ z=jeYd{d?$(<>&eH-20!f-QfODPkckcmHMB^`inmkzduQ=`o;e(T6x1usrbWl^xt)L zjQ^+Cg)hebSi5=sc@BT{)bP9Li{(!(SKl~)p2MF@|B9(mUo1bL|DMBNK>v+ThcA|& ze}ACo@RwX0{qK8y_+t6__<0V0CH{r#>EUo3xd@;!$?K>wRp zgfEugoqW&XPwI;L|D!LKzbg5j!yk7&`{(?N<>%iY=sEl)H-vv;C+D9mKmYzf?T;LO z$Bp6tfWBCM{{4ZT!=Kj^{&e;)mY;urpy%*c-W2}duH^A2%kROPV#7*9N|L^jsFP5Kwf1u~^7vB>8NnF2T`T6$;dJcc(t>M4R^(&U2 ze}ACo@F(9DemCb&EPpuO6dPVjwm%sD)S2PG%=1@_9P`(ie*Wn>{MBC$|0?=o`T5`f zcn-gLR`|_bG5=!uJ?ZxcdJccd|AqfU`eOO{_Xm0of8@R4AJ6N*Sbi7Y6dPVjwm%sD z%x{E0{syieGIGpcFWwXzUf^qgF#N_j;VcP*yKhSgd%O7O_9KTq8oG`GYH&Oq=+qW(M{gGJp^Znm*^xsK;hdaU-%b#1U0c_xs?GN_;$Luh;|05Dl zD!5YrwJ%2h|Jpx}zgYG2^~-bgU%x#3<313+SblHOCpIwp_Z5H^pXc9m_!H^BG>Yq=EI&VgX@BJK+kYSRZ~kETV)^;`%X9c$^uND%_+t6_ z`O9s|Ajrm7t8N1#)%DFvi-sE*V5m6&+x^_asA5AU!KDs z_(RmM=lqN1=jSia;kUmW{#koPeX;!f{N*|PA%6_NpT1are*W?t{%{{=kQ0o9sU6gv3|tz^YfSI@O%Ch z{x5j`i{Nd4 z&(9B@!*AFu{JS`RV)?yzQ*3xC+5TYoONNGj9k1VFVH{<+?<>&eH9RBJZ!>?oiV)^;`%X9d>yN7>beT-i$ zKRCt<{a3jD#Paj{^Bn$s`UkRqvHZOLJXdcR-xfO#K7Y1M{K(_Iy|G}LG*FPZfg#}ltKf4t559QB)#H!zlH^qh*96!%7e`||> zxQXoU$#MM?Wk&)&mW${Z>InDh2e|k z=g%LW!*4w;>K}et_+t6_^M~i~r_g`v6XA>H=g%LW!|$bk)&eL9Dc{d=)dvf z;fv)@D~=&HaLM)u!(T)H9{OVBIR5$bhv)E@pC0vh;QWi_=g%LW!*4q?{E_X^zgT|$ z{NXwL^=E~D8-20-{Q1Lk_)X`8-^2dJ^7H2p&*4u!H~jBh5dDkg=l}m0&*2Y0Km2FU z4__=lfBx_s{+N%4-$q|7KY#x49RB1B!atAeS1dn&{_q_BvH6zA{56+{|7D*4V)?ng=kUj08UCS{Mt!mT z{Qn>0IsBSy!+(grSbqNe;W_-auJFG#CF+ai=jUh7;SXFN{tV8aSbi_w6dPVjwm%qt z*Jr|SxH#&Ik>mO?YV+ccVgtkX9DZ+4_zzzazF2<#{NXwLwVx0Fd#o>(pFe+i4!`4$ z@OR?;iRI_{^Bn%l8Q~wq{>Ae1=MT@}&$=i413ww#7t7C|KRky&|NiiQNM9^JfBx_s z{*(v8{{`q-~9aMIsBnN3V#@VvHX1eJcmD${;h9D zeX;!f{N_3Q`iG{QUgpIsE#^!vE_VoPVoNXCWaOCt{QTxQ{56Zhzk|M5etv%Q9R8?h!v8bJFP5L5-#mxkv^e}P|0DVr z%g@hmp2J`KT==_k{>1Y0^~-bk%a(@!D9>N9{QC6#<~jWJ&xb#OzF2;Ke)AlD>kHw} zc5e<adh}%`T73qIsBn3qyN`V3|}li z-+w)aUrYa?W5O59&-Y)?;g6@k%ee5x^7H-IbNDrXivEXvG<>oAZXCQ~1D9-nF#MVH zFQG3+j^m$ye&RX&u0KcpSC5MNV)^<0>pA?PtHS?#Q}|-}`TpxU{NBHY-^Ti4`T73q zIsBEchkq*9k63=b|9TF;_Kom+*uPkQ{`raL@aMl7{>&p|{9^g}{_8pXfw#injlNiZ zzW;g-f5h7G_u={#%g^^;&*3-xGyM1P{1wa3_g~N9_q`MTI<7yl{E2u|Yt^B=@p)Z!7@4ueIU%FZNFY)>*mcKCl`#I0y&)72j zi+TMK%g;YQ@f`lZ@bJ&z^zry1$ zMvnQfO+P>J9DdD?;a|f0hgg38`HAQ7J4S|o*>TaoSbqNbiRbVKb`O6s$1j%u|IHuw zM-IPrkMLI=&-o+E&p$uW{_=-^F#Of*Uo1cW{KRwAA9ZN>lUZLZKmYv1bNDMi9R97m z|A^)1=Qq#&`Q^b~20y<%l=wFVSNi!u`_WOqVRSryiB&(}|2;?lQ|b2{7{0ig?>YSG z^q12Y%b!~uXKdh-?GN_xe{t8riQp2J^H{}Il= zxSH=d{8`6G{eROJ%b!!8{f+bQIsCEB;djs%%dbnm=f3{iYX`6YixS^naHaJ>iS^Ii zKCYi))z8mAo}>S1Cq(~~w+UY?KYxDlygdFB!{3YkShD>5`NebiecZo(tEexQpRZq@ z!(UAQ2gAY_%g>)*Jcqx0eDweHw&9EA=g%*m!(T)H_Vgm&*9gd9QFT1Uo1a= ze(@asD*9cUM}4vU?zH|qhu=|(`oE?xmY+Yrcn-hilaCP#xItipT9ka-+ET~ z4V-_m{Cxg;4!`H@@P9Wn>Wk&)&o7?C@Bdi%TXFq~=Woy9w_O$fD;&RAelOk>8(vDb zKN$Xyso_uM^;?Vx&oBAkpLz~|pey_bwvPVA^7H2x&*6{mX8)`&mY+Yrcn*Kg=fgjf z^Cy;{=g)Kab+?4y$o|Fh^XC`O;V-*0{0YNj{9^g}^NZ*3SAQ-1pU@Y}&!1mBhd=Kd z;h(_sS1dn&e(~I&Uru@d;OCbKi7zX-((_Bh15tmQ>*Du^h*iJ6SVP#rrQ#3I(f|ZQ@Z1Fv?fl=Rc_>JF<`j=iC;}^@X zgIsL#J%>M${!dt6EI%JV&*4v_e;mgzmY;wBfamc0=-zCsf z%g@ihp2HvW{qP^BFP5L5KRx&JZ_nKZpMQHNKBnMG=U)r!FF7uLe}q`|^ZNH3{kPLU zKlHe9z&prT;4DPb_~ynt#vX&wnKP ze?RMs<+tHYvEij;`-9<+cr5%`oPRNLT>qMiFKl4=p2KgU|2*eUEI(hrJ%`^x{}f(7 z#PVy))i>7n+^=7c71t-7t56+zzF2;~etHhSh5kD{eq#B(MGx4(=-=~l|MZXN`d>qq-&eLb`kwpwcVpe) z^RFjyU%{20-{(9L+fjM`BRebIs7jA-+52?V)-kR z?>YRoC!_ueTZAu`pa1{kJ%>N_>F|dP3tudMS^D{%=kUk>H2m#04__=lUw=G@KaKvi z?+srpzd4QHbNEZ?U%>ie`NcnrDR1DC?GJ`OVj%ioz~d)Ij`Jt4KhNPWqQ4oBpIH8^ z;(K5NqrT_xC;cJn@5b?q<+njDHu;{zUqFAeEo1(~@|T9b!S@{g^p~Rk&Rd5smfw_o z&*3kj|1{T+SbkgbJ%``$a@6k_5%tCLXQcJ#d3pSQ=~g@RyN$w+&w` zKmYxg=kQmqjQS666TVpfbNFLdMg8M8jq!`+=lh4}@aNF~5!bI+eqE~XIs8TRALIEimfw_o&*2Y! zE&3nE`4`L2pZ`3E-$?(-&0_pw`L*f%^&Ec7>Zt!V*N<3!?%#9xGw2`7^H(fCfBy0u z{_NMI{wC~y0~hm#>%X2c@cl}@f5GsFyb=BbJpN)t@bmfSIs97sXYu%n<@Xfd0~;9i zJ%`^*|C8)rEPpQE6dPXPd#Wk%fmPfyF{GP*KN&g=9FP7h%e9z(c{3GhG_*m2z%Wq7+=kWXK??GQI zzd!k&m&d<0>VKa86tet${qfw_?=^c4UcX(5A1t`i`t4=CSAV=s{QI?3KcBzaAN`^K z1>Aq-a z@$(%0FQwo3Ncdv;`TpxU{Ppyg(ih90o$7n;ytpDT}n=!@m&>!;`N`{{2+Uo1bbKhNQ>q<_JT z=wB>9-+w%ZKkVPp|HJgf^7H+}bD#fF`wX7{eG{KiaHaXLWBrjI-K>26idDZm9e>Z! ze=q$rMujhyKR)@M!(UDR_j`pemY?q*p2M#z{*NcI?-%Kd<*!clJ%>O1zv18Tk*F`O z=6eo*9sRG44qq&PajNe*{DteI{(kIVEPpiK6dPVjwm%sDns>rq`k|;VMvk?Y$L~4( zf&Yd7dhs86jxv^?``7-+;m>(D{QJg)FP5L{dk%lbkcs87E&O2kV)?ng=kQxM34hT+ z;fv+x`>*HlJL$i|^(&TNhd0HBmy+!dhCg%DsK0{iM~ocvKY%yIh8Osr!=ExV{O=qb z{fn`GrQ_#0{7IXKzj*KP#q#s~c@BTnd&2+SA>oVVH{eaN;RXGB4!>oK@c*?>_+spj z{&RiL;g1{^{zn_b7t7DrZ_nW`p+9Ng@Wt|Teb3>~d~ejhkM+g!XQ%)E$8-3jw+(+G z>x<>*`kupINB=!Mf5r0i{Cf_6)OJySFP^_*`MJL5@K@8nnDxc-^S|Hp9Def-QU7Mv z7t7D}J%>M{Cj7$=jpHYlKPmnDQ_tZ~-YNWv`-Lx-pX+-Lzwv$H-_81B`T6?gIsCej z;XlOsV)?ng=kQn2f0y;e@<-xLvEij;`-9;R*(K`Nejvs#MpWti^Bn$S`j;IRzF2<# z{N*|P?p>q)t*kGWpU3Yx{N~#5m$SZDey;C%dHnAW|80$*EI-#DVtIM|Jdk%jM{jCp=`4`L2{iZJu3V+Szjza z*Y_NL^WNc){cy~mSbo0$cn*I({j>HDUo1b@_ZO1 zfbdT}GUiV#Kd(Q};V-2B4(p5M=lY(*pLSr>?_+(j{5HHPHoTNuUP(yq7Q6f^zS+Rc?U=R%lZ5(mY?f;4u3KI z+xh$}mY?U}bNDk3iTc;^{1?m5^*t~5Pk$EA|9NEjxxVM{I~$|^H+lUN%g^;aFZWOX zXw8}ApMC@9zmqIK*Y_O$*h8cKOPqhP{9NDja{u)I z%lU65%g^;a_n+UqZ{NW`zu6`6Aq7|b`ORU`|Ig+Z=UY*yHZmV{^k7%dd&@ z8|r%we=Pl9{9pKD`JKu49R7Uzx7-)LSbjeKp2MGdbo9UbcfuFT&;5H2e>(lE?+srp zKlkrB{2|9g{bTMAUo1cO?>YR%^#9HI7t7E6dk%kq{#9R(`eOOHf6w8!jEnyN$@v${ z&;5H2f8?>@zy9s0FP5MC_Z)r${XKfa7t7E6dk(*s{)KbG7t7E6dk(+jxaj{l_Ai#7 z`}Z7v7yTuif3f`BzvuAR&_96vi{W{v%xfV)?m$&*2X{A^h{%zgT|m-*fo2^gqM?#qx9ip2MF(|4sHUmY@6g9DeJG z(f@Pbiun`E&;5H2e=_|`dHod2&;5H2e+B*HdH#y!=l(s1Klh~Q|1w@b#qx9ip2J^2 z|G9f({9^gJf6w8M9v}6u=lqN1=l(s1zm9$n=U*&8_wPCU;U`D^ojLzv`MH13;dj&D zj`J^;pZoV5esd}6AO1khpICnG-*fnr=wHR_r&xaO-*fm&>Cfi%M=U@0?>YQgr$qn1 zX8&UOxqr{$&!fM`y)k~V{M^6i@atNl{#IN+V)?m$&*874-^2dJ@^k;5!(UJT=bV4B z{M^6i@TZ*0`Q!YH<>&rAhd*XQ_`82M=1(ktApQK;bNDrU<0GR=kO=eujla>%kL=L8-35=FQ9+v>Us>es>-%g^;ahrfjW$L|PVEI-%x9DZ9{ z)ZcY>_+t6FzUT0l(cg;o#qx7~&*68RAN8O7YSb6Y&-FcrKR|yJkH1)cuJ1YgDIbse zi|>y5V)?ng=kQn3uem*ZvHV=$bNEv);P|=z#PV}}&*878KcDk2mY?f;4!^rS>QCnJ z7t7D}J%_)R{*W)m_{H*beb3=fyO8tG^)Hs6>w6A=J^k}J|6=*MzUS~~d?M;^$Mq+c zpX+-Lf9OTw|AgyLEI-%x9R4i&pW^Ws%g^;ahd;c7$B)-vvHbFd*RH>wm;H;w-|s7N z{Dza|=li$k@RxD_EqVTk<>&rAhu{3ksQ(a;pIAPACWs9$CEFhifAS^af0zA>k>mcA z`}Z7vNd4FK+AQ4UGOhhd=Sss9#q+s9~&P>|d#W&*9fz z7XGe0f5h^0|DMC2LBIHiOy&Aw`2*4ZhWYm#{^Ua z-*fmQu88{I`cfP}vHbk=YtP}2zApT~e?NS&{M^6i@aNM%iS@|ZQD_wPCU9{ST+Uo1cO?>YQ_`uour%g_CL4uARW(f=%d{u9fe zmX5#Y@Z0VP|NgsT{>1WEr@z1O9RB#b!>{4|iRI_{^Bn#X`p2`rSbm;A&*2ZbC+e@f zGx`_H&-3Rw{JQ(XzwdkDi{D3S z%g_CL4!`re;XlmhFR}dGzvuAh(l5~$%g_CL-j1EPtxSL4_m{*&>MQ^K-{Oa&|IQD_ zzyBAjemlQExK#Y%Ir?vSIQ;$h3tuchkKc3nZS?=VZ}?*QHL1Sm@H^>$kM+g!bN`;h zUrztp`lv6KKOJw14KF3z9}K_!kr@BgtS?56=ZDe77d9|_&*9Iczu5<(zF7X)vc1vw z9R5=JFVh#xuS>q?@Ym39qA!-8kDur8M?D(jAK?6ni=y{QUC|&*4vc zEb8CP{>AdAruv@4Uq=4}T>oPEBa`pBpMMV)=a<$Rl!p@ks>=Ddn)P3Pe%tc>SFHMZ z{d9^7s%U_i0 zdk(+l$1(obpNslp`FZ|4FZWM>3di40mfxT1dk(+$@uD_PyYz6U$Ok&q6chX^zV7O|0iPp zZlm8ymfu&lH~OCY`FHbvgU`QP5`VSeO8@?4_`;|^{`2wtB3AvSslMmve}Mkxp9x?||DOwAEI;?}IsAV5&vE|5@^gL9;m`O<)PJ)( z>Wk&)`kuod{Y?0m-4ec7ey;C1{9!*0|Ir)67t7D}J%>M+{_dw6Br?q}goxHWvS{9NC2`0MD`_Jl8%pX+-Lf7Z{V{x?`(EI-%x9R8GN!@rUB z#qx7~&*6_)68>^tKg9BLeb3>qqW>7LA7c5rzUT0#{UYlBkLRCQey;C1{I*|){~*sl zvHV=$bNEA^3;zoozgT{*?>YSC^jkT8vHV=$bNEx2M*Sai{fp)2`kupY`BnJ4eKyvg zSbnbWIs7&BCvpD8@^gL9;V=Gm)c*_Xi{LKD53&5(A+do=wm%sDditN^^;?X*(*4hK_{(01{%3T@@e|AMExr#nFzR~_ zzwm{w=})6CuI76Ve>MFtUlsMm@;l1iZ|vW5_!D1@{u@|dEI;?} zIs6&)e|$sK7t3$On_|OD$@T}sU$s2y|72?TV&ph}D~m5|VECTHU-H}VyXlMN=l}l- z&*9e$gntBmaW&s__>*1={}s-^Sbm;=&*3kk|KFQp{9^g}`P*~&Yv}K;=P$DSC3sV8 zcq!TbVE7AGME~zx8}-G=G5?eCrr7WT-*fo&e++-u>%tdffA}4EQ*3yF?>YP#uZBOo zD||8bhoArdTRexq>d)a%(^w;n&x<2ZQtNEV8pY?k9`_UIy^F4>ZW=;6Z zIe+46zUT0p*M@&R=TBVC_Z)ujzrvr*{>9aN&*888Px#X~|Ke)C=kQzp7yb{}zqp$3 zIsCbsoL*jA$I};A^F4<@Wb^Rf7n9Dc*L z;qSoXFP5L{dk(*6`|uy-_{H*beb3>K+9CYsxqij+bA8X@ckLAZ*LnQJ@@wB0696vR z{$TjC_7DG0J#qZR$Z`Dh_0MzoLkZ)x{IRLN=kN#UKfw7H%U^^y#fF!X?GG;3KOx3Hl%HRE$;dH(jl~x>`JTgH#{KuE zFP2}6H|Bc|f6a+e{{@a;EIYLPNq^uV{{0DAem;KMA36NR z-2bZ4;fv+hr23x2AE1Bn!QqSL=l(s1-_#Q0-%w?Is7H3hJOI-i{2FD2EI%JV&*4v}|2fW|Sbl!~_8fjc z{bfAYPy`k!ZgvHV4;zUT03&WQf6`)$-0%g^)Y zdAWc3xBi~}ljZlP`t_E>UqQZx^Dma4*N^A$*U|qK`xnc{Ie-mZvi-sEYtM}F|Ah6$ z$l>Pm*K_#I^nc0mi{SzcuM+{uO(NFP5MC_Zu)PG{17{6G4T{?cA!yiSzhQ3&SK7O9VZ>2w-^Cy;{*RSXB zd+7gx$6qWz-+w)aKjWMj|GDg6EI;3WJ%>N+-0;80^)HrRo954R_@n4=PhTuQUq3zf z^Y>@P`Kh&vl1mc*t;+d3mi1@z-#>^|Kc7FIqyHBAuRk0253&5b{yc|2o&M#&2wyBe z-+w)a-$(zlUxqKP=6eo*K>f46SpK4P{5*%>dtMy>qd9)D{5*f2m;0yx<`VW#mY?sx zeU`(Y+!pnZqA!-8*N^A$d+6WI{>Ab~rSW?Xe=hyoSYIqZpTC~NUq-)?^Dma4uOFVn zA9j9>e-)3vSblHn-}7?+^pEEHpG%hCmweCt{F}4?;PdZWiJvaG((~`6k4OJk?i|-& zvFhub2A7IIJV*Zv>0iE6_+t5a{yc}jmj1If;fv+x_3JtOVHZUI6W$lTSbpx`bNG|# zU$SHPV)^<0={fv$?NNUu>x<>*`={sd>n{v{K7FzLeEsqqemnhHBcp$@{JOM$Jcr*y ze+}!4<>%w)IsAV5yYTpn<>&LybNDOi@5}iY%g^^u&*886M9kme9KTq8zJGcSzvH6t z_u~2&%g@&@&*68|f1dq|<#(p}_Z@m^DmY^E%~0qUq$~l z&YxI*zW;gd*Pm++7<~QdN_@4qq%kpFf_L z=a2r^9}mBcEI*ImbNJJ^|CgT#UtG=i9R7UzBk7Cf=lj3s@H;;l^LPD%s4teE=g;$U z|Md6Z_@|NO=lj3s@S84)`d4xO#q#s{<2n3R`oCuXV)^<0?>YP~`U_cKEI(g=JcmD* z{skPrSbo0#c@BSo{?=T-V)?!4{PVor|Kymz3+Z=}<@Y7ub3gwk960#=J3a9=1y?%% zMqe8B_u=OkvFhjhr|0N@CjDdU;{GF+pXbkW_>1X(bGPut^7H!jygdK(|HAqMWcj&& z&*3*+7UTcK?onSXKi~g7hri@g;or~tV)^<0?>YSS^v~HN>Wk&)>zC*7$4ue+*)x2x z{JOM$Jcr*(|9;jN%g@KpbNJKgzr^_y%g^VZ=kWXK??PWJKi~g7hrj6Z82>-nzgT|0 z|9cL9>=ofZ!}$}-&(|-{{rnpgV* z<>&eHyxc$i=YGom$@264Z;9pbdpe{3dd|OCeqKMG!=Fum41KZueE;(t{zCd^uz#`q zeExY3e>MG`Isan$`TX}Be%+^I{5x>{iskpF>yPK<{^?&we<4|ZU-CWo^KZ|C2A_X> zCvGmd()rhURrFuSzdsYJe!hQrj{cX^KY9PS{)*-2`STq9@T;T#L;UZz#Paj{^}Ia) z^jEWf9a(9-~T*^KjNC`|2wQNmY?r`p2KgVf8GI6Uo1agzdVQE zMgM{W!xzi1OY6sT__OJMll8^&^YQZ>{!;p@IDcaK`TX-7{(AcR(ih9m_dn0!54$er z|DWt%EI;4>Jcr*+|0&L&Sbn~KdG6=m76%VL|F%qgV8NBnzgeum8~^@ItonKVdyf9+ z(f`}BxPFV}=k?<`{8jYt|4sN}`T73mIs6e_G5^oJ7{0ig?>YQ2^besgmY?r`p2J^H zznb{t;yP`TplQ{Kee=q!(iRV)=Rfcn*IB{ae|;Sbo0$c@BT* z4blI7tS^?I&p*%MkEZ`|j$bT4pZ}i2Z>K+Dd5m8yzc*cfJTLeEndrZt{!p^~zT|uE z=ii!izWpQdutO@JfBmfYr3J;$Qi`Ht)t`~-dyf8_yQBZs2g4W3&-3rO_up6ar+XDj zKAiZ4D*bn|{(JcOQLOsjIsI#P<^7v1KOcYXj~xE+8)N)Ge1G_2`FZ_& z4u2H=Eq4iDEI*&Wp2HtQ|Gl;0i{dk%lL`e%Ky{CxlS9De=hV*J10{E6k~`@iS# zTj^iQ{>Ae1_1km!GwGkh`4`KtD~=O3aLM)u!|$X2ebyHv$F(OPf6w8sqQ4u*FP5Lz zzvu94dSd=2bNf*&*2ZdIp*)eC&L%Z z#~fe-WBi`OZ=nAeeX;z!em#fZLBILws4teEpFcc@KZE{Bi^3OI^F4>(PyeT^FP6Wk zJo=5}_Z)uL=VShcbNpiY`S^KW?w|fMJbp9C^7~VL&*3*ui~8r$7t7D*pXcy9>2JyL zi{mY?f; z4!`xb=>KKb7t7D}J%`^z|4{m3`L*TIZydkp@O$ZB#s0h6gC-##UdzgYDN7=RW=y(|CWEcuke@FK7LRhhzNWYV|!w|3hZP{QZQ!SpK9me$U}g zqJKznqrmwqmcIyZiVZKNl*6yPGwNT+`eN*l^FObD&*6`y|6P9m5zB8bz6Uli>U$2q zhyEk%Uo1b@_Z)sN{p;w9<=3Hjv4K(FbNCDCuca@RpMQV2=kQm}jQRUeaihZgi{ zdk%l}m%`uoN8yXB`JTg{N`D^fi>vvbm&Z^4-iM<8LbCiiOkS~pOT{0a!(YMuCq5Fs zSbk&K-spP{zvjy^{x8uN%b$%m#fBHu_Z!0WC*ooW!jTwCXzBlp1 z1y{O$x3m8LJ{`wTtopP0{lVzpbM!yttI_|a^u_Y?{nvB&4fMZBUo3z0rqKWx^*x6_ z>1$EHzccz5%O9G2&*8UyJ^Wkgi{`a|i9tNEV8Z=-*~yW5xNPb@#rpXcyr(tnV?SbiSA=YIST`tac6-hvFdje#{e6+RQ%yN`met?=KsFmg)f%B3~!1JFYrBwzy2HHfA;s` zi?KhB|H$GCn|#mV*W4HW%fAX=EI;?}Is7jAZ?e8veqFix#`>PapG|*fj$bUlDfynm zAE5vH-$wsp`D2ssIsB1xV*HQ35WZOcg5-M+e;NHB{w92}{QTb!dk%m4H>3V@FNQCc z-@aKi04~}7VEAjk9sYsOhc8BsEF)&#q!4`-*fo2-;4f_ z;rSz$zbN^h!(TyvPo6(w`HS(U*zi)a{lW0(&X4+s@ca=Y$NKL~=a1**{`9@xOB?>YS0-2WfCekH%JY;W|nKfWLQmLEm^7Or10a`Znf`JTgHPXD!~v3|tz zYm)Cd{MGdPUJ73JzXFP5M0U!KEX`Dpmp{UPd$<+rB(J%>N`vGCvg zb@*cWP09Bhei!}k(-+In&p)2SpGE&d9)Gd?x>VnD`2F-h#QU#U{*2^%4!?OpjQ?29 zpICl9-V_^NO13{3{*)hw-^1&V7&+Eoetz;C{%rb_Ie%jLUB&mn21b3);g5Vg>aS&e zvHa0xd!z3;{AT(Gvc6dUy7c+ObNEe9M*VMa{>Ac}Qhm?ichi4`^Dma4|NhK#fBxM1 zh{4aFBN883aHZ$Z=}$%f`<1pUKYxlBioeMpIG(t_0x0o-$(yt`eOMLQ~#dBANEYtzly$Cem?%5 z`}kL-@%}CG|Ei3?j`f%CQ>?e5s95#Kr2aie|E=`bZxg;){@fko8-Q{AJcmDIAjW^{ zzTu1I=ka?EeMKY#x59De&-(f_R+zgT|0 z|9TF82K^5DV)^;}^Bn#>`cpW5vHXQ;{GP*~{Ez5=C$2xS{Jj1=_w#S=M+RSSzLWT= zf-7BrdRYI{!{hjiRX>m4bM)U!f19nt7t8NT<(_@CwVQ!GE%_Zn#mC?B{YNZ6|NcYI{rsD9SNWMcec2$3;fss6Wxp$Ze(@as z>`lXeu`YbE{NjHuZ(!8-9R33Oo9q()1}^qT|82z=Hu;{zuiY%_Po*!${_q#zO|i-M z9RBj5;eTb1s4vF;@aI4-Hu;{z@7g^4$94^0EWZzL%=aAr=q{Y~HZXk8;Sbq5>Tk*8Czih+aAd^ z%H415-*fnl^uNyIFP7hye9z&}q`xD_FP5LzujlYvc8LDZ+9T#qEPqw1?>YQ2HQ_&1 z94K5r#qyUW-*foGcMSiZync!0=k@0~{E75W=k-S{Kd(Q}%j4fE>etk9{ABqxLt_Bo zQt?NN7AKEH_N^W*D=>xbv%@zXzz&krqR z`P1U?Z}2^bznuH;!}TwgpO3%i@VgqL|6TTo@r$eZp2M#j6aFM#f5g>%&*3jRBK*Ba zM18URJb#{-$4~!l&i`_<{5*f2!*3fK^*7rt>Wk&)`kuq@r2lHMBd$MU`MJL5@YmB{ z$ogXWxxVM{M|>pupI`i(2=&GCbA8X@&!T@9=U*&8*Y_O$Jo=Y#{9^gJzUS~8kBt6n zw~zkC@^gL9;WyK-*(rRn{9NC2_)F=pWPP#xT;Fr}E9tLheX;yp-*fnrKN{ojVSTau zT;Fr}-SSyqEI-%x9R9GTsNc@@Czih|U4J}>zlQ#Ju0OH-T;KC{?8I%tM+blYJU#K` zf-8OgoO)FB|Mmyt_={D)o8KQ?D*o^s{jZ~c2Y-GgmY;wA;W_+KM@Riviyd+PiRI_| zp2MF*|L*$m#qx7~&*3knKY#!5#qx7~&*8Tm6a9a7zwpKKbA8X@chSFu;}^@%^*x8b zp8gITzgT{*?>YSXanXOx0nxu$ey;C1{JHeka{OZXxxVM{m(f4%z^E^lpX+-Lf8w#x z|2bU0V)?ng=kUAfujcs0@^gL9;SV`3>aY4h^e>j5>w6BrfqoC`i{l3{9NC2_^rps_($;gi{^Zkh@6kO^0IpoBs|K;xZ?{~%c{`l-Ww)n!P`ktfzvGjMK zFP1+!^bNk}@aNM1-VIS-EI;2rJcmE}r0D!glSh>AKVsF-&kvrX|6ckp zj1ONdzc2OgIsA#^WBy+_DSWZ~eExV2znlJZCx$PUk2Q!5T(bSa@aND!oBfNC!_DFi%DKOaBO{rGKj^x)&SUE(7Pu5|oXvHqINw^7@@=?WC{`YI1 z!(U6k=F3rEEI;3WJ%>MfV$>hT<0qD1SM-1ljQ%}`-$MUP))&jq$Io;4J@nt@{E6k~ z>#yhV=hHutzF2-f|2&7k;Pe>(ee7Q>KmYvQbNG#Cg#SUVKe7D0{yc}@O#clYf3f_$ z{yc|2kN$Z)eq#Cg{^L3PMfC4v|6=*Mf6w7Br{Bu+M=U@0@3~)pexI&4FD3q8mFv&g zGh_bmx-9PhV%5+6dyf8F=x_ST@Wt};`QthK>GVsJ!xziX*I&=!_t8J|((uLAe9z$z z&|k{>V)={8XYa=I*K_#2tucQs7e{@u{5*f2m;0yx^Gn!2S$==2-)A}e$!A6VvpN4_ z`FZ_%4!?)~1MFWcAJ75yUlZ#$^Yfcn_4D<|bM!xve*Xz^{SnL0>)&(u!_JNQJBq$oeqR5c!*8U& z>+w-vEI(g=Jcr*(f4}DN#qx7~&*Asbf0Vwsn(sOM`SkB+|6=+1_L) z|7g}1%g@j6p2HvB7XAN)zF2;)?>YQ#`mgc#FNo#m>!0WF7tlYP;}^@HpXT3l_><3% z{(I<)<*!b@=e~Zvas1%*bARF&3a+$%T0b83FZoDKdHsl0zZGwa4KJnQ56{v6{0qY0 z{_ya{*dOQa;^GUNe9z%eZ4ZCpnDE8&r-r`4_Zmy4Sg~8hd(EG{o4uAcW@Gs>05z8NgH^qh*^zS+R#w)^~ zJ37WM#{TGkPU_!t_{%%P|KkDSi{+2Qn_|NY>U$2q_Nwr&r!U6-sGoh$;kR8K{=rYP_H-^7I=T9uZIo00quAto4!{1M@Q>vELo9z{nt#vXcYQ7VQxA>ti{%$TRv%Q~bNFlKgnt(2 zPb@#rpXcx=e>40i4vYF?`F+LjwZjH3+5TYob@Ri2mi>#7WBx`K|6Kz%FnrJ9k9jQo z<5^!Uf8o%wzQOk#{<vvb!|$NKmcCg2!kE4d^XIvb|I!l%kAF(yI}5Hf{`#Lq z|6e_(INn83vFdlH`ktfzx%A&pUo5{d`JTfcpnvyAqrO;ve*W?t{u=tfI5K>({QUgn zIs9QikMVDERQMaX=o{;QeCpqG_!H^>rWC$d^_L~zbNKboM*WX){9^gJf6w7J(SMh| zSbqNf0iMI}SQ7Pr^^xdbEWa-G?>YQw^dCPVe6jq6>H6zA{N`Ur{lkw9Uo1a=e()TA z@AKjBeMJ!|z=Y{tZn$ zeq`i0|JD{?*ue0$KN$YZSHi#X#PG$);kOiD*ud~Thrg2kKe_(I@@vcXM&EPzL;e`` zzj1Wb7t7E6dk%js{lj_u#PW0hp2HvaYSh2GIqHk$=l(s1-$s8F`xnd4{d*37;>xIh zb#bA@{X;B2_wPCUIrRT=l(s1KlINW zKl>NU&;5H2zmEP=kUAff9$B} zUo1cO?>YR=RndR*N#Tp-=l(s1zli?B$AvGJpZoV5{tEgZ=lU1R&;5H2f7xr%|BGBd zV)-5E`r$eJv40K!!#sb*@^k;5!*8YkGW!?H&;5H2fBfH~{w!X9#PW0hp2P2>|2F#< z%g_CL4u2{Ar?~#b@^k;5!(X&I`u_{pzgT`=Kc2&{c|H8IxPHX)bN`;hA5DMOQL+BS z@^k;5!yoncsQ)dlf3f`aY5jN(zwV9jci{C$EI;?}IsCEox8?JnSbj~a?>YPy`kV3j zTP#06zj_Y8gZ{O8{v^vUPOI_;F4_KI_&wY*K_za zZ$vZd7GbEp4$fcV)-lZrr7XOvi-sEr*9GdHx7;Y7bC~{ zo6jH5;SU)W{)vZ#FP2|d?1Bx9`kuqDqrYxU_+t6FzUS~~(jU$9Pb|N#D2WY>`kuq@ zqd$T5#qx7~&*9g&gI!(TxEJk}S>uS4-- z1Eap@@CWFh%HuDVpX+-Lzh%o9|9g4-#q#S=yx72~?>YP_^iSsa#qx7~&*876{{ria z<=3Hjv4K(FbNEBIivH*D_>1M|`kup|N`E!yUo5{4#fuG$`kup|MgIg|zr^x$eb3rlMdz^Lyz{Dt)YkH=pu zKiBshe&g0L{+&4gV)=C_UTk30_uQX9b~|bC^T!^Ek1n{<^T$NifA_BV_v>QSpH;5D zvA*Z%e>MHB?+jloe`NAKhd*?i82?jW3|}n2KKY)*Z=l~rUo1b@_Z`u}17V)?ng z=kO=f{{($;HQ#giGwIi}e{nV6bNCDB-^t@AuI790>*t-cUWSYxyq@+dxYGJr$@&9d zh~p=&R^M~7@_lg@w7z5bHo`?qsnygZlql`8euvHrU+#sB|=SoQP#d5-xTv0cpn zv-HK)e9yiAn@WTGpO*Ol3a)hi)wBMd%ia@z|3+5*$!Y$yKXUXxllyP;>+r?$rzPKW z__f=|`2YTV_+t5a{df+49Q~J|ZQjYXV%d{lV}T(7)(cQD2N4 zpC9sn|KmCQ=9(D)S*$OXKf3rH*ubdoIsB>ge@kC1zxY^J-sF1@zmNX6Isan$b;&wY$8-2iJ4O97*uPl* z)KuSdKmSfVW$^iTa^kZKu5|wOv;Nc(@&Df=R{i|*C(qIU(Dz0E{q)81^Yf$U@Tby0 zmA+X1xHNvxefh^_l$qPAXfc+|MJ}Hzgm2MovUd1&xv<9wQ~K5 zBV+zL8lt{f^%vnyvEiju{NcIRUsim7um57=zg4L}a+jz-`YUn&603f`e|YZo@0>8W z{+ANpUvQ=MH=6ZNTM_p!vFdk}N566Wo@4#YqW|Q};fv+x>$m6d7t%k3^~Lh@`R6(O zF}ue69m@LRYQE?2=hOcieX;!7G=9(FFQI=veX;z8P2(GYOSV54{<`-^|98h*e+bG#JOvbM#-kd(8h{6T=tF&-Xvi;kVH5 zoDjZPeos*s8yNLHhrf*ev#c+czYub<$@d)o%)01*>}gS7EI&WLcn-gA&+tFb`eOO{ z`NebiE%c8+o#Q9V&(AN~A36N#-2coo!WYZ0!{CbzT(bSa@aNJ0BI}Eh>iRHHybASz8 zvi-q+{=JdTx3?1Sa(d38wO9Q2Ph!=tLGfZ!eb3SV(7ieS-NF~k&+Er?_)YX5 zsS95$Ki|JRhu=Ye^&a7itNEV8pFzKczF7Xc82*Owdk%lvJ~93sIexMHJb#|UpG|*X zj$bUlKh^gf{=|Kw{)xNC_{H+``R_UW9{M-1f3bX=gV?|&+aC;nF8#TzFGdb`LGgtR z4BvD3?e)?Bl^nlVem?&_hd+z{jeExU#qxVmyx72~?>YQ2`$hfN>5Jv}mF7Cy8o|d{nKyWwmg2Z>W@kFJ@@)&oH@AuS&2VUaHaZ< z2gdmCzA@^HRewsV?>Xjg4*mb$5WZM`Q}R8Bzmoobp9xy(chyx>Wk%%O3%-p!|ypb>K{j6EI;?}IsAF_|4UyiKhK}%@K@7cL|z=zo*PUo3wn-V_^NO13{3 ze%FU${Lj)CBggf-x%k2chVME2Mf5LX|6=)h{GP*KPyfHHFP6U?Z;A~ssP8%aWrs!o zr_dK;fApW%pXcTJ^q=GTyPhn+srVk)z~%au`}Jp7>)`9pR*BzNaHZ?d*fG)nx2}ux zPpta+`N4Cq-=FF|mUvl}`Yo*g-D{%0SoJ%~qu)4w&oO`f^v|6dzF2-w@;!$?_V5`0 z;n#BfWciblulY--E|bEI)t#@Em?S z{qyOI<>%)&&*9Ic|4q)HSbnbWIsAq6zj$@bzgYg5bp7`n{<^U-{)0GwV)=RgJ%>O1 zBjHbB|6=+1`r|qLiS(ah|6=*WQvaUApY+kFe*o9NSbjeKp2J^7|L^q0^4rt%o9FPy z9~1Rga{OZXE7JP&9Dc(%&L8WG<&RIk=kTY}U&`YrmY=Vmp2P2@|3CU-`T6?qxnI9- zK5Ovx^OnS4D!9`1b2;lD%I8P1>bIrwdyf9c92@iZozKSl7t3!-zUSrnqrd0p!kmP!pU3*WmRGuec@BRu_kWGPxLSSB;jf{81^X9Q^F4<@^0=746X}bq`JTgX zqW>)W7t5cW=HGMp1N3j9FRtc$4u9(L(f`+U{K)cGr|XCINABzQ(6a}x-@_9hS8%2E z+kRryfB%)Se#EN3G}ZSU{WqQ*{$8Eoi{U$1<)LG&Gmh&f;zhG!t-{5;*?*E+dKSh59S^hk{DK@;IzUT0#pBMfn^fz#^KgOSb z|AOc6m!BX0T^zp{_273EU)aE??>YR59}oW&`eOO{{_VM6|6WViyVZ#|`B>%a-*ncW z_~|%*#j2nC_Zfb&*67=g#SC%7t3E!i~$?CWc!2R zPrNw%9rXN7Mvn303mX`|_6NhC%KcBFFGdbGUq3yEKbQXP9KTrp$l`lo1Eap@@E6j5 zi`Q?l{5r_RCf{@TE9gJO`eOOHzUO}a%rDN5_9#{U^TEW=RXKmwvHoqN;@?k*Rexss z{NXwJpMGf^zk2#&`T6<5bMODANrU^JmiTK0S9<N7=kR;!pGjX_&G#Js0{V||{Nif9=kS-) z{|P_8h^zUY!(U5(0_%&b`JTfcadoVpgXxQ_`JTgXp#L}aFRtc$4!@cHRje2JoLUx?-B`@iS#7t?=<>rX5{KYw@*f5g-{eh<(W z%kRgVV#7Wk&)>zC*7=h45C;}^@%^*x8bj{b%0Uo1b5 z-*fo&*Twvu#`Gb>Qi{-Z@-*fl_^zY#Oi{8@ut}DQnLNQ@Mqr;^Y>HwV&ph~oA9RC@B-g+_yeB_|06nnWb6+=*Vq2Y z;dk8_{!sejYQE?2Yd;tMKJ>-%^WQ&u?$^I-&Kvyv)s^_Rf-60Lt?h~WS9~Y_`vtM; zw-@8Y2FCn(j{aM33jc*~hcA}jShhF%p2MF`|Ce*a7t7D*zvu9m(m(Qn@Wt}GQ+?0j zx7-~4AI<*7^7Frc^c?=c=fmHY^~Lh@`u80E@M+;+M_(*|Z0g^0_|5bWq? z@H^{D${JP|O4u1vxW$a%pANL?^;F9eRhClQ+&L8WG zk;9!-d|?B__Z)s3{eRIH%g^V(=kRCJKZNU7EWa1Uiw%tWp2KgvJ^KGNeX;z$vc1vw z+|R#%rSt7SiMKz$^7*%l^$&S^>+<<0R{f4t-*fcea!2%k{S)Df*`{Cxa8 zhrgQsY3yGtza#zqqv!A^ekJ<9{jnIoSbo0#c@BRD{mUK?Uo5|+m;-F!lI;(Mzk>e0 z3&Iy8$NbGLzOaGedk%lvtmyw4_Aiz{t88!dJ%?X+cliBJMt$-Bqw9RY^Bm7N98(lU z5fm{&Sy@p8K@k*X6+uvRmicv)QFIn$R@9blL6KQ)K{r9Sg>_S8TWvK(Sy9tjY~5B< zQxru}WCXwW`mXD0@7zn?<4BY9xSsR7@8@~{d~d#dN$pQfe$3%_$UjB(&Gu`OA9MIi zY3Y`-G;F^AtP|41D_X8V=Nk2(B`n>qjaI)BXe=OsVp@R!JM)%uz3=f7VYbNGX1 zu>L>hasAEq^ZifE;g6F4-0$g|?N3Sl#~l7F`4i-u?dR)P%;A^+g#DkW{>}C)Q~j93 zuaf_%&L6Y=n&ihEev|xzwf<)N`Ti^B@Mp^Zx#n-SKQ{gRA?EN`ba4JV%QxH4{l^^s z$lK_T)cno%8`At^4u6{bN93FBFG_yQ;ZL}o^=D}RneFHPV-A0Y{MR4g@n^Q5`;R&N zUiq8p`fawK@84q%fACE9KSt-T+5QrIQEd2B8^(j-FZ&t&HeG+s$Z`E0gfEH>pWw$F z{_>yGe@ng@c<@ZSSgOQ-79?Id!2M5$>aY6)-angNzg&+AM*lHK|6TImyq><f1%j^G|0tf zKj!eq-_8E_(EQEzJ4*H%Kj!dz ziT_$~f8YNuQ~hKAvT^DD+wA)J{vqb*zw93N|E7Gi{k;A$hd)jJHS*2&^YdrSQ7$2_jz`d{t4enS#(S#W>r*Yq&!Z#|LgXLkL` z#T>AKG5?sO|7G%zlW(?PSF+dmF^~PvPW|4O_%Zc=_s1*Fc0Z_J^$7c)cJTV8>yO#> zbN?}iKU4nu^3C=qrT$|Mf9QPH-)AW6n^*gT_yFMAFdhtl$^!ZaZA0IT9LLX+bo|B~ z{`e>9@3bX-v;B5_QEd2x`Z0&Uav}Y-H>PjKc+{U=d|3?T0_HVX7G5!BjF^Av0g#JVO&^Oy3jxUN0pK8N+F#H+M z(SKtL`ex+V|1*mZY+(2?hhOt=`rp>^XSScO|1pO@N&flExc+AQ3rf}3)Q>s*s^?k% zwJP>+wx93cV-A0u{73hrZ?-=n)sH#+PWcaQLf>pZzy1+(_`{d7|4$F2Z?-==)sH#+ z2Kfiz}IQr$KDLI@OOk{C17MNavr~ejC0hHhiiL6`86{$mcm>SfknXFK}l)jqx`Hhe<;n8Tm+3jLn9 zbo`1j9{tx8AK2`BJQ)5gjXzQ6kJ)}ce_{@QvHTsjX8&gUZRz?IbNG#~vHvUOo9(wG zKj!dPtf0S{&OfvLeEp6&{OUL8-y`2_e@^=U7h?{8<-7Dhr{^ED{bBf`*zl<~j0eLX z{2u*t_55o_j{TQ^e<k>{`3{vu9)_55QFfAD&&|E;&_o9z!t=TFSxm#%Pt^D~%ITYt!_VhW%;8Vj zkoD`I=lsp~^Y_0ohd*=({X=yBVYWXXUlbcYq5qh}@7{?1OT*Z|8ROA^NAZEpe$3%F zZA||@`DXiV)K~j4hd*c&`WtV{`eyt2`VsR||C`cZrTfQjvHhA3aim$?3B z`+5Jz9R39PhrB}HY`-_vk2(DDo3s8|BRGGv{fgwr9DbAhY5UVR+t253%;C?Hzmx7? z%meu`hrdkz#+9sZwx8E8=I}?BbN=tX%=I(dAA>K74WDYmcrg6QThRZj?qAHvar}-d zKCpq|#~gl#{DXI3|7QC&kc-WJ%;7JU|8?Czng{Y@4!?3s_WzOgzuA7ie#adC4ErP5 zzuA8N|94^zzit@o57zpb?N8+NSIW!_)B_ zbNCYurhl65Kh5?VS$=i@F^4~2{%>^uZML89Ut$h_{2{D=z3zX^_PbL3n8P1(DE%K7 zCn{d6G20)Xj^CKWpLiJk=k)w))sEAIgZhTQ}_*5IlgW*@7#`@cC&h;}R$MKiXpP0j+ zD*waX=$q|NEgl0K81-WgzwC6@U$rZJv;C@c{fRmJstNQv_5Fj{e%^mEhrdkz_jUhf zwm+|E5gQo&#~l95FS7niT0gV>ynZo4HNJpY)(uap0(`ZwFp{l^@BoBU05{W06eb22u3stx18 z@Vmaj{x{M6vl%(g-`s!9;jffGT3Gi$T!>1$8XHx zH%_Dfs^)LDpXVQQ_$~4;)%zdJ_UEMai#hz!*Rp=&23&u${rcp`9DbYpLGsP^^ZTD; z4u8gVtpD&});HVF=U>d>_sFl+`kC$L^@}**?x2S z`D4uCkNFYnAEnoy%=TN;{d3Gq_1o#6_9>r#7mDpSr2Q9j_#i*4)9M3=b{w?P4m&<=p$B)^5zW<0h{9(Uk{m##F{mu3p@kO!W6Z(%i z{HedAzxIao%@~jVEAU0J;S>Cr!=EvS{+91?{md8-zrFatW^`uVNd{;=f79R6_mcc_1}{e1n3Is7H^U)Sp&X8U>m zF^6CC1pD7+1&?2|{hHK&%;8U!f2Qt#%=Wv}@fUOW^-r<>Pq*UvYqq}-UlbcY)rRq4 z_?1u7e^tI2Ire|{V-A1CBKk+``**Yb{QEmGhri$%`a5a=nOFNo57@xyKj!df{+0eG zx_+DOuiB)ful8dOzx_q}%{z1b%=Yuo?_&;s_A>g1>HgbnzbWm%n8P3b3jGar|7y0M zpTA=czefHIdj2!pAJ6Hpo`1|s^Ot|C-oMZ;wx6HBVh(?)#*fhPW41pMUlbcY)rRq4 z_(NXh{CC&;Kg`H+{N>kQVh+Da{sSv{{+aFP*H2>(f5vO9zxTS_|7QF7_3N0!uYQw$ zmEQkmwm%(T6dOL(hVfwd3*Vx@pWc6DMvnRC*DqpTs=t!{H}wALYVm4+Q1Kwe1}@bP zIsBQc=szdlY=1<_UgO8S)W7^+%U>uS$d5VvRT{sKj(_t&e$3%lyvP36SAFw9e$3&I zk$;)?pLrlZ=I|%U|K~eA{>=9C@2|%ke)k9L|E9xv{F&`Hr1g(E{Hh-M_xk;pV*4YL z@A1gtH)#B(tJuHU{-SjJ#2o&pk6C|PT|dnB7pM9$hd=le`k(xV_09GdrJo=7Q6pw)ojQTN$zhFc9PwDx?Y(Kw$H0JQ9Zbtu!gL(X# z?dR)v%;7JWKSe*kH`^~u`!D7tznt}dqMsiw7uz3^{gA^Sx)uFH*J1x=`(sM0w`Tof z4!>UhsrvriY`-D-F^AtJ|L9#<-)z4VUlbcY)rRq4_!G8f|M$o@BggTRfBqD6_-)(L zzeGQOGTUELJO(x}>c<@Zqzd{E=>6Ab`}y_jn8Tkdzf<>LX8TLi^(W@=XY9cGWA*b# zv;77%Uu}E=lOJ>V-J|ILN9%94Uz659=J3n+rT?DxzuA7?|1pO@QT_>f{xjPj zjh$C);My=A48KGE<$C?gj2y@RsNw?~7=Fy*FOpxQ`$x0=8py?FKj!dRBGivL{881c|D@jkXSScee~3B!aq{=yi`O5s{rviG%;C4o zUvEeHX8XB*%;9&*e`%Die`5Q&zQ-enUv>cJf31FgZ?-=>UH@YafA&H2&(->w?N?** ziw#^G#)IK6m;a)F{v}4<-|^@1_J@sT{h#agQ}aN6%u#=={JZr1w|O8x=J1>4@1^%| zn(a3f^S}ni{9_J(vHaPU+<#{Ktvi(T)qc$3H=N1&x9IgVv;BPh#2o$<`IqBf6R=$ zzvCz7@aM=sMD@+~m*R_J!za{_IsEo>SpS0M?B9&>s6Vavz-B+@@Q0sE|F61#Fx$`n ze{9U*FFl|B&Z=*=pYPve4uA32>0hk(ADZn?Vf(B5k2(DM3+W$!D34#W{n5#fIs7*H zH@(62Guy98e$3%7lK&IEerO)Zk2(CI-(dgG$u|$=#~gm0{ExK$X8RLU|1pQ(CI1Dj zpV@w1znH^cDSvC-f0*sJr1~+3-_*qUKd<#S+t2GC^HTrvH`DKrbcyZf`Ntgou!~rK z_F+7J%=YvAV-CMwez&f_X8Za6DdzBJ%D+#)KWVm~=O1(U%jEw?``>Io&p+ny$6n0& zw`>2K?dSQ&9Da-ZjrIIzwx9ctIsEzZE42U31NkwBKj;$nU-K%@U$gx@|CqyXl>aTg z|IBPZ&p+nyXUhMve*eR4KhHnr@R!N|ir&9v9>|Y5{Nc@<|1+Au+5XTnZs6K59t^)q z{sbNWX5_<*k39dF!=EgFgpOac{hH!2uz^uO=J03BzgGR5?dSa$bNJ=o@U(@|ptJr>CznH^szLNgOdi~C9 zzcRi48FTpUE%a~F`;X15{WSlW!=EGn65aor?axc|k9n#8@3VfF_J6b3em;L<4!=v| zFV*`O%=Rl&|1pQ(Eq@F3Z?>QNk2(D5SF``;^z(DG{Uxb>%;8VIhW=*y`M24APx509 zzi}GGcz{{aLAg%;7JS|EgZUFxwxK z{FuWZaUJWQtoL7=?N3U6%;8U$e}(@3h1q`o`wKCLKkNsr|D4}HBeuUZ)%SSh@Ow1= z8@hin+s}W$Cg$)5|B&^Y^!>Bh{<2g*=I~d@KSZxTnC<8Fk2(BN(^-G1UcWI9wnEZ ze;3;yhcAi^pU}U@gW-?7h5l*!`JEX#)^BF@|MO;Wx}+ z{ZIA!joE&F|69!AxBZ0v7@a?6`+5Ci4u6*Xi*)~Cwx8EO=J4xpW&M40|7W(J>&G1a zWcg33zS(}RA9MJ_Ze#te_4=vVe!l;RIsC!5(|=3v|1;Yknf71I;aADOTE5wSIld@1 ze5wuO!SKi4!TPuB{ex!YIR5hS6La{BO*eiU=~b2?eSQ?K8f?dSXFn8Po- zlm22o|CsGhPd|T&IsECrrhkdvKX0}_z9@kWTpPxN;jfT?psqh=;oneFG_|BpHR@;U6keOL-dDf z|C^EH_^&KJuz}&n9DalRqx}9CF~-B6R(xQy@9|*xD>Qx^t-slRCFEkWA9MIa9%lc) zQhl@i{Q5!6;djWNuj9vTKfixI=I}>6%KE3uH`}jE*N>RPZ+@KqoI|+(&Gz&08*}(w z@;BAbugvya@kLm_n8P3aB^UrL54E5FPA9MIq5-)z4w`7wvTNdBez{?TlI zYB?VOTpPxN;nyu?|Ci|Z&&*asvR{Cc9RmqPz{8srxHGi}H%H+o!ey98iKVf~d zeO*3RuV2jJ&y~Na`ZwF3km|=A{;*fLev4G!Y=0WQC^mem4dcP^XD+8dTl>$99Q%J% z@qrBtKj!ee<&RVUX8Za0k2(CIud@Cws&BTRzkiE4{L%7n)cno%hv181!zc6~bNFLl zWBo_ezZv5(|9t(3IsAF@n{@n|?bjENfenoMF^6CNI_v*I*AKJ(?vlO6k2(D1^5^OJ zHQOJS{FuWpTfzEMRo`qs@4uMCA1!}x&EIT4|NcqL;n%;R`s&|ozb5q`^LYLKd}H71 z_a2FlD7e4t_jJ|Y>fikTSIn-T&)=A%|4#XTd5*r>epl*0=I|%H$@zEui@w=DjzMhT z+Atmrf2#bm{;B^zMvNS8_C4PIOpX7Ke6#(^;xVv+Q9tIWKVSYPOIY7*KVLs$4u6&W zgXEj-SCy)-sULIrBi`cr{Y~p}FD^JmQA zkCDHpjvwObb_e}()LKcH{6pZkwF{K|JZ{|{8(Y`-Vfk2(BdtLQ)fU)DF<&;7?7{uKGYe2>1_ ze!l;VIs8HIsejGiY=3_0Kj!ck$iLuy);HVF_dhX*U;hE?cd5SFe!hOi9Da-Z$vv!Z zwx6#bF^4}-{uHgh*?wi3f6U=8m4CnLo9*Z0C+6_WdpQ4BwSH#%`Ti^B@N4AnDBo;9 z-+#p%{<#0L{)U>r*?x1Hf6U>}mw$_nf3y8cd{J!pR2#;FKj!eq z$?uVGwx5sRn8RPG|6&e*w*0q$OW!<@A9MJN<&T$dw%=Qt{hIm59Da8% z*Kc>t-)ukcznH^cF273iH`~wmA2EmD@iFVq(f&8vpO^ZNIsArC=wG4wX8Za4k2(D5 z^1t&tuD{uSN2(ul_*I{>{u}bm_PdfF^LYL}cuwE*@8QI+7Tn+c`*PLax{Tj{n_b`M zG`P0-C+6sXT-oWRb7SL=dHpuq&+8X+_*3Pd`VoDz{e1ky9R76q_p83ye(pc!@O$L% z)XVy2`}z4V=I~oS!}&LIoKmWxX{**!N|L^MGY(GE$#T@=B z`S)r4%=U++^^18t|L#1u@A)??@v{Z@cm54ohy8E)M_xb7uAh(pn4|wn`PbY}-)ui0 zKQV_tLH^hNK;LXXKmWuWevACu=h8P1P0_@mcj{dcwgX8Za0i8=gw`8&xs+aI3hA9MK4@=sF#X8Za4 zi#hz6@^{q!H`~wWf6U=8mVe*_TtBn@j?{n5OZ^Y#`gO{07TfPie$3o=ikWnS%0T>`21&f{rvn9bM)UPf0xhDH`~wa7jyXYYMH7<1gm$TjX#5ke+|U_Ve?v z$0LV7OXE*`n7(-+Kj!ee<^NXo&Gwh3^^ZCHuAyB2Z)yF^_VfOWIs66kubs#K&Gz&2 zZ_MFO-IVn=mT$J-l=_c3{8jS*A>V92pT9AOKVmbTKU#mY{f<;W=B4?|KS{^`03`| zH#KckT7R?aH>Un$URrQhxS>J5GJozz)UnPGhUH{DXm!{u8j5+-B z;jI71Z?L}E{sMeaZ1_|g#)IK6*_nQ|d^2*KKjVuJY+(2?hhMb|{V(bGHQTR&Tx|AZ z4!=qMZt~6c^Yd5C;kU{EM8}WWer2ipn))$^Kij_cpV@x?{x9b6Yd**MZ=&@x+aG~1 ziVdG?!+0?K#u4-{((!9Xj`h#azcGhDUH&RP|CsGhDINnG81-Wgf9S5P|D@`h?dR`5 zV-CMY{(RLp+s}W$BZ(0s9h(SOY0H_LC)`kU?N@Bd;R?_Zuy_bbmN zes_TTmzLex{~MR^{VQhI&*y*4(SN)A>*bs6=lkE7!ymT?>;L{D);HU)#Nrhj80!~v z_><(HCEsix#~?QQF^AtKzvp7sH`~wmPcetzDSrd`X8RLZes%qr!ymLK=f9WM&uqUV z`7wt-Q~v#`Z?>QB|6>k+vHT|aX8Ute{g}t&@9xQc@1O5Y{O5xEyMJyQ#rdDV-4><$ zXS3^1O!Z@q{#VIw`7C|2{rvh{%;AsTi}jC_Z?>P0|CqzClfRLCv;BPk9CP?{;K)v4;9?s`cK-M^WS8KfpP2Wle_^Vh_-6(8 zSHHfB^`AOWf4@oW`Xfr!*VOlTu+}beEh~7{Wr?rOupHEK7M0fT0i-J+luw4i0$X&H|Fq{ zY5X+#X8Za0jd@(ZotpZt-!6&k3hrP;FXr%9 z$zP)NH`~wa7jyU%_GkZ7<(uv2`>&YC_1pBKzUx<>c<+MyTfdfS)^E`HXLkM0bpFH~ z{f|6={=fA1@67h|`4jWf{N?Yf`V++V^Y^bYkMn;y&G*&BpSigI`M0ay?X|pqm|Z{L zzsDT?cgbHU-)ukMKg1mVLixwbH`~wkV-A10{BO!P59G%@uHWopef(UDU4CEUmj+nB zK?idGKceS9v+K8~<0t0me}??MDtZ2z?dS71=J1!vU$#Acv;BPj#vFc+{OjbK?dS71 z=I|R1;{11$Z?>P$-ayR zX8Za0jXC_e@@wUr?dSS2hrd|g-)uj>e<0@Y+YY0@kLsK4=lh44!=ESr8u@1X z`S^`F{9f1B`kU=nV&@ebxHgOj!>>4;{r^Gr&B*)P|1pPOC;vvRpV@wX{VeA2r^w%0 zzS(|${V3+}TaRG>tJJ^QeseJoY~b239vrVfZ=~zZ%EX@xaQ!J8!}<+p=;!}p*U!)2 z9*-RTmuvh8`DXiF#W-wW^dEEh3*>+2H2wTK)z8PD$K&zf_h|e>R*_Ve{8=I|TjZ+1HSH`~wG&zQq+m4Byv^FV&g;m?+T zhJ3UA1;rX-1J{P}VED~Pas8%g{$}J@|9t$!9R4)P;Kjx+W<*(HIo5l7!P`uc{s2_9q!^X1yshYpp{)Cdf#*aDtCiy$7f3y9(eld^d z|4%RNd;f7;;&}!4cmL6<`b+iti`n(_{X@*r|0?-6$v4~2=Wono{}+9$Z~x7SZz{OI z{)ZpK_22H^;&>~Hnq5C%KVy#mXUK2AhrZc9j$v%z+Atmrf1dp3MXI&!3pXZ<2q-!Sv1c z|L6GCc;xU~#iI|UZ?>QNk2(Am@;6ccX8Za6C+6^*$8rAas=nENK7L~kzf=Bo^3C@1 z{ZGu{FO&aO?LV{q%3__cfosEfF#JKsvHvGj-;5l`U*3N)hhHuK0o_<(}@JO9d# zXa9Gt#h+i9T|XcHF-QO9^1t>8pa0GF^YIgN_;vETg%wLc_2UL z@H^!1F5hf_esK(91J{P}VE7a3xPH%k%>K>Das1}>i+QPk`NwMh&0_oc{vqb@N1ed> z_i6pj_Ve)*bNFNBZ!h0$A9KJ4t_|bC@F&TCPreyB+Kn{gzZe=I}??v;QBdzS;h~VqTiR{N?iJi0$X=SIptB()f8x*uU9+WtxA?;g_Gv z{)fvq+t2$i=J3bLe_ZQlwx7?xn8R<9zpH$+{rvnFbNExov;VKDf3yAk{1Y@u#u>J-6SibpLI3{qj^l=IDQt{5Q9yZ?>P0 zpP0k%lz-%Q^v(A3^Iy#2FOom}v-Hga`7tl8zx;buzejApC(S?R@K>JB^*dGbH`~wa z7jyW7&Y=Hv1^YMK&(D7`hd)<-wS2SveE!EA{tEds)xX(3p2M(#Yr}Xj{Gk)r|D~#L zMhP$|Cqxs`y%UKul;Yf-%$*~21fmu!|#y)ynM6$F381Z zKj!iLyZnm2=iilyXB6Du{b&7|?0?L`{P~;N_3P66KVy#mXExAZN50wq3Vadzk9q9B zZff8DPfGlig8S>g?JU+`_w(%E?D}=7e$3JT(*L8sXgB(1`}N6>dF+3qEBp38H1R0~ z_t$^bS6IK{8UFmq?D`d4zSa9b=IFmpe#c+wo9*Y<-(n7b*jHJ9f$E#>x2O6skMrN^ z+kNN1P2&9u?r;9HRsW=&xc+9>pPt@7A9M6S<{b9_=8p8u_VeGbk9q8WMe6sh#A|=2 z|NfiKW&M@v-|YIi|Cpoy!57f~p?tIb+<(kt|Feqz;`8s_iJuyv|LV!C|MGHP|IMyH zHSPbHqyIVb&y;VrKQ{R>hhO$}*1uK0*?xEOV;<-Ky_UZ7zbf&pg8MuEx>bMUJ=QDT zf0$k0YYMI{{)svIufCA|pR^l&v;F-15p(#H{`W`|lk=-)ukM|HmBuk|z2)sJ_{Le*TX+{2>?7e^$QPe!hQ;IsCEmPuQLPo9$Po z`Ntf7qx_1I^v(A3{);*M8S>xUmA=`2zW;dp*I%>i zmzTO<(|^p-{}lNvzewL~Kc7D_hd)RDU0s*$(OPJvo(LS{e1n4IsBROPyI6IZ?@lo z;>89={g}fab2;ljAm41it7Nb7V;;}H6TjE@{5v^ubHV+ce?6+d@O)ms&8|Nt)sH#) zAAJS;KS93P{`BO>9R4Et&z;BmX8ZZ?562w-@~N!fAm401uV2jL`c-|u@A~bZcznVA zt>26*S^x5+oAql{-#m~X^Em%4TKmp_ zSmHwq?r;8$s{i2ueE*f%^(UtOV~+k8%D;U-`eyt2{EIpKvhQ&IuUFAG+iyzsV-CMb z{&D-$H`||`{FuWZ-opC7+n2uCe!hQUYW8ooUzz3~bNHj>ZzbPsKkvVo!=EgFU+sUh{e1rzbNDmlH){RO_VfK?%;9%_ zpYuOg{hRIQ`^T8WuWY4%w2ptX{qD4WF^9iO{&e|f`{R=z^LYN2UDfyeT|4o}g8Msv z$6dw#UwUzq()G*i`sJy9%+Y^?{L`POZ?>P0znH_HA;0OY3%=P`DXk1`Vn*Zi{!7b$j)+F-QM% z<$v-xeY5@Q2d*FUrCFTfYY=K3+m`py0|{V$wB-)w(y z@?#Ev&fWBvolf6uznSG%*N-{;QM2i`@>TIF^4}%{=4<`&Gz&CPt4)Zkl%PReY5=qsea7iPrQ%)-*G&Bv;B_b#~l8k zF8W*5(Kp*)p8S}@Um<_ViS*6(Tk%D);ZtoG4~F0LTh@Q{1o~#=xOUG-`!DA3hu%+r ztm>QXk54~;h&lYmx%AJ_@ng1MjW3D~pU{8I;deYh|2Xw;#(4DKo%)YC{HA&Ichded z+aH53iVdGoKj!e~JVgJtTCSfN<555RF^Av#F#QvC{F?2LP5s9l{+LJUUwjJdo9(Yk z|Nmsn;a5LJ|2I1R%=Vj7{g}g_^)&r!bpD#{Prw(&hEKI&JQ)7qztA6gCi^!d$NH^E z$4|`Ruj;1XqwA;H{*W~Pn8PnyLjU>+tZ%kIF3msY@W=g|{&QcVZ?>QR|L&N>U+_Hr zyEK2Z{SJIlZ1_|g#)IKEzCiyQx_+CHWBnS^|KA()QvH|dAE)P!1!DX4Y5ijkzv4Ce zL&kIdX8TQP{bLTl?QQypX#LFg^ZLac{*ZU+-+vnGo9%b4Uo1kgfosEfF#LJF^lwrB zX5?7EVH+0z6dM?R%;7Iy?~GD5QuWRD=M5_9tNob6Zy!ScH9h~B?f0bhi+Q|%`R%m6 z_b>M+e!bxS?qAx*w#kJRUjvU#Rg{kD_lL$d5Vv!CPql^3C?!@I|rV zQ*9Uzj`N>&ZQuFdo%pEh`k#OMmaKo@41WJ)#^YoEPbfaHxqi&i|0?-!-$LJPzmxiE zKjyLj^{(&R{|1SN72Mzco3R!9Z@+-`&8|N=)sH#)A2N*obzh@zwx91GV-CMX{z2!^ zH`~wmPcer-Zfn**Q@+`Lt{-#w^W|S5-)ujB{}*%kJ@Px`o9)lV7sZB8wP8FMe%H3_ zf6m#QzZp4>pNirG8yJ4f;V+W^n(CYFH?X7C(XZFY`-P>F)!8E_=Sy}|J>v^r04IL!>_1h{U2%n znO#4h|1pQ(EPq?|Z?>QJU(DezmH%I@pV|KSH2;{xuik@U=AFbohY=3t0V-A1lPV}GA`kU>KNq)@X*ULXe{hRIABtPcxr_1kAeY5?1 z{f;^O(ZkvQhMK?Gen+YwbNEZ-Z>j#x_7^8V=J30AX8p0+|7QF7^@Etl=bt~M=bJw! zUOd3_&)i*De|tUum|cHZ>Obb_zgzz4^3C@1^(W@B|7+U%K7U@9c#j|S|NOa9_3Izv z``^v3KRWdvbM!y*bDaOj57IZ=pOpNV!*7>A`EL4V`>n~3IsD2ItpDl#^v(81BtPcx z$I3r)K7F(OeE$%0_;chx@O%1Z`!%V4%;ERQZ~GH{v;DEjk2(CBT{-`*hv}Q`cPBsQ z@XL3jzuq6|o9&NEe$3&Ik$-p>eY5?%|6&e*q5Rus(Kp-AKmUt4{P82%|I@SSo9*ZR zV-CMn{;z*S-)ui0|1pO@U;fYM&^Oz!OzRhO_{-#9_*?pB`}zJY=J1E@&iQZpYx-vU z`R5lghd)OCKYmHyY(M|}FXr&;_F(-(e@EYJKi|K`9R33N(;lO5wx5sxn8P2sC+n~O z0DZIly#HekzefJ_N9mjGH>CX+bNC(dx0*}eY`-q~F^9iWe)|IYX8U>lVh+D?l;*GN zui5_OR6pkM7t8tA~heY5?ZPezLG>#?=I@`HUB5i_A9M8IB!AvV^v(9Wk{@&UBlh9^E8nJX zwx7@cn8TkS|F~D^o9*L!Fl^x3Fdhtls{FNHqraMq9ByUtfequ~#~gl#{84YwH)A~f z+<(mBcgz39a{6Zb`T84k_(Q9>ezmLUo9*Z4|CqzCmjA^b`sRWBn8R<7f71K(&Gr`; zYk&=08^(i6_4j4}D_>H5vHg7fRfin@IPoU$&^OzkgW|;oM*Wz>AG9CqpZq#~v;7Gr zdyOA+_zm)}dsp)p+t2&ozvoK&X8Za6Gv@F+if@(=r7|Hdc2wBY_;KdV>$ zIg|MMf!XzkrS*?_tiRv%zV#1CTwid1^(U$RljpO(+4aY#`Z34)&6j_Je6#(0{fl|* zfAEcc``<9}=L_zy|K+N`yVlR_`g#3gj{eII;QnutZ?>PG|6(5de<}65Jn?6K)PMgK zs{gXSe>b~+OmLH>>{8AM*GyyZ%%? zCb+ivC+4yK!^Pvr`j005UVH!bdsKfNz5Z=>{hm}m=CS_KH}$Q5Y~srb?(g_pc_5FU zdvD$k&C`mW#b#3vQp z-};R>lJ&RjpZzkev^@RuFK{>T1|zS(|${)svKUinx2 zl)l-1zW<0h{E^49{=em$?dSE6Is8@fhu+NkX8Wya{bLS)$`@GweEDYk%ab2-_!Gy` zpErZ`&Gz&Ahhh$Y#c}kXy@kHnet!Q@%;C4z(LY@E&GyHn_aDR@{=$>!@2ca+Y(Kw$ zDCY17olJkS`ZwF3nXVr(hu?WB{a@e2`J3&J!577bPqkq@82*a!^pBNqMvn70`!R<< z>U8?6G=H=GiqwD1;g6d@f8MR^-)uj>e<et!Q_%;C3wmHtn3{+jLQ z_YcJ!{<5>_5BWL!H`||8z^ZSQl4u9NK`a^D`Z?>P`KNNHL^S)1iU9F$leqO(r!ykPW{Y%up z*?xZiP|V@4yn+6A)xX((e*aL+;Sc^P{W8@z+t2SGiaGoRx6?mX=dam*e*aL+Kj!e~$$vw>c_2ULasU0|*1pH@U5Wo*aDT_| z64n3Sn?p+P-#5E{BM#nT1J@S+#2o#P`4#v7j<3=;+n-#r*Z47q-z9&@Qu=25`TjZP z@E6FxY#DvC{pqQG%;8V?HT!>8zS;h=J;^_6mKo{jq8OF^4}}{t++IH`||<{FuWZ{af~b zo{k^0{jTK49R5oAOH|)%zdiXehu``;);~`3H`{MWe$3%7m%qz$&fjc*QSxIBf6g4% z|HEta&Gu`OA9MIU^556-W47Or{FuWZe?RNDJTS*{0{Li zbpDy`*A(NhfosEfF#M(RPnK^+j`hpWUonT@E5BREpV@w8@fg^^s2_9q74ta%Z|VAL zw%-A{*zCs~{#^N=zRvYC+aG~1f**7E%N}C=jpdu|=l3tf9RARU>3>G+XSP3u&^4 z!TsI;toRfAzyC!3{Lbw9`Tis3=)Y_M{oRhIZ?>PWpD~9&Tz-2kee*zm%;Arfzt0Ku z&Gz&4Gv@Fco|Y2{i@{09R39P7s)rwLKRxlBg8Q5QLe;Ec`{ike-2 z#1QTPaBa$C{R{8tTmPcO?FIK&f7Rc){*V8I_06u|lJ2JN5zS(|${)jpJ zrSkvsclu`gGY9pZf6U>xJjeRqk#Dv?R3`u!>lbtQ(>I+^dTzW%^EcZsg@tQB<|ThK z`ajeBr;F`Z;EU*o9RBRh={Nk7^Ecb?p}x9)%;9&I(_bRrY=2quV-A1X7WBXTFV;8P zA3T^30Im(=!SJVVNB^_>{d+TVT>JC=Pt4)Z{Ve^Pmax9r{`lfCuz^uO=J3n6r@yg$ zv;E%m{2g=nLwBNojP}3Tes!t(n))$^KURL3e6#)8$&Wew9{GFg_%+)fxd9&lTpPxN z;Sb+~{r}@{Tt72%tpBLw$2?v?PMF#E`ca>_so?&uANAF&|Ktz&_kYZ;Kf34v8yNk^ z9R0V+Z<24epReCBhuh;Jrkc$aDVGR>_GPa-$wrb9cI@rPyNRn{g0G?lYF!NuH?rY{!;lP<(us< zO@7Sb&pU|yPd%Ico9*Km#s;np&G1ZcguhKDf(vndH=;6{@_Ddf0F8(?axW| zV-A0w{FP6$zS;h;YMH7``?(uA96VT7v!7m=j(sW;g6O7E3LoTeq~z!n8R}FD^&{r+$Bm)?Rjt3-{?gQc z%;AqblK$N~f6VqPk{|PU{kZBEeXpO>65mm9f7j2ks$a7n|Ng1j_4D}?bM!w!{;7lL zo9*ZGH|Fr0&_VfOWd8vQ-&ujg9#rE^{JLd4aj%NQqlyA15 z&)=BCUn+mB=5My2uOBgoUp|)gXKDS-_B+!0#k|zN{P*Q|iS2hKKj!cok7507)W6w& zzJA9%p1;R;_C0@3Ogy3B{?6Za)!)2$pUm*0sM+=Z=lIun% zf&Je%n(x0byM8|ZVvhbt%U>ejY`-PVKjyLj&Z57G8jDZAO#HwA{m)bVZLa3~2h6UY zuir6`_0PJiZ~d<%{#L>L9lwiJe~#*#U4Lwvf6TFdmE*YnC(Ae6&+k8sIsEa*(Z5!{ z+5XT}Kjv}%JO8rp{6{1nRd9dvZ&dwPuHesq%&wo$znG){Hu($Wo9*Z0FXplTKc#-3 zNc^t>`k$%#M}ErV-|YJN`XBRH|H@f?*RLh<4F&hNev4H92M4mg+4b}MV~+J(CV#Gc zv;BPj#XRY1K15tC#{XLdzefBe@mTRi&b6LbI~PwE*J=E%;_>3&h#SQ7#Es&=iJQeQ zh^LA_5Z9^Rkm3M9zvIPQiW|hA7dMLc6;Bo)D{dCoi>HdeCToR7#G7soRE4vn8K?$YC}zcKS6s{d_qgX;H+$3Mo$+kF#`U%Z4|{JEXdOKZn5-uRfjNd z5l=dlyiB}E`4O9Q{OD24i?{9&K4|M$d;)!(_r6A${GrT$(NH>v)(Ets!Vf3w9y zHNJdH=40KTc&hqaAzr5Zq^&rf^UxLv&E zE*w8wJXt(T=l5*!G@ajz#g)2VZ239*lXU$#L0qQs*Nb}&V}F~E;P~Dn$Tx{+9!?&* zEA#P3lfNyl)A&{5&N0j{+>PUB9YtO)E)##TxPdDj??*EKi?~IP|DL#6{hd3KfI-9P`@9E7rw>*PuP$C525{)PIk-Qu#3laD2P+Tf|kp?01>C;Un_M137-yI_&p4an*mB zFBf-wLO$*wj&FLGe3!WUWAYZo3spFu28%Bhm%qdOG4Zqy$(tO^@uRh#mx>$3e=#rQ z__Yt=_&Vhmio3*5iB~?(@dqEu@gtrj-y~k5{8Mp_^22I4zVc;`zg*n0l>D%G(d*>3 z4&(U2Pms?LPkn{lE*|v;`8n~tW#r+9({Ff@e3p3Wa`Nrsvj32u7mt69yxkG>J2jtM z#3RIejbT3aS&qL_+|*58B%b$g@&QL`{4?a6#S=B3_r=RzV1C+B9AB>a{Z2ez{cnCW z^GfZXOT>e;zR!tgYCR4d%kiT%znjEkv_9{NyR`l%9>eine`h~`6u0Vl+3{HQr~a=L zPgno1i07}MKlTe8-=zM3As+rF^Nq);-b>_5#P#a`@8a%PnICW*$FI`i0jrT?|3TnrRx8Dam#Vc=Zj|@O70a`ZcN^5JpKA3$P>k#HRPX)%ZHM? z#ci9C*FTN^s;$Tei_9hoE^Oo|-hm%{y zHT#es7Ee2j{Jyw)40+@i>943FUm%{cKlx|k$p?`CDIR_hd80GwcZ?<%_}-e0)#5MEm~_;_;jD@!k^89Y)@%fsZ$P8}b?A zZtedcid#R+{4w#Y9mpSx8+IZe{AE5~jrMo5c-}6|?{hwa{F1nFH*)1!^eeQ#PZH1A zo%vPbx;@Dci<|Z$e=M%o{yy;k_;@RIJT!?XYkzl&E407=Egr1>y~9NMUHkI!PZf_T zE<9_M74M@IS06}zP&|G^@>*Y^ze2~uzT(D%nV%!ByqJ8mc(nLEai^{y=YExs*P-j( zD)Ay+KU&XbK1SES&oz>pbiJD=o~i5InO|ext?ON{c#!zUbC_4@`Zwxa@f3J%d4`$wc9`nh%{yifuSO5E+&wRMn?`Cn+{wJ2!d(R7)&pwv?n0U}w z^4^n~Hy%ZvF77&lywTU0_Z~#PM!ZP=d*b>-n1AI$jvsL-`LE*f)#L-d!MtZb@(bcB z^>%GDH{KC@kr&Lh$r66@n>I5f6`v$ABk7|t-iEg zFNi1nn>_Loj<5eaxm7${2Y;!5|X&aNjC7v>le3y91(d6gEWqXo87SCPE`rCesk2m5!gQJR zlr8Bm7Oz~%@k6H2Z+nq^w77FEj=xMib`|q`#C4yL-w;=A$nm>g#>Z=agZbIwn%BrP z#2p`y|0*87IsMHqr$2HNa=m!@%N*Y-?)i}XfVfTjcbzNfFPX=Dym;}`&96xM6 z`95*OpUD+1%zGXuUn!paB>5$A`|ez?%I|XgNF6_?iko!&+$8Q${;YWAvGhL@&)500 z{rC8IE5*l%t7chL9gcO1jzpfUSX@4yi57qwKyOodE z{1E5=9dWPfJuRN2_1yj{j_=g|IbS^LG5QaPn-`Hcyqe=1|4N=9Ua9>#OI-5^^H0RB zPmxc&hJK~?*X`o=Cz!u2F4y|+K8@omzQ}x%ct|7p8FBq&^6+ape#w`~Ul-4n|EPG- z+04tY*3+L~^aT^H=2GiJQdR-k^T&VE%1!hj^K|>}KXi|B&Ms-bDVHxZ!&8uG5*% zDZbGu-Oq?y#IK2$eT(@QZshpc;$Mh|UdVi-A2DC@b@KV*?)}Ms7I%nu{V~T6`5NsT$ir{t_=P8vFBUI3g1k^X$tTd?@MrWZHUA^TWm?b6#G}S>{QcsZ zvE;YKZJO_hpY!qRb-ntEc<`wlf50!8cZ*xZJ$n47#pAUeyL58=$kXYcAs(Uixl>%F z-Q`1pz)mV_P^rz>J!OliOV(LcJbotn2-83$FG`2zC&Dj z2f6%i=Hqnzyiz>qyUgDdkJ9z>#g+SW{66=nUJbcjJmVPte{|1@=ZUww zm*aGd*2a9FIUGMh{4H^Z z#@{b)5w8-@6W8BQf2sPpQC$8bKK`rXsSSL+^6=kt{E{z`+r*>AuZV|e`~iR9__^X1 z@uV-)|FgJJ{&sUYe!-c{ZxqkDg8jTA9(VHa()05M4{&^=cwce(Da_9hH`SA`6fe^F zhsDFiABsD~2mXls_q6qWsJU>Gvw1E^btQzqm#9R*1Wle|8@I z9_1&ASDwiF-xCk7CO<3g+Lyf3L-Z#ozeqgz0OpT~7wGZUdsy=w#r%uncJXcEiTg3% z_z{kup?b%NJM?%rh?|u^ES_CK|3&dq@#gdSc+=itevr6p75QRu<-6oZ#hq`H*MF4$ zBKZf4=RVDRnz-W)^7G1Dj)nO`rR8dKUO?! zZ*rS>)O&pVKa1;>Z@Pefqw;a$DNk^GlX$-PUU7xyw^TfBA;)j?I3KV5c-H@txaBzV zJ>uE5Wc>f<`1zmze{=kQ=3xJS<@o>A!T$f#PkfSGbNJ^=>v5I1P5iic$zja5T*&c_ z`;osYUM#*@JVgAWc=?rlKB#$${)lgrFBi{H{Vgsoz({ zi}$5}?9=q;>`lhsC&2vu_X&E%(?{-Ant$6O=95;9D)B0D?+E5s|AqO8cbUH_?tGhk z!ZXY#yhDCiyka-{+y9mM^liwuiDzt0UZ#brB__kWgo=Wz1<;;B24xA+_L z(PKE@ChJ)z0r>rK zuzx=szmE>~@0;WA6O_j5?-k(hHGuv17#jXb_TLA<-vdDI-}lGw_k;cW{rG)(uzw#O zzkd(*@7Lq^`N95u{maBle!%1JF>$N*--iF@_+kIz{;L!B{*ydi+}h6fTmC~l;&0?# zpQk_S1M+F&;TnI9c$)IEr5xY$Uyg4Scm9}sw|G)F`G^-de#{K=FT~x8$Or$2`TS?d zH;X4dOs;s5dDBDWsp7gv$h$3LzIY+|Uh!0M)l1CBKgqmJJb$B#()sd7@lx>yFLV5i zA$#P5k0?8kibSNM44_t%!jj}q5cF@IM)={WN3%Q?RL3*>`e zCAW?xFBMlGOTObZ=F5&EH@!|?K9BW=uOL?($^1d_ocEaD`i928OFrdIa?LyB^0&xS zj-daHc-~O*)hn4dZbm-pZF2ic`n}>MhcUnL9X);xx%OT1&~oySRpg}~(qAmD{xA8* z?=i31n&VG@pS`(qk+`BLNcY~M@8A-ly9dg5NticF68IL<;5EfiZ;uBT>QtE=(ntreERz21sjq-y8(IBC+z=uar*=0pKi#!as!TU zEPjy}k2mr~=DTi0u6dCBlDKInj=y|k=FNl2)rAay(YoYS|4-BX$JKnlVH^(!%|Zwv z9E1=;2%*u4WkLucgb>0RjYep+X~be}3n7**Gz*Q;rV(P{jLbnJgb-o};k$3w%b(B3 zb=~*-^CM?8KX7!Z=6|tQ9#&QPk{WXHA?02F`vVRCpU-_$V z&sr}<-0g6S59f5+@+%K zZ}@+IG0y+*C!&Jf=)XUp@qfFXQU4asJu5G6q&&a2`a>Jb-UpRC8RdXR%5UPBf0dtZ zqCB~r@^6~5?}YN9&1CoEa$9FPI7_~V(|?ywG*@n^uYF5e$SF>8|CVy}N%bG&fYb7! z|Ndf}|KD$J6ZO}%lI;h}yKyi!V>kQ)`{GWmH6Pwd^MyFxSN@`navMI+>$u8k{gwZO zeFw-vZI$QqdEM;4Kdkis>$T(a{15Eot^UyV>?_gzIlIy4^ZX1Beysen4$2ezXufSn zxuCjy3CGlsKmYF!?EL@yj7OSp>n_{!d7h5_d#gXGvvT)Za;+}1fzR`EIMAwn%epEL za8$qRe}8cA|K~aId0vQf`8@r;oAS^i&3kp1-m@+P4}P^LgFbQ+a9~<@d4A z9nB~7RGxTC{`kK?p!EOiadA`sHTJ9~@9M2QvYkB9OU~o-w8jUrEuZH{u$9lVDSebj z9ME|Wa8P&cTiRE7jECIWTQ1?}7iY1N&+~{6mAkc3zg0guu$BBAr?r%m`zz1q^Lx6F z?BT4u&H&lDv3wdA@%g-TpmP7$x_1KIjfO302&;3Wqp68T1j+W#8 zl+R#agYGY6jPmgEaR9C#e!kUqob1KVPw(Q0hT6Avyz=Ph+7}Td zC)p_PK0!9{d431G{h@x^MCOmllP1Y&zsVhgWg9-vEjYP>_HUT1JSCg{6xsij{1E5x z^Nj;jm1p(SuO};o$gwyKyW#sdxn`7dn34%5{yXs&!PPAPOP z+xHa?#}BY0_Mf5o&`AAy;~Q+5En9HpWZ6Dc{iry(FODOhkCX9F*tA&vdNVcegBRnh zMas`$za?^)S?VX!-+?XkpJN-Yf5L3_jS-qp#UA(#_QSqm>WAP>I1(4*63$yRNBsz{ zuK>r>?=V++Dqe=Ou?4$wy@TedpHIFOTk*fx{xjWAUz7SSI39c9TQ~rB{zUyS9F3## zRqV|D_{~>8kvs`odH&TFC{L!p5U10>gmZDraP(~aneyYBi{Tr|&c>#9A zoffJe!1G*z?fLr4#3fzz{2UjlUo=`Cf_?qvB%H<9e<_aHq}(M!^KOmg!Pu^v9Ean{ z58~Lm%3orKpk`%1K9_x_eJ){g#l>>YbU6kG&zEZ~Q64r~{to*tluNM7IN3c?ecMIy zO6*O396R8*I1qPTs`(iFD^8rHeO;C*_nsynz@_uZmn$!vB>##%xZavk%1winhvVQO z@+%yUzxrJLFs{dp1DSVPq1-Z5^AR|8n0y8o`N<7es_*h{KX&w2?iH=vjpw%oTgEE) z`$BoJuY3fX`pdRoDi0YXPsXw2yKxYHjFWxT4_~EuZ+sjlzuO<9JP(h=8QnF14ySm^ zAz!JViL0%aGngNblbHV*hxXEZgEi`V^_J&jclPDtFzg?zelqf3Zv|0qu6{(|F`=e1OR5T`YjtvJ+0 z9`LRDx#TNwB0h`@@l)*BO!NJ|(|lN6IT;7llUshT+=TbxQue*X0nB?PsGnM2^P6x~ z1Ni|ibd-B+RNtBXKj0$z0h^S^alZ#}2U-~29{fPwhdm$3uW;%;xx*gybIBLt9P&Ll0bj!f z*e+G`4xHZ~hhEqIZ*ky1vhC06hv602%D!XRpZRio)la#h`H?vCzdtzs|F4ftxFBCH zz()3a{i69o`ggIF`}Imw9?bc-u=7>z>$Xq1cdk4ir;;DXLFDE4tM7(Aa5$cclkr(> z`-k?oJD_>%arq}~cS7!(t~`eMMYuRic_uErNdH&$Q!mR|*ehFZa!|R$NqIJoKZ5>6oX7KU&rojtQ~UC<L ze$l=^vClra`%(1+aT?BN{t@Id(Zzr+dTc{q~1W|sPXxF3$kpW!H-!Xxt{g%Se%8A;TZaJ{!~AP`#pngIe$T}^31i`cL)cqk&ChaI@#l#`Vr)z z*cX3?G`7So%$rsd5W_}AcFnD4tIBOAYTp^`FjMYzO}Q~l-h)f#$d7Q`c)96y&YLTT;8gPOa3nsCv+-kW#XkAk z=N7DeiMVi5viCpgdySBHVSn8GhH?x0$72uXzr!JuHGdyx;*W1?-gScVcpM%o z7vtEGa^C{=g9GH1ID5E!3LCgS<1O`b=pVKmHTl088~Z*_PxQTkK~Sb)DIjg ze~M$tQ*aQzjFWN2Le1ylk8xse?MuM1AIO#Os-J|H;tb|9a5VE)T+m1JzV|er-dA3W z9ohF6_Q!4St8esH-;ATU-&RG+T{u4n`}I`c>49?pE^;h(ahFfy0{ZnHs_#uc3_IYJ zI1nGiG1&M>^93&2AA!xSZUN^m?L{Y3LY zZ8dNERJQ9S2V+Yoxmt}9EM#u|0E8^AH7!J)lU7&Z)887?;M=W^KA82c~C|57vb>Y zCN}^7_16JhLSD(HeA)j`jwAm72jlrT1^_Pq-`;(8WsJ^LC{e#%&u3Wj2@|4^1FkFZa z;Z*w5E35BRN%wmKyK?<=ZIu_?(7qh(a#^-}PkH!Fc|7(e--I3TB^-#WSJ8Y7o`Va{ zXx}Al{!$xe9=^NX;@70qA9v3NjL^?kU%-Prk@`qio_x8m_Qkn{K8 zc-*+U`a$P4e;z0Dd^*`Hx8y0mf#Xig?lqKq9g)MZOOAXL2a>|z z(!JW(q?YtO#*(bMfP#(?vG+e;^F6@=1e!bf2TTjUgvFCpIBDOyuH><<-a{g?b ziZ9`C`YY|JuV7wN`b6z3N*sA$~4Y-~p`6SN7Bb}7{urC28F@FP>Zr8k5L-lia$ZN1W`>x_J zJfM;K9zUr65{GdAqZ%tu<9;g{<{Sc`4q2qu7^+^OU%6vz6aYy%CB%3=l63}KLw{? z6aCR`mHY9$_T%Ce+85MLdGP}I08R>*YqeMI^{G4tJJ4T;i^wh5jl8Ct=525v?1Sgv zaJ&nrPuF?nI%qyQRGy17@Dm)!yjw^06Pcfl?PqEJI4;1|I;ro*zTr3&|AKvIYksV| z`VI@_eK>o*Jf^eqkP!J>964D&jZ4YxyQrT){s9ifp*Rh1zy-JndydxrE?u?HHBjD& zy>KlL<=M>pVrS-8;E1uB&%=J>>FQ-3FR=lp>^loyRu zz5^Eylkecj0J(>!`UZb_5jNA`hn>hDVqZL@r{(9dlA8B7VFZI)XFN4N%{{zxw}TJI>!aPgPvdA8 z&ASX%Kd_ZNA7{3ZkKt0>)=&K``d4uz_upfPaxc!mgRM=quk%plR--%{$25~OutO91 z87`pjGEDQX;P(Qn# z9E)Aq_cso~y+*3Mz3noZozca=W)ioBw}*WC;#=DIdj& zKR6!FJ47 znxZ`TiRPzZkEikhoKP%Ro~nKxUVsznw+>OB>4=ojAYyH09h)$OF0h zboEoneQ*R`gahuXe->wv+sx2>2@b}YoPPlOUeSDwQ1v~p%F);lSDUFkk9~u&JM(LC z%r(v5$3fTSF0(YBWsxJX4f_jlHvP4;)sN+Q6k%`9UmvF2E>HWeV8`=vjXBD_F3Y2_ zJNX)Hz(=qzF2WJG>s;+~{X_e{z)mM*D|W;4=cymW{4dyn`N!Dqq~`mZ)X&GOanf<+ z=65-E`$T=8Q_3&n5boD)zVe)N%KyTa-{sm1lzShMeQ?+@c{L6q&%|!H2#4dk;o6ss zXW?kh`wiRtqWx7rRlhh*o{tUte5t&c=QjbT@x0#R;41q4_G4G6Z+M~ixfxr@OR$l= za}4{feEs3*%G&o3d(e0JO8pQ#8=G;x)yhjBXy0<2`be&_MtK%a#J9H(>t3%*wF`Hi0cF*bT!vP%9aUb*L& zau&{rm3x27e6)N32daX5E!dTLrv&BE%#X$S5t`qR z(>{}JHmdK)z5&=D|Ad_ut3Ps+`c~f0&p4j15&xcTaD!(lV!E7)^^+#*r^81k_= zX_oT8aWL+_Mg2hfGjJ0A9^1~-e1)y*$Kz?(O#c#&{9+tDQGSfW@w_DU z)7iHd2QvQzXHU}n!0qZM1j}FJq6zX9?85#YJJdH!R(=}?^Za`Mpxl}BZ@=?6^}8o4 z&+wNQ;B@j6IFG!-PW6*zuj`MR4?^=Q z%(qHWKiyaJD{#yp*^G+^%1w5u@5=sFxP*R>-OBU1-fwXj_xIr*<+0w{mxGJ?$quQ? zvp$eN!cqO@^*EpWG)~2@uobudS^GTuXnqxT!B=o`XXWkpa{XQ9L|lT6zbLn3ejLtY zej|48ruhhIPW4Zc2?f#uyP+4c`o~} z-PqSCKf=z<7y=QAIQ zv+HX93{G&A8~>rcwYD6F-PwNw8|o?Fa9n*~?$?TKI6wJ>a?khFx6hW{YRXe^Qbjol zXOTa{ndBW$YCaZE!+Cf!wymUn6;G+3Tb1*0X*Kx_4tm+R?AKH6Ppj`&D(}X@*fU3Y z5$7$%KFpuMiLW)^{EYghH?j%my^?>&4(xAtR(%Wo>$r&L(d$p;0i1sy8?S2LtX$=u zMe?I}E|fnxr#$zb{2a$TmY1AY9`anaxgaNBm*->SP5I%w{DC~(tiIhp@-=M!S9beL zdEpf~6o*>nL)c)EpJOxqHWxMTL_Qw-;!GTSP4i7JsUKM&&%v>`<-c&q9l2Yc`pI|Y zl{o*Ad=IA=%R?@!Z+#;Ff^(nBj(@YSM4pA?p2=shL$2KBiu#80@(%2X-7L!8xZioW z^iTB<;D8Hqt*h$0n&luIb52gd+1TNl`f>D+y)*B}cwKn{@8dK!=V)K2eC5^?@KD)-ja|vV#eulO4fR6~X?_6?I4s-VR33_xu^02tu^;mv7N{R~RP!m= zJ5x5?Ql6h7kHJptzl>Ape|=m10Pgn{PT~H3zN0*KzxGuwlneLDAL7z^~5B45B} z`c>{~-ih1``{K1Yc%SCYIB%QW<(}rVx6Avm1^2zL+>L$FIFtFaI5%1Iu0`r6?UWZ` zKlYu(F}U*s_3eIC|2B61RsQgy@&xYp369>Pyw@Y;(VOH2*lDYL3@4Gl!Y16dSo0Zp z94^9#vG>>7SNpO0?(5|*u@A2HM0qarA7fYM*WjoPnlHow-^d-Gay@bKB5cK1aVGsQ zO4Rq}es5w=&R_LRc}cAHox#zo<#NxJN3WHAa1!|xpyJ^EDreV;9J2xWpvC!fxyzWmBQ-_ZM2}S12c^a=&A+iTf#6Ub*WW?HhyxXUQvY zCi!_BPF|&g=6$dyj>R)^CO(NBCux5ZgXV1~%Nwv0u3u4k67!?64fEgQfGL_U!LC!~ zUX?T-8!WHHIruJ)qrbkg`i0!@BW%z4-`Fb84${86*kOp={5|D?6J!&1Bj1B$F-Mt;0P!AISy?kPjXT}5?{x*oZq0K@?hoza7JUz@4~T0 z`6(`GD0?*0yc_%1VJrRajg`CdykfD5=izQ7udjWP*v~=!6=#xHY@&WBc~9(#XX7ZG zh|_Snrkaneqy3YyucQ1McI3QP&D75<)%SDOV&i}R&}umw8=EV*=!HDOS^Y%(4>pz4 zzn3wgx$>M2ayAaED7&^$Zt5(r#@QX^f3aU>Ij|-BY~@VsR$Xr9qTIQLyaM~wk{@8p z8(qJDEA>O`DBq8bj)@RXDPN{On!cP#)h#eV4{^CXTg{Te~VxHp($Lu&MkQ zM>@-++NxjLTt0?l-R1V}lsmMP<8ewS`4tZ6A_uisKhs4%kNw)nUEP#>x0S!g)>nF7 zuW@EO_H|Id&`r+50la_jj>=Pc|3Bd{gZkAwDG%WN&%r6Y|G%+wCG~r|tMADB--hGf zQ(mdFaw}gC({K@A54pJbweF{D7xnEOH2*DjuPeXBg?v5C>Z*P=Uk`cM$4UJ@9^`yI zY{N-!bzaqO%8U8>n2p1lXx@ySo5`Nt)%W53@4zPBf6X4svs$RX2*>jNuVGK#e_v1a zEquM~!_loYU%#hvM^||}w}K#m1^~&pw)uV*d)9i3@Qw{kXpB7xH=d5F0pu zgST=!8|{CHQ>~54J|EkDsJxhb3CoQ!H+dxf*s50 z`T6^jbG_vU$v*eg55noU<*nF4{x3F@dwi_on;a%A2j`r0WtiI`r{230uDjWQi zhvVJ^vdHd3)puckGA^b+c9?R*ef2YODEBkRUwNuQ z&vP>_s34!g3FI%adq@5I242H8A2LW@js5Wz?CGt%{Rqx;lM``%7rEU?<>qekX&k}6 zmI2E1Iw@a{{n_t2N_iap<=6?kj8>jeUiY^QTe;tC9K`)r9ix6&o}S-4oPJLJ6~|td zYX+)sCLf8D@CICj&DiO@=6j9Rd;sSq;NU-$R~x6?|Af2|hu|LLmD{i{8v8PT5rN|2hM{y|q@JY(kd0y9XD9S7 z?R$v*GURrXl_!%g#i8Vx*b~3NQMkht&8Ok@xb%1K2iyHD51Xof>0bFFw*N&A2~i%; zzCE}kRr$X-^*4F;H1+NAP3*_{y{9YpO;dj}Htv&)aTM3%HADSOoQk9APYP9@%k#>@ z2CjGBOyy3ywf_=M*)BWHQtq-xHsNgYbR3VL<9ys{w&v}3Xg&cOIPV1x{Z{$3F!ck! zm!IP>yl#&2682xi{>-^e*5*)As!lUHFk+%QUcI{SjL1M?|3cd_Q3KUd!k$K$Xi%1dzQ9NB+` z`d)M8?Ko++{0!&g$t%@QrtcUn7ju7~VrQ<`!SlHJ)i3CA+O3x`kFe9P79=S`D0 zVn@z@g$o0fk6ojF##lKO8#%vxtnxrSA3Kjzzs*|Z@jS29IFaYmd!6!tk?MbgGX}{Q zaS^%8*XrkyPr=D}6E4PoVdKZz=MkrQFZQj$;eC`p#Ub9ZX}$Up*swu1ux}s^Vty?y z8LoNTZ`Ak4i*Vcsc`MOhckFy z9k-G5eEz}C&l{Hg`gl;1^1!M(Z#&LvESKA^+^a z-+}uJ$JX1rzf-udQ114V`la{)j^Ml!oX>p66!k+(HJ^%2m36*xmvT!D`Ah7~{aA7G zYt1j-t-jkm*^CYMSs*Kl~Gp#}$6jd?X%>)6Q!DMx2x@+oq|Xj+fzJ<`3fp=3ihh?q|Y2 z&BvYBzI{04g8UM@vcK1U^+WImoJ+sw0p*@Nk99crZ|&=xt~@wLo`Vf1<*nFCej6Lf z>-?(u;%xQ3um|}x9D)zy%){zeJgE89qw;i|g|A`Xcjp~aKbiT#xahRzcVe60Wo0-TyEpT^z?V=4(oa6le1_(2 zPRJpgzXK<3R&JZE+&4k?#qNpnHXK5J8++hpCp905$78!qnm>qB$(>KBZ@X6cI&57h zH$1J}?rZq~j$^)jj`HGIt8a1{M7&#E8D{XfDsoWJ!? zt}iE>}Fa;IQ97rWumzm(^3emZtwzT!pYrpcP0j(w)cnK)^ZT>Fyx`FIUZ zrQbhKxnYg^yRbLsPq?hydxY}iI6hEr`?qqRk@8_2GG1A?g z-o~Q&lEKQyzBAYJGxnr^13Pd%eXeRglzbD;^47lRIIW*N`T$;c&bUdkxV1gd6I|^Sln>44%)Vo63tmP=6P8 zbeC`8_&%~*f%@*`Q?UWZV_%$&BXF-U%Yj4`EAHx%Ly~snz5lT>8HJBlh5Wsy$WTu{!&3 zBG0Q%iSiVl&r$4dtA2%N$|K9m9ypsk5+{(S;ZS@7r{U_)wXXnA$DaS{&%YkTt}o=4 z|ElkWx8ZE&uVZKCovi9dywv<0?DtAOfYYpUDK5q%UT8j@{u^A({rbOD?#}sE>{O_I zV_zvxeI#e$VBEY^x&J@PmtuQ-9*166-s!darl;~E?DxC87kib+r8tzl;~UL;;)yup zy!v-=6nUMu>U-Q&9)fMI$y;&kRrwyaJ0<(t7|MRXY2aD;CtQpxmQ$W_Lirf%Vv&#F zT+Vxr19`q9%WFRE-Th+&&!-rBJkh>B71U4MD{sKDX>w(Q@+7C;qWZ;L z@9cNJuYJ$4<9>NiCH0H&dhEz~7VM9^S61KufaVKuNQvxetK7i#-N3lp9m!@i>k9D_>o?wW{*2*tkvqe&-K31NX33KjE}X@E+_mR{1TQjGgOhU(Pt?qj3uRzrv~Hzv1+D`uz&c95wIUUY?KRPU-z5 z-~b=Dvim=X^Z!!*Hx8k1S5Nz5{#5RU6X}n^rm*&9`&MHQd{?ze#=W z_mn&xJDimd;*3A#@(t8?Jt=>L%_rmyIL$0ua6bK>PMXikRlXTpF31%cD)&7u_rad$ z<>fep>pz7fx&G>nG@pG&{V_O<>)(v?vy~U%Xs*9aW6hf`DIbo*x&Fi0gX?W&R6mI4 z6^m1GXjxcq=w?{jYE-&+n6F>RbNM{6lQy{>D2ikHx=Y z5AL^ibLF=0_Tkub+IJ7z^St}FP~V2@{}p@kzF*?#Jk9rLsea*Qc|Ud_ukWHfz@mIA z4yJzyN8viH)HnaF{tR4#Pv8Xh6=NUfd$;DiE1FNlF}!b^Hp<=U2VfKXf5x`Vzvrrc zJpBnc;goa3tuCHfju7~UU8(ZnO@1nez z=Q#@(p48{v7HqxLuI%%wTvzoi1;>zeQNf#!XAUr{*f zp60LMaNbv!KI*&jzLwy?KH7H;`|-XS^;JLaW93tEAnz*^M;0n?=&imR?<)j5^1gn= z&b+T8oW}d=@S)}%cwe93l2>{^zv5ipm!Y5f_Pj429Lf7yg;U1sdE~syd0*B0Yd$_t z`7j)DOXtPm5`O%caS=aW9DOvO#gC7XIH5?-<2!8YE&uZ_FP57QV4kn{sW|kd@*lC2 zS=VzL$6SzI25LV2mip^)LO*@|+kK?G&`X|;ojv5gu}eq!LtpjdtlGZ^n_DZdIf#9! zdR`IObEkY2`)!p!{8)WsbItFVrA2xBLkX{$BHcVQT};ckxp{exUlBa7MQJ z4nve%ev?1L0aMk#hr{EP4;!j}zD4;F9P^d(2E&vmu8@~wkJ`GPJ2)d!c|U*k-N$KP z8qWPxdBfq#3+BozamiomKg8ya@`w@Y=jO=AaLO^c^+@GW)pb2zVe1U-e}GH)`SZX4 z^}Q;ozXKP&(Z1TFl&4zdMc6l8&c}uy5I?G?+xME#j3HG_C zueY&*>W4N^{~R_2tM55hx$|T7x8l-o)UPm3c~LESDz>RApTQY-w6Du}^{s7`r{LIs zw7*)AatEvWCR`FI=fBHG%7Z7UZy6;2j=jC*_7jx{_ma2ZNDsNzB;|=6X#bjY-~2@e%ee{UQkbY4E7IDeh-KKt^56WiuyT=lplTPbj^2|s=WA({0&a1 zBA4QD8+lTQ`Vq6V?+@%yQ+cat$_;Cke~HaEqV%ID2hZWAV#VEYT|&z+~dxV`)s7oC(pF)7c^WIuM8 zrhU^tQJ(Wm`5hdxPo6Yix%V!)0DEqd$1hOswL-p$!<)z<;mT7V=)8M4_>R8*rhlqD z+EM*yICg^i3l_5fq537*wubt%7b$nDA{XJj0?mg;D0gV3`~^YpHTeEBRaO*hp@;OnKOFUGF+v7%tae zuDo!c`rB}NWw~*b^0?Q!zl}J4hUV*huH3jSxrG|H8phx?bNel$X|2eiZvul{w#Z%`O<0NN!##hSY%d3ACC)ZUzXti>;JY7#FPAgU3d5!Wglje8e zyz0v9#VSudr}=Mi>`%)5*OFh-{2d$^t$gM><%uTwEl!&$ulrhgW~$~tj+0#*%LO?6 zuKEksEBC#r>#4Fqc5kHq_c-^3`W?Pe?$S{C@7RN1-;Ie^p8rJq9^kyEa`d;#vm!NL z?>jl8n!Fw7R+c+`ue@N0&OeQ9`pI7@hvcq_ zvRy^_5iWeG>;Gws^6*vK7qnH5`$x9hCMR5zS7Gl5a>XR&q4(tF*zckI7Mt$KOSY@; z(pO*ab$7@~edLYU)KhNqgYslgIUc9F%g)KlgL=rhIKP|x$xh`_-Q`9<$_1U|jX18I zJn|>yv95BB6!y23|HO{Z^!&!{B5$eu2DY@2{dX%*NzwCfxJS1BC?CR(+vPE-%I%Wm zQ`mKrJm+WS#*OkFT*|LMSMODx-dN{X{zZ;;*Yn?m!+OYl)0BsGmycktZ?u2xKIQHk zu@jPg>8@~|Skk2Y6j=i7Sz7qAcC|6OrSd2(&dSH3R$@%_r5aq2kj zYn89u=7IK|#fBoe&p*neD$R`v3mu%t4+nS-;d+T|37$*{rLIdcjc73msh_= zc{zaZPw&N1b9KMtD=2rI$MZ1A4%6giIJcJeb*QL3*g-D9@zvy+m6T`4XufS_IsZ%f z8201)$&a!9gh6HhzofaX`o=NxL>xu_6ZRo5!VXi_@BW_VO`-B?Y@Q<@#}QNH9#zzL z43d*^!3??S`^vqU--?swE3agyJZqA?1c#56i?R1Kc~({RlV-_Ju)!pcuBO~+qMV8I zx!*?Bm8WpOUtqhL>c7OHbLGMI>YIb*LpXAr+_;8v-|2EJPMIxNuBqJa6L}&|=6QXG z(?=`6fF1e$CKYOF-qN#5+52sZlRV`CID$MBdy;>HgUJ8D-uV8zelP8-YpcEDy!D z>`%om>?_7mxSONqi>GKl9tV@(#f6;Lte*NIT<<&_$n_nh9W5;U#C^nGSY)OBd@?cyVAn(Su2 zo{OW%3vn*_ptkDg%~$^?Y)@Wth)5#+z)NOGf_auesz z$Jv85Z^r3E<$4`B-%nnSW5_Kyj`?;S)z2BC{xobMKZ#4pt8`L7fPMZrYnbNuVGnX! zclG1_m5;`5>`%g;j~(terDG;W%rkdOS{W1J(Ndz z$jLaDysoG680ME?d-6Z9f%*PD)%PO*8YkdFZ0o7>#`jV`f;<~XlGo|2+^whji?IvW za}9eAid5zkHfLUVChjKk{u$lSZAF5w4RQ**r zkNML$g8O&qr+(4^^?h-Qi%Z$p(^j0&MlQh4tz@76nhzuY9)~l32m7{Ezq^n6sjcO? zIFtS6z_Sn_Q+qOtPwA1n7}Unq`d{zn{7?l4$=d#)z{ zr_SvbI{MR^v{3T8-Re$JI^)tw`a2|P^5ar=G4152p z`HMJ~`*WYBeiZljEzaZlSDvoi!JzA#gag@k47=cpGt>{5)S>Ksjl*f<JaO_0&`_IyR;AA-xhqC_)jv=oj z5&LugQJhU)Elhn!_VveJcs=&x`mSJSuFqu-=dphrHjk-W_B@~Bta0+dx$64{%6T}R zeE2-&iOiqId1KXgG;tpJ9&F2e`A?Jw<8e55yykCWZ}QRe)%OWfo{K%%-)n*LtRMCF zL4SwScFEVU=TCCKaP_0fH{w|4AK>g1^;>?bejfSf*h>Bf_Ge$Uh3aSS*8EKDPJRS? z>``8Ak@~LeAA#-0jwpLSnK&>|9vq>50p5;X=(qn&dGQ$a_v19&Z?W=#kCgAm$phtX zOO(5je}zrBR-|%I`WvtfZn{*t%XYW2>#wz3PQ~@30m*DJ?9%b*x z_?7zUqh){W6(A>I&p`PP97DhKU7vlOR%>6*DD}r;3;8NsN`43ju&)GXjnRCkHQMJv z9*o1do;YkCq5d%(G*&Jbt9dK^4%mVNa5P?mOFaV1p3gNL)lGIchgk$NS#{Rg? zI`!R0=*QPOoP{6Z%puALeyx70zq}TE43*#FDDuEK^<$Xdi?fEQ{|NhVUch?w^Y8&| zX5L|g@)G7pVn5E?hBJn1zwI~byOEE_Dev}U7xq_-SHIxXo@LK>Iu83p&cZ?Aa&Q09NY`ScAN zmHREydEVI3ByYt5oL7t;xPI?Vnh)gqH{+b;nty+@a)$_cI1Y-EcVa93M>vY}`zLDN z%JoIzaQqw2W`DIU>ZfphA=r(58Q9ySd)fP}zEypjPvl^1GRb>!5w5U}eqZH7aX9ly z*xXC`8ytv-Cu!cdxAJ5h>Lc51S6+YvaM(cQdvG!5y|+XCLh`{l)=T}3IE(Y1yz7$> z_(AjTJ=Fga=k$}$;|!jcd$RiRA1YsmL*~mDur2$XcdDP>Mfofo*Hu1>UAf-|KdSH3 zUHMQP&hw7J7S8(4D&9#)Gy?H zM&U4g6$kOWJMLCLlKYFnR(u;r@&0=6QQyG*eUHO=9(mY|8>Omm&-+@2y*zb4S8y8r z7C)=+#Pb=8^E<2m11{uwmfy?u^S(!7f8OV}*oF6b0~e9I|DyR!p6_S4u&2&Dg44NP z+cfoa7APNvvpIiv1&LW@jtNQlL@5cVa)Ngc9dCG8k zId*2>-`HcM^16rAcMOncVpq;PguR)!&rm;dp8B(J*fjYM9K`;5ht>BBRXzi|Oqa8; z8|T+MqJH7K>v`wd>Yu@hqh#Yz^#exB^RWFG`4rB^O)|OuK>FBYtb7s|W0&95Paday z8P1$3U&2A-Lm5M z{GopQ40#<636}5UeBMW|c^M9;Ux>5Fd!AN5rh&Tl2R_*;En<`-fk`F>nPUjK^v ze&m5T1^<8@+h~6ki~2F-<8f$PF?M6V5Su%z-#%acbn-N8V7}Zx%7gGooYPhFx!8-m#|`zpJ(O?9IUVK7HU-W&Zm`NRIOdsbcUyVhzw#pN_ENrw9m(D9sGrUL zz1WBR4Nk(t3e~rNp?#-t6nUq+%F{XT(|3NQ{y#X2d7pdgN8@yy&%E)za;MjtUxmZ* z>vwsn@<~PNn=i<<9>{K&0fqW}=X1>EC<;KhE|AxIU%5{sCyRh#hHjy`f ztUMQgi9Pc)-{gt%RPrBj3g_EARqk;`{V#C(dD*^1c^doTaRj-`GvzjatN#;@C>d4u zdD8T`axbeq8)rY0?_vk?q5rC1^h9|Y_WxJ@7aN!lv#K9O{wvPM@4ry)`$F>(IFtN3 zcI0|Lc&UCg=YNm0nEw|WpK9O8SL#RFj4r!hGY+dDH!D?cCEtR*$*aBQ`p8W-AMu_L7K$KiVKsc*ye ztiUGnTR7{KuBUGm^$qO*7AN3Kxagev?cZ15aaPx|`)^_=o94(VxRiWrRpmb9E33%` zGu5A5U5*ZuZ{twr|F&12PClWA?7+UqIC8G$uhmpuLjQ0r*@N>oI>?cDUTxXFp5~8Z z8z;GP9p%yF)3CXL@`KpoC>!dk??B!IM>SOb33g`RDeO(ZvZLk`@gQu+{0as{WTaiTokXB6n+{zVUxF-G5lk z_aDab5V9SFHnBFDW{p@l<{*U3Va+lj7W!J-4l*Ge6GA3iBQ#=}ShGx<5JI+N3n3hY z5DpGPXcKD_zSq_L?9az_->=vE{W+&!Y+&CkoH$PNm$6Irecn{x%DzR|5vl%Z?8@^P zeASPbpnMDtEYjDbYuM$IY<^4q*o*RN?0Q~)rH%3s@0CH(>I)VG{dz8z=am)djQ73Cvv%w>5OjQGM^~`(U3l%D3Z!6Y_H$ zN&bE(%}1P7z7mJH>+9DQTvT5kY*gQed|S224V{%oHdOyTT-Zqd7KhQV`HuR@^!wv7 z{4EY={u#EDkLaTL)F#@$9or0YZIkkX#&U05f>&d=Z2kJ$fh%^(uXfdZ)^7QKIF9~a z9Gj!OemBlzei$y?t~>?1@0Cljfqskbn)hPA1qYC?$0_(aF6aDS0h)KkN!UvNG!EhX zmwKol&HX;W7V^0`W}tq4JAotLmmBufd@1=PY$E>+2a?z6rM@*-^8q-4d!JC+eRug#f@^-Den7G2LvSJUNjL`|!qK=+i01Qd z==<3~oODo0Qbr*a0KVv#+zEC1hkIs0dM!UQ=WLmo3x zP9X0yNsj0I*CxyPo78`8itNIDn#9O)+~0M&T+IAGGvsvow`a;G?t5;QT!2r^Cg=XP zxpD>PAB>Yjx$l{IvTd{OXImf}$=5EF{kJHewMfp$lJ_Rak-Q%d7t7w<|IpX6->>Sg z`$o>@esh+}h3sFMB&U$CSSDBCnJZ)~{oj-2GVb&ATiG+ZQPuZ{ZY$+9{29*2YjNfz z^-tkw?7m9#fmf7o#d<)03KYoq+HuCe>i+x?b zQ=V{L^EO;bzk8~37pL+aIGFR>ujM{n-l}?i!g0n;{r={+IN-Ky$DX(3*57O1oqPgL zaw^Zl=_T@29C$-+v`+K6oEMA>=`X;cSwfKK5Lr{$5xZY~uX0)&14#*ZoQRD%dv~=i`Og=R5VcL15>{Cz@A&#E8NTlqj7!M+tZj=TUD;|Aw6Z|+-D4S+u~XE^)?@yvgDTM)sMo&wleQ^P4gw+)~ovX3B?uT)Pj?E>FY3KgfBwl=<3D&Y!5fJN8^7TXFOR=5gRM`7i8Dk=x(UzPz905jdCq z$<;Z}mybQ7)vt9^^Oh-cFKqozUWm=?&%u>Z%AMGi`?%fGJ_Gj;z<%84bDV%T;qcYk z_YW@rT<%uF{pe4^eyPg8#pU=6j>IqA)_f|@`wkA+r1{C%b-w&P&YCV?#ud2n9qn^Y zR^A_{ESBft2wv}BaKP?U^1AmlAC@4SanUMyCN@u%x8p3%yNdI8eckVCpT~0b`(tOC{51}qC1+z_ z`hVl(b;>(G&^{B-Ga9=x{|!$4O8wukh5QkAlD99@zC=F%hhsbY7h@Mb-ml>#?*IB< zn$KCU^Ty!h4e~~uv|Qhhu42y>a{a$GZy@iDeQ*r+UZ(yA?0>9z)z_>0IP{3z@1gb; z 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

3^zn=9Oj> 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

+udnQGctzPcpki*7C0$+(?LU>WIE`mR~@Vj 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 - 4.0.0 - org.openapitools - CrystalPetstoreClientTests - pom - 1.0-SNAPSHOT - Crystal OpenAPI Petstore Client - - - - maven-dependency-plugin - - - package - - copy-dependencies - - - ${project.build.directory} - - - - - - org.codehaus.mojo - exec-maven-plugin - 3.0.0 - - - shards-install - pre-integration-test - - exec - - - shards - - install - --ignore-crystal-version - - - - - crystal-spec - integration-test - - exec - - - crystal - - spec - - - - - - - - diff --git a/samples/client/petstore/crystal/shard.lock b/samples/client/petstore/crystal/shard.lock deleted file mode 100644 index 4bf5c767a160..000000000000 --- a/samples/client/petstore/crystal/shard.lock +++ /dev/null @@ -1,38 +0,0 @@ -version: 2.0 -shards: - ameba: - git: https://github.com/crystal-ameba/ameba.git - version: 1.6.4 - - backtracer: - git: https://github.com/sija/backtracer.cr.git - version: 1.2.4 - - crest: - git: https://github.com/mamantoha/crest.git - version: 1.3.13 - - exception_page: - git: https://github.com/crystal-loot/exception_page.git - version: 0.4.1 - - http-client-digest_auth: - git: https://github.com/mamantoha/http-client-digest_auth.git - version: 0.6.0 - - http_proxy: - git: https://github.com/mamantoha/http_proxy.git - version: 0.10.3 - - kemal: - git: https://github.com/kemalcr/kemal.git - version: 1.5.0 - - radix: - git: https://github.com/luislavena/radix.git - version: 0.4.1 - - spectator: - git: https://gitlab.com/arctic-fox/spectator.git - version: 0.12.1 - diff --git a/samples/client/petstore/crystal/shard.yml b/samples/client/petstore/crystal/shard.yml index 966c45d917fd..abbeb0097d1f 100644 --- a/samples/client/petstore/crystal/shard.yml +++ b/samples/client/petstore/crystal/shard.yml @@ -11,8 +11,6 @@ description: | crystal: ">= 0.35.1" dependencies: - any_hash: - github: Sija/any_hash.cr crest: github: mamantoha/crest version: ~> 1.3.13 diff --git a/samples/client/petstore/crystal/spec/api/another_fake_spec.cr b/samples/client/petstore/crystal/spec/api/another_fake_spec.cr new file mode 100644 index 000000000000..c687a3f9ba7e --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/another_fake_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::AnotherFake +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::AnotherFake" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::AnotherFake.new(client.connection) + expect(instance).to be_a(Petstore::Api::AnotherFake) + end +end diff --git a/samples/client/petstore/crystal/spec/api/fake_api_spec.cr b/samples/client/petstore/crystal/spec/api/fake_api_spec.cr deleted file mode 100644 index 4ed70284e185..000000000000 --- a/samples/client/petstore/crystal/spec/api/fake_api_spec.cr +++ /dev/null @@ -1,38 +0,0 @@ -# OpenAPI Petstore -# -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT -# - -require "../spec_helper" - -# Unit tests for Petstore::FakeApi -# Automatically generated by openapi-generator (https://openapi-generator.tech) -# Please update as you see appropriate -Spectator.describe "FakeApi" do - describe "test an instance of FakeApi" do - it "should create an instance of FakeApi" do - api_instance = Petstore::FakeApi.new - # TODO expect(api_instance).to be_instance_of(Petstore::FakeApi) - end - end - - # unit tests for get_parameter_name_mapping - # parameter name mapping test - # @param underscore_type _type - # @param _type type - # @param type_with_underscore type_ - # @param type_with_dash type- - # @param http_debug_option http debug option (to test parameter naming option) - # @param [Hash] opts the optional parameters - # @return [nil] - describe "get_parameter_name_mapping test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end -end diff --git a/samples/client/petstore/crystal/spec/api/fake_classname_test_spec.cr b/samples/client/petstore/crystal/spec/api/fake_classname_test_spec.cr new file mode 100644 index 000000000000..07fbeaa2599c --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/fake_classname_test_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::FakeClassnameTest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::FakeClassnameTest" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::FakeClassnameTest.new(client.connection) + expect(instance).to be_a(Petstore::Api::FakeClassnameTest) + end +end diff --git a/samples/client/petstore/crystal/spec/api/fake_spec.cr b/samples/client/petstore/crystal/spec/api/fake_spec.cr new file mode 100644 index 000000000000..c0f4d54ed62f --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/fake_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::Fake +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::Fake" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::Fake.new(client.connection) + expect(instance).to be_a(Petstore::Api::Fake) + end +end diff --git a/samples/client/petstore/crystal/spec/api/foo_spec.cr b/samples/client/petstore/crystal/spec/api/foo_spec.cr new file mode 100644 index 000000000000..7d985c9b39c3 --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/foo_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::Foo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::Foo" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::Foo.new(client.connection) + expect(instance).to be_a(Petstore::Api::Foo) + end +end diff --git a/samples/client/petstore/crystal/spec/api/pet_api_spec.cr b/samples/client/petstore/crystal/spec/api/pet_api_spec.cr deleted file mode 100644 index 0538667c22cd..000000000000 --- a/samples/client/petstore/crystal/spec/api/pet_api_spec.cr +++ /dev/null @@ -1,160 +0,0 @@ -# OpenAPI Petstore -# -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT -# - -require "../spec_helper" - -# Unit tests for Petstore::PetApi -# Automatically generated by openapi-generator (https://openapi-generator.tech) -# Please update as you see appropriate -Spectator.describe "PetApi" do - describe "test an instance of PetApi" do - it "should create an instance of PetApi" do - api_instance = Petstore::PetApi.new - # TODO expect(api_instance).to be_instance_of(Petstore::PetApi) - end - end - - # unit tests for add_pet - # Add a new pet to the store - # @param pet Pet object that needs to be added to the store - # @param [Hash] opts the optional parameters - # @return [Pet] - describe "add_pet test" do - it "should work with only required attributes" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - - config = Petstore::Configuration.new - config.access_token = "yyy" - config.api_key[:api_key] = "xxx" - config.api_key_prefix[:api_key] = "Token" - - api_client = Petstore::ApiClient.new(config) - - api_instance = Petstore::PetApi.new(api_client) - - pet_name = "new pet" - new_pet = Petstore::Pet.new(id: nil, category: nil, name: pet_name, photo_urls: Array(String).new, tags: nil, status: nil) - - pet = api_instance.add_pet(new_pet) - expect(pet.id).to_not be_nil - expect(pet.category).to be_nil - expect(pet.name).to eq pet_name - expect(pet.photo_urls).to eq Array(String).new - expect(pet.status).to be_nil - expect(pet.tags).to eq Array(Petstore::Tag).new - end - end - - # unit tests for delete_pet - # Deletes a pet - # @param pet_id Pet id to delete - # @param [Hash] opts the optional parameters - # @option opts [String] :api_key - # @return [nil] - describe "delete_pet test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for find_pets_by_status - # Finds Pets by status - # Multiple status values can be provided with comma separated strings - # @param status Status values that need to be considered for filter - # @param [Hash] opts the optional parameters - # @return [Array(Pet)] - describe "find_pets_by_status test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for find_pets_by_tags - # Finds Pets by tags - # Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - # @param tags Tags to filter by - # @param [Hash] opts the optional parameters - # @return [Array(Pet)] - describe "find_pets_by_tags test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for get_pet_by_id - # Find pet by ID - # Returns a single pet - # @param pet_id ID of pet to return - # @param [Hash] opts the optional parameters - # @return [Pet] - describe "get_pet_by_id test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - - config = Petstore::Configuration.new - config.access_token = "yyy" - config.api_key[:api_key] = "xxx" - config.api_key_prefix[:api_key] = "Token" - - api_client = Petstore::ApiClient.new(config) - - api_instance = Petstore::PetApi.new(api_client) - - new_pet = Petstore::Pet.new(id: nil, category: nil, name: "crystal", photo_urls: Array(String).new, tags: nil, status: nil) - - pet = api_instance.add_pet(new_pet) - pet_id = pet.id.not_nil! - result = api_instance.get_pet_by_id(pet_id: pet_id) - expect(result.id).to eq pet_id - expect(result.category).to be_nil - expect(result.name).to eq "crystal" - expect(result.photo_urls).to eq Array(String).new - expect(result.status).to be_nil - expect(result.tags).to eq Array(Petstore::Tag).new - end - end - - # unit tests for update_pet - # Update an existing pet - # @param pet Pet object that needs to be added to the store - # @param [Hash] opts the optional parameters - # @return [Pet] - describe "update_pet test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for update_pet_with_form - # Updates a pet in the store with form data - # @param pet_id ID of pet that needs to be updated - # @param [Hash] opts the optional parameters - # @option opts [String] :name Updated name of the pet - # @option opts [String] :status Updated status of the pet - # @return [nil] - describe "update_pet_with_form test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for upload_file - # uploads an image - # @param pet_id ID of pet to update - # @param [Hash] opts the optional parameters - # @option opts [String] :additional_metadata Additional data to pass to server - # @option opts [File] :file file to upload - # @return [ApiResponse] - describe "upload_file test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end -end diff --git a/samples/client/petstore/crystal/spec/api/pet_spec.cr b/samples/client/petstore/crystal/spec/api/pet_spec.cr new file mode 100644 index 000000000000..41d16ceae3e2 --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/pet_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::Pet +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::Pet" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::Pet.new(client.connection) + expect(instance).to be_a(Petstore::Api::Pet) + end +end diff --git a/samples/client/petstore/crystal/spec/api/store/order_spec.cr b/samples/client/petstore/crystal/spec/api/store/order_spec.cr new file mode 100644 index 000000000000..142cf1ad3d4f --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/store/order_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Petstore::Api::Store::Order +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::Store::Order" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::Store::Order.new(client.connection) + expect(instance).to be_a(Petstore::Api::Store::Order) + end +end diff --git a/samples/client/petstore/crystal/spec/api/store_api_spec.cr b/samples/client/petstore/crystal/spec/api/store_api_spec.cr deleted file mode 100644 index c5e4fc67dff9..000000000000 --- a/samples/client/petstore/crystal/spec/api/store_api_spec.cr +++ /dev/null @@ -1,70 +0,0 @@ -# OpenAPI Petstore -# -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT -# - -require "../spec_helper" - -# Unit tests for Petstore::StoreApi -# Automatically generated by openapi-generator (https://openapi-generator.tech) -# Please update as you see appropriate -Spectator.describe "StoreApi" do - describe "test an instance of StoreApi" do - it "should create an instance of StoreApi" do - api_instance = Petstore::StoreApi.new - # TODO expect(api_instance).to be_instance_of(Petstore::StoreApi) - end - end - - # unit tests for delete_order - # Delete purchase order by ID - # For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - # @param order_id ID of the order that needs to be deleted - # @param [Hash] opts the optional parameters - # @return [nil] - describe "delete_order test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for get_inventory - # Returns pet inventories by status - # Returns a map of status codes to quantities - # @param [Hash] opts the optional parameters - # @return [Hash(String, Int32)] - describe "get_inventory test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for get_order_by_id - # Find purchase order by ID - # For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions - # @param order_id ID of pet that needs to be fetched - # @param [Hash] opts the optional parameters - # @return [Order] - describe "get_order_by_id test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for place_order - # Place an order for a pet - # - # @param order order placed for purchasing the pet - # @param [Hash] opts the optional parameters - # @return [Order] - describe "place_order test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end -end diff --git a/samples/client/petstore/crystal/spec/api/store_spec.cr b/samples/client/petstore/crystal/spec/api/store_spec.cr new file mode 100644 index 000000000000..be105229e4df --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/store_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::Store +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::Store" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::Store.new(client.connection) + expect(instance).to be_a(Petstore::Api::Store) + end +end diff --git a/samples/client/petstore/crystal/spec/api/user_api_spec.cr b/samples/client/petstore/crystal/spec/api/user_api_spec.cr deleted file mode 100644 index a126ae543a3c..000000000000 --- a/samples/client/petstore/crystal/spec/api/user_api_spec.cr +++ /dev/null @@ -1,120 +0,0 @@ -# OpenAPI Petstore -# -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT -# - -require "../spec_helper" - -# Unit tests for Petstore::UserApi -# Automatically generated by openapi-generator (https://openapi-generator.tech) -# Please update as you see appropriate -Spectator.describe "UserApi" do - describe "test an instance of UserApi" do - it "should create an instance of UserApi" do - api_instance = Petstore::UserApi.new - # TODO expect(api_instance).to be_instance_of(Petstore::UserApi) - end - end - - # unit tests for create_user - # Create user - # This can only be done by the logged in user. - # @param user Created user object - # @param [Hash] opts the optional parameters - # @return [nil] - describe "create_user test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for create_users_with_array_input - # Creates list of users with given input array - # - # @param user List of user object - # @param [Hash] opts the optional parameters - # @return [nil] - describe "create_users_with_array_input test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for create_users_with_list_input - # Creates list of users with given input array - # - # @param user List of user object - # @param [Hash] opts the optional parameters - # @return [nil] - describe "create_users_with_list_input test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for delete_user - # Delete user - # This can only be done by the logged in user. - # @param username The name that needs to be deleted - # @param [Hash] opts the optional parameters - # @return [nil] - describe "delete_user test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for get_user_by_name - # Get user by user name - # - # @param username The name that needs to be fetched. Use user1 for testing. - # @param [Hash] opts the optional parameters - # @return [User] - describe "get_user_by_name test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for login_user - # Logs user into the system - # - # @param username The user name for login - # @param password The password for login in clear text - # @param [Hash] opts the optional parameters - # @return [String] - describe "login_user test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for logout_user - # Logs out current logged in user session - # - # @param [Hash] opts the optional parameters - # @return [nil] - describe "logout_user test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - # unit tests for update_user - # Updated user - # This can only be done by the logged in user. - # @param username name that need to be deleted - # @param user Updated user object - # @param [Hash] opts the optional parameters - # @return [nil] - describe "update_user test" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end -end diff --git a/samples/client/petstore/crystal/spec/api/user_spec.cr b/samples/client/petstore/crystal/spec/api/user_spec.cr new file mode 100644 index 000000000000..aca65d283a2e --- /dev/null +++ b/samples/client/petstore/crystal/spec/api/user_spec.cr @@ -0,0 +1,23 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Api::User +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Api::User" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Petstore::Client.new(host: "localhost") + instance = Petstore::Api::User.new(client.connection) + expect(instance).to be_a(Petstore::Api::User) + end +end diff --git a/samples/client/petstore/crystal/spec/api_client_spec.cr b/samples/client/petstore/crystal/spec/api_client_spec.cr deleted file mode 100644 index 767764436a92..000000000000 --- a/samples/client/petstore/crystal/spec/api_client_spec.cr +++ /dev/null @@ -1,59 +0,0 @@ -require "./spec_helper" - -Spectator.describe Petstore::ApiClient do - describe "#update_params_for_auth!" do - describe "oauth2" do - it "should add 'Authorization' to header" do - config = Petstore::Configuration.new - config.access_token = "xxx" - - header_params = {} of String => String - query_params = {} of String => String - cookie_params = {} of String => String - - api_client = Petstore::ApiClient.new(config) - api_client.update_params_for_auth!(header_params, query_params, cookie_params, ["petstore_auth"]) - - expect(header_params["Authorization"]).to eq "Bearer xxx" - expect(query_params.size).to eq 0 - end - end - - describe "api_key" do - context "without api_key_prefix" do - it "should add 'api_key' to header" do - config = Petstore::Configuration.new - config.api_key[:api_key] = "xxx" - - header_params = {} of String => String - query_params = {} of String => String - cookie_params = {} of String => String - - api_client = Petstore::ApiClient.new(config) - api_client.update_params_for_auth!(header_params, query_params, cookie_params, ["api_key"]) - - expect(header_params["api_key"]).to eq "xxx" - expect(query_params.empty?).to be_true - end - end - - context "with api_key_prefix" do - it "should add 'api_key' to header" do - config = Petstore::Configuration.new - config.api_key[:api_key] = "xxx" - config.api_key_prefix[:api_key] = "Token" - - header_params = {} of String => String - query_params = {} of String => String - cookie_params = {} of String => String - - api_client = Petstore::ApiClient.new(config) - api_client.update_params_for_auth!(header_params, query_params, cookie_params, ["api_key"]) - - expect(header_params["api_key"]).to eq "Token xxx" - expect(query_params.empty?).to be_true - end - end - end - end -end diff --git a/samples/client/petstore/crystal/spec/configuration_spec.cr b/samples/client/petstore/crystal/spec/configuration_spec.cr deleted file mode 100644 index a462dbf71a80..000000000000 --- a/samples/client/petstore/crystal/spec/configuration_spec.cr +++ /dev/null @@ -1,26 +0,0 @@ -require "./spec_helper" - -Spectator.describe Petstore::Configuration do - describe "#initialize" do - context "with block" do - it "works" do - config = Petstore::Configuration.new do |config| - config.username = "xxx" - end - - expect(config.username).to eq "xxx" - end - end - end - - describe "#configure" do - it "works" do - config = Petstore::Configuration.new - config.configure do |config| - config.username = "xxx" - end - - expect(config.username).to eq "xxx" - end - end -end diff --git a/samples/client/petstore/crystal/spec/integration/pet_spec.cr b/samples/client/petstore/crystal/spec/integration/pet_spec.cr new file mode 100644 index 000000000000..71b5e6230de0 --- /dev/null +++ b/samples/client/petstore/crystal/spec/integration/pet_spec.cr @@ -0,0 +1,36 @@ +require "../spec_helper" + +# Integration tests for the Pet resource sub-client. +# +# These exercise the generated client end-to-end against a live Petstore +# server. The CI workflow (.github/workflows/samples-crystal.yaml) starts a +# swaggerapi/petstore service container, reachable at http://localhost/v2 (the +# default below). Override PETSTORE_HOST / PETSTORE_SCHEME to run elsewhere. +# +# Hand-maintained: NOT produced by the generator. The generated specs under +# spec/api are structural-only and must never hit the network; this file +# provides the real round-trip coverage and is protected from regeneration +# via .openapi-generator-ignore. +Spectator.describe "Pet integration" do + it "persists a pet and reads it back by id" do + client = Petstore::Client.new( + host: ENV.fetch("PETSTORE_HOST", "localhost"), + scheme: ENV.fetch("PETSTORE_SCHEME", "http"), + ) + + pet_id = 90_000_i64 + pet = Petstore::Pet.new( + name: "crystal", + photo_urls: Set(String).new, + id: pet_id, + ) + + client.pet.create(pet) + + result = client.pet.get(pet_id).value + expect(result.id).to eq pet_id + expect(result.name).to eq "crystal" + expect(result.photo_urls).to eq Set(String).new + expect(result.status).to be_nil + end +end diff --git a/samples/client/petstore/crystal/spec/models/additional_properties_class_spec.cr b/samples/client/petstore/crystal/spec/models/additional_properties_class_spec.cr new file mode 100644 index 000000000000..a21bf14021fa --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/additional_properties_class_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::AdditionalPropertiesClass +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::AdditionalPropertiesClass do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::AdditionalPropertiesClass.from_json("{}") + expect(instance).to be_a(Petstore::AdditionalPropertiesClass) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::AdditionalPropertiesClass.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/all_of_with_single_ref_spec.cr b/samples/client/petstore/crystal/spec/models/all_of_with_single_ref_spec.cr new file mode 100644 index 000000000000..0fb4dd059989 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/all_of_with_single_ref_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::AllOfWithSingleRef +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::AllOfWithSingleRef do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::AllOfWithSingleRef.from_json("{}") + expect(instance).to be_a(Petstore::AllOfWithSingleRef) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::AllOfWithSingleRef.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/animal_spec.cr b/samples/client/petstore/crystal/spec/models/animal_spec.cr new file mode 100644 index 000000000000..15d900ce42b5 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/animal_spec.cr @@ -0,0 +1,22 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Animal +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Animal do + describe "polymorphic JSON" do + # A discriminated base type dispatches to a mapped subtype, so it cannot be built from a + # document that omits the discriminator field. + it "requires the discriminator to deserialise" do + expect { Petstore::Animal.from_json("{}") }.to raise_error + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/another_property_name_mapping_spec.cr b/samples/client/petstore/crystal/spec/models/another_property_name_mapping_spec.cr deleted file mode 100644 index 23de0b60455d..000000000000 --- a/samples/client/petstore/crystal/spec/models/another_property_name_mapping_spec.cr +++ /dev/null @@ -1,47 +0,0 @@ -# OpenAPI Petstore -# -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT -# - -require "../spec_helper" - -# Unit tests for Petstore::AnotherPropertyNameMapping -# Automatically generated by openapi-generator (https://openapi-generator.tech) -# Please update as you see appropriate -Spectator.describe Petstore::AnotherPropertyNameMapping do - describe "test an instance of AnotherPropertyNameMapping" do - it "should create an instance of AnotherPropertyNameMapping" do - # instance = Petstore::AnotherPropertyNameMapping.new - # expect(instance).to be_instance_of(Petstore::AnotherPropertyNameMapping) - end - end - - describe "test attribute 'http_debug_operation'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'underscore_type'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute '_type'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'type_with_underscore'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end -end diff --git a/samples/client/petstore/crystal/spec/models/api_response_spec.cr b/samples/client/petstore/crystal/spec/models/api_response_spec.cr index 14ad6b1b6aa2..8209df87ee8c 100644 --- a/samples/client/petstore/crystal/spec/models/api_response_spec.cr +++ b/samples/client/petstore/crystal/spec/models/api_response_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,28 +12,18 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::ApiResponse do - describe "test an instance of ApiResponse" do - it "should create an instance of ApiResponse" do - # instance = Petstore::ApiResponse.new - # expect(instance).to be_instance_of(Petstore::ApiResponse) - end - end - - describe "test attribute 'code'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute '_type'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ApiResponse.from_json("{}") + expect(instance).to be_a(Petstore::ApiResponse) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) end end - describe "test attribute 'message'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ApiResponse.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) end end end diff --git a/samples/client/petstore/crystal/spec/models/array_of_array_of_number_only_spec.cr b/samples/client/petstore/crystal/spec/models/array_of_array_of_number_only_spec.cr new file mode 100644 index 000000000000..d2bb0951dca0 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/array_of_array_of_number_only_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ArrayOfArrayOfNumberOnly +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ArrayOfArrayOfNumberOnly do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ArrayOfArrayOfNumberOnly.from_json("{}") + expect(instance).to be_a(Petstore::ArrayOfArrayOfNumberOnly) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ArrayOfArrayOfNumberOnly.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/array_of_number_only_spec.cr b/samples/client/petstore/crystal/spec/models/array_of_number_only_spec.cr new file mode 100644 index 000000000000..b6d22ea09a98 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/array_of_number_only_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ArrayOfNumberOnly +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ArrayOfNumberOnly do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ArrayOfNumberOnly.from_json("{}") + expect(instance).to be_a(Petstore::ArrayOfNumberOnly) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ArrayOfNumberOnly.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/array_test_spec.cr b/samples/client/petstore/crystal/spec/models/array_test_spec.cr new file mode 100644 index 000000000000..2686786703ca --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/array_test_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ArrayTest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ArrayTest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ArrayTest.from_json("{}") + expect(instance).to be_a(Petstore::ArrayTest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ArrayTest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/capitalization_spec.cr b/samples/client/petstore/crystal/spec/models/capitalization_spec.cr new file mode 100644 index 000000000000..f4cfe40c9997 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/capitalization_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Capitalization +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Capitalization do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::Capitalization.from_json("{}") + expect(instance).to be_a(Petstore::Capitalization) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::Capitalization.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/cat_spec.cr b/samples/client/petstore/crystal/spec/models/cat_spec.cr new file mode 100644 index 000000000000..ca7005376146 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/cat_spec.cr @@ -0,0 +1,24 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Cat +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Cat do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::Cat.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/category_spec.cr b/samples/client/petstore/crystal/spec/models/category_spec.cr index 82d2527aaa5f..86a237ba0019 100644 --- a/samples/client/petstore/crystal/spec/models/category_spec.cr +++ b/samples/client/petstore/crystal/spec/models/category_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,22 +12,13 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::Category do - describe "test an instance of Category" do - it "should create an instance of Category" do - # instance = Petstore::Category.new - # expect(instance).to be_instance_of(Petstore::Category) - end - end - - describe "test attribute 'id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'name'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::Category.from_json("{}") }.to raise_error(JSON::SerializableError) end end end diff --git a/samples/client/petstore/crystal/spec/models/child_with_nullable_spec.cr b/samples/client/petstore/crystal/spec/models/child_with_nullable_spec.cr new file mode 100644 index 000000000000..ecdf0d54f616 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/child_with_nullable_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ChildWithNullable +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ChildWithNullable do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ChildWithNullable.from_json("{}") + expect(instance).to be_a(Petstore::ChildWithNullable) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ChildWithNullable.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/class_model_spec.cr b/samples/client/petstore/crystal/spec/models/class_model_spec.cr new file mode 100644 index 000000000000..fcf5a7de4e15 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/class_model_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ClassModel +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ClassModel do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ClassModel.from_json("{}") + expect(instance).to be_a(Petstore::ClassModel) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ClassModel.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/deprecated_object_spec.cr b/samples/client/petstore/crystal/spec/models/deprecated_object_spec.cr new file mode 100644 index 000000000000..54cf71a81d24 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/deprecated_object_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::DeprecatedObject +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::DeprecatedObject do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::DeprecatedObject.from_json("{}") + expect(instance).to be_a(Petstore::DeprecatedObject) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::DeprecatedObject.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/dog_spec.cr b/samples/client/petstore/crystal/spec/models/dog_spec.cr new file mode 100644 index 000000000000..894e9b2032d1 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/dog_spec.cr @@ -0,0 +1,24 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Dog +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Dog do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::Dog.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/enum_arrays_spec.cr b/samples/client/petstore/crystal/spec/models/enum_arrays_spec.cr new file mode 100644 index 000000000000..bb0066d49610 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/enum_arrays_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::EnumArrays +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::EnumArrays do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::EnumArrays.from_json("{}") + expect(instance).to be_a(Petstore::EnumArrays) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::EnumArrays.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/enum_class_spec.cr b/samples/client/petstore/crystal/spec/models/enum_class_spec.cr new file mode 100644 index 000000000000..3a06e22cf71c --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/enum_class_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::EnumClass +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::EnumClass do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::EnumClass.from_json(%("_abc")) + expect(value).to be_a(Petstore::EnumClass) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/enum_test_spec.cr b/samples/client/petstore/crystal/spec/models/enum_test_spec.cr new file mode 100644 index 000000000000..6697c3024215 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/enum_test_spec.cr @@ -0,0 +1,24 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::EnumTest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::EnumTest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::EnumTest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/fake_big_decimal_map200_response_spec.cr b/samples/client/petstore/crystal/spec/models/fake_big_decimal_map200_response_spec.cr new file mode 100644 index 000000000000..8aa495595a77 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/fake_big_decimal_map200_response_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::FakeBigDecimalMap200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::FakeBigDecimalMap200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::FakeBigDecimalMap200Response.from_json("{}") + expect(instance).to be_a(Petstore::FakeBigDecimalMap200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::FakeBigDecimalMap200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/file_schema_test_class_spec.cr b/samples/client/petstore/crystal/spec/models/file_schema_test_class_spec.cr new file mode 100644 index 000000000000..add4a57554c8 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/file_schema_test_class_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::FileSchemaTestClass +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::FileSchemaTestClass do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::FileSchemaTestClass.from_json("{}") + expect(instance).to be_a(Petstore::FileSchemaTestClass) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::FileSchemaTestClass.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/file_spec.cr b/samples/client/petstore/crystal/spec/models/file_spec.cr new file mode 100644 index 000000000000..cb997a4b4861 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/file_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::File +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::File do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::File.from_json("{}") + expect(instance).to be_a(Petstore::File) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::File.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/foo_get_default_response_spec.cr b/samples/client/petstore/crystal/spec/models/foo_get_default_response_spec.cr new file mode 100644 index 000000000000..b922119bb5e2 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/foo_get_default_response_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::FooGetDefaultResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::FooGetDefaultResponse do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::FooGetDefaultResponse.from_json("{}") + expect(instance).to be_a(Petstore::FooGetDefaultResponse) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::FooGetDefaultResponse.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/foo_spec.cr b/samples/client/petstore/crystal/spec/models/foo_spec.cr new file mode 100644 index 000000000000..038195ddea4f --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/foo_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Foo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Foo do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::Foo.from_json("{}") + expect(instance).to be_a(Petstore::Foo) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::Foo.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/format_test_spec.cr b/samples/client/petstore/crystal/spec/models/format_test_spec.cr index 6cc22cc964c1..d8a141f433b8 100644 --- a/samples/client/petstore/crystal/spec/models/format_test_spec.cr +++ b/samples/client/petstore/crystal/spec/models/format_test_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,106 +12,11 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::FormatTest do - describe "test an instance of FormatTest" do - it "should create an instance of FormatTest" do - # instance = Petstore::FormatTest.new - # expect(instance).to be_instance_of(Petstore::FormatTest) - end - end - - describe "test attribute 'integer'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'int32'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'int64'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'number'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'float'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'double'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'decimal'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'string'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'byte'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'binary'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'date'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'date_time'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'uuid'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'password'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'pattern_with_digits'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'pattern_with_digits_and_delimiter'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "JSON contract" do + # This model holds a non-JSON-serialisable property (e.g. a ::File field), so a + # from_json round-trip cannot be compiled. Assert the JSON contract is present instead. + it "defines from_json" do + expect(Petstore::FormatTest.responds_to?(:from_json)).to be_true end end end diff --git a/samples/client/petstore/crystal/spec/models/has_only_read_only_spec.cr b/samples/client/petstore/crystal/spec/models/has_only_read_only_spec.cr new file mode 100644 index 000000000000..9ce7f064a811 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/has_only_read_only_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::HasOnlyReadOnly +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::HasOnlyReadOnly do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::HasOnlyReadOnly.from_json("{}") + expect(instance).to be_a(Petstore::HasOnlyReadOnly) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::HasOnlyReadOnly.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/health_check_result_spec.cr b/samples/client/petstore/crystal/spec/models/health_check_result_spec.cr new file mode 100644 index 000000000000..f3c51c67cf26 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/health_check_result_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::HealthCheckResult +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::HealthCheckResult do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::HealthCheckResult.from_json("{}") + expect(instance).to be_a(Petstore::HealthCheckResult) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::HealthCheckResult.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/list_spec.cr b/samples/client/petstore/crystal/spec/models/list_spec.cr new file mode 100644 index 000000000000..4583fce55658 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/list_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::List +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::List do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::List.from_json("{}") + expect(instance).to be_a(Petstore::List) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::List.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/map_test_spec.cr b/samples/client/petstore/crystal/spec/models/map_test_spec.cr new file mode 100644 index 000000000000..fd51dab770c2 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/map_test_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::MapTest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::MapTest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::MapTest.from_json("{}") + expect(instance).to be_a(Petstore::MapTest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::MapTest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/mixed_properties_and_additional_properties_class_spec.cr b/samples/client/petstore/crystal/spec/models/mixed_properties_and_additional_properties_class_spec.cr new file mode 100644 index 000000000000..f085b2077d4a --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/mixed_properties_and_additional_properties_class_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::MixedPropertiesAndAdditionalPropertiesClass +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::MixedPropertiesAndAdditionalPropertiesClass do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::MixedPropertiesAndAdditionalPropertiesClass.from_json("{}") + expect(instance).to be_a(Petstore::MixedPropertiesAndAdditionalPropertiesClass) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::MixedPropertiesAndAdditionalPropertiesClass.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/model200_response_spec.cr b/samples/client/petstore/crystal/spec/models/model200_response_spec.cr new file mode 100644 index 000000000000..f64a5487c897 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/model200_response_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Model200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Model200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::Model200Response.from_json("{}") + expect(instance).to be_a(Petstore::Model200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::Model200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/model_client_spec.cr b/samples/client/petstore/crystal/spec/models/model_client_spec.cr new file mode 100644 index 000000000000..81a1f2242c59 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/model_client_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ModelClient +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ModelClient do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ModelClient.from_json("{}") + expect(instance).to be_a(Petstore::ModelClient) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ModelClient.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/model_return_spec.cr b/samples/client/petstore/crystal/spec/models/model_return_spec.cr new file mode 100644 index 000000000000..0e1224f94222 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/model_return_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ModelReturn +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ModelReturn do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ModelReturn.from_json("{}") + expect(instance).to be_a(Petstore::ModelReturn) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ModelReturn.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/name_spec.cr b/samples/client/petstore/crystal/spec/models/name_spec.cr new file mode 100644 index 000000000000..3ca3cd329c76 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/name_spec.cr @@ -0,0 +1,24 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::Name +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::Name do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::Name.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/nullable_class_spec.cr b/samples/client/petstore/crystal/spec/models/nullable_class_spec.cr new file mode 100644 index 000000000000..32da2ba5e7aa --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/nullable_class_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::NullableClass +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::NullableClass do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::NullableClass.from_json("{}") + expect(instance).to be_a(Petstore::NullableClass) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::NullableClass.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/number_only_spec.cr b/samples/client/petstore/crystal/spec/models/number_only_spec.cr new file mode 100644 index 000000000000..d16e51125303 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/number_only_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::NumberOnly +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::NumberOnly do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::NumberOnly.from_json("{}") + expect(instance).to be_a(Petstore::NumberOnly) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::NumberOnly.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/object_with_deprecated_fields_spec.cr b/samples/client/petstore/crystal/spec/models/object_with_deprecated_fields_spec.cr new file mode 100644 index 000000000000..a5dea2c3b727 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/object_with_deprecated_fields_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ObjectWithDeprecatedFields +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ObjectWithDeprecatedFields do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ObjectWithDeprecatedFields.from_json("{}") + expect(instance).to be_a(Petstore::ObjectWithDeprecatedFields) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ObjectWithDeprecatedFields.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/order_spec.cr b/samples/client/petstore/crystal/spec/models/order_spec.cr index 31bc80a8f66b..86952a92c78b 100644 --- a/samples/client/petstore/crystal/spec/models/order_spec.cr +++ b/samples/client/petstore/crystal/spec/models/order_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,50 +12,18 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::Order do - describe "test an instance of Order" do - it "should create an instance of Order" do - # instance = Petstore::Order.new - # expect(instance).to be_instance_of(Petstore::Order) - end - end - - describe "test attribute 'id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'pet_id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'quantity'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'ship_date'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'status'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - # validator = Petstore::EnumTest::EnumAttributeValidator.new("String", ["placed", "approved", "delivered"]) - # validator.allowable_values.each do |value| - # expect { instance.status = value }.not_to raise_error - # end + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::Order.from_json("{}") + expect(instance).to be_a(Petstore::Order) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) end end - describe "test attribute 'complete'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::Order.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) end end end diff --git a/samples/client/petstore/crystal/spec/models/outer_composite_spec.cr b/samples/client/petstore/crystal/spec/models/outer_composite_spec.cr new file mode 100644 index 000000000000..cb8b38004b60 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_composite_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterComposite +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterComposite do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::OuterComposite.from_json("{}") + expect(instance).to be_a(Petstore::OuterComposite) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::OuterComposite.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/outer_enum_default_value_spec.cr b/samples/client/petstore/crystal/spec/models/outer_enum_default_value_spec.cr new file mode 100644 index 000000000000..0ebd718c536f --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_enum_default_value_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterEnumDefaultValue +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterEnumDefaultValue do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::OuterEnumDefaultValue.from_json(%("placed")) + expect(value).to be_a(Petstore::OuterEnumDefaultValue) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/outer_enum_integer_default_value_spec.cr b/samples/client/petstore/crystal/spec/models/outer_enum_integer_default_value_spec.cr new file mode 100644 index 000000000000..a34206730ef0 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_enum_integer_default_value_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterEnumIntegerDefaultValue +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterEnumIntegerDefaultValue do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::OuterEnumIntegerDefaultValue.from_json(%(0)) + expect(value).to be_a(Petstore::OuterEnumIntegerDefaultValue) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/outer_enum_integer_spec.cr b/samples/client/petstore/crystal/spec/models/outer_enum_integer_spec.cr new file mode 100644 index 000000000000..5918e4bc6b80 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_enum_integer_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterEnumInteger +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterEnumInteger do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::OuterEnumInteger.from_json(%(0)) + expect(value).to be_a(Petstore::OuterEnumInteger) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/outer_enum_spec.cr b/samples/client/petstore/crystal/spec/models/outer_enum_spec.cr new file mode 100644 index 000000000000..e6f478a40523 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_enum_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterEnum +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterEnum do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::OuterEnum.from_json(%("placed")) + expect(value).to be_a(Petstore::OuterEnum) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/outer_object_with_enum_property_spec.cr b/samples/client/petstore/crystal/spec/models/outer_object_with_enum_property_spec.cr new file mode 100644 index 000000000000..2a0c52adf8db --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/outer_object_with_enum_property_spec.cr @@ -0,0 +1,24 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::OuterObjectWithEnumProperty +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::OuterObjectWithEnumProperty do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::OuterObjectWithEnumProperty.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/parent_with_nullable_spec.cr b/samples/client/petstore/crystal/spec/models/parent_with_nullable_spec.cr new file mode 100644 index 000000000000..e2fd469a7c72 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/parent_with_nullable_spec.cr @@ -0,0 +1,22 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ParentWithNullable +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ParentWithNullable do + describe "polymorphic JSON" do + # A discriminated base type dispatches to a mapped subtype, so it cannot be built from a + # document that omits the discriminator field. + it "requires the discriminator to deserialise" do + expect { Petstore::ParentWithNullable.from_json("{}") }.to raise_error + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/pet_spec.cr b/samples/client/petstore/crystal/spec/models/pet_spec.cr index 66650f6ad855..c4350785b2ff 100644 --- a/samples/client/petstore/crystal/spec/models/pet_spec.cr +++ b/samples/client/petstore/crystal/spec/models/pet_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,87 +12,13 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::Pet do - describe "test an instance of Pet" do - # it "should fail to compile if any required properties is missing" do - # assert_compilation_error(path: "./pet_compilation_error_spec.cr", message: "Error: expected argument 'name' to 'Petstore::Pet.new' to be String, not Nil") - # end - - it "should create an instance of Pet with only required properties" do - pet = Petstore::Pet.new(id: nil, category: nil, name: "new pet", photo_urls: Array(String).new, tags: nil, status: nil) - expect(pet).to be_a(Petstore::Pet) - end - - it "should create an instance of Pet with all properties" do - pet_id = 12345_i64 - pet = Petstore::Pet.new(id: pet_id, category: Petstore::Category.new(id: pet_id + 10, name: "crystal category"), name: "crystal", photo_urls: ["https://crystal-lang.org"], tags: [Petstore::Tag.new(id: pet_id + 100, name: "crystal tag")], status: "available") - expect(pet).to be_a(Petstore::Pet) - end - end - - describe "#from_json" do - it "should instantiate a new instance from json string with required properties" do - pet = Petstore::Pet.from_json("{\"name\": \"json pet\", \"photoUrls\": []}") - expect(pet).to be_a(Petstore::Pet) - expect(pet.name).to eq "json pet" - expect(pet.photo_urls).to eq Array(String).new - end - - it "should raise error when instantiating a new instance from json string with missing required properties" do - expect_raises(JSON::SerializableError, /Missing JSON attribute: name/) do - Petstore::Pet.from_json("{\"photoUrls\": []}") - end - expect_raises(JSON::SerializableError, /Missing JSON attribute: photoUrls/) do - Petstore::Pet.from_json("{\"name\": \"json pet\"}") - end - end - - it "should raise error when instantiating a new instance from json string with required properties set to null value" do - expect_raises(JSON::SerializableError, /Expected String but was Null/) do - Petstore::Pet.from_json("{\"name\": null, \"photoUrls\": []}") - end - expect_raises(JSON::SerializableError, /Expected BeginArray but was Null/) do - Petstore::Pet.from_json("{\"name\": \"json pet\", \"photoUrls\": null}") - end - end - end - - describe "test attribute 'id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'category'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'name'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'photo_urls'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'tags'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'status'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - # validator = Petstore::EnumTest::EnumAttributeValidator.new("String", ["available", "pending", "sold"]) - # validator.allowable_values.each do |value| - # expect { instance.status = value }.not_to raise_error - # end + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Petstore::Pet.from_json("{}") }.to raise_error(JSON::SerializableError) end end end diff --git a/samples/client/petstore/crystal/spec/models/read_only_first_spec.cr b/samples/client/petstore/crystal/spec/models/read_only_first_spec.cr new file mode 100644 index 000000000000..1f267a85b9fe --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/read_only_first_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::ReadOnlyFirst +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::ReadOnlyFirst do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::ReadOnlyFirst.from_json("{}") + expect(instance).to be_a(Petstore::ReadOnlyFirst) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::ReadOnlyFirst.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/single_ref_type_spec.cr b/samples/client/petstore/crystal/spec/models/single_ref_type_spec.cr new file mode 100644 index 000000000000..203c4b28dbd0 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/single_ref_type_spec.cr @@ -0,0 +1,21 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::SingleRefType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::SingleRefType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Petstore::SingleRefType.from_json(%("admin")) + expect(value).to be_a(Petstore::SingleRefType) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/special_model_name_spec.cr b/samples/client/petstore/crystal/spec/models/special_model_name_spec.cr new file mode 100644 index 000000000000..dad17ab38739 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/special_model_name_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::SpecialModelName +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::SpecialModelName do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::SpecialModelName.from_json("{}") + expect(instance).to be_a(Petstore::SpecialModelName) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::SpecialModelName.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/tag_spec.cr b/samples/client/petstore/crystal/spec/models/tag_spec.cr index d500aa8309d0..bab85594204c 100644 --- a/samples/client/petstore/crystal/spec/models/tag_spec.cr +++ b/samples/client/petstore/crystal/spec/models/tag_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,36 +12,18 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::Tag do - describe "test an instance of Tag" do - it "should create an instance of Tag" do - # instance = Petstore::Tag.new - # expect(instance).to be_instance_of(Petstore::Tag) - end - end - - describe "test equality of Tag instances" do - it "should equal to itself" do - tag1 = Petstore::Tag.new(id: 0, name: "same") - tag2 = tag1 - expect(tag1 == tag2).to be_true - end - - it "should equal to another instance with same attributes" do - tag1 = Petstore::Tag.new(id: 0, name: "tag") - tag2 = Petstore::Tag.new(id: 0, name: "tag") - expect(tag1 == tag2).to be_true - end - end - - describe "test attribute 'id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::Tag.from_json("{}") + expect(instance).to be_a(Petstore::Tag) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) end end - describe "test attribute 'name'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::Tag.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) end end end diff --git a/samples/client/petstore/crystal/spec/models/test_inline_freeform_additional_properties_request_spec.cr b/samples/client/petstore/crystal/spec/models/test_inline_freeform_additional_properties_request_spec.cr new file mode 100644 index 000000000000..fd96bd609534 --- /dev/null +++ b/samples/client/petstore/crystal/spec/models/test_inline_freeform_additional_properties_request_spec.cr @@ -0,0 +1,29 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Petstore::TestInlineFreeformAdditionalPropertiesRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Petstore::TestInlineFreeformAdditionalPropertiesRequest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::TestInlineFreeformAdditionalPropertiesRequest.from_json("{}") + expect(instance).to be_a(Petstore::TestInlineFreeformAdditionalPropertiesRequest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::TestInlineFreeformAdditionalPropertiesRequest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/petstore/crystal/spec/models/user_spec.cr b/samples/client/petstore/crystal/spec/models/user_spec.cr index 981cd52d271e..244937ad9d50 100644 --- a/samples/client/petstore/crystal/spec/models/user_spec.cr +++ b/samples/client/petstore/crystal/spec/models/user_spec.cr @@ -1,11 +1,9 @@ -# OpenAPI Petstore +# #OpenAPI Petstore # -# This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. +#The version of the OpenAPI document: 1.0.0 # -# The version of the OpenAPI document: 1.0.0 -# -# Generated by: https://openapi-generator.tech -# Generator version: 7.11.0-SNAPSHOT +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT # require "../spec_helper" @@ -14,58 +12,18 @@ require "../spec_helper" # Automatically generated by openapi-generator (https://openapi-generator.tech) # Please update as you see appropriate Spectator.describe Petstore::User do - describe "test an instance of User" do - it "should create an instance of User" do - # instance = Petstore::User.new - # expect(instance).to be_instance_of(Petstore::User) - end - end - - describe "test attribute 'id'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'username'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'first_name'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'last_name'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'email'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'password'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html - end - end - - describe "test attribute 'phone'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Petstore::User.from_json("{}") + expect(instance).to be_a(Petstore::User) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) end end - describe "test attribute 'user_status'" do - it "should work" do - # assertion here. ref: https://crystal-lang.org/reference/guides/testing.html + describe "#to_h" do + it "returns a Hash representation" do + instance = Petstore::User.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) end end end diff --git a/samples/client/petstore/crystal/spec/petstore_spec.cr b/samples/client/petstore/crystal/spec/petstore_spec.cr deleted file mode 100644 index 59d84e903198..000000000000 --- a/samples/client/petstore/crystal/spec/petstore_spec.cr +++ /dev/null @@ -1,19 +0,0 @@ -require "./spec_helper" - -Spectator.describe Petstore do - describe "#configure" do - it "works" do - Petstore.configure do |config| - config.username = "xxx" - end - - config = Petstore.configure - - expect(config).to eq Petstore::Configuration.default - expect(config.username).to eq "xxx" - - # Clean up - Petstore::Configuration.default.username = nil - end - end -end diff --git a/samples/client/petstore/crystal/spec/spec_helper.cr b/samples/client/petstore/crystal/spec/spec_helper.cr index 62f406a3a01a..4f9db1d993f5 100644 --- a/samples/client/petstore/crystal/spec/spec_helper.cr +++ b/samples/client/petstore/crystal/spec/spec_helper.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech diff --git a/samples/client/petstore/crystal/src/petstore.cr b/samples/client/petstore/crystal/src/petstore.cr index 45c488246d26..dc1f90e12952 100644 --- a/samples/client/petstore/crystal/src/petstore.cr +++ b/samples/client/petstore/crystal/src/petstore.cr @@ -1,45 +1,85 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech #Generator version: 7.24.0-SNAPSHOT # - -# Stdlib dependencies require "big" +require "big/json" require "json" require "log" require "time" +require "uri" require "yaml" -# External dependencies -require "any_hash" -require "crest" - -module Petstore - Log = ::Log.for("Petstore") # => Log for Petstore source - - VERSION = {{ `shards version #{__DIR__}`.chomp.stringify }} +require "./petstore/configuration" +require "./petstore/connection" +require "./petstore/response" +require "./petstore/api_error" +require "./petstore/client" +require "./petstore/serializable" +require "./petstore/validation" - # Return the default `Configuration` object. - def self.configure - Configuration.default - end +# Models +require "./petstore/models/additional_properties_class" +require "./petstore/models/all_of_with_single_ref" +require "./petstore/models/animal" +require "./petstore/models/api_response" +require "./petstore/models/array_of_array_of_number_only" +require "./petstore/models/array_of_number_only" +require "./petstore/models/array_test" +require "./petstore/models/capitalization" +require "./petstore/models/cat" +require "./petstore/models/category" +require "./petstore/models/parent_with_nullable" +require "./petstore/models/child_with_nullable" +require "./petstore/models/class_model" +require "./petstore/models/deprecated_object" +require "./petstore/models/dog" +require "./petstore/models/enum_arrays" +require "./petstore/models/enum_class" +require "./petstore/models/enum_test" +require "./petstore/models/fake_big_decimal_map200_response" +require "./petstore/models/file" +require "./petstore/models/file_schema_test_class" +require "./petstore/models/foo" +require "./petstore/models/foo_get_default_response" +require "./petstore/models/format_test" +require "./petstore/models/has_only_read_only" +require "./petstore/models/health_check_result" +require "./petstore/models/list" +require "./petstore/models/map_test" +require "./petstore/models/mixed_properties_and_additional_properties_class" +require "./petstore/models/model200_response" +require "./petstore/models/model_client" +require "./petstore/models/model_return" +require "./petstore/models/name" +require "./petstore/models/nullable_class" +require "./petstore/models/number_only" +require "./petstore/models/object_with_deprecated_fields" +require "./petstore/models/order" +require "./petstore/models/outer_composite" +require "./petstore/models/outer_enum" +require "./petstore/models/outer_enum_default_value" +require "./petstore/models/outer_enum_integer" +require "./petstore/models/outer_enum_integer_default_value" +require "./petstore/models/outer_object_with_enum_property" +require "./petstore/models/pet" +require "./petstore/models/read_only_first" +require "./petstore/models/single_ref_type" +require "./petstore/models/special_model_name" +require "./petstore/models/tag" +require "./petstore/models/test_inline_freeform_additional_properties_request" +require "./petstore/models/user" - # Customize default settings for the SDK using block. - # - # ``` - # Petstore.configure do |config| - # config.username = "xxx" - # config.password = "xxx" - # end - # ``` - def self.configure - yield Configuration.default - end -end +# APIs +require "./petstore/api/another_fake" +require "./petstore/api/fake" +require "./petstore/api/fake_classname_test" +require "./petstore/api/foo" +require "./petstore/api/pet" +require "./petstore/api/store" +require "./petstore/api/store/order" +require "./petstore/api/user" -require "./petstore/**" diff --git a/samples/client/petstore/crystal/src/petstore/api/another_fake.cr b/samples/client/petstore/crystal/src/petstore/api/another_fake.cr new file mode 100644 index 000000000000..8b0404119f4e --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/another_fake.cr @@ -0,0 +1,21 @@ +require "json" + +module Petstore + module Api + class AnotherFake + def initialize(@conn : Connection); end + + # To test special tags To test special tags and operation ID starting with number + def dummy(model_client : Petstore::ModelClient) : Response(Petstore::ModelClient) + @conn.request(Petstore::ModelClient, + method: :PATCH, + path: "/another-fake/dummy", + body: model_client, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/fake.cr b/samples/client/petstore/crystal/src/petstore/api/fake.cr new file mode 100644 index 000000000000..a66176acc56d --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/fake.cr @@ -0,0 +1,265 @@ +require "json" + +module Petstore + module Api + class Fake + def initialize(@conn : Connection); end + + # test referenced additionalProperties + def additional_properties_reference(request_body : Hash(String, JSON::Any)) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake/additionalProperties-reference", + body: request_body, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # for Java apache and Java native, test toUrlQueryString for maps with BegDecimal keys + def big_decimal_map() : Response(Petstore::FakeBigDecimalMap200Response) + @conn.request(Petstore::FakeBigDecimalMap200Response, + method: :GET, + path: "/fake/BigDecimalMap", + accept: %w[*/*], + raw: true, + auth: %w[]) + end + + # For this test, the body has to be a binary file. + def body_with_binary(body : ::File) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/fake/body-with-binary", + body: body, + accept: %w[], + content_type: %w[image/png], + auth: %w[]) + end + + # For this test, the body for this request must reference a schema named `File`. + def body_with_file_schema(file_schema_test_class : Petstore::FileSchemaTestClass) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/fake/body-with-file-schema", + body: file_schema_test_class, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # + def body_with_query_params(user : Petstore::User, *, query : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/fake/body-with-query-params", + body: user, + query: { "query" => query }, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # Fake endpoint to test group parameters (optional) Fake endpoint to test group parameters (optional) + def bulk_destroy(*, required_boolean_group : Bool? = nil, boolean_group : Bool? = nil, required_string_group : Int32? = nil, required_int64_group : Int64? = nil, string_group : Int32? = nil, int64_group : Int64? = nil) : Response(Nil) + @conn.request(Nil, + method: :DELETE, + path: "/fake", + header: { "required_boolean_group" => required_boolean_group.try &.to_s, "boolean_group" => boolean_group.try &.to_s }, + query: { "required_string_group" => required_string_group, "required_int64_group" => required_int64_group, "string_group" => string_group, "int64_group" => int64_group }, + accept: %w[], + auth: %w[bearer_test]) + end + + # To test \"client\" model To test \"client\" model + def bulk_partial_update(model_client : Petstore::ModelClient) : Response(Petstore::ModelClient) + @conn.request(Petstore::ModelClient, + method: :PATCH, + path: "/fake", + body: model_client, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[]) + end + + # Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 + def create(integer : Int32? = nil, int32 : Int32? = nil, int64 : Int64? = nil, number : Float64? = nil, float : Float32? = nil, double : Float64? = nil, string : String? = nil, pattern_without_delimiter : String? = nil, byte : String? = nil, binary : ::File? = nil, date : Time? = nil, date_time : Time? = nil, password : String? = nil, callback : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake", + form: Hash(String, Crest::ParamsValue){ "integer" => integer, "int32" => int32, "int64" => int64, "number" => number, "float" => float, "double" => double, "string" => string, "pattern_without_delimiter" => pattern_without_delimiter, "byte" => byte, "binary" => binary, "date" => date, "dateTime" => date_time, "password" => password, "callback" => callback }, + accept: %w[], + auth: %w[http_basic_test]) + end + + # Health check endpoint + def health_get() : Response(Petstore::HealthCheckResult) + @conn.request(Petstore::HealthCheckResult, + method: :GET, + path: "/fake/health", + accept: %w[application/json], + auth: %w[]) + end + + # test http signature authentication + def http_signature_test(pet : Petstore::Pet, *, header_1 : String? = nil, query_1 : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :GET, + path: "/fake/http-signature-test", + body: pet, + header: { "header_1" => header_1.try &.to_s }, + query: { "query_1" => query_1 }, + accept: %w[], + content_type: %w[application/json application/xml], + auth: %w[http_signature_test]) + end + + # test inline additionalProperties + def inline_additional_properties(request_body : Hash(String, String)) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake/inline-additionalProperties", + body: request_body, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # test inline free-form additionalProperties + def inline_freeform_additional_properties(test_inline_freeform_additional_properties_request : Petstore::TestInlineFreeformAdditionalPropertiesRequest) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake/inline-freeform-additionalProperties", + body: test_inline_freeform_additional_properties_request, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # test json serialization of form data + def json_form_data(param : String? = nil, param2 : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :GET, + path: "/fake/jsonFormData", + form: Hash(String, Crest::ParamsValue){ "param" => param, "param2" => param2 }, + accept: %w[], + auth: %w[]) + end + + # To test enum parameters To test enum parameters + def list(enum_form_string_array : Array(String)? = nil, enum_form_string : String? = nil, *, enum_header_string_array : Array(String)? = nil, enum_header_string : String? = nil, enum_query_string_array : Array(String)? = nil, enum_query_string : String? = nil, enum_query_integer : Int32? = nil, enum_query_double : Float64? = nil, enum_query_model_array : Array(Petstore::EnumClass)? = nil) : Response(Nil) + @conn.request(Nil, + method: :GET, + path: "/fake", + header: { "enum_header_string_array" => enum_header_string_array.try &.to_s, "enum_header_string" => enum_header_string.try &.to_s }, + query: { "enum_query_string_array" => enum_query_string_array, "enum_query_string" => enum_query_string, "enum_query_integer" => enum_query_integer, "enum_query_double" => enum_query_double, "enum_query_model_array" => enum_query_model_array }, + form: Hash(String, Crest::ParamsValue){ "enum_form_string_array" => enum_form_string_array, "enum_form_string" => enum_form_string }, + accept: %w[], + auth: %w[]) + end + + # test nullable parent property + def nullable(child_with_nullable : Petstore::ChildWithNullable) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake/nullable", + body: child_with_nullable, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # Test serialization of outer boolean types + def outer_boolean_serialize(body : Bool? = nil) : Response(Bool) + @conn.request(Bool, + method: :POST, + path: "/fake/outer/boolean", + body: body, + accept: %w[*/*], + content_type: %w[application/json], + raw: true, + auth: %w[]) + end + + # Test serialization of object with outer number type + def outer_composite_serialize(outer_composite : Petstore::OuterComposite? = nil) : Response(Petstore::OuterComposite) + @conn.request(Petstore::OuterComposite, + method: :POST, + path: "/fake/outer/composite", + body: outer_composite, + accept: %w[*/*], + content_type: %w[application/json], + raw: true, + auth: %w[]) + end + + # Test serialization of outer number types + def outer_number_serialize(body : Float64? = nil) : Response(Float64) + @conn.request(Float64, + method: :POST, + path: "/fake/outer/number", + body: body, + accept: %w[*/*], + content_type: %w[application/json], + raw: true, + auth: %w[]) + end + + # Test serialization of outer string types + def outer_string_serialize(body : String? = nil) : Response(String) + @conn.request(String, + method: :POST, + path: "/fake/outer/string", + body: body, + accept: %w[*/*], + content_type: %w[application/json], + raw: true, + auth: %w[]) + end + + # Test serialization of enum (int) properties with examples + def property_enum_integer_serialize(outer_object_with_enum_property : Petstore::OuterObjectWithEnumProperty) : Response(Petstore::OuterObjectWithEnumProperty) + @conn.request(Petstore::OuterObjectWithEnumProperty, + method: :POST, + path: "/fake/property/enum-int", + body: outer_object_with_enum_property, + accept: %w[*/*], + content_type: %w[application/json], + raw: true, + auth: %w[]) + end + + # test referenced string map + def string_map_reference(request_body : Hash(String, String)) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/fake/stringMap-reference", + body: request_body, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # To test the collection format in query parameters + def test_query_parameters(*, pipe : Array(String)? = nil, ioutil : Array(String)? = nil, http : Array(String)? = nil, url : Array(String)? = nil, context : Array(String)? = nil, language : Hash(String, String)? = nil, allow_empty : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/fake/test-query-parameters", + query: { "pipe" => pipe.try(&.map(&.to_s).join("|")), "ioutil" => ioutil.try(&.map(&.to_s).join(",")), "http" => http.try(&.map(&.to_s).join(" ")), "url" => url.try(&.map(&.to_s).join(",")), "context" => context, "language" => language, "allowEmpty" => allow_empty }, + accept: %w[], + auth: %w[]) + end + + # uploads an image (required) + def upload_image_with_required_file(pet_id : Int64, additional_metadata : String? = nil, required_file : ::File? = nil) : Response(Petstore::ApiResponse) + @conn.request(Petstore::ApiResponse, + method: :POST, + path: "/fake/{petId}/uploadImageWithRequiredFile".sub("{petId}", Petstore.enc(pet_id)), + form: Hash(String, Crest::ParamsValue){ "additionalMetadata" => additional_metadata, "requiredFile" => required_file }, + accept: %w[application/json], + auth: %w[petstore_auth]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/fake_api.cr b/samples/client/petstore/crystal/src/petstore/api/fake_api.cr deleted file mode 100644 index 54a83885d6fb..000000000000 --- a/samples/client/petstore/crystal/src/petstore/api/fake_api.cr +++ /dev/null @@ -1,108 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -require "uri" - -module Petstore - class FakeApi - property api_client : ApiClient - - def initialize(api_client = ApiClient.default) - @api_client = api_client - end - # parameter name mapping test - # @param underscore_type [Int64] _type - # @param _type [String] type - # @param type_with_underscore [String] type_ - # @param type_with_dash [String] type- - # @param http_debug_option [String] http debug option (to test parameter naming option) - # @return [nil] - def get_parameter_name_mapping(underscore_type : Int64, _type : String, type_with_underscore : String, type_with_dash : String, http_debug_option : String) - get_parameter_name_mapping_with_http_info(underscore_type, _type, type_with_underscore, type_with_dash, http_debug_option) - nil - end - - # parameter name mapping test - # @param underscore_type [Int64] _type - # @param _type [String] type - # @param type_with_underscore [String] type_ - # @param type_with_dash [String] type- - # @param http_debug_option [String] http debug option (to test parameter naming option) - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def get_parameter_name_mapping_with_http_info(underscore_type : Int64, _type : String, type_with_underscore : String, type_with_dash : String, http_debug_option : String) - if @api_client.config.debugging - Log.debug {"Calling API: FakeApi.get_parameter_name_mapping ..."} - end - # verify the required parameter "underscore_type" is set - if @api_client.config.client_side_validation && underscore_type.nil? - raise ArgumentError.new("Missing the required parameter 'underscore_type' when calling FakeApi.get_parameter_name_mapping") - end - # verify the required parameter "_type" is set - if @api_client.config.client_side_validation && _type.nil? - raise ArgumentError.new("Missing the required parameter '_type' when calling FakeApi.get_parameter_name_mapping") - end - # verify the required parameter "type_with_underscore" is set - if @api_client.config.client_side_validation && type_with_underscore.nil? - raise ArgumentError.new("Missing the required parameter 'type_with_underscore' when calling FakeApi.get_parameter_name_mapping") - end - # verify the required parameter "type_with_dash" is set - if @api_client.config.client_side_validation && type_with_dash.nil? - raise ArgumentError.new("Missing the required parameter 'type_with_dash' when calling FakeApi.get_parameter_name_mapping") - end - # verify the required parameter "http_debug_option" is set - if @api_client.config.client_side_validation && http_debug_option.nil? - raise ArgumentError.new("Missing the required parameter 'http_debug_option' when calling FakeApi.get_parameter_name_mapping") - end - # resource path - local_var_path = "/fake/parameter-name-mapping" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - query_params["type"] = _type.to_s unless _type.nil? - query_params["http_debug_option"] = http_debug_option.to_s unless http_debug_option.nil? - - # header parameters - header_params = Hash(String, String).new - header_params["_type"] = underscore_type - header_params["type_"] = type_with_underscore - header_params["type-"] = type_with_dash - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"FakeApi.get_parameter_name_mapping", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: FakeApi#get_parameter_name_mapping\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - end -end diff --git a/samples/client/petstore/crystal/src/petstore/api/fake_classname_test.cr b/samples/client/petstore/crystal/src/petstore/api/fake_classname_test.cr new file mode 100644 index 000000000000..3f83d8216f3d --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/fake_classname_test.cr @@ -0,0 +1,21 @@ +require "json" + +module Petstore + module Api + class FakeClassnameTest + def initialize(@conn : Connection); end + + # To test class name in snake case To test class name in snake case + def bulk_partial_update(model_client : Petstore::ModelClient) : Response(Petstore::ModelClient) + @conn.request(Petstore::ModelClient, + method: :PATCH, + path: "/fake_classname_test", + body: model_client, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api_key_query]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/foo.cr b/samples/client/petstore/crystal/src/petstore/api/foo.cr new file mode 100644 index 000000000000..265777e7e92b --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/foo.cr @@ -0,0 +1,19 @@ +require "json" + +module Petstore + module Api + class Foo + def initialize(@conn : Connection); end + + # + def get() : Response(Petstore::FooGetDefaultResponse) + @conn.request(Petstore::FooGetDefaultResponse, + method: :GET, + path: "/foo", + accept: %w[application/json], + auth: %w[]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/pet.cr b/samples/client/petstore/crystal/src/petstore/api/pet.cr new file mode 100644 index 000000000000..5c1d29bcd830 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/pet.cr @@ -0,0 +1,92 @@ +require "json" + +module Petstore + module Api + class Pet + def initialize(@conn : Connection); end + + # Update an existing pet + def bulk_update(pet : Petstore::Pet) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/pet", + body: pet, + accept: %w[], + content_type: %w[application/json application/xml], + auth: %w[petstore_auth]) + end + + # Add a new pet to the store + def create(pet : Petstore::Pet) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/pet", + body: pet, + accept: %w[], + content_type: %w[application/json application/xml], + auth: %w[petstore_auth]) + end + + # Updates a pet in the store with form data + def create_post(pet_id : Int64, name : String? = nil, status : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/pet/{petId}".sub("{petId}", Petstore.enc(pet_id)), + form: Hash(String, Crest::ParamsValue){ "name" => name, "status" => status }, + accept: %w[], + auth: %w[petstore_auth]) + end + + # Deletes a pet + def delete(pet_id : Int64, *, api_key : String? = nil) : Response(Nil) + @conn.request(Nil, + method: :DELETE, + path: "/pet/{petId}".sub("{petId}", Petstore.enc(pet_id)), + header: { "api_key" => api_key.try &.to_s }, + accept: %w[], + auth: %w[petstore_auth]) + end + + # Finds Pets by status Multiple status values can be provided with comma separated strings + def find_by_status(*, status : Array(String)? = nil) : Response(Array(Petstore::Pet)) + @conn.request(Array(Petstore::Pet), + method: :GET, + path: "/pet/findByStatus", + query: { "status" => status.try(&.map(&.to_s).join(",")) }, + accept: %w[application/xml application/json], + auth: %w[petstore_auth]) + end + + # Finds Pets by tags Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + @[Deprecated("This operation is marked deprecated in the OpenAPI spec.")] + def find_by_tags(*, tags : Set(String)? = nil) : Response(Set(Petstore::Pet)) + @conn.request(Set(Petstore::Pet), + method: :GET, + path: "/pet/findByTags", + query: { "tags" => tags.try(&.map(&.to_s).join(",")) }, + accept: %w[application/xml application/json], + auth: %w[petstore_auth]) + end + + # Find pet by ID Returns a single pet + def get(pet_id : Int64) : Response(Petstore::Pet) + @conn.request(Petstore::Pet, + method: :GET, + path: "/pet/{petId}".sub("{petId}", Petstore.enc(pet_id)), + accept: %w[application/xml application/json], + auth: %w[api_key]) + end + + # uploads an image + def upload_image(pet_id : Int64, additional_metadata : String? = nil, file : ::File? = nil) : Response(Petstore::ApiResponse) + @conn.request(Petstore::ApiResponse, + method: :POST, + path: "/pet/{petId}/uploadImage".sub("{petId}", Petstore.enc(pet_id)), + form: Hash(String, Crest::ParamsValue){ "additionalMetadata" => additional_metadata, "file" => file }, + accept: %w[application/json], + auth: %w[petstore_auth]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr b/samples/client/petstore/crystal/src/petstore/api/pet_api.cr deleted file mode 100644 index 1987fdfa1b52..000000000000 --- a/samples/client/petstore/crystal/src/petstore/api/pet_api.cr +++ /dev/null @@ -1,535 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -require "uri" - -module Petstore - class PetApi - property api_client : ApiClient - - def initialize(api_client = ApiClient.default) - @api_client = api_client - end - # Add a new pet to the store - # - # @param pet [Pet] Pet object that needs to be added to the store - # @return [Pet] - def add_pet(pet : Pet) - data, _status_code, _headers = add_pet_with_http_info(pet) - data - end - - # Add a new pet to the store - # - # @param pet [Pet] Pet object that needs to be added to the store - # @return [Array<(Pet, Integer, Hash)>] Pet data, response status code and response headers - def add_pet_with_http_info(pet : Pet) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.add_pet ..."} - end - # verify the required parameter "pet" is set - if @api_client.config.client_side_validation && pet.nil? - raise ArgumentError.new("Missing the required parameter 'pet' when calling PetApi.add_pet") - end - # resource path - local_var_path = "/pet" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json", "application/xml"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = pet.to_json - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"PetApi.add_pet", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#add_pet\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Pet.from_json(data), status_code, headers - end - - # Deletes a pet - # - # @param pet_id [Int64] Pet id to delete - # @return [nil] - def delete_pet(pet_id : Int64, api_key : String? = nil) - delete_pet_with_http_info(pet_id, api_key) - nil - end - - # Deletes a pet - # - # @param pet_id [Int64] Pet id to delete - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def delete_pet_with_http_info(pet_id : Int64, api_key : String? = nil) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.delete_pet ..."} - end - # verify the required parameter "pet_id" is set - if @api_client.config.client_side_validation && pet_id.nil? - raise ArgumentError.new("Missing the required parameter 'pet_id' when calling PetApi.delete_pet") - end - # resource path - local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode_path(pet_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - header_params["api_key"] = api_key - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :DELETE, - path: local_var_path, - operation: :"PetApi.delete_pet", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#delete_pet\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Finds Pets by status - # Multiple status values can be provided with comma separated strings - # @param status [Array(String)] Status values that need to be considered for filter - # @return [Array(Pet)] - def find_pets_by_status(status : Array(String)) - data, _status_code, _headers = find_pets_by_status_with_http_info(status) - data - end - - # Finds Pets by status - # Multiple status values can be provided with comma separated strings - # @param status [Array(String)] Status values that need to be considered for filter - # @return [Array<(Array(Pet), Integer, Hash)>] Array(Pet) data, response status code and response headers - def find_pets_by_status_with_http_info(status : Array(String)) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.find_pets_by_status ..."} - end - # verify the required parameter "status" is set - if @api_client.config.client_side_validation && status.nil? - raise ArgumentError.new("Missing the required parameter 'status' when calling PetApi.find_pets_by_status") - end - # resource path - local_var_path = "/pet/findByStatus" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - query_params["status"] = @api_client.build_collection_param(status, :csv) unless status.nil? - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"PetApi.find_pets_by_status", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#find_pets_by_status\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Array(Pet).from_json(data), status_code, headers - end - - # Finds Pets by tags - # Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - # @param tags [Array(String)] Tags to filter by - # @return [Array(Pet)] - def find_pets_by_tags(tags : Array(String)) - data, _status_code, _headers = find_pets_by_tags_with_http_info(tags) - data - end - - # Finds Pets by tags - # Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - # @param tags [Array(String)] Tags to filter by - # @return [Array<(Array(Pet), Integer, Hash)>] Array(Pet) data, response status code and response headers - def find_pets_by_tags_with_http_info(tags : Array(String)) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.find_pets_by_tags ..."} - end - # verify the required parameter "tags" is set - if @api_client.config.client_side_validation && tags.nil? - raise ArgumentError.new("Missing the required parameter 'tags' when calling PetApi.find_pets_by_tags") - end - # resource path - local_var_path = "/pet/findByTags" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - query_params["tags"] = @api_client.build_collection_param(tags, :csv) unless tags.nil? - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"PetApi.find_pets_by_tags", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#find_pets_by_tags\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Array(Pet).from_json(data), status_code, headers - end - - # Find pet by ID - # Returns a single pet - # @param pet_id [Int64] ID of pet to return - # @return [Pet] - def get_pet_by_id(pet_id : Int64) - data, _status_code, _headers = get_pet_by_id_with_http_info(pet_id) - data - end - - # Find pet by ID - # Returns a single pet - # @param pet_id [Int64] ID of pet to return - # @return [Array<(Pet, Integer, Hash)>] Pet data, response status code and response headers - def get_pet_by_id_with_http_info(pet_id : Int64) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.get_pet_by_id ..."} - end - # verify the required parameter "pet_id" is set - if @api_client.config.client_side_validation && pet_id.nil? - raise ArgumentError.new("Missing the required parameter 'pet_id' when calling PetApi.get_pet_by_id") - end - # resource path - local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode_path(pet_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"PetApi.get_pet_by_id", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#get_pet_by_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Pet.from_json(data), status_code, headers - end - - # Update an existing pet - # - # @param pet [Pet] Pet object that needs to be added to the store - # @return [Pet] - def update_pet(pet : Pet) - data, _status_code, _headers = update_pet_with_http_info(pet) - data - end - - # Update an existing pet - # - # @param pet [Pet] Pet object that needs to be added to the store - # @return [Array<(Pet, Integer, Hash)>] Pet data, response status code and response headers - def update_pet_with_http_info(pet : Pet) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.update_pet ..."} - end - # verify the required parameter "pet" is set - if @api_client.config.client_side_validation && pet.nil? - raise ArgumentError.new("Missing the required parameter 'pet' when calling PetApi.update_pet") - end - # resource path - local_var_path = "/pet" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json", "application/xml"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = pet.to_json - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :PUT, - path: local_var_path, - operation: :"PetApi.update_pet", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#update_pet\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Pet.from_json(data), status_code, headers - end - - # Updates a pet in the store with form data - # - # @param pet_id [Int64] ID of pet that needs to be updated - # @return [nil] - def update_pet_with_form(pet_id : Int64, name : String? = nil, status : String? = nil) - update_pet_with_form_with_http_info(pet_id, name, status) - nil - end - - # Updates a pet in the store with form data - # - # @param pet_id [Int64] ID of pet that needs to be updated - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def update_pet_with_form_with_http_info(pet_id : Int64, name : String? = nil, status : String? = nil) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.update_pet_with_form ..."} - end - # verify the required parameter "pet_id" is set - if @api_client.config.client_side_validation && pet_id.nil? - raise ArgumentError.new("Missing the required parameter 'pet_id' when calling PetApi.update_pet_with_form") - end - # resource path - local_var_path = "/pet/{petId}".sub("{" + "petId" + "}", URI.encode_path(pet_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/x-www-form-urlencoded"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - form_params[:"name"] = name unless name.nil? - form_params[:"status"] = status unless status.nil? - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"PetApi.update_pet_with_form", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#update_pet_with_form\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # uploads an image - # - # @param pet_id [Int64] ID of pet to update - # @return [ApiResponse] - def upload_file(pet_id : Int64, additional_metadata : String? = nil, file : ::File? = nil) - data, _status_code, _headers = upload_file_with_http_info(pet_id, additional_metadata, file) - data - end - - # uploads an image - # - # @param pet_id [Int64] ID of pet to update - # @return [Array<(ApiResponse, Integer, Hash)>] ApiResponse data, response status code and response headers - def upload_file_with_http_info(pet_id : Int64, additional_metadata : String? = nil, file : ::File? = nil) - if @api_client.config.debugging - Log.debug {"Calling API: PetApi.upload_file ..."} - end - # verify the required parameter "pet_id" is set - if @api_client.config.client_side_validation && pet_id.nil? - raise ArgumentError.new("Missing the required parameter 'pet_id' when calling PetApi.upload_file") - end - # resource path - local_var_path = "/pet/{petId}/uploadImage".sub("{" + "petId" + "}", URI.encode_path(pet_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/json"]) - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["multipart/form-data"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - form_params[:"additionalMetadata"] = additional_metadata unless additional_metadata.nil? - form_params[:"file"] = file unless file.nil? - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["petstore_auth"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"PetApi.upload_file", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: PetApi#upload_file\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return ApiResponse.from_json(data), status_code, headers - end - end -end diff --git a/samples/client/petstore/crystal/src/petstore/api/store.cr b/samples/client/petstore/crystal/src/petstore/api/store.cr new file mode 100644 index 000000000000..1623dd710cb3 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/store.cr @@ -0,0 +1,19 @@ +require "json" + +module Petstore + module Api + class Store + def initialize(@conn : Connection); end + + # Returns pet inventories by status Returns a map of status codes to quantities + def inventory() : Response(Hash(String, Int32)) + @conn.request(Hash(String, Int32), + method: :GET, + path: "/store/inventory", + accept: %w[application/json], + auth: %w[api_key]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/store/order.cr b/samples/client/petstore/crystal/src/petstore/api/store/order.cr new file mode 100644 index 000000000000..35052e4e022c --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/store/order.cr @@ -0,0 +1,39 @@ +require "json" + +module Petstore + module Api + class Store::Order + def initialize(@conn : Connection); end + + # Place an order for a pet + def create(order : Petstore::Order) : Response(Petstore::Order) + @conn.request(Petstore::Order, + method: :POST, + path: "/store/order", + body: order, + accept: %w[application/xml application/json], + content_type: %w[application/json], + auth: %w[]) + end + + # Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + def delete(order_id : String) : Response(Nil) + @conn.request(Nil, + method: :DELETE, + path: "/store/order/{order_id}".sub("{order_id}", Petstore.enc(order_id)), + accept: %w[], + auth: %w[]) + end + + # Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions + def get(order_id : Int64) : Response(Petstore::Order) + @conn.request(Petstore::Order, + method: :GET, + path: "/store/order/{order_id}".sub("{order_id}", Petstore.enc(order_id)), + accept: %w[application/xml application/json], + auth: %w[]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/store_api.cr b/samples/client/petstore/crystal/src/petstore/api/store_api.cr deleted file mode 100644 index 7bae60a6ca56..000000000000 --- a/samples/client/petstore/crystal/src/petstore/api/store_api.cr +++ /dev/null @@ -1,274 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -require "uri" - -module Petstore - class StoreApi - property api_client : ApiClient - - def initialize(api_client = ApiClient.default) - @api_client = api_client - end - # Delete purchase order by ID - # For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - # @param order_id [String] ID of the order that needs to be deleted - # @return [nil] - def delete_order(order_id : String) - delete_order_with_http_info(order_id) - nil - end - - # Delete purchase order by ID - # For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors - # @param order_id [String] ID of the order that needs to be deleted - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def delete_order_with_http_info(order_id : String) - if @api_client.config.debugging - Log.debug {"Calling API: StoreApi.delete_order ..."} - end - # verify the required parameter "order_id" is set - if @api_client.config.client_side_validation && order_id.nil? - raise ArgumentError.new("Missing the required parameter 'order_id' when calling StoreApi.delete_order") - end - # resource path - local_var_path = "/store/order/{orderId}".sub("{" + "orderId" + "}", URI.encode_path(order_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :DELETE, - path: local_var_path, - operation: :"StoreApi.delete_order", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: StoreApi#delete_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Returns pet inventories by status - # Returns a map of status codes to quantities - # @return [Hash(String, Int32)] - def get_inventory() - data, _status_code, _headers = get_inventory_with_http_info() - data - end - - # Returns pet inventories by status - # Returns a map of status codes to quantities - # @return [Array<(Hash(String, Int32), Integer, Hash)>] Hash(String, Int32) data, response status code and response headers - def get_inventory_with_http_info() - if @api_client.config.debugging - Log.debug {"Calling API: StoreApi.get_inventory ..."} - end - # resource path - local_var_path = "/store/inventory" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"StoreApi.get_inventory", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: StoreApi#get_inventory\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Hash(String, Int32).from_json(data), status_code, headers - end - - # Find purchase order by ID - # For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions - # @param order_id [Int64] ID of pet that needs to be fetched - # @return [Order] - def get_order_by_id(order_id : Int64) - data, _status_code, _headers = get_order_by_id_with_http_info(order_id) - data - end - - # Find purchase order by ID - # For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions - # @param order_id [Int64] ID of pet that needs to be fetched - # @return [Array<(Order, Integer, Hash)>] Order data, response status code and response headers - def get_order_by_id_with_http_info(order_id : Int64) - if @api_client.config.debugging - Log.debug {"Calling API: StoreApi.get_order_by_id ..."} - end - # verify the required parameter "order_id" is set - if @api_client.config.client_side_validation && order_id.nil? - raise ArgumentError.new("Missing the required parameter 'order_id' when calling StoreApi.get_order_by_id") - end - if @api_client.config.client_side_validation && order_id > 5 - raise ArgumentError.new("invalid value for \"order_id\" when calling StoreApi.get_order_by_id, must be smaller than or equal to 5.") - end - - if @api_client.config.client_side_validation && order_id < 1 - raise ArgumentError.new("invalid value for \"order_id\" when calling StoreApi.get_order_by_id, must be greater than or equal to 1.") - end - - # resource path - local_var_path = "/store/order/{orderId}".sub("{" + "orderId" + "}", URI.encode_path(order_id.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"StoreApi.get_order_by_id", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: StoreApi#get_order_by_id\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Order.from_json(data), status_code, headers - end - - # Place an order for a pet - # - # @param order [Order] order placed for purchasing the pet - # @return [Order] - def place_order(order : Order) - data, _status_code, _headers = place_order_with_http_info(order) - data - end - - # Place an order for a pet - # - # @param order [Order] order placed for purchasing the pet - # @return [Array<(Order, Integer, Hash)>] Order data, response status code and response headers - def place_order_with_http_info(order : Order) - if @api_client.config.debugging - Log.debug {"Calling API: StoreApi.place_order ..."} - end - # verify the required parameter "order" is set - if @api_client.config.client_side_validation && order.nil? - raise ArgumentError.new("Missing the required parameter 'order' when calling StoreApi.place_order") - end - # resource path - local_var_path = "/store/order" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = order.to_json - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"StoreApi.place_order", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: StoreApi#place_order\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return Order.from_json(data), status_code, headers - end - end -end diff --git a/samples/client/petstore/crystal/src/petstore/api/user.cr b/samples/client/petstore/crystal/src/petstore/api/user.cr new file mode 100644 index 000000000000..1b5eb7e4bcb3 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/api/user.cr @@ -0,0 +1,91 @@ +require "json" + +module Petstore + module Api + class User + def initialize(@conn : Connection); end + + # Create user This can only be done by the logged in user. + def create(user : Petstore::User) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/user", + body: user, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # Creates list of users with given input array + def create_with_array(user : Array(Petstore::User)) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/user/createWithArray", + body: user, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # Creates list of users with given input array + def create_with_list(user : Array(Petstore::User)) : Response(Nil) + @conn.request(Nil, + method: :POST, + path: "/user/createWithList", + body: user, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + + # Delete user This can only be done by the logged in user. + def delete(username : String) : Response(Nil) + @conn.request(Nil, + method: :DELETE, + path: "/user/{username}".sub("{username}", Petstore.enc(username)), + accept: %w[], + auth: %w[]) + end + + # Get user by user name + def get(username : String) : Response(Petstore::User) + @conn.request(Petstore::User, + method: :GET, + path: "/user/{username}".sub("{username}", Petstore.enc(username)), + accept: %w[application/xml application/json], + auth: %w[]) + end + + # Logs user into the system + def login(*, username : String? = nil, password : String? = nil) : Response(String) + @conn.request(String, + method: :GET, + path: "/user/login", + query: { "username" => username, "password" => password }, + accept: %w[application/xml application/json], + auth: %w[]) + end + + # Logs out current logged in user session + def logout() : Response(Nil) + @conn.request(Nil, + method: :GET, + path: "/user/logout", + accept: %w[], + auth: %w[]) + end + + # Updated user This can only be done by the logged in user. + def update(username : String, user : Petstore::User) : Response(Nil) + @conn.request(Nil, + method: :PUT, + path: "/user/{username}".sub("{username}", Petstore.enc(username)), + body: user, + accept: %w[], + content_type: %w[application/json], + auth: %w[]) + end + end + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/api/user_api.cr b/samples/client/petstore/crystal/src/petstore/api/user_api.cr deleted file mode 100644 index a7c7e0031be0..000000000000 --- a/samples/client/petstore/crystal/src/petstore/api/user_api.cr +++ /dev/null @@ -1,533 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -require "uri" - -module Petstore - class UserApi - property api_client : ApiClient - - def initialize(api_client = ApiClient.default) - @api_client = api_client - end - # Create user - # This can only be done by the logged in user. - # @param user [User] Created user object - # @return [nil] - def create_user(user : User) - create_user_with_http_info(user) - nil - end - - # Create user - # This can only be done by the logged in user. - # @param user [User] Created user object - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def create_user_with_http_info(user : User) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.create_user ..."} - end - # verify the required parameter "user" is set - if @api_client.config.client_side_validation && user.nil? - raise ArgumentError.new("Missing the required parameter 'user' when calling UserApi.create_user") - end - # resource path - local_var_path = "/user" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = user.to_json - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"UserApi.create_user", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#create_user\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Creates list of users with given input array - # - # @param user [Array(User)] List of user object - # @return [nil] - def create_users_with_array_input(user : Array(User)) - create_users_with_array_input_with_http_info(user) - nil - end - - # Creates list of users with given input array - # - # @param user [Array(User)] List of user object - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def create_users_with_array_input_with_http_info(user : Array(User)) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.create_users_with_array_input ..."} - end - # verify the required parameter "user" is set - if @api_client.config.client_side_validation && user.nil? - raise ArgumentError.new("Missing the required parameter 'user' when calling UserApi.create_users_with_array_input") - end - # resource path - local_var_path = "/user/createWithArray" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = user.to_json - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"UserApi.create_users_with_array_input", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#create_users_with_array_input\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Creates list of users with given input array - # - # @param user [Array(User)] List of user object - # @return [nil] - def create_users_with_list_input(user : Array(User)) - create_users_with_list_input_with_http_info(user) - nil - end - - # Creates list of users with given input array - # - # @param user [Array(User)] List of user object - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def create_users_with_list_input_with_http_info(user : Array(User)) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.create_users_with_list_input ..."} - end - # verify the required parameter "user" is set - if @api_client.config.client_side_validation && user.nil? - raise ArgumentError.new("Missing the required parameter 'user' when calling UserApi.create_users_with_list_input") - end - # resource path - local_var_path = "/user/createWithList" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = user.to_json - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :POST, - path: local_var_path, - operation: :"UserApi.create_users_with_list_input", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#create_users_with_list_input\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Delete user - # This can only be done by the logged in user. - # @param username [String] The name that needs to be deleted - # @return [nil] - def delete_user(username : String) - delete_user_with_http_info(username) - nil - end - - # Delete user - # This can only be done by the logged in user. - # @param username [String] The name that needs to be deleted - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def delete_user_with_http_info(username : String) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.delete_user ..."} - end - # verify the required parameter "username" is set - if @api_client.config.client_side_validation && username.nil? - raise ArgumentError.new("Missing the required parameter 'username' when calling UserApi.delete_user") - end - # resource path - local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode_path(username.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :DELETE, - path: local_var_path, - operation: :"UserApi.delete_user", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#delete_user\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Get user by user name - # - # @param username [String] The name that needs to be fetched. Use user1 for testing. - # @return [User] - def get_user_by_name(username : String) - data, _status_code, _headers = get_user_by_name_with_http_info(username) - data - end - - # Get user by user name - # - # @param username [String] The name that needs to be fetched. Use user1 for testing. - # @return [Array<(User, Integer, Hash)>] User data, response status code and response headers - def get_user_by_name_with_http_info(username : String) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.get_user_by_name ..."} - end - # verify the required parameter "username" is set - if @api_client.config.client_side_validation && username.nil? - raise ArgumentError.new("Missing the required parameter 'username' when calling UserApi.get_user_by_name") - end - # resource path - local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode_path(username.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"UserApi.get_user_by_name", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#get_user_by_name\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return User.from_json(data), status_code, headers - end - - # Logs user into the system - # - # @param username [String] The user name for login - # @param password [String] The password for login in clear text - # @return [String] - def login_user(username : String, password : String) - data, _status_code, _headers = login_user_with_http_info(username, password) - data - end - - # Logs user into the system - # - # @param username [String] The user name for login - # @param password [String] The password for login in clear text - # @return [Array<(String, Integer, Hash)>] String data, response status code and response headers - def login_user_with_http_info(username : String, password : String) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.login_user ..."} - end - # verify the required parameter "username" is set - if @api_client.config.client_side_validation && username.nil? - raise ArgumentError.new("Missing the required parameter 'username' when calling UserApi.login_user") - end - pattern = Regexp.new(/^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$/) - if @api_client.config.client_side_validation && username !~ pattern - raise ArgumentError.new("invalid value for \"username\" when calling UserApi.login_user, must conform to the pattern #{pattern}.") - end - - # verify the required parameter "password" is set - if @api_client.config.client_side_validation && password.nil? - raise ArgumentError.new("Missing the required parameter 'password' when calling UserApi.login_user") - end - # resource path - local_var_path = "/user/login" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - query_params["username"] = username.to_s unless username.nil? - query_params["password"] = password.to_s unless password.nil? - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Accept" (if needed) - header_params["Accept"] = @api_client.select_header_accept(["application/xml", "application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = [] of String - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"UserApi.login_user", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#login_user\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return String.from_json(data), status_code, headers - end - - # Logs out current logged in user session - # - # @return [nil] - def logout_user() - logout_user_with_http_info() - nil - end - - # Logs out current logged in user session - # - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def logout_user_with_http_info() - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.logout_user ..."} - end - # resource path - local_var_path = "/user/logout" - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = nil - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :GET, - path: local_var_path, - operation: :"UserApi.logout_user", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#logout_user\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - - # Updated user - # This can only be done by the logged in user. - # @param username [String] name that need to be deleted - # @param user [User] Updated user object - # @return [nil] - def update_user(username : String, user : User) - update_user_with_http_info(username, user) - nil - end - - # Updated user - # This can only be done by the logged in user. - # @param username [String] name that need to be deleted - # @param user [User] Updated user object - # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers - def update_user_with_http_info(username : String, user : User) - if @api_client.config.debugging - Log.debug {"Calling API: UserApi.update_user ..."} - end - # verify the required parameter "username" is set - if @api_client.config.client_side_validation && username.nil? - raise ArgumentError.new("Missing the required parameter 'username' when calling UserApi.update_user") - end - # verify the required parameter "user" is set - if @api_client.config.client_side_validation && user.nil? - raise ArgumentError.new("Missing the required parameter 'user' when calling UserApi.update_user") - end - # resource path - local_var_path = "/user/{username}".sub("{" + "username" + "}", URI.encode_path(username.to_s).gsub("%2F", "/")) - - # cookie parameters - cookie_params = Hash(String, String).new - - # query parameters - query_params = Hash(String, String | Array(String)).new - - # header parameters - header_params = Hash(String, String).new - # HTTP header "Content-Type" - header_params["Content-Type"] = @api_client.select_header_content_type(["application/json"]) - - # form parameters - form_params = Hash(Symbol, (String | ::File)).new - - # http body (model) - post_body = user.to_json - - # auth_names - auth_names = ["api_key"] - - data, status_code, headers = @api_client.call_api( - http_method: :PUT, - path: local_var_path, - operation: :"UserApi.update_user", - post_body: post_body, - auth_names: auth_names, - header_params: header_params, - query_params: query_params, - cookie_params: cookie_params, - form_params: form_params - ) - - if @api_client.config.debugging - Log.debug {"API called: UserApi#update_user\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"} - end - - return nil, status_code, headers - end - end -end diff --git a/samples/client/petstore/crystal/src/petstore/api_client.cr b/samples/client/petstore/crystal/src/petstore/api_client.cr deleted file mode 100644 index 5143482ada80..000000000000 --- a/samples/client/petstore/crystal/src/petstore/api_client.cr +++ /dev/null @@ -1,183 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -require "json" -require "time" - -module Petstore - class ApiClient - # The Configuration object holding settings to be used in the API client. - property config : Configuration - - # Defines the headers to be used in HTTP requests of all API calls by default. - # - # @return [Hash] - property default_headers : Hash(String, String) - - # Initializes the ApiClient - # @option config [Configuration] Configuration for initializing the object, default to Configuration.default - def initialize(@config = Configuration.default) - @user_agent = "OpenAPI-Generator/#{VERSION}/crystal" - @default_headers = { - "User-Agent" => @user_agent - } - end - - def self.default - @@default ||= ApiClient.new - end - - # Check if the given MIME is a JSON MIME. - # JSON MIME examples: - # application/json - # application/json; charset=UTF8 - # APPLICATION/JSON - # */* - # @param [String] mime MIME - # @return [Boolean] True if the MIME is application/json - def json_mime?(mime) - (mime == "*/*") || !(mime =~ /Application\/.*json(?!p)(;.*)?/i).nil? - end - - - def build_request_url(path : String, operation : Symbol) - # Add leading and trailing slashes to path - path = "/#{path}".gsub(/\/+/, "/") - @config.base_url(operation) + path - end - - # Update header and query params based on authentication settings. - # - # @param [Hash] header_params Header parameters - # @param [Hash] query_params Query parameters - # @param [String] auth_names Authentication scheme name - def update_params_for_auth!(header_params, query_params, cookie_params, auth_names) - auth_names.each do |auth_name| - auth_setting = @config.auth_settings[auth_name] - next unless auth_setting - case auth_setting[:in] - when "header" then header_params[auth_setting[:key]] = auth_setting[:value] - when "query" then query_params[auth_setting[:key]] = auth_setting[:value] - when "cookie" then cookie_params[auth_setting[:key]] = auth_setting[:value] - else raise ArgumentError.new("Authentication token must be in `cookie`, `query` or `header`") - end - end - end - - # Sets user agent in HTTP header - # - # @param [String] user_agent User agent (e.g. openapi-generator/ruby/1.0.0) - def user_agent=(user_agent) - @user_agent = user_agent - @default_headers["User-Agent"] = @user_agent - end - - # Return Accept header based on an array of accepts provided. - # @param [Array] accepts array for Accept - # @return [String] the Accept header (e.g. application/json) - def select_header_accept(accepts) : String - #return nil if accepts.nil? || accepts.empty? - # use JSON when present, otherwise use all of the provided - json_accept = accepts.find { |s| json_mime?(s) } - if json_accept.nil? - accepts.join(",") - else - json_accept - end - end - - # Return Content-Type header based on an array of content types provided. - # @param [Array] content_types array for Content-Type - # @return [String] the Content-Type header (e.g. application/json) - def select_header_content_type(content_types) - # use application/json by default - return "application/json" if content_types.nil? || content_types.empty? - # use JSON when present, otherwise use the first one - json_content_type = content_types.find { |s| json_mime?(s) } - json_content_type || content_types.first - end - - # Build parameter value according to the given collection format. - # @param [String] collection_format one of :csv, :ssv, :tsv, :pipes and :multi - def build_collection_param(param, collection_format) - case collection_format - when :csv - param.join(",") - when :ssv - param.join(" ") - when :tsv - param.join("\t") - when :pipes - param.join("|") - when :multi - param - else - raise "unknown collection format: #{collection_format.inspect}" - end - end - - # Call an API with given options. - # - # @return [Array<(Object, Integer, Hash)>] an array of 3 elements: - # the data deserialized from response body (could be nil), response status code and response headers. - def call_api(http_method : Symbol, path : String, operation : Symbol, post_body : String?, auth_names = [] of String, header_params = {} of String => String, query_params = {} of String => String, cookie_params = {} of String => String, form_params = {} of Symbol => (String | ::File)) - #ssl_options = { - # :ca_file => @config.ssl_ca_file, - # :verify => @config.ssl_verify, - # :verify_mode => @config.ssl_verify_mode, - # :client_cert => @config.ssl_client_cert, - # :client_key => @config.ssl_client_key - #} - - update_params_for_auth! header_params, query_params, cookie_params, auth_names - - if !post_body.nil? && !post_body.empty? - # use JSON string in the payload - form_or_body = post_body - else - # use HTTP forms in the payload - # TODO use HTTP form encoding - form_or_body = form_params - end - - request = Crest::Request.new( - method: http_method, - url: build_request_url(path, operation), - params: query_params, - headers: header_params, - cookies: cookie_params, - form: form_or_body, - logging: @config.debugging, - handle_errors: false, - params_encoder: Crest::NestedParamsEncoder - ) - - response = request.execute - - if @config.debugging - Log.debug {"HTTP response body ~BEGIN~\n#{response.body}\n~END~\n"} - end - - if !response.success? - if response.status == 0 - # Errors from libcurl will be made visible here - raise ApiError.new(code: 0, - message: response.body) - else - raise ApiError.new(code: response.status_code, - response_headers: response.headers, - message: response.body) - end - end - - return response.body, response.status_code, response.headers - end - end -end diff --git a/samples/client/petstore/crystal/src/petstore/api_error.cr b/samples/client/petstore/crystal/src/petstore/api_error.cr index cac165a27b4c..1ecb290de700 100644 --- a/samples/client/petstore/crystal/src/petstore/api_error.cr +++ b/samples/client/petstore/crystal/src/petstore/api_error.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -11,31 +9,44 @@ module Petstore class ApiError < Exception getter code : Int32? - getter response_headers : Hash(String, Array(String) | String)? + getter response_headers : HTTP::Headers? # Usage examples: # ApiError.new # ApiError.new(message: "message") - # ApiError.new(code: 500, response_headers: {}, message: "") + # ApiError.new(code: 500, response_headers: HTTP::Headers.new, message: "") # ApiError.new(code: 404, message: "Not Found") - def initialize(@code , @message, @response_headers) + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, message : String?) + super(message) + end + + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, body : String) + msg = body.empty? ? "the server returns an error but the HTTP response body is empty." : body + super(msg) + @message = msg end - def initialize(@code , @message) + def initialize(message : String) + super(message) + @code = nil + @response_headers = nil + end + + def initialize + super(nil) + @code = nil + @response_headers = nil end # Override to_s to display a friendly error message - def to_s - msg = "" - msg = msg + "\nHTTP status code: #{code}" if @code - msg = msg + "\nResponse headers: #{response_headers}" if @response_headers - if @message.try &.empty? - msg = msg + "\nError message: the server returns an error but the HTTP response body is empty." + def to_s(io : IO) : Nil + io << "\nHTTP status code: #{code}" if @code + io << "\nResponse headers: #{response_headers}" if @response_headers + if message.nil? || message.try &.empty? + io << "\nError message: the server returns an error but the HTTP response body is empty." else - msg = msg + "\nResponse body: #{@message}" + io << "\nResponse body: #{message}" end - - msg end end end diff --git a/samples/client/petstore/crystal/src/petstore/client.cr b/samples/client/petstore/crystal/src/petstore/client.cr new file mode 100644 index 000000000000..5d236be32b59 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/client.cr @@ -0,0 +1,92 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Client + getter connection : Connection + + def initialize(*, host : String, token : String? = nil, scheme : String = "https") + cfg = Configuration.new + cfg.host = host + cfg.scheme = scheme + cfg.access_token = token if token + @connection = Connection.new(cfg) + end + + def initialize(@connection : Connection); end + def another_fake : Api::AnotherFake + @another_fake ||= Api::AnotherFake.new(@connection) + end + + @another_fake : Api::AnotherFake? + def fake : Api::Fake + @fake ||= Api::Fake.new(@connection) + end + + @fake : Api::Fake? + def fake_classname_test : Api::FakeClassnameTest + @fake_classname_test ||= Api::FakeClassnameTest.new(@connection) + end + + @fake_classname_test : Api::FakeClassnameTest? + def foo : Api::Foo + @foo ||= Api::Foo.new(@connection) + end + + @foo : Api::Foo? + def pet : Api::Pet + @pet ||= Api::Pet.new(@connection) + end + + @pet : Api::Pet? + def store : Api::Store + @store ||= Api::Store.new(@connection) + end + + @store : Api::Store? + def user : Api::User + @user ||= Api::User.new(@connection) + end + + @user : Api::User? + end + + class Api::AnotherFake + def initialize(@conn : Connection); end + end + + class Api::Fake + def initialize(@conn : Connection); end + end + + class Api::FakeClassnameTest + def initialize(@conn : Connection); end + end + + class Api::Foo + def initialize(@conn : Connection); end + end + + class Api::Pet + def initialize(@conn : Connection); end + end + + class Api::Store + def initialize(@conn : Connection); end + + def order : Api::Store::Order + @order ||= Api::Store::Order.new(@conn) + end + + @order : Api::Store::Order? + end + + class Api::User + def initialize(@conn : Connection); end + end +end diff --git a/samples/client/petstore/crystal/src/petstore/configuration.cr b/samples/client/petstore/crystal/src/petstore/configuration.cr index e9fe8945c3ec..9035de32ab0b 100644 --- a/samples/client/petstore/crystal/src/petstore/configuration.cr +++ b/samples/client/petstore/crystal/src/petstore/configuration.cr @@ -1,13 +1,14 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech #Generator version: 7.24.0-SNAPSHOT # +require "base64" +require "crest" +require "http" require "log" module Petstore @@ -21,18 +22,6 @@ module Petstore # Defines url base path property base_path : String - # Define server configuration index - property server_index : Int32 - - # Define server operation configuration index - property server_operation_index : Hash(Symbol, String) - - # Default server variables - property server_variables : Hash(Symbol, String) - - # Default server operation variables - property server_operation_variables : Hash(Symbol, String) - # Defines API keys used with API Key authentications. # # @return [Hash] key: parameter name, value: parameter value (API key) @@ -69,6 +58,15 @@ module Petstore # @return [true, false] property debugging : Bool + # Enable the underlying HTTP client's (crest) request/response logging. Off by default, so the + # shard produces no log output unless a consumer opts in (e.g. a higher-level client wrapper + # can expose `config.logging = true`). Independent of `debugging`. + property logging : Bool + + # Logger used by crest when `logging` is enabled. Defaults to `Crest::CommonLogger`; assign a + # custom `Crest::Logger` to control formatting/output. + property logger : Crest::Logger + # Defines the temporary folder to store downloaded files # (for API endpoints that have file response). # Default to use `Tempfile`. @@ -127,25 +125,28 @@ module Petstore # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 #property params_encoding : String? + # Default headers sent with every request. + property default_headers : HTTP::Headers = HTTP::Headers.new + + # Params encoder used to encode array query parameters. + # Default: Crest::NestedParamsEncoder (encodes arrays as key=a&key=b). + property params_encoder : Crest::ParamsEncoder.class = Crest::NestedParamsEncoder + # Create a new `Configuration`. def initialize @scheme = "http" - @host = "localhost" + @host = "petstore.swagger.io" @base_path = "/v2" - @server_index = 0 - @server_operation_index = {} of Symbol => String - @server_variables = {} of Symbol => String - @server_operation_variables = {} of Symbol => String @api_key = {} of Symbol => String @api_key_prefix = {} of Symbol => String @timeout = 0 @client_side_validation = true - @verify_ssl = true - @verify_ssl_host = true #@params_encoding = nil #@cert_file = nil #@key_file = nil @debugging = false + @logging = false + @logger = Crest::CommonLogger.new @username = nil @password = nil @access_token = nil @@ -191,13 +192,9 @@ module Petstore @base_path = "" if @base_path == "/" end - # Returns base URL for specified operation based on server settings - def base_url(operation = Nil) - # TODO revise below to support operation-level server setting - #index = server_operation_index.fetch(operation, server_index) - return "#{scheme}://#{[host, base_path].join("/").gsub(/\/+/, "/")}".sub(/\/+\z/, "") #if index == Nil - - #server_url(index, server_operation_variables.fetch(operation, server_variables), operation_server_settings[operation]) + # Returns the base URL for requests. + def base_url + "#{scheme}://#{[host, base_path].join("/").gsub(/\/+/, "/")}".sub(/\/+\z/, "") end # Gets API key (with prefix if set). @@ -212,72 +209,40 @@ module Petstore # Gets Basic Auth token string def basic_auth_token - "Basic " + ["#{username}:#{password}"].pack("m").delete("\r\n") - end - - # Returns Auth Settings hash for api client. - def auth_settings - Hash{ - "petstore_auth" => { - type: "oauth2", - in: "header", - key: "Authorization", - value: "Bearer #{access_token}" - }, - "api_key" => { - type: "api_key", - in: "header", - key: "api_key", - value: api_key_with_prefix(:api_key) - }, - } - end - - # Returns an array of Server setting - def server_settings - [ - { - url: "http://localhost/v2", - description: "No description provided", - } - ] + "Basic " + Base64.strict_encode("#{username}:#{password}") end - def operation_server_settings - end - - # Returns URL based on server settings - # - # @param index array index of the server settings - # @param variables hash of variable and the corresponding value - def server_url(index, variables = {} of Symbol => String, servers = Nil) - servers = server_settings if servers == Nil - - # check array index out of bound - if (index < 0 || index >= servers.size) - raise ArgumentError.new("Invalid index #{index} when selecting the server. Must be less than #{servers.size}") + # Applies authentication credentials to request headers and query params. + # Called by Connection#request for every outgoing request. + def apply_auth!(headers : HTTP::Headers, params : Hash(String, String | Array(String)), auth_names : Array(String)) : Nil + if auth_names.includes?("petstore_auth") + if token = @access_token + headers["Authorization"] = "Bearer #{token}" + end end - - server = servers[index] - url = server[:url] - - return url unless server.has_key? :variables - - # go through variable and assign a value - server[:variables].each do |name, variable| - if variables.has_key?(name) - if (!server[:variables][name].has_key?(:enum_values) || server[:variables][name][:enum_values].includes?(variables[name])) - url.gsub! "{" + name.to_s + "}", variables[name] - else - raise ArgumentError.new("The variable `#{name}` in the server URL has invalid value #{variables[name]}. Must be #{server[:variables][name][:enum_values]}.") - end - else - # use default value - url.gsub! "{" + name.to_s + "}", server[:variables][name][:default_value] + if auth_names.includes?("api_key") + value = api_key_with_prefix(:"api_key") + unless value.empty? + headers["api_key"] = value + end + end + if auth_names.includes?("api_key_query") + value = api_key_with_prefix(:"api_key_query") + unless value.empty? + params["api_key_query"] = value + end + end + if auth_names.includes?("http_basic_test") + if @username || @password + headers["Authorization"] = basic_auth_token + end + end + if auth_names.includes?("bearer_test") + if token = @access_token + headers["Authorization"] = "Bearer #{token}" end end - - url end + end end diff --git a/samples/client/petstore/crystal/src/petstore/connection.cr b/samples/client/petstore/crystal/src/petstore/connection.cr new file mode 100644 index 000000000000..6bd9d6a84b80 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/connection.cr @@ -0,0 +1,96 @@ +require "crest" +require "json" +require "log" +require "uri" + +module Petstore + Log = ::Log.for("petstore") + + def self.enc(value) : String + URI.encode_path_segment(value.to_s) + end + + class Connection + getter config : Configuration + + def initialize(@config : Configuration); end + + def request(klass : T.class, *, method : Symbol, path : String, + body = nil, query : Hash(String, _)? = nil, + form : Hash(String, Crest::ParamsValue)? = nil, + header : Hash(String, String?)? = nil, + accept : Array(String) = %w[application/json], + content_type : Array(String) = %w[application/json], + auth : Array(String) = %w[], + raw : Bool = false) : Response(T) forall T + Log.debug { "#{method} #{path}" } if config.debugging + + headers = config.default_headers.dup + header.try &.each { |k, v| headers[k] = v unless v.nil? } + # Prefer a JSON media type when the operation offers one: the body is always + # JSON-decoded (T.from_json), so requesting application/xml first (as some specs + # list it) would yield a response we can't parse. + headers["Accept"] = (accept.find(&.includes?("json")) || accept.first) unless accept.empty? + q = {} of String => String | Array(String) + query.try &.each do |k, v| + next if v.nil? + case v + when Array then q[k] = v.map(&.to_s) + else q[k] = v.to_s + end + end + config.apply_auth!(headers, q, auth) + + # Determine what to pass as the form/body argument to Crest + # If there's a JSON body, serialize it and pass as raw string form + body_str : String? = body.nil? ? nil : body.to_json + headers["Content-Type"] = content_type.first if body_str && !content_type.empty? + + crest_form : Hash(String, Crest::ParamsValue) | String | Nil = + if body_str + body_str + elsif form && !form.empty? + form + else + nil + end + + headers_hash = {} of String => String | Array(String) + headers.each { |k, vs| headers_hash[k] = vs.size == 1 ? vs.first : vs } + + resp = Crest::Request.execute( + method, + config.base_url + path, + crest_form, + headers: headers_hash, + params: q, + params_encoder: config.params_encoder, + logging: config.logging, + logger: config.logger, + handle_errors: false) + + resp_headers = to_http_headers(resp.headers) + unless 200 <= resp.status_code < 300 + raise ApiError.new(resp.status_code, resp_headers, resp.body) + end + + # `raw` (set by operations whose response isn't JSON, e.g. text/plain or binary) returns the + # body untouched; a String return type is otherwise JSON-decoded (unquoted). + value = {% if T == Nil %} nil {% elsif T == String %} (raw ? resp.body : String.from_json(resp.body)) {% else %} T.from_json(resp.body) {% end %} + Response(T).new(value, resp.status_code, resp_headers) + end + + # Crest returns headers as a Hash whose values may be a String or an Array(String); + # convert to the idiomatic HTTP::Headers used by Response/ApiError. + private def to_http_headers(raw) : HTTP::Headers + headers = HTTP::Headers.new + raw.each do |key, value| + case value + when Array then value.each { |v| headers.add(key, v) } + else headers[key] = value.to_s + end + end + headers + end + end +end diff --git a/samples/client/petstore/crystal/src/petstore/models/additional_properties_class.cr b/samples/client/petstore/crystal/src/petstore/models/additional_properties_class.cr new file mode 100644 index 000000000000..075905bcd51c --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/additional_properties_class.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class AdditionalPropertiesClass + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "map_property", emit_null: false)] + property map_property : Hash(String, String)? + + @[JSON::Field(key: "map_of_map_property", emit_null: false)] + property map_of_map_property : Hash(String, Hash(String, String))? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@map_property : Hash(String, String)? = nil, @map_of_map_property : Hash(String, Hash(String, String))? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(map_property, map_of_map_property) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/all_of_with_single_ref.cr b/samples/client/petstore/crystal/src/petstore/models/all_of_with_single_ref.cr new file mode 100644 index 000000000000..dba39c3a2775 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/all_of_with_single_ref.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class AllOfWithSingleRef + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "username", emit_null: false)] + property username : String? + + @[JSON::Field(key: "SingleRefType", emit_null: false)] + property single_ref_type : SingleRefType? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@username : String? = nil, @single_ref_type : SingleRefType? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(username, single_ref_type) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/animal.cr b/samples/client/petstore/crystal/src/petstore/models/animal.cr new file mode 100644 index 000000000000..3db7c38d4003 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/animal.cr @@ -0,0 +1,55 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Animal + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Polymorphic (de)serialisation: dispatch on the discriminator to the mapped subtype. + use_json_discriminator "className", {"CAT" => Cat, "DOG" => Dog} + use_yaml_discriminator "className", {"CAT" => Cat, "DOG" => Dog} + + # Required properties + @[JSON::Field(key: "className", emit_null: false)] + property class_name : String + + # Optional properties + @[JSON::Field(key: "color", emit_null: false)] + property color : String? = "red" + + + # discriminator's property name in OpenAPI v3 + def self.openapi_discriminator_name + :"class_name" + end + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@class_name : String, @color : String? = "red") + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(class_name, color) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/another_property_name_mapping.cr b/samples/client/petstore/crystal/src/petstore/models/another_property_name_mapping.cr deleted file mode 100644 index b39c3afccaa5..000000000000 --- a/samples/client/petstore/crystal/src/petstore/models/another_property_name_mapping.cr +++ /dev/null @@ -1,115 +0,0 @@ -# #OpenAPI Petstore -# -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# -#The version of the OpenAPI document: 1.0.0 -# -#Generated by: https://openapi-generator.tech -#Generator version: 7.24.0-SNAPSHOT -# - -module Petstore - class AnotherPropertyNameMapping - include JSON::Serializable - include YAML::Serializable - - # Optional properties - @[JSON::Field(key: "http_debug_operation", type: String?, nillable: true, emit_null: false)] - property http_debug_operation : String? - - @[JSON::Field(key: "_type", type: String?, nillable: true, emit_null: false)] - property underscore_type : String? - - @[JSON::Field(key: "type", type: String?, nillable: true, emit_null: false)] - property _type : String? - - @[JSON::Field(key: "type_", type: String?, nillable: true, emit_null: false)] - property type_with_underscore : String? - - # Initializes the object - # @param [Hash] attributes Model attributes in the form of hash - def initialize(@http_debug_operation : String? = nil, @underscore_type : String? = nil, @_type : String? = nil, @type_with_underscore : String? = nil) - end - - # Show invalid properties with the reasons. Usually used together with valid? - # @return Array for valid properties with the reasons - def list_invalid_properties - invalid_properties = Array(String).new - invalid_properties - end - - # Check to see if the all the properties in the model are valid - # @return true if the model is valid - def valid? - true - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - http_debug_operation == other.http_debug_operation && - underscore_type == other.underscore_type && - _type == other._type && - type_with_underscore == other.type_with_underscore - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [http_debug_operation, underscore_type, _type, type_with_underscore].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["http_debug_operation"] = _to_h(http_debug_operation) - hash["_type"] = _to_h(underscore_type) - hash["type"] = _to_h(_type) - hash["type_"] = _to_h(type_with_underscore) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end - end - - end - -end diff --git a/samples/client/petstore/crystal/src/petstore/models/api_response.cr b/samples/client/petstore/crystal/src/petstore/models/api_response.cr index d1d418a29e10..ec74fbbb95b4 100644 --- a/samples/client/petstore/crystal/src/petstore/models/api_response.cr +++ b/samples/client/petstore/crystal/src/petstore/models/api_response.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,21 +7,23 @@ # module Petstore - # Describes the result of uploading an image resource class ApiResponse include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Optional properties - @[JSON::Field(key: "code", type: Int32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "code", emit_null: false)] property code : Int32? - @[JSON::Field(key: "type", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "type", emit_null: false)] property _type : String? - @[JSON::Field(key: "message", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "message", emit_null: false)] property message : String? + # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(@code : Int32? = nil, @_type : String? = nil, @message : String? = nil) @@ -39,73 +39,10 @@ module Petstore # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - true - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - code == other.code && - _type == other._type && - message == other.message - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [code, _type, message].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["code"] = _to_h(code) - hash["type"] = _to_h(_type) - hash["message"] = _to_h(message) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(code, _type, message) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/array_of_array_of_number_only.cr b/samples/client/petstore/crystal/src/petstore/models/array_of_array_of_number_only.cr new file mode 100644 index 000000000000..571420b548b4 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/array_of_array_of_number_only.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ArrayOfArrayOfNumberOnly + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "ArrayArrayNumber", emit_null: false)] + property array_array_number : Array(Array(Float64))? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@array_array_number : Array(Array(Float64))? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(array_array_number) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/array_of_number_only.cr b/samples/client/petstore/crystal/src/petstore/models/array_of_number_only.cr new file mode 100644 index 000000000000..49c40b671d5e --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/array_of_number_only.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ArrayOfNumberOnly + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "ArrayNumber", emit_null: false)] + property array_number : Array(Float64)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@array_number : Array(Float64)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(array_number) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/array_test.cr b/samples/client/petstore/crystal/src/petstore/models/array_test.cr new file mode 100644 index 000000000000..972040bb433e --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/array_test.cr @@ -0,0 +1,48 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ArrayTest + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "array_of_string", emit_null: false)] + property array_of_string : Array(String)? + + @[JSON::Field(key: "array_array_of_integer", emit_null: false)] + property array_array_of_integer : Array(Array(Int64))? + + @[JSON::Field(key: "array_array_of_model", emit_null: false)] + property array_array_of_model : Array(Array(ReadOnlyFirst))? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@array_of_string : Array(String)? = nil, @array_array_of_integer : Array(Array(Int64))? = nil, @array_array_of_model : Array(Array(ReadOnlyFirst))? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(array_of_string, array_array_of_integer, array_array_of_model) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/capitalization.cr b/samples/client/petstore/crystal/src/petstore/models/capitalization.cr new file mode 100644 index 000000000000..4f13c4669727 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/capitalization.cr @@ -0,0 +1,58 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Capitalization + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "smallCamel", emit_null: false)] + property small_camel : String? + + @[JSON::Field(key: "CapitalCamel", emit_null: false)] + property capital_camel : String? + + @[JSON::Field(key: "small_Snake", emit_null: false)] + property small_snake : String? + + @[JSON::Field(key: "Capital_Snake", emit_null: false)] + property capital_snake : String? + + @[JSON::Field(key: "SCA_ETH_Flow_Points", emit_null: false)] + property sca_eth_flow_points : String? + + # Name of the pet + @[JSON::Field(key: "ATT_NAME", emit_null: false)] + property att_name : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@small_camel : String? = nil, @capital_camel : String? = nil, @small_snake : String? = nil, @capital_snake : String? = nil, @sca_eth_flow_points : String? = nil, @att_name : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(small_camel, capital_camel, small_snake, capital_snake, sca_eth_flow_points, att_name) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/cat.cr b/samples/client/petstore/crystal/src/petstore/models/cat.cr new file mode 100644 index 000000000000..fe03e6d872e9 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/cat.cr @@ -0,0 +1,51 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Cat < Animal + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + # Optional properties + @[JSON::Field(key: "declawed", emit_null: false)] + property declawed : Bool? + + + # List of class defined in allOf (OpenAPI v3) + def self.openapi_all_of + [ + :"Animal" + ] + end + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(class_name : String, @declawed : Bool? = nil, color : String? = "red") + super(class_name, color) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = super + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(declawed) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/category.cr b/samples/client/petstore/crystal/src/petstore/models/category.cr index 5ab2bd97b50d..232ccd1e9623 100644 --- a/samples/client/petstore/crystal/src/petstore/models/category.cr +++ b/samples/client/petstore/crystal/src/petstore/models/category.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,115 +7,40 @@ # module Petstore - # A category for a pet class Category include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + @[JSON::Field(key: "name", emit_null: false)] + property name : String # Optional properties - @[JSON::Field(key: "id", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "id", emit_null: false)] property id : Int64? - @[JSON::Field(key: "name", type: String?, nillable: true, emit_null: false)] - property name : String? # Initializes the object # @param [Hash] attributes Model attributes in the form of hash - def initialize(@id : Int64? = nil, @name : String? = nil) + def initialize(@name : String, @id : Int64? = nil) end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array(String).new - pattern = /^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$/ - if !@name.nil? && @name.try &.!~ pattern - invalid_properties.push("invalid value for \"name\", must conform to the pattern #{pattern}.") - end - invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - return false if !@name.nil? && @name.try &.!~ /^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$/ - true - end - - # Custom attribute writer method with validation - # @param [Object] name Value to be assigned - def name=(name) - pattern = /^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$/ - if !name.nil? && name !~ pattern - raise ArgumentError.new("invalid value for \"name\", must conform to the pattern #{pattern}.") - end - - @name = name - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - id == other.id && - name == other.name - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [id, name].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["id"] = _to_h(id) - hash["name"] = _to_h(name) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(id, name) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/child_with_nullable.cr b/samples/client/petstore/crystal/src/petstore/models/child_with_nullable.cr new file mode 100644 index 000000000000..d7414435d2c1 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/child_with_nullable.cr @@ -0,0 +1,50 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ChildWithNullable < ParentWithNullable + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "otherProperty", emit_null: false)] + property other_property : String? + + + # List of class defined in allOf (OpenAPI v3) + def self.openapi_all_of + [ + :"ParentWithNullable" + ] + end + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@other_property : String? = nil, _type : String? = nil, nullable_property : String? = nil) + super(_type, nullable_property) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = super + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(other_property) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/class_model.cr b/samples/client/petstore/crystal/src/petstore/models/class_model.cr new file mode 100644 index 000000000000..2cb7669c7408 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/class_model.cr @@ -0,0 +1,43 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Model for testing model with \"_class\" property + class ClassModel + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "_class", emit_null: false)] + property _class : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_class : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_class) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/deprecated_object.cr b/samples/client/petstore/crystal/src/petstore/models/deprecated_object.cr new file mode 100644 index 000000000000..20fdc8b35a94 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/deprecated_object.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class DeprecatedObject + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "name", emit_null: false)] + property name : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/dog.cr b/samples/client/petstore/crystal/src/petstore/models/dog.cr new file mode 100644 index 000000000000..983022be13e1 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/dog.cr @@ -0,0 +1,51 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Dog < Animal + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + # Optional properties + @[JSON::Field(key: "breed", emit_null: false)] + property breed : String? + + + # List of class defined in allOf (OpenAPI v3) + def self.openapi_all_of + [ + :"Animal" + ] + end + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(class_name : String, @breed : String? = nil, color : String? = "red") + super(class_name, color) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = super + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(breed) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/enum_arrays.cr b/samples/client/petstore/crystal/src/petstore/models/enum_arrays.cr new file mode 100644 index 000000000000..d532cda1b3e4 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/enum_arrays.cr @@ -0,0 +1,49 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class EnumArrays + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "just_symbol", emit_null: false)] + property just_symbol : String? + + @[JSON::Field(key: "array_enum", emit_null: false)] + property array_enum : Array(String)? + + validates(just_symbol, String, true, enum: [">=", "$"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@just_symbol : String? = nil, @array_enum : Array(String)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = just_symbol_validation_error(@just_symbol)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(just_symbol, array_enum) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/enum_class.cr b/samples/client/petstore/crystal/src/petstore/models/enum_class.cr new file mode 100644 index 000000000000..0f8bc730a057 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/enum_class.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # EnumClass (OpenAPI enum). Allowed values: "_abc", "-efg", "(xyz)". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias EnumClass = String + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/enum_test.cr b/samples/client/petstore/crystal/src/petstore/models/enum_test.cr new file mode 100644 index 000000000000..6b9a4648cab9 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/enum_test.cr @@ -0,0 +1,80 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class EnumTest + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + @[JSON::Field(key: "enum_string_required", emit_null: false)] + property enum_string_required : String + + # Optional properties + @[JSON::Field(key: "enum_string", emit_null: false)] + property enum_string : String? + + @[JSON::Field(key: "enum_integer", emit_null: false)] + property enum_integer : Int32? + + @[JSON::Field(key: "enum_number", emit_null: false)] + property enum_number : Float64? + + @[JSON::Field(key: "outerEnum", emit_null: false)] + property outer_enum : OuterEnum? + + @[JSON::Field(key: "outerEnumInteger", emit_null: false)] + property outer_enum_integer : OuterEnumInteger? + + @[JSON::Field(key: "outerEnumDefaultValue", emit_null: false)] + property outer_enum_default_value : OuterEnumDefaultValue? = "placed" + + @[JSON::Field(key: "outerEnumIntegerDefaultValue", emit_null: false)] + property outer_enum_integer_default_value : OuterEnumIntegerDefaultValue? + + validates(enum_string, String, true, enum: ["UPPER", "lower", ""]) + validates(enum_string_required, String, false, enum: ["UPPER", "lower", ""]) + validates(enum_integer, Int32, true, enum: [1, -1]) + validates(enum_number, Float64, true, enum: [1.1, -1.2]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@enum_string_required : String, @enum_string : String? = nil, @enum_integer : Int32? = nil, @enum_number : Float64? = nil, @outer_enum : OuterEnum? = nil, @outer_enum_integer : OuterEnumInteger? = nil, @outer_enum_default_value : OuterEnumDefaultValue? = "placed", @outer_enum_integer_default_value : OuterEnumIntegerDefaultValue? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = enum_string_validation_error(@enum_string)) + invalid_properties.push(msg) + end + if (msg = enum_string_required_validation_error(@enum_string_required)) + invalid_properties.push(msg) + end + if (msg = enum_integer_validation_error(@enum_integer)) + invalid_properties.push(msg) + end + if (msg = enum_number_validation_error(@enum_number)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(enum_string, enum_string_required, enum_integer, enum_number, outer_enum, outer_enum_integer, outer_enum_default_value, outer_enum_integer_default_value) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/fake_big_decimal_map200_response.cr b/samples/client/petstore/crystal/src/petstore/models/fake_big_decimal_map200_response.cr new file mode 100644 index 000000000000..2897514d0a27 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/fake_big_decimal_map200_response.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class FakeBigDecimalMap200Response + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "someId", emit_null: false)] + property some_id : Float64? + + @[JSON::Field(key: "someMap", emit_null: false)] + property some_map : Hash(String, Float64)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@some_id : Float64? = nil, @some_map : Hash(String, Float64)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(some_id, some_map) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/file.cr b/samples/client/petstore/crystal/src/petstore/models/file.cr new file mode 100644 index 000000000000..1f2c9a04ed77 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/file.cr @@ -0,0 +1,44 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Must be named `File` for test. + class File + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + # Test capitalization + @[JSON::Field(key: "sourceURI", emit_null: false)] + property source_uri : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@source_uri : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(source_uri) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/file_schema_test_class.cr b/samples/client/petstore/crystal/src/petstore/models/file_schema_test_class.cr new file mode 100644 index 000000000000..e907c35b1eef --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/file_schema_test_class.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class FileSchemaTestClass + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "file", emit_null: false)] + property file : File? + + @[JSON::Field(key: "files", emit_null: false)] + property files : Array(File)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@file : File? = nil, @files : Array(File)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(file, files) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/foo.cr b/samples/client/petstore/crystal/src/petstore/models/foo.cr new file mode 100644 index 000000000000..7de7d540fe11 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/foo.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class Foo + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "bar", emit_null: false)] + property bar : String? = "bar" + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@bar : String? = "bar") + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(bar) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/foo_get_default_response.cr b/samples/client/petstore/crystal/src/petstore/models/foo_get_default_response.cr new file mode 100644 index 000000000000..190a2c79cfdc --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/foo_get_default_response.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class FooGetDefaultResponse + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "string", emit_null: false)] + property string : Foo? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@string : Foo? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(string) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/format_test.cr b/samples/client/petstore/crystal/src/petstore/models/format_test.cr index d4f5990267be..d3c66f198088 100644 --- a/samples/client/petstore/crystal/src/petstore/models/format_test.cr +++ b/samples/client/petstore/crystal/src/petstore/models/format_test.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -12,59 +10,71 @@ module Petstore class FormatTest include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Required properties - @[JSON::Field(key: "number", type: Float64, nillable: false, emit_null: false)] + @[JSON::Field(key: "number", emit_null: false)] property number : Float64 - @[JSON::Field(key: "byte", type: String, nillable: false, emit_null: false)] + @[JSON::Field(key: "byte", emit_null: false)] property byte : String - @[JSON::Field(key: "date", type: Time, nillable: false, emit_null: false)] + @[JSON::Field(key: "date", emit_null: false)] property date : Time - @[JSON::Field(key: "password", type: String, nillable: false, emit_null: false)] + @[JSON::Field(key: "password", emit_null: false)] property password : String # Optional properties - @[JSON::Field(key: "integer", type: Int32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "integer", emit_null: false)] property integer : Int32? - @[JSON::Field(key: "int32", type: Int32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "int32", emit_null: false)] property int32 : Int32? - @[JSON::Field(key: "int64", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "int64", emit_null: false)] property int64 : Int64? - @[JSON::Field(key: "float", type: Float32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "float", emit_null: false)] property float : Float32? - @[JSON::Field(key: "double", type: Float64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "double", emit_null: false)] property double : Float64? - @[JSON::Field(key: "decimal", type: BigDecimal?, nillable: true, emit_null: false)] + @[JSON::Field(key: "decimal", emit_null: false)] property decimal : BigDecimal? - @[JSON::Field(key: "string", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "string", emit_null: false)] property string : String? - @[JSON::Field(key: "binary", type: ::File?, nillable: true, emit_null: false)] + @[JSON::Field(key: "binary", emit_null: false)] property binary : ::File? - @[JSON::Field(key: "dateTime", type: Time?, nillable: true, emit_null: false)] + @[JSON::Field(key: "dateTime", emit_null: false)] property date_time : Time? - @[JSON::Field(key: "uuid", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "uuid", emit_null: false)] property uuid : String? # A string that is a 10 digit number. Can have leading zeros. - @[JSON::Field(key: "pattern_with_digits", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "pattern_with_digits", emit_null: false)] property pattern_with_digits : String? # A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. - @[JSON::Field(key: "pattern_with_digits_and_delimiter", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "pattern_with_digits_and_delimiter", emit_null: false)] property pattern_with_digits_and_delimiter : String? + validates(integer, Int32, true, maximum: 100, minimum: 10) + validates(int32, Int32, true, maximum: 200, minimum: 20) + validates(number, Float64, false, maximum: 543.2, minimum: 32.1) + validates(float, Float32, true, maximum: 987.6, minimum: 54.3) + validates(double, Float64, true, maximum: 123.4, minimum: 67.8) + validates(string, String, true, pattern: /[a-z]/i) + validates(password, String, false, max_length: 64, min_length: 10) + validates(pattern_with_digits, String, true, pattern: /^\d{10}$/) + validates(pattern_with_digits_and_delimiter, String, true, pattern: /^image_\d{1,3}$/i) + # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(@number : Float64, @byte : String, @date : Time, @password : String, @integer : Int32? = nil, @int32 : Int32? = nil, @int64 : Int64? = nil, @float : Float32? = nil, @double : Float64? = nil, @decimal : BigDecimal? = nil, @string : String? = nil, @binary : ::File? = nil, @date_time : Time? = nil, @uuid : String? = nil, @pattern_with_digits : String? = nil, @pattern_with_digits_and_delimiter : String? = nil) @@ -74,300 +84,43 @@ module Petstore # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array(String).new - if !@integer.nil? && @integer.try &.> 100 - invalid_properties.push("invalid value for \"integer\", must be smaller than or equal to 100.") - end - - if !@integer.nil? && @integer.try &.< 10 - invalid_properties.push("invalid value for \"integer\", must be greater than or equal to 10.") - end - - if !@int32.nil? && @int32.try &.> 200 - invalid_properties.push("invalid value for \"int32\", must be smaller than or equal to 200.") - end - - if !@int32.nil? && @int32.try &.< 20 - invalid_properties.push("invalid value for \"int32\", must be greater than or equal to 20.") - end - - if @number.try &.> 543.2 - invalid_properties.push("invalid value for \"number\", must be smaller than or equal to 543.2.") - end - - if @number.try &.< 32.1 - invalid_properties.push("invalid value for \"number\", must be greater than or equal to 32.1.") + if (msg = integer_validation_error(@integer)) + invalid_properties.push(msg) end - - if !@float.nil? && @float.try &.> 987.6 - invalid_properties.push("invalid value for \"float\", must be smaller than or equal to 987.6.") + if (msg = int32_validation_error(@int32)) + invalid_properties.push(msg) end - - if !@float.nil? && @float.try &.< 54.3 - invalid_properties.push("invalid value for \"float\", must be greater than or equal to 54.3.") + if (msg = number_validation_error(@number)) + invalid_properties.push(msg) end - - if !@double.nil? && @double.try &.> 123.4 - invalid_properties.push("invalid value for \"double\", must be smaller than or equal to 123.4.") + if (msg = float_validation_error(@float)) + invalid_properties.push(msg) end - - if !@double.nil? && @double.try &.< 67.8 - invalid_properties.push("invalid value for \"double\", must be greater than or equal to 67.8.") + if (msg = double_validation_error(@double)) + invalid_properties.push(msg) end - - pattern = /[a-z]/i - if !@string.nil? && @string.try &.!~ pattern - invalid_properties.push("invalid value for \"string\", must conform to the pattern #{pattern}.") + if (msg = string_validation_error(@string)) + invalid_properties.push(msg) end - - if @password.try &.to_s.try &.size.try &.> 64 - invalid_properties.push("invalid value for \"password\", the character length must be smaller than or equal to 64.") + if (msg = password_validation_error(@password)) + invalid_properties.push(msg) end - - if @password.try &.to_s.try &.size.try &.< 10 - invalid_properties.push("invalid value for \"password\", the character length must be greater than or equal to 10.") + if (msg = pattern_with_digits_validation_error(@pattern_with_digits)) + invalid_properties.push(msg) end - - pattern = /^\d{10}$/ - if !@pattern_with_digits.nil? && @pattern_with_digits.try &.!~ pattern - invalid_properties.push("invalid value for \"pattern_with_digits\", must conform to the pattern #{pattern}.") - end - - pattern = /^image_\d{1,3}$/i - if !@pattern_with_digits_and_delimiter.nil? && @pattern_with_digits_and_delimiter.try &.!~ pattern - invalid_properties.push("invalid value for \"pattern_with_digits_and_delimiter\", must conform to the pattern #{pattern}.") + if (msg = pattern_with_digits_and_delimiter_validation_error(@pattern_with_digits_and_delimiter)) + invalid_properties.push(msg) end - invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - return false if !@integer.nil? && @integer.try &.> 100 - return false if !@integer.nil? && @integer.try &.< 10 - return false if !@int32.nil? && @int32.try &.> 200 - return false if !@int32.nil? && @int32.try &.< 20 - return false if @number.try &.> 543.2 - return false if @number.try &.< 32.1 - return false if !@float.nil? && @float.try &.> 987.6 - return false if !@float.nil? && @float.try &.< 54.3 - return false if !@double.nil? && @double.try &.> 123.4 - return false if !@double.nil? && @double.try &.< 67.8 - return false if !@string.nil? && @string.try &.!~ /[a-z]/i - return false if @password.try &.to_s.try &.size.try &.> 64 - return false if @password.try &.to_s.try &.size.try &.< 10 - return false if !@pattern_with_digits.nil? && @pattern_with_digits.try &.!~ /^\d{10}$/ - return false if !@pattern_with_digits_and_delimiter.nil? && @pattern_with_digits_and_delimiter.try &.!~ /^image_\d{1,3}$/i - true - end - - # Custom attribute writer method with validation - # @param [Object] integer Value to be assigned - def integer=(integer) - if !integer.nil? && integer > 100 - raise ArgumentError.new("invalid value for \"integer\", must be smaller than or equal to 100.") - end - - if !integer.nil? && integer < 10 - raise ArgumentError.new("invalid value for \"integer\", must be greater than or equal to 10.") - end - - @integer = integer - end - - # Custom attribute writer method with validation - # @param [Object] int32 Value to be assigned - def int32=(int32) - if !int32.nil? && int32 > 200 - raise ArgumentError.new("invalid value for \"int32\", must be smaller than or equal to 200.") - end - - if !int32.nil? && int32 < 20 - raise ArgumentError.new("invalid value for \"int32\", must be greater than or equal to 20.") - end - - @int32 = int32 - end - - # Custom attribute writer method with validation - # @param [Object] number Value to be assigned - def number=(number) - if number > 543.2 - raise ArgumentError.new("invalid value for \"number\", must be smaller than or equal to 543.2.") - end - - if number < 32.1 - raise ArgumentError.new("invalid value for \"number\", must be greater than or equal to 32.1.") - end - - @number = number - end - - # Custom attribute writer method with validation - # @param [Object] float Value to be assigned - def float=(float) - if !float.nil? && float > 987.6 - raise ArgumentError.new("invalid value for \"float\", must be smaller than or equal to 987.6.") - end - - if !float.nil? && float < 54.3 - raise ArgumentError.new("invalid value for \"float\", must be greater than or equal to 54.3.") - end - - @float = float - end - - # Custom attribute writer method with validation - # @param [Object] double Value to be assigned - def double=(double) - if !double.nil? && double > 123.4 - raise ArgumentError.new("invalid value for \"double\", must be smaller than or equal to 123.4.") - end - - if !double.nil? && double < 67.8 - raise ArgumentError.new("invalid value for \"double\", must be greater than or equal to 67.8.") - end - - @double = double - end - - # Custom attribute writer method with validation - # @param [Object] string Value to be assigned - def string=(string) - pattern = /[a-z]/i - if !string.nil? && string !~ pattern - raise ArgumentError.new("invalid value for \"string\", must conform to the pattern #{pattern}.") - end - - @string = string - end - - # Custom attribute writer method with validation - # @param [Object] password Value to be assigned - def password=(password) - if password.to_s.size > 64 - raise ArgumentError.new("invalid value for \"password\", the character length must be smaller than or equal to 64.") - end - - if password.to_s.size < 10 - raise ArgumentError.new("invalid value for \"password\", the character length must be greater than or equal to 10.") - end - - @password = password - end - - # Custom attribute writer method with validation - # @param [Object] pattern_with_digits Value to be assigned - def pattern_with_digits=(pattern_with_digits) - pattern = /^\d{10}$/ - if !pattern_with_digits.nil? && pattern_with_digits !~ pattern - raise ArgumentError.new("invalid value for \"pattern_with_digits\", must conform to the pattern #{pattern}.") - end - - @pattern_with_digits = pattern_with_digits - end - - # Custom attribute writer method with validation - # @param [Object] pattern_with_digits_and_delimiter Value to be assigned - def pattern_with_digits_and_delimiter=(pattern_with_digits_and_delimiter) - pattern = /^image_\d{1,3}$/i - if !pattern_with_digits_and_delimiter.nil? && pattern_with_digits_and_delimiter !~ pattern - raise ArgumentError.new("invalid value for \"pattern_with_digits_and_delimiter\", must conform to the pattern #{pattern}.") - end - - @pattern_with_digits_and_delimiter = pattern_with_digits_and_delimiter - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - integer == other.integer && - int32 == other.int32 && - int64 == other.int64 && - number == other.number && - float == other.float && - double == other.double && - decimal == other.decimal && - string == other.string && - byte == other.byte && - binary == other.binary && - date == other.date && - date_time == other.date_time && - uuid == other.uuid && - password == other.password && - pattern_with_digits == other.pattern_with_digits && - pattern_with_digits_and_delimiter == other.pattern_with_digits_and_delimiter - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [integer, int32, int64, number, float, double, decimal, string, byte, binary, date, date_time, uuid, password, pattern_with_digits, pattern_with_digits_and_delimiter].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["integer"] = _to_h(integer) - hash["int32"] = _to_h(int32) - hash["int64"] = _to_h(int64) - hash["number"] = _to_h(number) - hash["float"] = _to_h(float) - hash["double"] = _to_h(double) - hash["decimal"] = _to_h(decimal) - hash["string"] = _to_h(string) - hash["byte"] = _to_h(byte) - hash["binary"] = _to_h(binary) - hash["date"] = _to_h(date) - hash["dateTime"] = _to_h(date_time) - hash["uuid"] = _to_h(uuid) - hash["password"] = _to_h(password) - hash["pattern_with_digits"] = _to_h(pattern_with_digits) - hash["pattern_with_digits_and_delimiter"] = _to_h(pattern_with_digits_and_delimiter) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(integer, int32, int64, number, float, double, decimal, string, byte, binary, date, date_time, uuid, password, pattern_with_digits, pattern_with_digits_and_delimiter) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/has_only_read_only.cr b/samples/client/petstore/crystal/src/petstore/models/has_only_read_only.cr new file mode 100644 index 000000000000..2e789ed4a56b --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/has_only_read_only.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class HasOnlyReadOnly + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "bar", emit_null: false)] + property bar : String? + + @[JSON::Field(key: "foo", emit_null: false)] + property foo : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@bar : String? = nil, @foo : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(bar, foo) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/health_check_result.cr b/samples/client/petstore/crystal/src/petstore/models/health_check_result.cr new file mode 100644 index 000000000000..9e892bbb5da0 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/health_check_result.cr @@ -0,0 +1,43 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model. + class HealthCheckResult + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "NullableMessage", emit_null: false)] + property nullable_message : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@nullable_message : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(nullable_message) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/list.cr b/samples/client/petstore/crystal/src/petstore/models/list.cr new file mode 100644 index 000000000000..de5038dd0da6 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/list.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class List + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "123-list", emit_null: false)] + property _123_list : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_123_list : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_123_list) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/map_test.cr b/samples/client/petstore/crystal/src/petstore/models/map_test.cr new file mode 100644 index 000000000000..366b1bcd37ef --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/map_test.cr @@ -0,0 +1,51 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class MapTest + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "map_map_of_string", emit_null: false)] + property map_map_of_string : Hash(String, Hash(String, String))? + + @[JSON::Field(key: "map_of_enum_string", emit_null: false)] + property map_of_enum_string : Hash(String, String)? + + @[JSON::Field(key: "direct_map", emit_null: false)] + property direct_map : Hash(String, Bool)? + + @[JSON::Field(key: "indirect_map", emit_null: false)] + property indirect_map : Hash(String, Bool)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@map_map_of_string : Hash(String, Hash(String, String))? = nil, @map_of_enum_string : Hash(String, String)? = nil, @direct_map : Hash(String, Bool)? = nil, @indirect_map : Hash(String, Bool)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(map_map_of_string, map_of_enum_string, direct_map, indirect_map) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/mixed_properties_and_additional_properties_class.cr b/samples/client/petstore/crystal/src/petstore/models/mixed_properties_and_additional_properties_class.cr new file mode 100644 index 000000000000..72830af02788 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/mixed_properties_and_additional_properties_class.cr @@ -0,0 +1,48 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class MixedPropertiesAndAdditionalPropertiesClass + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "uuid", emit_null: false)] + property uuid : String? + + @[JSON::Field(key: "dateTime", emit_null: false)] + property date_time : Time? + + @[JSON::Field(key: "map", emit_null: false)] + property map : Hash(String, Animal)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@uuid : String? = nil, @date_time : Time? = nil, @map : Hash(String, Animal)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(uuid, date_time, map) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/model200_response.cr b/samples/client/petstore/crystal/src/petstore/models/model200_response.cr new file mode 100644 index 000000000000..64b90161cf7b --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/model200_response.cr @@ -0,0 +1,46 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Model for testing model name starting with number + class Model200Response + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "name", emit_null: false)] + property name : Int32? + + @[JSON::Field(key: "class", emit_null: false)] + property _class : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : Int32? = nil, @_class : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, _class) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/model_client.cr b/samples/client/petstore/crystal/src/petstore/models/model_client.cr new file mode 100644 index 000000000000..d3d342de8b58 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/model_client.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ModelClient + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "client", emit_null: false)] + property client : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@client : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(client) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/model_return.cr b/samples/client/petstore/crystal/src/petstore/models/model_return.cr new file mode 100644 index 000000000000..331ae18ca1ad --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/model_return.cr @@ -0,0 +1,43 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Model for testing reserved words + class ModelReturn + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "return", emit_null: false)] + property _return : Int32? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_return : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_return) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/name.cr b/samples/client/petstore/crystal/src/petstore/models/name.cr new file mode 100644 index 000000000000..4b7cc0548fd4 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/name.cr @@ -0,0 +1,53 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # Model for testing model name same as property name + class Name + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + @[JSON::Field(key: "name", emit_null: false)] + property name : Int32 + + # Optional properties + @[JSON::Field(key: "snake_case", emit_null: false)] + property snake_case : Int32? + + @[JSON::Field(key: "property", emit_null: false)] + property property : String? + + @[JSON::Field(key: "123Number", emit_null: false)] + property _123_number : Int32? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : Int32, @snake_case : Int32? = nil, @property : String? = nil, @_123_number : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, snake_case, property, _123_number) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/nullable_class.cr b/samples/client/petstore/crystal/src/petstore/models/nullable_class.cr new file mode 100644 index 000000000000..046a456352e8 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/nullable_class.cr @@ -0,0 +1,77 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class NullableClass + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + # Preserve unknown JSON keys (additionalProperties) across a (de)serialisation round-trip. + include JSON::Serializable::Unmapped + + # Optional properties + @[JSON::Field(key: "integer_prop", emit_null: false)] + property integer_prop : Int32? + + @[JSON::Field(key: "number_prop", emit_null: false)] + property number_prop : Float64? + + @[JSON::Field(key: "boolean_prop", emit_null: false)] + property boolean_prop : Bool? + + @[JSON::Field(key: "string_prop", emit_null: false)] + property string_prop : String? + + @[JSON::Field(key: "date_prop", emit_null: false)] + property date_prop : Time? + + @[JSON::Field(key: "datetime_prop", emit_null: false)] + property datetime_prop : Time? + + @[JSON::Field(key: "array_nullable_prop", emit_null: false)] + property array_nullable_prop : Array(JSON::Any)? + + @[JSON::Field(key: "array_and_items_nullable_prop", emit_null: false)] + property array_and_items_nullable_prop : Array(JSON::Any)? + + @[JSON::Field(key: "array_items_nullable", emit_null: false)] + property array_items_nullable : Array(JSON::Any)? + + @[JSON::Field(key: "object_nullable_prop", emit_null: false)] + property object_nullable_prop : Hash(String, JSON::Any)? + + @[JSON::Field(key: "object_and_items_nullable_prop", emit_null: false)] + property object_and_items_nullable_prop : Hash(String, JSON::Any)? + + @[JSON::Field(key: "object_items_nullable", emit_null: false)] + property object_items_nullable : Hash(String, JSON::Any)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@integer_prop : Int32? = nil, @number_prop : Float64? = nil, @boolean_prop : Bool? = nil, @string_prop : String? = nil, @date_prop : Time? = nil, @datetime_prop : Time? = nil, @array_nullable_prop : Array(JSON::Any)? = nil, @array_and_items_nullable_prop : Array(JSON::Any)? = nil, @array_items_nullable : Array(JSON::Any)? = nil, @object_nullable_prop : Hash(String, JSON::Any)? = nil, @object_and_items_nullable_prop : Hash(String, JSON::Any)? = nil, @object_items_nullable : Hash(String, JSON::Any)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(integer_prop, number_prop, boolean_prop, string_prop, date_prop, datetime_prop, array_nullable_prop, array_and_items_nullable_prop, array_items_nullable, object_nullable_prop, object_and_items_nullable_prop, object_items_nullable) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/number_only.cr b/samples/client/petstore/crystal/src/petstore/models/number_only.cr new file mode 100644 index 000000000000..ed236d7b3559 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/number_only.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class NumberOnly + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "JustNumber", emit_null: false)] + property just_number : Float64? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@just_number : Float64? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(just_number) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/object_with_deprecated_fields.cr b/samples/client/petstore/crystal/src/petstore/models/object_with_deprecated_fields.cr new file mode 100644 index 000000000000..f933504cfa91 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/object_with_deprecated_fields.cr @@ -0,0 +1,51 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ObjectWithDeprecatedFields + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "uuid", emit_null: false)] + property uuid : String? + + @[JSON::Field(key: "id", emit_null: false)] + property id : Float64? + + @[JSON::Field(key: "deprecatedRef", emit_null: false)] + property deprecated_ref : DeprecatedObject? + + @[JSON::Field(key: "bars", emit_null: false)] + property bars : Array(String)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@uuid : String? = nil, @id : Float64? = nil, @deprecated_ref : DeprecatedObject? = nil, @bars : Array(String)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(uuid, id, deprecated_ref, bars) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/order.cr b/samples/client/petstore/crystal/src/petstore/models/order.cr index 886a8127397a..e6146b44eb12 100644 --- a/samples/client/petstore/crystal/src/petstore/models/order.cr +++ b/samples/client/petstore/crystal/src/petstore/models/order.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,173 +7,56 @@ # module Petstore - # An order for a pets from the pet store class Order include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Optional properties - @[JSON::Field(key: "id", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "id", emit_null: false)] property id : Int64? - @[JSON::Field(key: "petId", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "petId", emit_null: false)] property pet_id : Int64? - @[JSON::Field(key: "quantity", type: Int32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "quantity", emit_null: false)] property quantity : Int32? - @[JSON::Field(key: "shipDate", type: Time?, nillable: true, emit_null: false)] + @[JSON::Field(key: "shipDate", emit_null: false)] property ship_date : Time? # Order Status - @[JSON::Field(key: "status", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "status", emit_null: false)] property status : String? - @[JSON::Field(key: "complete", type: Bool?, default: false, nillable: true, emit_null: false)] - property complete : Bool? - - abstract class EnumAttributeValidator - def valid?(value) - !value || @allowable_values.includes?(value) - end - - def message - "invalid value for \"#{@attribute}\", must be one of #{@allowable_values}." - end - - def to(_type, value) - case _type - when Int32 - value.to_i32 - when Int64 - value.to_i64 - when Float32 - value.to_f32 - when Float64 - value.to_f64 - else - value.to_s - end - end - end - - class EnumAttributeValidatorForStatus < EnumAttributeValidator - @attribute : String - @allowable_values : Array(Int32 | Int64 | Float32 | Float64 | String) - - def initialize - @attribute = "status" - @allowable_values = ["placed", "approved", "delivered"].map { |value| to(String, value)} - end - end + @[JSON::Field(key: "complete", emit_null: false)] + property complete : Bool? = false + validates(status, String, true, enum: ["placed", "approved", "delivered"]) # Initializes the object # @param [Hash] attributes Model attributes in the form of hash - def initialize(@id : Int64? = nil, @pet_id : Int64? = nil, @quantity : Int32? = nil, @ship_date : Time? = nil, @status : String? = nil, @complete : Bool? = nil) + def initialize(@id : Int64? = nil, @pet_id : Int64? = nil, @quantity : Int32? = nil, @ship_date : Time? = nil, @status : String? = nil, @complete : Bool? = false) end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array(String).new - status_validator = EnumAttributeValidatorForStatus.new - if !status_validator.valid?(@status) - message = status_validator.message - invalid_properties.push(message) + if (msg = status_validation_error(@status)) + invalid_properties.push(msg) end - invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - status_validator = EnumAttributeValidatorForStatus.new - return false unless status_validator.valid?(@status) - true - end - - # Custom attribute writer method checking allowed values (enum). - # @param [Object] status Object to be assigned - def status=(status) - validator = EnumAttributeValidatorForStatus.new - unless validator.valid?(status) - raise ArgumentError.new(validator.message) - end - @status = status - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - id == other.id && - pet_id == other.pet_id && - quantity == other.quantity && - ship_date == other.ship_date && - status == other.status && - complete == other.complete - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [id, pet_id, quantity, ship_date, status, complete].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["id"] = _to_h(id) - hash["petId"] = _to_h(pet_id) - hash["quantity"] = _to_h(quantity) - hash["shipDate"] = _to_h(ship_date) - hash["status"] = _to_h(status) - hash["complete"] = _to_h(complete) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(id, pet_id, quantity, ship_date, status, complete) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_composite.cr b/samples/client/petstore/crystal/src/petstore/models/outer_composite.cr new file mode 100644 index 000000000000..a712f34d95d8 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_composite.cr @@ -0,0 +1,48 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class OuterComposite + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "my_number", emit_null: false)] + property my_number : Float64? + + @[JSON::Field(key: "my_string", emit_null: false)] + property my_string : String? + + @[JSON::Field(key: "my_boolean", emit_null: false)] + property my_boolean : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@my_number : Float64? = nil, @my_string : String? = nil, @my_boolean : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(my_number, my_string, my_boolean) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_enum.cr b/samples/client/petstore/crystal/src/petstore/models/outer_enum.cr new file mode 100644 index 000000000000..3dc60fd44924 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_enum.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # OuterEnum (OpenAPI enum). Allowed values: "placed", "approved", "delivered". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias OuterEnum = String + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_enum_default_value.cr b/samples/client/petstore/crystal/src/petstore/models/outer_enum_default_value.cr new file mode 100644 index 000000000000..943b5e03c94c --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_enum_default_value.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # OuterEnumDefaultValue (OpenAPI enum). Allowed values: "placed", "approved", "delivered". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias OuterEnumDefaultValue = String + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer.cr b/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer.cr new file mode 100644 index 000000000000..b12b89dac8d2 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # OuterEnumInteger (OpenAPI enum). Allowed values: 0, 1, 2. + # Represented as `Int32` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias OuterEnumInteger = Int32 + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer_default_value.cr b/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer_default_value.cr new file mode 100644 index 000000000000..e7f288c0a1cb --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_enum_integer_default_value.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # OuterEnumIntegerDefaultValue (OpenAPI enum). Allowed values: 0, 1, 2. + # Represented as `Int32` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias OuterEnumIntegerDefaultValue = Int32 + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/outer_object_with_enum_property.cr b/samples/client/petstore/crystal/src/petstore/models/outer_object_with_enum_property.cr new file mode 100644 index 000000000000..c9886754e168 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/outer_object_with_enum_property.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class OuterObjectWithEnumProperty + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Required properties + @[JSON::Field(key: "value", emit_null: false)] + property value : OuterEnumInteger + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@value : OuterEnumInteger) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(value) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/parent_with_nullable.cr b/samples/client/petstore/crystal/src/petstore/models/parent_with_nullable.cr new file mode 100644 index 000000000000..ebaeb60afb48 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/parent_with_nullable.cr @@ -0,0 +1,58 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ParentWithNullable + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Polymorphic (de)serialisation: dispatch on the discriminator to the mapped subtype. + use_json_discriminator "type", {"ChildWithNullable" => ChildWithNullable} + use_yaml_discriminator "type", {"ChildWithNullable" => ChildWithNullable} + + # Optional properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : String? + + @[JSON::Field(key: "nullableProperty", emit_null: false)] + property nullable_property : String? + + validates(_type, String, true, enum: ["ChildWithNullable"]) + + # discriminator's property name in OpenAPI v3 + def self.openapi_discriminator_name + :"_type" + end + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : String? = nil, @nullable_property : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = _type_validation_error(@_type)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, nullable_property) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/pet.cr b/samples/client/petstore/crystal/src/petstore/models/pet.cr index 3e4683d02c26..6c1028b602bd 100644 --- a/samples/client/petstore/crystal/src/petstore/models/pet.cr +++ b/samples/client/petstore/crystal/src/petstore/models/pet.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,174 +7,57 @@ # module Petstore - # A pet for sale in the pet store class Pet include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Required properties - @[JSON::Field(key: "name", type: String, nillable: false, emit_null: false)] + @[JSON::Field(key: "name", emit_null: false)] property name : String - @[JSON::Field(key: "photoUrls", type: Array(String), nillable: false, emit_null: false)] - property photo_urls : Array(String) + @[JSON::Field(key: "photoUrls", emit_null: false)] + property photo_urls : Set(String) # Optional properties - @[JSON::Field(key: "id", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "id", emit_null: false)] property id : Int64? - @[JSON::Field(key: "category", type: Category?, nillable: true, emit_null: false)] + @[JSON::Field(key: "category", emit_null: false)] property category : Category? - @[JSON::Field(key: "tags", type: Array(Tag)?, nillable: true, emit_null: false)] + @[JSON::Field(key: "tags", emit_null: false)] property tags : Array(Tag)? # pet status in the store - @[JSON::Field(key: "status", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "status", emit_null: false)] property status : String? - abstract class EnumAttributeValidator - def valid?(value) - !value || @allowable_values.includes?(value) - end - - def message - "invalid value for \"#{@attribute}\", must be one of #{@allowable_values}." - end - - def to(_type, value) - case _type - when Int32 - value.to_i32 - when Int64 - value.to_i64 - when Float32 - value.to_f32 - when Float64 - value.to_f64 - else - value.to_s - end - end - end - - class EnumAttributeValidatorForStatus < EnumAttributeValidator - @attribute : String - @allowable_values : Array(Int32 | Int64 | Float32 | Float64 | String) - - def initialize - @attribute = "status" - @allowable_values = ["available", "pending", "sold"].map { |value| to(String, value)} - end - end - + validates(status, String, true, enum: ["available", "pending", "sold"]) # Initializes the object # @param [Hash] attributes Model attributes in the form of hash - def initialize(@name : String, @photo_urls : Array(String), @id : Int64? = nil, @category : Category? = nil, @tags : Array(Tag)? = nil, @status : String? = nil) + def initialize(@name : String, @photo_urls : Set(String), @id : Int64? = nil, @category : Category? = nil, @tags : Array(Tag)? = nil, @status : String? = nil) end # Show invalid properties with the reasons. Usually used together with valid? # @return Array for valid properties with the reasons def list_invalid_properties invalid_properties = Array(String).new - status_validator = EnumAttributeValidatorForStatus.new - if !status_validator.valid?(@status) - message = status_validator.message - invalid_properties.push(message) + if (msg = status_validation_error(@status)) + invalid_properties.push(msg) end - invalid_properties end # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - status_validator = EnumAttributeValidatorForStatus.new - return false unless status_validator.valid?(@status) - true - end - - # Custom attribute writer method checking allowed values (enum). - # @param [Object] status Object to be assigned - def status=(status) - validator = EnumAttributeValidatorForStatus.new - unless validator.valid?(status) - raise ArgumentError.new(validator.message) - end - @status = status - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - id == other.id && - category == other.category && - name == other.name && - photo_urls == other.photo_urls && - tags == other.tags && - status == other.status - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [id, category, name, photo_urls, tags, status].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["id"] = _to_h(id) - hash["category"] = _to_h(category) - hash["name"] = _to_h(name) - hash["photoUrls"] = _to_h(photo_urls) - hash["tags"] = _to_h(tags) - hash["status"] = _to_h(status) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(id, category, name, photo_urls, tags, status) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/read_only_first.cr b/samples/client/petstore/crystal/src/petstore/models/read_only_first.cr new file mode 100644 index 000000000000..3a84bdc9705f --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/read_only_first.cr @@ -0,0 +1,45 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class ReadOnlyFirst + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "bar", emit_null: false)] + property bar : String? + + @[JSON::Field(key: "baz", emit_null: false)] + property baz : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@bar : String? = nil, @baz : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(bar, baz) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/single_ref_type.cr b/samples/client/petstore/crystal/src/petstore/models/single_ref_type.cr new file mode 100644 index 000000000000..6eb4698b60df --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/single_ref_type.cr @@ -0,0 +1,15 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + # SingleRefType (OpenAPI enum). Allowed values: "admin", "user". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias SingleRefType = String + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/special_model_name.cr b/samples/client/petstore/crystal/src/petstore/models/special_model_name.cr new file mode 100644 index 000000000000..ada4b8f0c38c --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/special_model_name.cr @@ -0,0 +1,42 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class SpecialModelName + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + + # Optional properties + @[JSON::Field(key: "$special[property.name]", emit_null: false)] + property special_property_name : Int64? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@special_property_name : Int64? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(special_property_name) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/tag.cr b/samples/client/petstore/crystal/src/petstore/models/tag.cr index 3f089c1ce0ff..ce69022937cf 100644 --- a/samples/client/petstore/crystal/src/petstore/models/tag.cr +++ b/samples/client/petstore/crystal/src/petstore/models/tag.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,18 +7,20 @@ # module Petstore - # A tag for a pet class Tag include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Optional properties - @[JSON::Field(key: "id", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "id", emit_null: false)] property id : Int64? - @[JSON::Field(key: "name", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "name", emit_null: false)] property name : String? + # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(@id : Int64? = nil, @name : String? = nil) @@ -36,71 +36,10 @@ module Petstore # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - true - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - id == other.id && - name == other.name - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [id, name].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["id"] = _to_h(id) - hash["name"] = _to_h(name) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(id, name) end end diff --git a/samples/client/petstore/crystal/src/petstore/models/test_inline_freeform_additional_properties_request.cr b/samples/client/petstore/crystal/src/petstore/models/test_inline_freeform_additional_properties_request.cr new file mode 100644 index 000000000000..be1196de2bbd --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/models/test_inline_freeform_additional_properties_request.cr @@ -0,0 +1,44 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Petstore + class TestInlineFreeformAdditionalPropertiesRequest + include JSON::Serializable + include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation + # Preserve unknown JSON keys (additionalProperties) across a (de)serialisation round-trip. + include JSON::Serializable::Unmapped + + # Optional properties + @[JSON::Field(key: "someProperty", emit_null: false)] + property some_property : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@some_property : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(some_property) + end + +end diff --git a/samples/client/petstore/crystal/src/petstore/models/user.cr b/samples/client/petstore/crystal/src/petstore/models/user.cr index 7aea9bd567ff..37e91e64e403 100644 --- a/samples/client/petstore/crystal/src/petstore/models/user.cr +++ b/samples/client/petstore/crystal/src/petstore/models/user.cr @@ -1,7 +1,5 @@ # #OpenAPI Petstore # -##This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters. -# #The version of the OpenAPI document: 1.0.0 # #Generated by: https://openapi-generator.tech @@ -9,37 +7,39 @@ # module Petstore - # A User who is purchasing from the pet store class User include JSON::Serializable include YAML::Serializable + include Petstore::Serializable + include Petstore::Validation # Optional properties - @[JSON::Field(key: "id", type: Int64?, nillable: true, emit_null: false)] + @[JSON::Field(key: "id", emit_null: false)] property id : Int64? - @[JSON::Field(key: "username", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "username", emit_null: false)] property username : String? - @[JSON::Field(key: "firstName", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "firstName", emit_null: false)] property first_name : String? - @[JSON::Field(key: "lastName", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "lastName", emit_null: false)] property last_name : String? - @[JSON::Field(key: "email", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "email", emit_null: false)] property email : String? - @[JSON::Field(key: "password", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "password", emit_null: false)] property password : String? - @[JSON::Field(key: "phone", type: String?, nillable: true, emit_null: false)] + @[JSON::Field(key: "phone", emit_null: false)] property phone : String? # User Status - @[JSON::Field(key: "userStatus", type: Int32?, nillable: true, emit_null: false)] + @[JSON::Field(key: "userStatus", emit_null: false)] property user_status : Int32? + # Initializes the object # @param [Hash] attributes Model attributes in the form of hash def initialize(@id : Int64? = nil, @username : String? = nil, @first_name : String? = nil, @last_name : String? = nil, @email : String? = nil, @password : String? = nil, @phone : String? = nil, @user_status : Int32? = nil) @@ -55,83 +55,10 @@ module Petstore # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - true - end - - # Checks equality by comparing each attribute. - # @param [Object] Object to be compared - def ==(other) - return true if self.same?(other) - self.class == other.class && - id == other.id && - username == other.username && - first_name == other.first_name && - last_name == other.last_name && - email == other.email && - password == other.password && - phone == other.phone && - user_status == other.user_status - end - - # @see the `==` method - # @param [Object] Object to be compared - def eql?(other) - self == other - end - - # Calculates hash code according to all attributes. - # @return [Integer] Hash code - def hash - [id, username, first_name, last_name, email, password, phone, user_status].hash - end - - # Returns the string representation of the object - # @return [String] String presentation of the object - def to_s - to_h.to_s - end - - # to_body is an alias to to_h (backward compatibility) - # @return [Hash] Returns the object in the form of hash - def to_body - to_h - end - - # Returns the object in the form of hash - # @return [Hash] Returns the object in the form of hash - def to_h - hash = NetboxClient::RecursiveHash.new - hash["id"] = _to_h(id) - hash["username"] = _to_h(username) - hash["firstName"] = _to_h(first_name) - hash["lastName"] = _to_h(last_name) - hash["email"] = _to_h(email) - hash["password"] = _to_h(password) - hash["phone"] = _to_h(phone) - hash["userStatus"] = _to_h(user_status) - hash.to_h - end - - # Outputs non-array value in the form of hash - # For object, use to_h. Otherwise, just return the value - # @param [Object] value Any valid value - # @return [Hash] Returns the value in the form of hash - private def _to_h(value) - return nil if value.nil? - - if value.is_a?(Hash) - hash = NetboxClient::RecursiveHash.new - value.each { |k, v| hash[k] = _to_h(v) } - hash - elsif value.is_a?(Array) - value.compact.map { |v| _to_h(v) } - elsif value.responds_to?(:to_h) - value.to_h - else - value - end + list_invalid_properties.empty? end + def_equals_and_hash(id, username, first_name, last_name, email, password, phone, user_status) end end diff --git a/samples/client/petstore/crystal/src/petstore/recursive_hash.cr b/samples/client/petstore/crystal/src/petstore/recursive_hash.cr deleted file mode 100644 index cd3435abf801..000000000000 --- a/samples/client/petstore/crystal/src/petstore/recursive_hash.cr +++ /dev/null @@ -1,18 +0,0 @@ -module Petstore - # Define possible value types for our own AnyHash class (RecursiveHash) - alias ValuesType = Nil | - Bool | - String | - Time | - Int32 | - Int64 | - Float32 | - Float64 | - Array(ValuesType) - - # Define our own AnyHash class (RecursiveHash) - # RecursiveHash - AnyHash.define_new klass: :RecursiveHash, - key: String, - value: ValuesType -end diff --git a/samples/client/petstore/crystal/src/petstore/response.cr b/samples/client/petstore/crystal/src/petstore/response.cr new file mode 100644 index 000000000000..b109a9efe598 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/response.cr @@ -0,0 +1,13 @@ +module Petstore + struct Response(T) + getter value : T + getter status : Int32 + getter headers : HTTP::Headers + + def initialize(@value : T, @status : Int32, @headers : HTTP::Headers); end + + def success? : Bool + 200 <= @status < 300 + end + end +end diff --git a/samples/client/petstore/crystal/src/petstore/serializable.cr b/samples/client/petstore/crystal/src/petstore/serializable.cr new file mode 100644 index 000000000000..bdab9f5707b5 --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/serializable.cr @@ -0,0 +1,33 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# +require "json" + +module Petstore + # Shared serialization helpers mixed into every generated model. + module Serializable + # Returns the string representation of the object + def to_s(io : IO) : Nil + io << to_json + end + + # to_body is an alias to to_h (backward compatibility) + def to_body : Hash(String, JSON::Any) + to_h + end + + # Returns the object in the form of hash + def to_h : Hash(String, JSON::Any) + JSON.parse(to_json).as_h + end + + # @see the `==` method + def eql?(other) + self == other + end + end +end diff --git a/samples/client/petstore/crystal/src/petstore/validation.cr b/samples/client/petstore/crystal/src/petstore/validation.cr new file mode 100644 index 000000000000..e828dcbfeebe --- /dev/null +++ b/samples/client/petstore/crystal/src/petstore/validation.cr @@ -0,0 +1,37 @@ +# #OpenAPI Petstore +# +#The version of the OpenAPI document: 1.0.0 +# +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# +module Petstore + # Shared macro for declarative property validation. Include it in a model and + # declare `validates(name, Type, nilable, **rules)` per validated property. + # Supported rule keys: enum, max_length, min_length, maximum, exclusive_maximum, + # minimum, exclusive_minimum, pattern, max_items, min_items. + module Validation + macro validates(name, klass, nilable, **rules) + {% if rules[:enum] %}{{name.id.upcase}}_ALLOWED = {{rules[:enum]}}{% end %} + + def {{name.id}}=(value : {{klass}}{% if nilable %}?{% end %}) + if (msg = {{name.id}}_validation_error(value)) + raise ArgumentError.new(msg) + end + @{{name.id}} = value + end + + def {{name.id}}_validation_error(value) : String? + {% if rules[:enum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be one of #{ {{name.id.upcase}}_ALLOWED }" unless value.nil? || {{name.id.upcase}}_ALLOWED.includes?(value) + {% end %}{% if rules[:max_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be smaller than or equal to {{rules[:max_length]}}." if value.try &.to_s.try &.size.try &.> {{rules[:max_length]}} + {% end %}{% if rules[:min_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be greater than or equal to {{rules[:min_length]}}." if value.try &.to_s.try &.size.try &.< {{rules[:min_length]}} + {% end %}{% if rules[:maximum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be smaller than{% if rules[:exclusive_maximum] %}{% else %} or equal to{% end %} {{rules[:maximum]}}." if value.try &.>{% if rules[:exclusive_maximum] %}={% end %} {{rules[:maximum]}} + {% end %}{% if rules[:minimum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be greater than{% if rules[:exclusive_minimum] %}{% else %} or equal to{% end %} {{rules[:minimum]}}." if value.try &.<{% if rules[:exclusive_minimum] %}={% end %} {{rules[:minimum]}} + {% end %}{% if rules[:pattern] %}return "invalid value for \"#{ {{name.stringify}} }\", must conform to the pattern {{rules[:pattern]}}." if value.try &.!~ {{rules[:pattern]}} + {% end %}{% if rules[:max_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be less than or equal to {{rules[:max_items]}}." if value.try &.size.try &.> {{rules[:max_items]}} + {% end %}{% if rules[:min_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be greater than or equal to {{rules[:min_items]}}." if value.try &.size.try &.< {{rules[:min_items]}} + {% end %}nil + end + end + end +end From c2b1123c287abfcfd92f76f0bbb9f1b18c07bd5d Mon Sep 17 00:00:00 2001 From: Nicolas Rodriguez Date: Sat, 20 Jun 2026 02:29:06 +0200 Subject: [PATCH 2/2] [crystal] Add crystal-qdrant sample (real-world anyOf / named-enum coverage) Generated from the Qdrant REST API 4.4.10 spec (~320 models incl. anyOf unions and named enums) with moduleName=Qdrant::Api and apiNamespace="" (api classes nest directly under the module). Serves as a real, large integration gate: compiles and `crystal spec` runs green. - bin/configs/crystal-qdrant.yaml - modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json (embedded spec) - samples/client/others/crystal-qdrant (generated client) Co-Authored-By: Claude Opus 4.8 --- bin/configs/crystal-qdrant.yaml | 13 + .../test/resources/3_0/crystal/qdrant.json | 13250 ++++++++++++++++ .../client/others/crystal-qdrant/.gitignore | 17 + .../crystal-qdrant/.openapi-generator-ignore | 23 + .../crystal-qdrant/.openapi-generator/FILES | 350 + .../crystal-qdrant/.openapi-generator/VERSION | 1 + .../client/others/crystal-qdrant/README.md | 186 + .../client/others/crystal-qdrant/git_push.sh | 57 + .../client/others/crystal-qdrant/shard.yml | 25 + .../crystal-qdrant/spec/api/aliases_spec.cr | 23 + .../spec/api/cluster/peer_spec.cr | 23 + .../crystal-qdrant/spec/api/cluster_spec.cr | 23 + .../spec/api/collections/index_spec.cr | 23 + .../spec/api/collections/points_spec.cr | 23 + .../spec/api/collections/shards_spec.cr | 23 + .../spec/api/collections/snapshots_spec.cr | 23 + .../spec/api/collections_spec.cr | 23 + .../crystal-qdrant/spec/api/healthz_spec.cr | 23 + .../crystal-qdrant/spec/api/issues_spec.cr | 23 + .../crystal-qdrant/spec/api/livez_spec.cr | 23 + .../crystal-qdrant/spec/api/locks_spec.cr | 23 + .../crystal-qdrant/spec/api/metrics_spec.cr | 23 + .../crystal-qdrant/spec/api/readyz_spec.cr | 23 + .../crystal-qdrant/spec/api/root_spec.cr | 23 + .../crystal-qdrant/spec/api/snapshots_spec.cr | 23 + .../crystal-qdrant/spec/api/telemetry_spec.cr | 23 + .../spec/models/abort_shard_transfer_spec.cr | 24 + .../models/abort_transfer_operation_spec.cr | 24 + .../spec/models/alias_description_spec.cr | 24 + .../spec/models/alias_operations_spec.cr | 20 + .../spec/models/any_variants_spec.cr | 20 + .../spec/models/app_build_telemetry_spec.cr | 24 + .../models/app_features_telemetry_spec.cr | 24 + .../spec/models/batch_payloads_inner_spec.cr | 20 + .../crystal-qdrant/spec/models/batch_spec.cr | 24 + .../models/batch_update200_response_spec.cr | 29 + .../spec/models/batch_vector_struct_spec.cr | 20 + .../models/binary_quantization_config_spec.cr | 29 + .../spec/models/binary_quantization_spec.cr | 24 + .../spec/models/bool_index_params_spec.cr | 24 + .../spec/models/bool_index_type_spec.cr | 21 + .../models/change_aliases_operation_spec.cr | 24 + .../models/clear_payload_operation_spec.cr | 24 + .../models/cluster_config_telemetry_spec.cr | 24 + .../spec/models/cluster_operations_spec.cr | 20 + .../models/cluster_status200_response_spec.cr | 29 + .../models/cluster_status_one_of1_spec.cr | 24 + .../spec/models/cluster_status_one_of_spec.cr | 24 + .../spec/models/cluster_status_spec.cr | 26 + .../models/cluster_status_telemetry_spec.cr | 24 + .../spec/models/cluster_telemetry_spec.cr | 24 + ...ollection_cluster_info200_response_spec.cr | 29 + .../models/collection_cluster_info_spec.cr | 24 + .../spec/models/collection_config_spec.cr | 24 + .../models/collection_description_spec.cr | 24 + .../spec/models/collection_existence_spec.cr | 24 + .../collection_exists200_response_spec.cr | 29 + .../spec/models/collection_info_spec.cr | 24 + .../models/collection_params_diff_spec.cr | 29 + .../spec/models/collection_params_spec.cr | 29 + .../spec/models/collection_status_spec.cr | 21 + .../models/collection_telemetry_enum_spec.cr | 20 + .../spec/models/collection_telemetry_spec.cr | 24 + .../collections_aggregated_telemetry_spec.cr | 24 + .../collections_aliases_response_spec.cr | 24 + .../spec/models/collections_response_spec.cr | 24 + .../spec/models/collections_telemetry_spec.cr | 24 + .../spec/models/compression_ratio_spec.cr | 21 + .../spec/models/condition_spec.cr | 20 + .../models/consensus_config_telemetry_spec.cr | 24 + .../consensus_thread_status_one_of1_spec.cr | 24 + .../consensus_thread_status_one_of2_spec.cr | 24 + .../consensus_thread_status_one_of_spec.cr | 24 + .../models/consensus_thread_status_spec.cr | 26 + .../spec/models/context_example_pair_spec.cr | 24 + .../spec/models/context_input_spec.cr | 20 + .../spec/models/context_pair_spec.cr | 24 + .../spec/models/context_query_spec.cr | 24 + .../models/count_points200_response_spec.cr | 29 + .../spec/models/count_request_spec.cr | 29 + .../spec/models/count_result_spec.cr | 24 + .../models/create_alias_operation_spec.cr | 24 + .../spec/models/create_alias_spec.cr | 24 + .../spec/models/create_collection_spec.cr | 29 + .../create_field_index200_response_spec.cr | 29 + .../spec/models/create_field_index_spec.cr | 24 + .../create_shard_key200_response_spec.cr | 29 + .../create_sharding_key_operation_spec.cr | 24 + .../spec/models/create_sharding_key_spec.cr | 24 + .../create_snapshot200_response_spec.cr | 29 + .../spec/models/datatype_spec.cr | 21 + .../spec/models/datetime_index_params_spec.cr | 24 + .../spec/models/datetime_index_type_spec.cr | 21 + .../spec/models/datetime_range_spec.cr | 29 + .../models/delete_alias_operation_spec.cr | 24 + .../spec/models/delete_alias_spec.cr | 24 + .../spec/models/delete_operation_spec.cr | 24 + .../models/delete_payload_operation_spec.cr | 24 + .../spec/models/delete_payload_spec.cr | 24 + .../models/delete_vectors_operation_spec.cr | 24 + .../spec/models/delete_vectors_spec.cr | 24 + .../spec/models/direction_spec.cr | 21 + .../spec/models/disabled_spec.cr | 21 + .../models/discover_input_context_spec.cr | 20 + .../spec/models/discover_input_spec.cr | 24 + .../spec/models/discover_query_spec.cr | 24 + .../models/discover_request_batch_spec.cr | 24 + .../spec/models/discover_request_spec.cr | 24 + .../spec/models/distance_spec.cr | 21 + .../spec/models/document_spec.cr | 24 + .../models/drop_replica_operation_spec.cr | 24 + .../drop_sharding_key_operation_spec.cr | 24 + .../spec/models/drop_sharding_key_spec.cr | 24 + .../spec/models/error_response_spec.cr | 29 + .../spec/models/error_response_status_spec.cr | 29 + .../spec/models/extended_point_id_spec.cr | 20 + .../spec/models/facet200_response_spec.cr | 29 + .../spec/models/facet_request_spec.cr | 24 + .../spec/models/facet_response_spec.cr | 24 + .../spec/models/facet_value_hit_spec.cr | 24 + .../spec/models/facet_value_spec.cr | 20 + .../spec/models/field_condition_spec.cr | 24 + .../spec/models/filter_selector_spec.cr | 24 + .../spec/models/filter_should_spec.cr | 20 + .../crystal-qdrant/spec/models/filter_spec.cr | 29 + .../spec/models/float_index_params_spec.cr | 24 + .../spec/models/float_index_type_spec.cr | 21 + .../spec/models/fusion_query_spec.cr | 24 + .../crystal-qdrant/spec/models/fusion_spec.cr | 21 + .../spec/models/geo_bounding_box_spec.cr | 24 + .../spec/models/geo_index_params_spec.cr | 24 + .../spec/models/geo_index_type_spec.cr | 21 + .../spec/models/geo_line_string_spec.cr | 24 + .../spec/models/geo_point_spec.cr | 24 + .../spec/models/geo_polygon_spec.cr | 24 + .../spec/models/geo_radius_spec.cr | 24 + .../models/get_collection200_response_spec.cr | 29 + ...get_collection_aliases200_response_spec.cr | 29 + .../get_collections200_response_spec.cr | 29 + .../spec/models/get_locks200_response_spec.cr | 29 + .../spec/models/get_point200_response_spec.cr | 29 + .../models/get_points200_response_spec.cr | 29 + .../spec/models/group_id_spec.cr | 20 + .../spec/models/groups_result_spec.cr | 24 + .../spec/models/grpc_telemetry_spec.cr | 24 + .../spec/models/has_id_condition_spec.cr | 24 + .../spec/models/hnsw_config_diff_spec.cr | 29 + .../spec/models/hnsw_config_spec.cr | 24 + .../spec/models/indexes_one_of1_spec.cr | 24 + .../spec/models/indexes_one_of_spec.cr | 24 + .../spec/models/indexes_spec.cr | 26 + .../spec/models/init_from_spec.cr | 24 + .../spec/models/integer_index_params_spec.cr | 24 + .../spec/models/integer_index_type_spec.cr | 21 + .../spec/models/is_empty_condition_spec.cr | 24 + .../spec/models/is_null_condition_spec.cr | 24 + .../spec/models/keyword_index_params_spec.cr | 24 + .../spec/models/keyword_index_type_spec.cr | 21 + .../models/list_snapshots200_response_spec.cr | 29 + .../spec/models/local_shard_info_spec.cr | 24 + .../spec/models/local_shard_telemetry_spec.cr | 24 + .../spec/models/locks_option_spec.cr | 24 + .../spec/models/lookup_location_spec.cr | 24 + .../spec/models/match_any_spec.cr | 24 + .../spec/models/match_except_spec.cr | 24 + .../crystal-qdrant/spec/models/match_spec.cr | 20 + .../spec/models/match_text_spec.cr | 24 + .../spec/models/match_value_spec.cr | 24 + .../spec/models/message_send_errors_spec.cr | 24 + .../spec/models/min_should_spec.cr | 24 + .../spec/models/modifier_spec.cr | 21 + .../spec/models/move_shard_operation_spec.cr | 24 + .../spec/models/move_shard_spec.cr | 24 + .../models/multi_vector_comparator_spec.cr | 21 + .../spec/models/multi_vector_config_spec.cr | 24 + .../spec/models/named_sparse_vector_spec.cr | 24 + .../spec/models/named_vector_spec.cr | 24 + .../spec/models/named_vector_struct_spec.cr | 20 + .../spec/models/nearest_query_spec.cr | 24 + .../spec/models/nested_condition_spec.cr | 24 + .../crystal-qdrant/spec/models/nested_spec.cr | 24 + .../operation_duration_statistics_spec.cr | 24 + .../spec/models/optimizer_telemetry_spec.cr | 24 + .../models/optimizers_config_diff_spec.cr | 29 + .../spec/models/optimizers_config_spec.cr | 24 + .../models/optimizers_status_one_of_spec.cr | 24 + .../spec/models/optimizers_status_spec.cr | 26 + .../spec/models/order_by_interface_spec.cr | 20 + .../spec/models/order_by_query_spec.cr | 24 + .../spec/models/order_by_spec.cr | 24 + .../spec/models/order_value_spec.cr | 20 + .../overwrite_payload_operation_spec.cr | 24 + .../spec/models/p2p_config_telemetry_spec.cr | 24 + .../spec/models/payload_field_schema_spec.cr | 20 + .../spec/models/payload_field_spec.cr | 24 + .../spec/models/payload_index_info_spec.cr | 24 + .../models/payload_index_telemetry_spec.cr | 24 + .../spec/models/payload_schema_params_spec.cr | 20 + .../spec/models/payload_schema_type_spec.cr | 21 + .../models/payload_selector_exclude_spec.cr | 24 + .../models/payload_selector_include_spec.cr | 24 + .../spec/models/payload_selector_spec.cr | 20 + .../payload_storage_type_one_of1_spec.cr | 24 + .../payload_storage_type_one_of_spec.cr | 24 + .../spec/models/payload_storage_type_spec.cr | 26 + .../spec/models/peer_info_spec.cr | 24 + .../spec/models/point_group_spec.cr | 24 + .../spec/models/point_ids_list_spec.cr | 24 + .../models/point_insert_operations_spec.cr | 20 + .../spec/models/point_request_spec.cr | 24 + .../spec/models/point_struct_spec.cr | 24 + .../spec/models/point_vectors_spec.cr | 24 + .../spec/models/points_batch_spec.cr | 24 + .../spec/models/points_list_spec.cr | 24 + .../spec/models/points_selector_spec.cr | 20 + .../spec/models/prefetch_spec.cr | 29 + .../product_quantization_config_spec.cr | 24 + .../spec/models/product_quantization_spec.cr | 24 + .../models/quantization_config_diff_spec.cr | 20 + .../spec/models/quantization_config_spec.cr | 20 + .../models/quantization_search_params_spec.cr | 29 + .../query_batch_points200_response_spec.cr | 29 + .../spec/models/query_groups_request_spec.cr | 24 + .../spec/models/query_interface_spec.cr | 20 + .../models/query_points200_response_spec.cr | 29 + .../spec/models/query_request_batch_spec.cr | 24 + .../models/query_request_prefetch_spec.cr | 20 + .../spec/models/query_request_spec.cr | 29 + .../spec/models/query_response_spec.cr | 24 + .../crystal-qdrant/spec/models/query_spec.cr | 20 + .../spec/models/raft_info_spec.cr | 24 + .../spec/models/range_interface_spec.cr | 20 + .../crystal-qdrant/spec/models/range_spec.cr | 29 + .../spec/models/read_consistency_spec.cr | 20 + .../spec/models/read_consistency_type_spec.cr | 21 + .../spec/models/recommend_example_spec.cr | 20 + .../models/recommend_groups_request_spec.cr | 24 + .../spec/models/recommend_input_spec.cr | 29 + .../spec/models/recommend_query_spec.cr | 24 + .../models/recommend_request_batch_spec.cr | 24 + .../spec/models/recommend_request_spec.cr | 24 + .../spec/models/recommend_strategy_spec.cr | 21 + .../crystal-qdrant/spec/models/record_spec.cr | 24 + ...from_uploaded_snapshot202_response_spec.cr | 29 + .../spec/models/remote_shard_info_spec.cr | 24 + .../models/remote_shard_telemetry_spec.cr | 24 + .../models/rename_alias_operation_spec.cr | 24 + .../spec/models/rename_alias_spec.cr | 24 + .../spec/models/replica_set_telemetry_spec.cr | 24 + .../spec/models/replica_spec.cr | 24 + .../spec/models/replica_state_spec.cr | 21 + .../models/replicate_shard_operation_spec.cr | 24 + .../spec/models/replicate_shard_spec.cr | 24 + .../spec/models/requests_telemetry_spec.cr | 24 + .../spec/models/resharding_direction_spec.cr | 21 + .../spec/models/resharding_info_spec.cr | 24 + .../models/restart_transfer_operation_spec.cr | 24 + .../spec/models/restart_transfer_spec.cr | 24 + .../running_environment_telemetry_spec.cr | 24 + .../spec/models/sample_query_spec.cr | 24 + .../crystal-qdrant/spec/models/sample_spec.cr | 21 + .../models/scalar_quantization_config_spec.cr | 24 + .../spec/models/scalar_quantization_spec.cr | 24 + .../spec/models/scalar_type_spec.cr | 21 + .../spec/models/scored_point_spec.cr | 24 + .../models/scroll_points200_response_spec.cr | 29 + .../spec/models/scroll_request_spec.cr | 29 + .../spec/models/scroll_result_spec.cr | 24 + .../search_batch_points200_response_spec.cr | 29 + .../spec/models/search_groups_request_spec.cr | 24 + .../search_matrix_offsets200_response_spec.cr | 29 + .../search_matrix_offsets_response_spec.cr | 24 + .../spec/models/search_matrix_pair_spec.cr | 24 + .../search_matrix_pairs200_response_spec.cr | 29 + .../search_matrix_pairs_response_spec.cr | 24 + .../spec/models/search_matrix_request_spec.cr | 29 + .../spec/models/search_params_spec.cr | 29 + .../search_point_groups200_response_spec.cr | 29 + .../models/search_points200_response_spec.cr | 29 + .../spec/models/search_request_batch_spec.cr | 24 + .../spec/models/search_request_spec.cr | 24 + .../spec/models/segment_config_spec.cr | 24 + .../spec/models/segment_info_spec.cr | 24 + .../spec/models/segment_telemetry_spec.cr | 24 + .../spec/models/segment_type_spec.cr | 21 + .../spec/models/set_payload_operation_spec.cr | 24 + .../spec/models/set_payload_spec.cr | 24 + .../spec/models/shard_key_selector_spec.cr | 20 + .../spec/models/shard_key_spec.cr | 20 + .../models/shard_snapshot_location_spec.cr | 20 + .../models/shard_snapshot_recover_spec.cr | 24 + .../spec/models/shard_status_spec.cr | 21 + .../spec/models/shard_transfer_info_spec.cr | 24 + .../spec/models/shard_transfer_method_spec.cr | 21 + .../spec/models/sharding_method_spec.cr | 21 + .../spec/models/snapshot_description_spec.cr | 24 + .../spec/models/snapshot_priority_spec.cr | 21 + .../spec/models/snapshot_recover_spec.cr | 24 + .../spec/models/sparse_index_config_spec.cr | 24 + .../spec/models/sparse_index_params_spec.cr | 29 + .../spec/models/sparse_index_type_spec.cr | 21 + .../models/sparse_vector_data_config_spec.cr | 24 + .../spec/models/sparse_vector_params_spec.cr | 29 + .../spec/models/sparse_vector_spec.cr | 24 + .../spec/models/start_from_spec.cr | 20 + .../spec/models/state_role_spec.cr | 21 + .../spec/models/telemetry200_response_spec.cr | 29 + .../spec/models/telemetry_data_spec.cr | 24 + .../spec/models/text_index_params_spec.cr | 24 + .../spec/models/text_index_type_spec.cr | 21 + .../spec/models/tokenizer_type_spec.cr | 21 + .../spec/models/tracker_status_one_of_spec.cr | 24 + .../spec/models/tracker_status_spec.cr | 26 + .../spec/models/tracker_telemetry_spec.cr | 24 + .../spec/models/update_collection_spec.cr | 29 + .../spec/models/update_operation_spec.cr | 20 + .../spec/models/update_operations_spec.cr | 24 + .../spec/models/update_result_spec.cr | 24 + .../spec/models/update_status_spec.cr | 21 + .../models/update_vectors_operation_spec.cr | 24 + .../spec/models/update_vectors_spec.cr | 24 + .../spec/models/upsert_operation_spec.cr | 24 + .../spec/models/uuid_index_params_spec.cr | 24 + .../spec/models/uuid_index_type_spec.cr | 21 + .../spec/models/value_variants_spec.cr | 20 + .../spec/models/values_count_spec.cr | 29 + .../spec/models/vector_data_config_spec.cr | 24 + .../spec/models/vector_data_info_spec.cr | 24 + .../vector_index_searches_telemetry_spec.cr | 24 + .../spec/models/vector_input_spec.cr | 20 + .../spec/models/vector_params_diff_spec.cr | 29 + .../spec/models/vector_params_spec.cr | 24 + .../crystal-qdrant/spec/models/vector_spec.cr | 20 + .../models/vector_storage_datatype_spec.cr | 21 + .../spec/models/vector_storage_type_spec.cr | 21 + .../spec/models/vector_struct_spec.cr | 20 + .../spec/models/vectors_config_spec.cr | 20 + .../spec/models/version_info_spec.cr | 24 + .../spec/models/wal_config_diff_spec.cr | 29 + .../spec/models/wal_config_spec.cr | 24 + .../spec/models/web_api_telemetry_spec.cr | 24 + .../spec/models/with_lookup_interface_spec.cr | 20 + .../spec/models/with_lookup_spec.cr | 24 + .../models/with_payload_interface_spec.cr | 20 + .../spec/models/with_vector_spec.cr | 20 + .../spec/models/write_ordering_spec.cr | 21 + .../others/crystal-qdrant/spec/spec_helper.cr | 11 + .../others/crystal-qdrant/src/qdrant-api.cr | 364 + .../src/qdrant-api/api/aliases.cr | 17 + .../src/qdrant-api/api/cluster.cr | 26 + .../src/qdrant-api/api/cluster/peer.cr | 18 + .../src/qdrant-api/api/collections.cr | 144 + .../src/qdrant-api/api/collections/index.cr | 30 + .../src/qdrant-api/api/collections/points.cr | 318 + .../src/qdrant-api/api/collections/shards.cr | 178 + .../qdrant-api/api/collections/snapshots.cr | 130 + .../src/qdrant-api/api/healthz.cr | 18 + .../src/qdrant-api/api/issues.cr | 26 + .../src/qdrant-api/api/livez.cr | 18 + .../src/qdrant-api/api/locks.cr | 28 + .../src/qdrant-api/api/metrics.cr | 19 + .../src/qdrant-api/api/readyz.cr | 18 + .../crystal-qdrant/src/qdrant-api/api/root.cr | 17 + .../src/qdrant-api/api/snapshots.cr | 46 + .../src/qdrant-api/api/telemetry.cr | 18 + .../src/qdrant-api/api_error.cr | 52 + .../crystal-qdrant/src/qdrant-api/client.cr | 161 + .../src/qdrant-api/configuration.cr | 232 + .../src/qdrant-api/connection.cr | 96 + .../qdrant-api/models/abort_shard_transfer.cr | 60 + .../models/abort_transfer_operation.cr | 42 + .../qdrant-api/models/alias_description.cr | 45 + .../src/qdrant-api/models/alias_operations.cr | 81 + .../src/qdrant-api/models/any_variants.cr | 70 + .../qdrant-api/models/app_build_telemetry.cr | 61 + .../models/app_features_telemetry.cr | 51 + .../src/qdrant-api/models/batch.cr | 49 + .../qdrant-api/models/batch_payloads_inner.cr | 60 + .../models/batch_update200_response.cr | 49 + .../qdrant-api/models/batch_vector_struct.cr | 90 + .../qdrant-api/models/binary_quantization.cr | 42 + .../models/binary_quantization_config.cr | 42 + .../qdrant-api/models/bool_index_params.cr | 42 + .../src/qdrant-api/models/bool_index_type.cr | 15 + .../models/change_aliases_operation.cr | 43 + .../models/clear_payload_operation.cr | 42 + .../models/cluster_config_telemetry.cr | 52 + .../qdrant-api/models/cluster_operations.cr | 120 + .../src/qdrant-api/models/cluster_status.cr | 80 + .../models/cluster_status200_response.cr | 49 + .../models/cluster_status_one_of.cr | 46 + .../models/cluster_status_one_of1.cr | 69 + .../models/cluster_status_telemetry.cr | 84 + .../qdrant-api/models/cluster_telemetry.cr | 55 + .../models/collection_cluster_info.cr | 73 + .../collection_cluster_info200_response.cr | 49 + .../qdrant-api/models/collection_config.cr | 55 + .../models/collection_description.cr | 42 + .../qdrant-api/models/collection_existence.cr | 43 + .../models/collection_exists200_response.cr | 49 + .../src/qdrant-api/models/collection_info.cr | 86 + .../qdrant-api/models/collection_params.cr | 86 + .../models/collection_params_diff.cr | 67 + .../qdrant-api/models/collection_status.cr | 15 + .../qdrant-api/models/collection_telemetry.cr | 61 + .../models/collection_telemetry_enum.cr | 70 + .../collections_aggregated_telemetry.cr | 52 + .../models/collections_aliases_response.cr | 42 + .../qdrant-api/models/collections_response.cr | 42 + .../models/collections_telemetry.cr | 50 + .../qdrant-api/models/compression_ratio.cr | 15 + .../src/qdrant-api/models/condition.cr | 110 + .../models/consensus_config_telemetry.cr | 60 + .../models/consensus_thread_status.cr | 90 + .../models/consensus_thread_status_one_of.cr | 49 + .../models/consensus_thread_status_one_of1.cr | 46 + .../models/consensus_thread_status_one_of2.cr | 49 + .../qdrant-api/models/context_example_pair.cr | 45 + .../src/qdrant-api/models/context_input.cr | 70 + .../src/qdrant-api/models/context_pair.cr | 45 + .../src/qdrant-api/models/context_query.cr | 42 + .../models/count_points200_response.cr | 49 + .../src/qdrant-api/models/count_request.cr | 52 + .../src/qdrant-api/models/count_result.cr | 47 + .../src/qdrant-api/models/create_alias.cr | 46 + .../models/create_alias_operation.cr | 42 + .../qdrant-api/models/create_collection.cr | 99 + .../qdrant-api/models/create_field_index.cr | 46 + .../models/create_field_index200_response.cr | 49 + .../models/create_shard_key200_response.cr | 49 + .../qdrant-api/models/create_sharding_key.cr | 63 + .../models/create_sharding_key_operation.cr | 42 + .../models/create_snapshot200_response.cr | 49 + .../src/qdrant-api/models/datatype.cr | 15 + .../models/datetime_index_params.cr | 51 + .../qdrant-api/models/datetime_index_type.cr | 15 + .../src/qdrant-api/models/datetime_range.cr | 56 + .../src/qdrant-api/models/delete_alias.cr | 43 + .../models/delete_alias_operation.cr | 43 + .../src/qdrant-api/models/delete_operation.cr | 42 + .../src/qdrant-api/models/delete_payload.cr | 56 + .../models/delete_payload_operation.cr | 42 + .../src/qdrant-api/models/delete_vectors.cr | 55 + .../models/delete_vectors_operation.cr | 42 + .../src/qdrant-api/models/direction.cr | 15 + .../src/qdrant-api/models/disabled.cr | 15 + .../src/qdrant-api/models/discover_input.cr | 45 + .../models/discover_input_context.cr | 71 + .../src/qdrant-api/models/discover_query.cr | 42 + .../src/qdrant-api/models/discover_request.cr | 93 + .../models/discover_request_batch.cr | 42 + .../src/qdrant-api/models/distance.cr | 15 + .../src/qdrant-api/models/document.cr | 49 + .../models/drop_replica_operation.cr | 42 + .../qdrant-api/models/drop_sharding_key.cr | 42 + .../models/drop_sharding_key_operation.cr | 42 + .../src/qdrant-api/models/error_response.cr | 49 + .../models/error_response_status.cr | 43 + .../qdrant-api/models/extended_point_id.cr | 71 + .../qdrant-api/models/facet200_response.cr | 49 + .../src/qdrant-api/models/facet_request.cr | 63 + .../src/qdrant-api/models/facet_response.cr | 42 + .../src/qdrant-api/models/facet_value.cr | 80 + .../src/qdrant-api/models/facet_value_hit.cr | 49 + .../src/qdrant-api/models/field_condition.cr | 69 + .../src/qdrant-api/models/filter.cr | 52 + .../src/qdrant-api/models/filter_selector.cr | 46 + .../src/qdrant-api/models/filter_should.cr | 71 + .../qdrant-api/models/float_index_params.cr | 51 + .../src/qdrant-api/models/float_index_type.cr | 15 + .../src/qdrant-api/models/fusion.cr | 15 + .../src/qdrant-api/models/fusion_query.cr | 42 + .../src/qdrant-api/models/geo_bounding_box.cr | 46 + .../src/qdrant-api/models/geo_index_params.cr | 47 + .../src/qdrant-api/models/geo_index_type.cr | 15 + .../src/qdrant-api/models/geo_line_string.cr | 43 + .../src/qdrant-api/models/geo_point.cr | 46 + .../src/qdrant-api/models/geo_polygon.cr | 48 + .../src/qdrant-api/models/geo_radius.cr | 47 + .../models/get_collection200_response.cr | 49 + .../get_collection_aliases200_response.cr | 49 + .../models/get_collections200_response.cr | 49 + .../models/get_locks200_response.cr | 49 + .../models/get_point200_response.cr | 49 + .../models/get_points200_response.cr | 49 + .../src/qdrant-api/models/group_id.cr | 81 + .../src/qdrant-api/models/groups_result.cr | 42 + .../src/qdrant-api/models/grpc_telemetry.cr | 42 + .../src/qdrant-api/models/has_id_condition.cr | 43 + .../src/qdrant-api/models/hnsw_config.cr | 85 + .../src/qdrant-api/models/hnsw_config_diff.cr | 83 + .../src/qdrant-api/models/indexes.cr | 80 + .../src/qdrant-api/models/indexes_one_of.cr | 50 + .../src/qdrant-api/models/indexes_one_of1.cr | 50 + .../src/qdrant-api/models/init_from.cr | 43 + .../qdrant-api/models/integer_index_params.cr | 59 + .../qdrant-api/models/integer_index_type.cr | 15 + .../qdrant-api/models/is_empty_condition.cr | 43 + .../qdrant-api/models/is_null_condition.cr | 43 + .../qdrant-api/models/keyword_index_params.cr | 51 + .../qdrant-api/models/keyword_index_type.cr | 15 + .../models/list_snapshots200_response.cr | 49 + .../src/qdrant-api/models/local_shard_info.cr | 63 + .../models/local_shard_telemetry.cr | 60 + .../src/qdrant-api/models/locks_option.cr | 46 + .../src/qdrant-api/models/lookup_location.cr | 53 + .../src/qdrant-api/models/match.cr | 91 + .../src/qdrant-api/models/match_any.cr | 43 + .../src/qdrant-api/models/match_except.cr | 43 + .../src/qdrant-api/models/match_text.cr | 43 + .../src/qdrant-api/models/match_value.cr | 43 + .../qdrant-api/models/message_send_errors.cr | 55 + .../src/qdrant-api/models/min_should.cr | 49 + .../src/qdrant-api/models/modifier.cr | 15 + .../src/qdrant-api/models/move_shard.cr | 65 + .../qdrant-api/models/move_shard_operation.cr | 42 + .../models/multi_vector_comparator.cr | 15 + .../qdrant-api/models/multi_vector_config.cr | 42 + .../qdrant-api/models/named_sparse_vector.cr | 47 + .../src/qdrant-api/models/named_vector.cr | 48 + .../qdrant-api/models/named_vector_struct.cr | 81 + .../src/qdrant-api/models/nearest_query.cr | 42 + .../src/qdrant-api/models/nested.cr | 46 + .../src/qdrant-api/models/nested_condition.cr | 42 + .../models/operation_duration_statistics.cr | 77 + .../qdrant-api/models/optimizer_telemetry.cr | 48 + .../qdrant-api/models/optimizers_config.cr | 104 + .../models/optimizers_config_diff.cr | 99 + .../qdrant-api/models/optimizers_status.cr | 80 + .../models/optimizers_status_one_of.cr | 43 + .../src/qdrant-api/models/order_by.cr | 52 + .../qdrant-api/models/order_by_interface.cr | 70 + .../src/qdrant-api/models/order_by_query.cr | 42 + .../src/qdrant-api/models/order_value.cr | 70 + .../models/overwrite_payload_operation.cr | 42 + .../qdrant-api/models/p2p_config_telemetry.cr | 46 + .../src/qdrant-api/models/payload_field.cr | 44 + .../qdrant-api/models/payload_field_schema.cr | 70 + .../qdrant-api/models/payload_index_info.cr | 55 + .../models/payload_index_telemetry.cr | 64 + .../models/payload_schema_params.cr | 131 + .../qdrant-api/models/payload_schema_type.cr | 15 + .../src/qdrant-api/models/payload_selector.cr | 71 + .../models/payload_selector_exclude.cr | 43 + .../models/payload_selector_include.cr | 43 + .../qdrant-api/models/payload_storage_type.cr | 80 + .../models/payload_storage_type_one_of.cr | 46 + .../models/payload_storage_type_one_of1.cr | 46 + .../src/qdrant-api/models/peer_info.cr | 43 + .../src/qdrant-api/models/point_group.cr | 51 + .../src/qdrant-api/models/point_ids_list.cr | 46 + .../models/point_insert_operations.cr | 70 + .../src/qdrant-api/models/point_request.cr | 55 + .../src/qdrant-api/models/point_struct.cr | 50 + .../src/qdrant-api/models/point_vectors.cr | 45 + .../src/qdrant-api/models/points_batch.cr | 46 + .../src/qdrant-api/models/points_list.cr | 46 + .../src/qdrant-api/models/points_selector.cr | 70 + .../src/qdrant-api/models/prefetch.cr | 74 + .../qdrant-api/models/product_quantization.cr | 42 + .../models/product_quantization_config.cr | 46 + .../qdrant-api/models/quantization_config.cr | 80 + .../models/quantization_config_diff.cr | 90 + .../models/quantization_search_params.cr | 56 + .../src/qdrant-api/models/query.cr | 120 + .../models/query_batch_points200_response.cr | 49 + .../qdrant-api/models/query_groups_request.cr | 106 + .../src/qdrant-api/models/query_interface.cr | 70 + .../models/query_points200_response.cr | 49 + .../src/qdrant-api/models/query_request.cr | 93 + .../qdrant-api/models/query_request_batch.cr | 42 + .../models/query_request_prefetch.cr | 71 + .../src/qdrant-api/models/query_response.cr | 42 + .../src/qdrant-api/models/raft_info.cr | 81 + .../src/qdrant-api/models/range.cr | 56 + .../src/qdrant-api/models/range_interface.cr | 70 + .../src/qdrant-api/models/read_consistency.cr | 71 + .../models/read_consistency_type.cr | 15 + .../qdrant-api/models/recommend_example.cr | 80 + .../models/recommend_groups_request.cr | 112 + .../src/qdrant-api/models/recommend_input.cr | 51 + .../src/qdrant-api/models/recommend_query.cr | 42 + .../qdrant-api/models/recommend_request.cr | 101 + .../models/recommend_request_batch.cr | 42 + .../qdrant-api/models/recommend_strategy.cr | 15 + .../src/qdrant-api/models/record.cr | 59 + ...over_from_uploaded_snapshot202_response.cr | 46 + .../qdrant-api/models/remote_shard_info.cr | 63 + .../models/remote_shard_telemetry.cr | 60 + .../src/qdrant-api/models/rename_alias.cr | 46 + .../models/rename_alias_operation.cr | 43 + .../src/qdrant-api/models/replica.cr | 53 + .../models/replica_set_telemetry.cr | 56 + .../src/qdrant-api/models/replica_state.cr | 15 + .../src/qdrant-api/models/replicate_shard.cr | 65 + .../models/replicate_shard_operation.cr | 42 + .../qdrant-api/models/requests_telemetry.cr | 45 + .../qdrant-api/models/resharding_direction.cr | 15 + .../src/qdrant-api/models/resharding_info.cr | 64 + .../src/qdrant-api/models/restart_transfer.cr | 63 + .../models/restart_transfer_operation.cr | 42 + .../models/running_environment_telemetry.cr | 73 + .../src/qdrant-api/models/sample.cr | 15 + .../src/qdrant-api/models/sample_query.cr | 42 + .../qdrant-api/models/scalar_quantization.cr | 42 + .../models/scalar_quantization_config.cr | 55 + .../src/qdrant-api/models/scalar_type.cr | 15 + .../src/qdrant-api/models/scored_point.cr | 72 + .../models/scroll_points200_response.cr | 49 + .../src/qdrant-api/models/scroll_request.cr | 71 + .../src/qdrant-api/models/scroll_result.cr | 49 + .../models/search_batch_points200_response.cr | 49 + .../models/search_groups_request.cr | 95 + .../search_matrix_offsets200_response.cr | 49 + .../models/search_matrix_offsets_response.cr | 55 + .../qdrant-api/models/search_matrix_pair.cr | 49 + .../models/search_matrix_pairs200_response.cr | 49 + .../models/search_matrix_pairs_response.cr | 43 + .../models/search_matrix_request.cr | 67 + .../src/qdrant-api/models/search_params.cr | 60 + .../models/search_point_groups200_response.cr | 49 + .../models/search_points200_response.cr | 49 + .../src/qdrant-api/models/search_request.cr | 84 + .../qdrant-api/models/search_request_batch.cr | 42 + .../src/qdrant-api/models/segment_config.cr | 49 + .../src/qdrant-api/models/segment_info.cr | 94 + .../qdrant-api/models/segment_telemetry.cr | 51 + .../src/qdrant-api/models/segment_type.cr | 15 + .../src/qdrant-api/models/set_payload.cr | 59 + .../models/set_payload_operation.cr | 42 + .../src/qdrant-api/models/shard_key.cr | 70 + .../qdrant-api/models/shard_key_selector.cr | 70 + .../models/shard_snapshot_location.cr | 60 + .../models/shard_snapshot_recover.cr | 54 + .../src/qdrant-api/models/shard_status.cr | 15 + .../qdrant-api/models/shard_transfer_info.cr | 74 + .../models/shard_transfer_method.cr | 15 + .../src/qdrant-api/models/sharding_method.cr | 15 + .../qdrant-api/models/snapshot_description.cr | 56 + .../qdrant-api/models/snapshot_priority.cr | 15 + .../src/qdrant-api/models/snapshot_recover.cr | 56 + .../qdrant-api/models/sparse_index_config.cr | 56 + .../qdrant-api/models/sparse_index_params.cr | 56 + .../qdrant-api/models/sparse_index_type.cr | 15 + .../src/qdrant-api/models/sparse_vector.cr | 48 + .../models/sparse_vector_data_config.cr | 43 + .../qdrant-api/models/sparse_vector_params.cr | 48 + .../src/qdrant-api/models/start_from.cr | 80 + .../src/qdrant-api/models/state_role.cr | 15 + .../models/telemetry200_response.cr | 49 + .../src/qdrant-api/models/telemetry_data.cr | 54 + .../qdrant-api/models/text_index_params.cr | 70 + .../src/qdrant-api/models/text_index_type.cr | 15 + .../src/qdrant-api/models/tokenizer_type.cr | 15 + .../src/qdrant-api/models/tracker_status.cr | 90 + .../models/tracker_status_one_of.cr | 42 + .../qdrant-api/models/tracker_telemetry.cr | 60 + .../qdrant-api/models/update_collection.cr | 64 + .../src/qdrant-api/models/update_operation.cr | 130 + .../qdrant-api/models/update_operations.cr | 42 + .../src/qdrant-api/models/update_result.cr | 51 + .../src/qdrant-api/models/update_status.cr | 15 + .../src/qdrant-api/models/update_vectors.cr | 47 + .../models/update_vectors_operation.cr | 42 + .../src/qdrant-api/models/upsert_operation.cr | 42 + .../qdrant-api/models/uuid_index_params.cr | 51 + .../src/qdrant-api/models/uuid_index_type.cr | 15 + .../src/qdrant-api/models/value_variants.cr | 80 + .../src/qdrant-api/models/values_count.cr | 72 + .../src/qdrant-api/models/vector.cr | 90 + .../qdrant-api/models/vector_data_config.cr | 70 + .../src/qdrant-api/models/vector_data_info.cr | 60 + .../models/vector_index_searches_telemetry.cr | 70 + .../src/qdrant-api/models/vector_input.cr | 100 + .../src/qdrant-api/models/vector_params.cr | 71 + .../qdrant-api/models/vector_params_diff.cr | 51 + .../models/vector_storage_datatype.cr | 15 + .../qdrant-api/models/vector_storage_type.cr | 15 + .../src/qdrant-api/models/vector_struct.cr | 91 + .../src/qdrant-api/models/vectors_config.cr | 71 + .../src/qdrant-api/models/version_info.cr | 49 + .../src/qdrant-api/models/wal_config.cr | 55 + .../src/qdrant-api/models/wal_config_diff.cr | 55 + .../qdrant-api/models/web_api_telemetry.cr | 42 + .../src/qdrant-api/models/with_lookup.cr | 52 + .../models/with_lookup_interface.cr | 70 + .../models/with_payload_interface.cr | 81 + .../src/qdrant-api/models/with_vector.cr | 71 + .../src/qdrant-api/models/write_ordering.cr | 15 + .../crystal-qdrant/src/qdrant-api/response.cr | 13 + .../src/qdrant-api/serializable.cr | 33 + .../src/qdrant-api/validation.cr | 37 + 692 files changed, 41117 insertions(+) create mode 100644 bin/configs/crystal-qdrant.yaml create mode 100644 modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json create mode 100644 samples/client/others/crystal-qdrant/.gitignore create mode 100644 samples/client/others/crystal-qdrant/.openapi-generator-ignore create mode 100644 samples/client/others/crystal-qdrant/.openapi-generator/FILES create mode 100644 samples/client/others/crystal-qdrant/.openapi-generator/VERSION create mode 100644 samples/client/others/crystal-qdrant/README.md create mode 100644 samples/client/others/crystal-qdrant/git_push.sh create mode 100644 samples/client/others/crystal-qdrant/shard.yml create mode 100644 samples/client/others/crystal-qdrant/spec/api/aliases_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/cluster/peer_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/cluster_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/collections/index_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/collections/points_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/collections/shards_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/collections/snapshots_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/collections_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/healthz_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/issues_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/livez_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/locks_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/metrics_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/readyz_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/root_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/snapshots_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/api/telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/abort_shard_transfer_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/abort_transfer_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/alias_description_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/alias_operations_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/any_variants_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/app_build_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/app_features_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/batch_payloads_inner_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/batch_update200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/batch_vector_struct_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/binary_quantization_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/binary_quantization_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/bool_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/bool_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/change_aliases_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/clear_payload_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_config_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_operations_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_status200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of1_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_status_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/cluster_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_cluster_info200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_cluster_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_description_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_existence_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_exists200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_params_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_telemetry_enum_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collection_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collections_aggregated_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collections_aliases_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collections_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/collections_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/compression_ratio_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/consensus_config_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of1_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of2_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/context_example_pair_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/context_input_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/context_pair_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/context_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/count_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/count_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/count_result_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_alias_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_alias_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_collection_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_field_index200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_field_index_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_shard_key200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_sharding_key_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_sharding_key_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/create_snapshot200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/datatype_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/datetime_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/datetime_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/datetime_range_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_alias_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_alias_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_payload_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_payload_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_vectors_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/delete_vectors_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/direction_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/disabled_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/discover_input_context_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/discover_input_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/discover_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/discover_request_batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/discover_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/distance_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/document_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/drop_replica_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/error_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/error_response_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/extended_point_id_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/facet200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/facet_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/facet_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/facet_value_hit_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/facet_value_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/field_condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/filter_selector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/filter_should_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/filter_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/float_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/float_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/fusion_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/fusion_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_bounding_box_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_line_string_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_point_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_polygon_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/geo_radius_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_collection200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_collection_aliases200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_collections200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_locks200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_point200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/get_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/group_id_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/groups_result_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/grpc_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/has_id_condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/hnsw_config_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/hnsw_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/indexes_one_of1_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/indexes_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/indexes_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/init_from_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/integer_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/integer_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/is_empty_condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/is_null_condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/keyword_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/keyword_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/list_snapshots200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/local_shard_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/local_shard_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/locks_option_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/lookup_location_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/match_any_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/match_except_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/match_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/match_text_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/match_value_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/message_send_errors_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/min_should_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/modifier_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/move_shard_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/move_shard_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/multi_vector_comparator_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/multi_vector_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/named_sparse_vector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/named_vector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/named_vector_struct_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/nearest_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/nested_condition_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/nested_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/operation_duration_statistics_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/optimizer_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/optimizers_config_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/optimizers_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/optimizers_status_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/optimizers_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/order_by_interface_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/order_by_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/order_by_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/order_value_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/overwrite_payload_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/p2p_config_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_field_schema_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_field_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_index_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_index_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_schema_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_schema_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_selector_exclude_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_selector_include_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_selector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of1_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/payload_storage_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/peer_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_group_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_ids_list_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_insert_operations_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_struct_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/point_vectors_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/points_batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/points_list_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/points_selector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/prefetch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/product_quantization_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/product_quantization_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/quantization_config_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/quantization_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/quantization_search_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_batch_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_groups_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_interface_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_request_batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_request_prefetch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/raft_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/range_interface_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/range_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/read_consistency_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/read_consistency_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_example_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_groups_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_input_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_request_batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recommend_strategy_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/record_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/recover_from_uploaded_snapshot202_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/remote_shard_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/remote_shard_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/rename_alias_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/rename_alias_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/replica_set_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/replica_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/replica_state_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/replicate_shard_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/replicate_shard_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/requests_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/resharding_direction_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/resharding_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/restart_transfer_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/restart_transfer_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/running_environment_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sample_query_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sample_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scalar_quantization_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scalar_quantization_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scalar_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scored_point_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scroll_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scroll_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/scroll_result_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_batch_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_groups_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_pair_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_matrix_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_point_groups200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_points200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_request_batch_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/search_request_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/segment_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/segment_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/segment_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/segment_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/set_payload_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/set_payload_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_key_selector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_key_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_snapshot_location_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_snapshot_recover_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_transfer_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/shard_transfer_method_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sharding_method_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/snapshot_description_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/snapshot_priority_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/snapshot_recover_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_index_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_vector_data_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_vector_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/sparse_vector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/start_from_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/state_role_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/telemetry200_response_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/telemetry_data_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/text_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/text_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/tokenizer_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/tracker_status_one_of_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/tracker_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/tracker_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_collection_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_operations_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_result_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_status_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_vectors_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/update_vectors_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/upsert_operation_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/uuid_index_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/uuid_index_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/value_variants_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/values_count_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_data_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_data_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_index_searches_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_input_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_params_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_params_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_storage_datatype_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_storage_type_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vector_struct_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/vectors_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/version_info_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/wal_config_diff_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/wal_config_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/web_api_telemetry_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/with_lookup_interface_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/with_lookup_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/with_payload_interface_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/with_vector_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/models/write_ordering_spec.cr create mode 100644 samples/client/others/crystal-qdrant/spec/spec_helper.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/aliases.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster/peer.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/collections.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/index.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/points.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/shards.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/snapshots.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/healthz.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/issues.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/livez.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/locks.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/metrics.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/readyz.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/root.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/snapshots.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api/telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/api_error.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/client.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/configuration.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/connection.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_shard_transfer.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_transfer_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_description.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_operations.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/any_variants.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/app_build_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/app_features_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_payloads_inner.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_update200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_vector_struct.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/change_aliases_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/clear_payload_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_config_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_operations.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of1.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_description.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_existence.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_exists200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry_enum.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aggregated_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aliases_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/compression_ratio.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_config_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of1.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of2.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/context_example_pair.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/context_input.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/context_pair.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/context_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/count_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/count_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/count_result.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_collection.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_shard_key200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/create_snapshot200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/datatype.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_range.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/direction.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/disabled.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input_context.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request_batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/distance.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/document.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_replica_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/extended_point_id.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/facet200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value_hit.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/field_condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/filter.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_selector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_should.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_bounding_box.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_line_string.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_point.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_polygon.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_radius.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection_aliases200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collections200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_locks200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_point200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/get_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/group_id.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/groups_result.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/grpc_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/has_id_condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of1.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/init_from.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/is_empty_condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/is_null_condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/list_snapshots200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/locks_option.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/lookup_location.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/match.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/match_any.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/match_except.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/match_text.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/match_value.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/message_send_errors.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/min_should.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/modifier.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_comparator.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/named_sparse_vector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector_struct.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/nearest_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/nested.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/nested_condition.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/operation_duration_statistics.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizer_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_interface.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/order_value.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/overwrite_payload_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/p2p_config_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field_schema.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_exclude.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_include.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of1.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/peer_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_group.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_ids_list.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_insert_operations.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_struct.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/point_vectors.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/points_batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/points_list.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/points_selector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/prefetch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_search_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_batch_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_groups_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_interface.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_prefetch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/query_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/raft_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/range.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/range_interface.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_example.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_groups_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_input.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request_batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_strategy.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/record.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/recover_from_uploaded_snapshot202_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/replica.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_set_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_state.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/requests_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_direction.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/running_environment_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sample.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sample_query.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scored_point.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_result.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_batch_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_groups_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pair.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_point_groups200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_points200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request_batch.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key_selector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_location.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_recover.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_method.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sharding_method.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_description.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_priority.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_recover.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_data_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/start_from.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/state_role.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry200_response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry_data.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/tokenizer_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status_one_of.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_collection.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operations.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_result.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_status.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/upsert_operation.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/value_variants.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/values_count.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_index_searches_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_input.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_datatype.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_type.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_struct.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/vectors_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/version_info.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config_diff.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/web_api_telemetry.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup_interface.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/with_payload_interface.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/with_vector.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/models/write_ordering.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/response.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/serializable.cr create mode 100644 samples/client/others/crystal-qdrant/src/qdrant-api/validation.cr diff --git a/bin/configs/crystal-qdrant.yaml b/bin/configs/crystal-qdrant.yaml new file mode 100644 index 000000000000..86c363f6f07e --- /dev/null +++ b/bin/configs/crystal-qdrant.yaml @@ -0,0 +1,13 @@ +generatorName: crystal +outputDir: samples/client/others/crystal-qdrant +inputSpec: modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json +templateDir: modules/openapi-generator/src/main/resources/crystal +globalProperties: + apiTests: "true" + modelTests: "true" + apiDocs: "false" + modelDocs: "false" +additionalProperties: + moduleName: Qdrant::Api + shardName: qdrant-api + apiNamespace: "" diff --git a/modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json b/modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json new file mode 100644 index 000000000000..ada514b0de01 --- /dev/null +++ b/modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json @@ -0,0 +1,13250 @@ +{ + "paths": { + "/collections/{collection_name}/shards": { + "put": { + "tags": [ + "collections", + "cluster" + ], + "summary": "Create shard key", + "operationId": "create_shard_key", + "requestBody": { + "description": "Shard key configuration", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateShardingKey" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to create shards for", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/shards/delete": { + "post": { + "tags": [ + "collections", + "cluster" + ], + "summary": "Delete shard key", + "operationId": "delete_shard_key", + "requestBody": { + "description": "Select shard key to delete", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DropShardingKey" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to create shards for", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/": { + "get": { + "summary": "Returns information about the running Qdrant instance", + "description": "Returns information about the running Qdrant instance like version and commit id", + "operationId": "root", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "Qdrant server version information", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/VersionInfo" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/telemetry": { + "get": { + "summary": "Collect telemetry data", + "description": "Collect telemetry data including app info, system info, collections info, cluster info, configs and statistics", + "operationId": "telemetry", + "tags": [ + "service" + ], + "parameters": [ + { + "name": "anonymize", + "in": "query", + "description": "If true, anonymize result", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/TelemetryData" + } + } + } + } + } + } + } + } + }, + "/metrics": { + "get": { + "summary": "Collect Prometheus metrics data", + "description": "Collect metrics data including app info, collections info, cluster info and statistics", + "operationId": "metrics", + "tags": [ + "service" + ], + "parameters": [ + { + "name": "anonymize", + "in": "query", + "description": "If true, anonymize result", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Metrics data in Prometheus format", + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "# HELP app_info information about qdrant server\n# TYPE app_info gauge\napp_info{name=\"qdrant\",version=\"0.11.1\"} 1\n# HELP cluster_enabled is cluster support enabled\n# TYPE cluster_enabled gauge\ncluster_enabled 0\n# HELP collections_total number of collections\n# TYPE collections_total gauge\ncollections_total 1\n" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/locks": { + "post": { + "summary": "Set lock options", + "description": "Set lock options. If write is locked, all write operations and collection creation are forbidden. Returns previous lock options", + "operationId": "post_locks", + "tags": [ + "service" + ], + "requestBody": { + "description": "Lock options and optional error message", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LocksOption" + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/LocksOption" + } + } + } + } + } + } + } + }, + "get": { + "summary": "Get lock options", + "description": "Get lock options. If write is locked, all write operations and collection creation are forbidden", + "operationId": "get_locks", + "tags": [ + "service" + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/LocksOption" + } + } + } + } + } + } + } + } + }, + "/healthz": { + "get": { + "summary": "Kubernetes healthz endpoint", + "description": "An endpoint for health checking used in Kubernetes.", + "operationId": "healthz", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "Healthz response", + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "healthz check passed" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/livez": { + "get": { + "summary": "Kubernetes livez endpoint", + "description": "An endpoint for health checking used in Kubernetes.", + "operationId": "livez", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "Healthz response", + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "healthz check passed" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/readyz": { + "get": { + "summary": "Kubernetes readyz endpoint", + "description": "An endpoint for health checking used in Kubernetes.", + "operationId": "readyz", + "tags": [ + "service" + ], + "responses": { + "200": { + "description": "Healthz response", + "content": { + "text/plain": { + "schema": { + "type": "string", + "example": "healthz check passed" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/issues": { + "get": { + "summary": "Get issues", + "description": "Get a report of performance issues and configuration suggestions", + "operationId": "get_issues", + "tags": [ + "beta" + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "4XX": { + "description": "error" + } + } + }, + "delete": { + "summary": "Clear issues", + "description": "Removes all issues reported so far", + "operationId": "clear_issues", + "tags": [ + "beta" + ], + "responses": { + "200": { + "description": "Successful response", + "content": { + "application/json": { + "schema": { + "type": "boolean" + } + } + } + }, + "4XX": { + "description": "error" + } + } + } + }, + "/cluster": { + "get": { + "tags": [ + "cluster" + ], + "summary": "Get cluster status info", + "description": "Get information about the current state and composition of the cluster", + "operationId": "cluster_status", + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/ClusterStatus" + } + } + } + } + } + } + } + } + }, + "/cluster/recover": { + "post": { + "tags": [ + "cluster" + ], + "summary": "Tries to recover current peer Raft state.", + "operationId": "recover_current_peer", + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/cluster/peer/{peer_id}": { + "delete": { + "tags": [ + "cluster" + ], + "summary": "Remove peer from the cluster", + "description": "Tries to remove peer from the cluster. Will return an error if peer has shards on it.", + "operationId": "remove_peer", + "parameters": [ + { + "name": "peer_id", + "in": "path", + "description": "Id of the peer", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "force", + "in": "query", + "description": "If true - removes peer even if it has shards/replicas on it.", + "schema": { + "type": "boolean", + "default": false + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/collections": { + "get": { + "tags": [ + "collections" + ], + "summary": "List collections", + "description": "Get list name of all existing collections", + "operationId": "get_collections", + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionsResponse" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}": { + "get": { + "tags": [ + "collections" + ], + "summary": "Collection info", + "description": "Get detailed information about specified existing collection", + "operationId": "get_collection", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to retrieve", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionInfo" + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "collections" + ], + "summary": "Create collection", + "description": "Create new collection with given parameters", + "operationId": "create_collection", + "requestBody": { + "description": "Parameters of a new collection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateCollection" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the new collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + }, + "patch": { + "tags": [ + "collections" + ], + "summary": "Update collection parameters", + "description": "Update parameters of the existing collection", + "operationId": "update_collection", + "requestBody": { + "description": "New parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateCollection" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to update", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + }, + "delete": { + "tags": [ + "collections" + ], + "summary": "Delete collection", + "description": "Drop collection and all associated data", + "operationId": "delete_collection", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to delete", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/collections/aliases": { + "post": { + "tags": [ + "collections" + ], + "summary": "Update aliases of the collections", + "operationId": "update_aliases", + "requestBody": { + "description": "Alias update operations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeAliasesOperation" + } + } + } + }, + "parameters": [ + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/index": { + "put": { + "tags": [ + "collections" + ], + "summary": "Create index for field in collection", + "description": "Create index for field in collection", + "operationId": "create_field_index", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "requestBody": { + "description": "Field name", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateFieldIndex" + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/exists": { + "get": { + "tags": [ + "collections" + ], + "summary": "Check the existence of a collection", + "description": "Returns \"true\" if the given collection name exists, and \"false\" otherwise", + "operationId": "collection_exists", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionExistence" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/index/{field_name}": { + "delete": { + "tags": [ + "collections" + ], + "summary": "Delete index for field in collection", + "description": "Delete field index for collection", + "operationId": "delete_field_index", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "field_name", + "in": "path", + "description": "Name of the field where to delete the index", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/cluster": { + "get": { + "tags": [ + "collections", + "cluster" + ], + "summary": "Collection cluster info", + "description": "Get cluster information for a collection", + "operationId": "collection_cluster_info", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to retrieve the cluster info for", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionClusterInfo" + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "collections", + "cluster" + ], + "summary": "Update collection cluster setup", + "operationId": "update_collection_cluster", + "requestBody": { + "description": "Collection cluster update operations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClusterOperations" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection on which to to apply the cluster update operation", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "Wait for operation commit timeout in seconds. \nIf timeout is reached - request will return with service error.\n", + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/aliases": { + "get": { + "tags": [ + "collections" + ], + "summary": "List aliases for collection", + "description": "Get list of all aliases for a collection", + "operationId": "get_collection_aliases", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionsAliasesResponse" + } + } + } + } + } + } + } + } + }, + "/aliases": { + "get": { + "tags": [ + "collections" + ], + "summary": "List collections aliases", + "description": "Get list of all existing collections aliases", + "operationId": "get_collections_aliases", + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CollectionsAliasesResponse" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/snapshots/upload": { + "post": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Recover from an uploaded snapshot", + "description": "Recover local collection data from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created.", + "operationId": "recover_from_uploaded_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "priority", + "in": "query", + "description": "Defines source of truth for snapshot recovery", + "required": false, + "schema": { + "$ref": "#/components/schemas/SnapshotPriority" + } + }, + { + "name": "checksum", + "in": "query", + "description": "Optional SHA256 checksum to verify snapshot integrity before recovery.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Snapshot to recover from", + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/snapshots/recover": { + "put": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Recover from a snapshot", + "description": "Recover local collection data from a snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created.", + "operationId": "recover_from_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "description": "Snapshot to recover from", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SnapshotRecover" + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/snapshots": { + "get": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "List collection snapshots", + "description": "Get list of snapshots for a collection", + "operationId": "list_snapshots", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Create collection snapshot", + "description": "Create new snapshot for a collection", + "operationId": "create_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection for which to create a snapshot", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/snapshots/{snapshot_name}": { + "delete": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Delete collection snapshot", + "description": "Delete snapshot for a collection", + "operationId": "delete_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection for which to delete a snapshot", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the snapshot to delete", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Download collection snapshot", + "description": "Download specified snapshot from a collection as a file", + "operationId": "get_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the snapshot to download", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "Snapshot file", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/snapshots": { + "get": { + "tags": [ + "snapshots" + ], + "summary": "List of storage snapshots", + "description": "Get list of snapshots of the whole storage", + "operationId": "list_full_snapshots", + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "snapshots" + ], + "summary": "Create storage snapshot", + "description": "Create new snapshot of the whole storage", + "operationId": "create_full_snapshot", + "parameters": [ + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/snapshots/{snapshot_name}": { + "delete": { + "tags": [ + "snapshots" + ], + "summary": "Delete storage snapshot", + "description": "Delete snapshot of the whole storage", + "operationId": "delete_full_snapshot", + "parameters": [ + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the full snapshot to delete", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "snapshots" + ], + "summary": "Download storage snapshot", + "description": "Download specified snapshot of the whole storage as a file", + "operationId": "get_full_snapshot", + "parameters": [ + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the snapshot to download", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "Snapshot file", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/collections/{collection_name}/shards/{shard_id}/snapshots/upload": { + "post": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Recover shard from an uploaded snapshot", + "description": "Recover shard of a local collection from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection shard.", + "operationId": "recover_shard_from_uploaded_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard to recover", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "priority", + "in": "query", + "description": "Defines source of truth for snapshot recovery", + "required": false, + "schema": { + "$ref": "#/components/schemas/SnapshotPriority" + } + }, + { + "name": "checksum", + "in": "query", + "description": "Optional SHA256 checksum to verify snapshot integrity before recovery.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "Snapshot to recover from", + "content": { + "multipart/form-data": { + "schema": { + "type": "object", + "properties": { + "snapshot": { + "type": "string", + "format": "binary" + } + } + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/shards/{shard_id}/snapshots/recover": { + "put": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Recover from a snapshot", + "description": "Recover shard of a local collection data from a snapshot. This will overwrite any data, stored in this shard, for the collection.", + "operationId": "recover_shard_from_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard to recover", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "description": "Snapshot to recover from", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ShardSnapshotRecover" + } + } + } + }, + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/shards/{shard_id}/snapshots": { + "get": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "List shards snapshots for a collection", + "description": "Get list of snapshots for a shard of a collection", + "operationId": "list_shard_snapshots", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard", + "required": true, + "schema": { + "type": "integer" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + } + } + } + }, + "post": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Create shard snapshot", + "description": "Create new snapshot of a shard for a collection", + "operationId": "create_shard_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection for which to create a snapshot", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/SnapshotDescription" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}": { + "delete": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Delete shard snapshot", + "description": "Delete snapshot of a shard for a collection", + "operationId": "delete_shard_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection for which to delete a snapshot", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the snapshot to delete", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen. If false - let changes happen in background. Default is true.", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "boolean" + } + } + } + } + } + }, + "202": { + "description": "operation is accepted", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "string" + } + } + } + } + } + } + } + }, + "get": { + "tags": [ + "snapshots", + "collections" + ], + "summary": "Download collection snapshot", + "description": "Download specified snapshot of a shard from a collection as a file", + "operationId": "get_shard_snapshot", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "shard_id", + "in": "path", + "description": "Id of the shard", + "required": true, + "schema": { + "type": "integer" + } + }, + { + "name": "snapshot_name", + "in": "path", + "description": "Name of the snapshot to download", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "Snapshot file", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/{id}": { + "get": { + "tags": [ + "points" + ], + "summary": "Get point", + "description": "Retrieve full information of single point by id", + "operationId": "get_point", + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to retrieve from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "id", + "in": "path", + "description": "Id of the point", + "required": true, + "schema": { + "$ref": "#/components/schemas/ExtendedPointId" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/Record" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points": { + "post": { + "tags": [ + "points" + ], + "summary": "Get points", + "description": "Retrieve multiple points by specified IDs", + "operationId": "get_points", + "requestBody": { + "description": "List of points to retrieve", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to retrieve from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Record" + } + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "points" + ], + "summary": "Upsert points", + "description": "Perform insert + updates on points. If point with given ID already exists - it will be overwritten.", + "operationId": "upsert_points", + "requestBody": { + "description": "Operation to perform on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointInsertOperations" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to update from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/delete": { + "post": { + "tags": [ + "points" + ], + "summary": "Delete points", + "description": "Delete points", + "operationId": "delete_points", + "requestBody": { + "description": "Operation to perform on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointsSelector" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to delete from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/vectors": { + "put": { + "tags": [ + "points" + ], + "summary": "Update vectors", + "description": "Update specified named vectors on points, keep unspecified vectors intact.", + "operationId": "update_vectors", + "requestBody": { + "description": "Update named vectors on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateVectors" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to update from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/vectors/delete": { + "post": { + "tags": [ + "points" + ], + "summary": "Delete vectors", + "description": "Delete named vectors from the given points.", + "operationId": "delete_vectors", + "requestBody": { + "description": "Delete named vectors from points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeleteVectors" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to delete from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/payload": { + "post": { + "tags": [ + "points" + ], + "summary": "Set payload", + "description": "Set payload values for points", + "operationId": "set_payload", + "requestBody": { + "description": "Set payload on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetPayload" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to set from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + }, + "put": { + "tags": [ + "points" + ], + "summary": "Overwrite payload", + "description": "Replace full payload of points with new one", + "operationId": "overwrite_payload", + "requestBody": { + "description": "Payload and points selector", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SetPayload" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to set from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/payload/delete": { + "post": { + "tags": [ + "points" + ], + "summary": "Delete payload", + "description": "Delete specified key payload for points", + "operationId": "delete_payload", + "requestBody": { + "description": "delete payload on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeletePayload" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to delete from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/payload/clear": { + "post": { + "tags": [ + "points" + ], + "summary": "Clear payload", + "description": "Remove all payload for specified points", + "operationId": "clear_payload", + "requestBody": { + "description": "clear payload on points", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PointsSelector" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to clear payload from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/batch": { + "post": { + "tags": [ + "points" + ], + "summary": "Batch update points", + "description": "Apply a series of update operations for points, vectors and payloads", + "operationId": "batch_update", + "requestBody": { + "description": "update operations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOperations" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to apply operations on", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "wait", + "in": "query", + "description": "If true, wait for changes to actually happen", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "ordering", + "in": "query", + "description": "define ordering guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/WriteOrdering" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateResult" + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/scroll": { + "post": { + "tags": [ + "points" + ], + "summary": "Scroll points", + "description": "Scroll request - paginate over all points which matches given filtering condition", + "operationId": "scroll_points", + "requestBody": { + "description": "Pagination and filter parameters", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ScrollRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to retrieve from", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/ScrollResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/search": { + "post": { + "tags": [ + "points" + ], + "summary": "Search points", + "description": "Retrieve closest points based on vector similarity and given filtering conditions", + "operationId": "search_points", + "requestBody": { + "description": "Search request with optional filtering", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/search/batch": { + "post": { + "tags": [ + "points" + ], + "summary": "Search batch points", + "description": "Retrieve by batch the closest points based on vector similarity and given filtering conditions", + "operationId": "search_batch_points", + "requestBody": { + "description": "Search batch request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchRequestBatch" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/search/groups": { + "post": { + "tags": [ + "points" + ], + "summary": "Search point groups", + "description": "Retrieve closest points based on vector similarity and given filtering conditions, grouped by a given payload field", + "operationId": "search_point_groups", + "requestBody": { + "description": "Search request with optional filtering, grouped by a given payload field", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchGroupsRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/GroupsResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/recommend": { + "post": { + "tags": [ + "points" + ], + "summary": "Recommend points", + "description": "Look for the points which are closer to stored positive examples and at the same time further to negative examples.", + "operationId": "recommend_points", + "requestBody": { + "description": "Request points based on positive and negative examples.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecommendRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/recommend/batch": { + "post": { + "tags": [ + "points" + ], + "summary": "Recommend batch points", + "description": "Look for the points which are closer to stored positive examples and at the same time further to negative examples.", + "operationId": "recommend_batch_points", + "requestBody": { + "description": "Request points based on positive and negative examples.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecommendRequestBatch" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/recommend/groups": { + "post": { + "tags": [ + "points" + ], + "summary": "Recommend point groups", + "description": "Look for the points which are closer to stored positive examples and at the same time further to negative examples, grouped by a given payload field.", + "operationId": "recommend_point_groups", + "requestBody": { + "description": "Request points based on positive and negative examples, grouped by a payload field.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RecommendGroupsRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/GroupsResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/discover": { + "post": { + "tags": [ + "points" + ], + "summary": "Discover points", + "description": "Use context and a target to find the most similar points to the target, constrained by the context.\nWhen using only the context (without a target), a special search - called context search - is performed where pairs of points are used to generate a loss that guides the search towards the zone where most positive examples overlap. This means that the score minimizes the scenario of finding a point closer to a negative than to a positive part of a pair.\nSince the score of a context relates to loss, the maximum score a point can get is 0.0, and it becomes normal that many points can have a score of 0.0.\nWhen using target (with or without context), the score behaves a little different: The integer part of the score represents the rank with respect to the context, while the decimal part of the score relates to the distance to the target. The context part of the score for each pair is calculated +1 if the point is closer to a positive than to a negative part of a pair, and -1 otherwise.\n", + "operationId": "discover_points", + "requestBody": { + "description": "Request points based on {positive, negative} pairs of examples, and/or a target", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DiscoverRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/discover/batch": { + "post": { + "tags": [ + "points" + ], + "summary": "Discover batch points", + "description": "Look for points based on target and/or positive and negative example pairs, in batch.", + "operationId": "discover_batch_points", + "requestBody": { + "description": "Batch request points based on { positive, negative } pairs of examples, and/or a target.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DiscoverRequestBatch" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/count": { + "post": { + "tags": [ + "points" + ], + "summary": "Count points", + "description": "Count points which matches given filtering condition", + "operationId": "count_points", + "requestBody": { + "description": "Request counts of points which matches given filtering condition", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CountRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to count in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/CountResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/facet": { + "post": { + "tags": [ + "points" + ], + "summary": "Facet a payload key with a given filter.", + "description": "Count points that satisfy the given filter for each unique value of a payload key.", + "operationId": "facet", + "requestBody": { + "description": "Request counts of points for each unique value of a payload key", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FacetRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to facet in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/FacetResponse" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/query": { + "post": { + "tags": [ + "points" + ], + "summary": "Query points", + "description": "Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries.", + "operationId": "query_points", + "requestBody": { + "description": "Describes the query to make to the collection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/QueryResponse" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/query/batch": { + "post": { + "tags": [ + "points" + ], + "summary": "Query points in batch", + "description": "Universally query points in batch. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries.", + "operationId": "query_batch_points", + "requestBody": { + "description": "Describes the queries to make to the collection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryRequestBatch" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueryResponse" + } + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/query/groups": { + "post": { + "tags": [ + "points" + ], + "summary": "Query points, grouped by a given payload field", + "description": "Universally query points, grouped by a given payload field", + "operationId": "query_points_groups", + "requestBody": { + "description": "Describes the query to make to the collection", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QueryGroupsRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/GroupsResult" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/search/matrix/pairs": { + "post": { + "tags": [ + "points" + ], + "summary": "Search points matrix distance pairs", + "description": "Compute distance matrix for sampled points with a pair based output format", + "operationId": "search_matrix_pairs", + "requestBody": { + "description": "Search matrix request with optional filtering", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchMatrixRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/SearchMatrixPairsResponse" + } + } + } + } + } + } + } + } + }, + "/collections/{collection_name}/points/search/matrix/offsets": { + "post": { + "tags": [ + "points" + ], + "summary": "Search points matrix distance offsets", + "description": "Compute distance matrix for sampled points with an offset based output format", + "operationId": "search_matrix_offsets", + "requestBody": { + "description": "Search matrix request with optional filtering", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchMatrixRequest" + } + } + } + }, + "parameters": [ + { + "name": "collection_name", + "in": "path", + "description": "Name of the collection to search in", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "consistency", + "in": "query", + "description": "Define read consistency guarantees for the operation", + "required": false, + "schema": { + "$ref": "#/components/schemas/ReadConsistency" + } + }, + { + "name": "timeout", + "in": "query", + "description": "If set, overrides global timeout for this request. Unit is seconds.", + "required": false, + "schema": { + "type": "integer", + "minimum": 1 + } + } + ], + "responses": { + "default": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "4XX": { + "description": "error", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ErrorResponse" + } + } + } + }, + "200": { + "description": "successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request", + "example": 0.002 + }, + "status": { + "type": "string", + "example": "ok" + }, + "result": { + "$ref": "#/components/schemas/SearchMatrixOffsetsResponse" + } + } + } + } + } + } + } + } + } + }, + "openapi": "3.0.1", + "security": [ + { + "api-key": [] + }, + { + "bearerAuth": [] + }, + {} + ], + "info": { + "title": "Qdrant API", + "description": "API description for Qdrant vector search engine.\n\nThis document describes CRUD and search operations on collections of points (vectors with payload).\n\nQdrant supports any combinations of `should`, `min_should`, `must` and `must_not` conditions, which makes it possible to use in applications when object could not be described solely by vector. It could be location features, availability flags, and other custom properties businesses should take into account.\n## Examples\nThis examples cover the most basic use-cases - collection creation and basic vector search.\n### Create collection\nFirst - let's create a collection with dot-production metric.\n```\ncurl -X PUT 'http://localhost:6333/collections/test_collection' \\\n -H 'Content-Type: application/json' \\\n --data-raw '{\n \"vectors\": {\n \"size\": 4,\n \"distance\": \"Dot\"\n }\n }'\n\n```\nExpected response:\n```\n{\n \"result\": true,\n \"status\": \"ok\",\n \"time\": 0.031095451\n}\n```\nWe can ensure that collection was created:\n```\ncurl 'http://localhost:6333/collections/test_collection'\n```\nExpected response:\n```\n{\n \"result\": {\n \"status\": \"green\",\n \"vectors_count\": 0,\n \"segments_count\": 5,\n \"disk_data_size\": 0,\n \"ram_data_size\": 0,\n \"config\": {\n \"params\": {\n \"vectors\": {\n \"size\": 4,\n \"distance\": \"Dot\"\n }\n },\n \"hnsw_config\": {\n \"m\": 16,\n \"ef_construct\": 100,\n \"full_scan_threshold\": 10000\n },\n \"optimizer_config\": {\n \"deleted_threshold\": 0.2,\n \"vacuum_min_vector_number\": 1000,\n \"default_segment_number\": 2,\n \"max_segment_size\": null,\n \"memmap_threshold\": null,\n \"indexing_threshold\": 20000,\n \"flush_interval_sec\": 5,\n \"max_optimization_threads\": null\n },\n \"wal_config\": {\n \"wal_capacity_mb\": 32,\n \"wal_segments_ahead\": 0\n }\n }\n },\n \"status\": \"ok\",\n \"time\": 2.1199e-05\n}\n```\n\n### Add points\nLet's now add vectors with some payload:\n```\ncurl -L -X PUT 'http://localhost:6333/collections/test_collection/points?wait=true' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"points\": [\n {\"id\": 1, \"vector\": [0.05, 0.61, 0.76, 0.74], \"payload\": {\"city\": \"Berlin\"}},\n {\"id\": 2, \"vector\": [0.19, 0.81, 0.75, 0.11], \"payload\": {\"city\": [\"Berlin\", \"London\"] }},\n {\"id\": 3, \"vector\": [0.36, 0.55, 0.47, 0.94], \"payload\": {\"city\": [\"Berlin\", \"Moscow\"] }},\n {\"id\": 4, \"vector\": [0.18, 0.01, 0.85, 0.80], \"payload\": {\"city\": [\"London\", \"Moscow\"] }},\n {\"id\": 5, \"vector\": [0.24, 0.18, 0.22, 0.44], \"payload\": {\"count\": [0]}},\n {\"id\": 6, \"vector\": [0.35, 0.08, 0.11, 0.44]}\n ]\n}'\n```\nExpected response:\n```\n{\n \"result\": {\n \"operation_id\": 0,\n \"status\": \"completed\"\n },\n \"status\": \"ok\",\n \"time\": 0.000206061\n}\n```\n### Search with filtering\nLet's start with a basic request:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"vector\": [0.2,0.1,0.9,0.7],\n \"top\": 3\n}'\n```\nExpected response:\n```\n{\n \"result\": [\n { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n { \"id\": 1, \"score\": 1.273, \"payload\": null, \"version\": 0 },\n { \"id\": 3, \"score\": 1.208, \"payload\": null, \"version\": 0 }\n ],\n \"status\": \"ok\",\n \"time\": 0.000055785\n}\n```\nBut result is different if we add a filter:\n```\ncurl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{\n \"filter\": {\n \"should\": [\n {\n \"key\": \"city\",\n \"match\": {\n \"value\": \"London\"\n }\n }\n ]\n },\n \"vector\": [0.2, 0.1, 0.9, 0.7],\n \"top\": 3\n}'\n```\nExpected response:\n```\n{\n \"result\": [\n { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 },\n { \"id\": 2, \"score\": 0.871, \"payload\": null, \"version\": 0 }\n ],\n \"status\": \"ok\",\n \"time\": 0.000093972\n}\n```\n", + "contact": { + "email": "andrey@vasnetsov.com" + }, + "license": { + "name": "Apache 2.0", + "url": "http://www.apache.org/licenses/LICENSE-2.0.html" + }, + "version": "master" + }, + "externalDocs": { + "description": "Find out more about Qdrant applications and demo", + "url": "https://qdrant.tech/documentation/" + }, + "servers": [ + { + "url": "{protocol}://{hostname}:{port}", + "variables": { + "protocol": { + "enum": [ + "http", + "https" + ], + "default": "http" + }, + "hostname": { + "default": "localhost" + }, + "port": { + "default": "6333" + } + } + } + ], + "tags": [ + { + "name": "collections", + "description": "Searchable collections of points." + }, + { + "name": "points", + "description": "Float-point vectors with payload." + }, + { + "name": "cluster", + "description": "Service distributed setup." + }, + { + "name": "snapshots", + "description": "Storage and collections snapshots." + }, + { + "name": "service", + "description": "Qdrant service utilities." + }, + { + "name": "beta", + "description": "Beta features, do not depend on these yet." + } + ], + "components": { + "securitySchemes": { + "api-key": { + "type": "apiKey", + "in": "header", + "name": "api-key", + "description": "Authorization key, either read-write or read-only" + }, + "bearerAuth": { + "type": "http", + "scheme": "bearer" + } + }, + "schemas": { + "ErrorResponse": { + "type": "object", + "properties": { + "time": { + "type": "number", + "format": "float", + "description": "Time spent to process this request" + }, + "status": { + "type": "object", + "properties": { + "error": { + "type": "string", + "description": "Description of the occurred error." + } + } + }, + "result": { + "type": "object", + "nullable": true + } + } + }, + "CollectionsResponse": { + "type": "object", + "required": [ + "collections" + ], + "properties": { + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionDescription" + } + } + }, + "example": { + "collections": [ + { + "name": "arivx-title" + }, + { + "name": "arivx-abstract" + }, + { + "name": "medium-title" + }, + { + "name": "medium-text" + } + ] + } + }, + "CollectionDescription": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + } + } + }, + "CollectionInfo": { + "description": "Current statistics and configuration of the collection", + "type": "object", + "required": [ + "config", + "optimizer_status", + "payload_schema", + "segments_count", + "status" + ], + "properties": { + "status": { + "$ref": "#/components/schemas/CollectionStatus" + }, + "optimizer_status": { + "$ref": "#/components/schemas/OptimizersStatus" + }, + "vectors_count": { + "description": "DEPRECATED: Approximate number of vectors in collection. All vectors in collection are available for querying. Calculated as `points_count x vectors_per_point`. Where `vectors_per_point` is a number of named vectors in schema.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "indexed_vectors_count": { + "description": "Approximate number of indexed vectors in the collection. Indexed vectors in large segments are faster to query, as it is stored in a specialized vector index.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "points_count": { + "description": "Approximate number of points (vectors + payloads) in collection. Each point could be accessed by unique id.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "segments_count": { + "description": "Number of segments in collection. Each segment has independent vector as payload indexes", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "config": { + "$ref": "#/components/schemas/CollectionConfig" + }, + "payload_schema": { + "description": "Types of stored payload", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/PayloadIndexInfo" + } + } + } + }, + "CollectionStatus": { + "description": "Current state of the collection. `Green` - all good. `Yellow` - optimization is running, 'Grey' - optimizations are possible but not triggered, `Red` - some operations failed and was not recovered", + "type": "string", + "enum": [ + "green", + "yellow", + "grey", + "red" + ] + }, + "OptimizersStatus": { + "description": "Current state of the collection", + "oneOf": [ + { + "description": "Optimizers are reporting as expected", + "type": "string", + "enum": [ + "ok" + ] + }, + { + "description": "Something wrong happened with optimizers", + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "CollectionConfig": { + "type": "object", + "required": [ + "hnsw_config", + "optimizer_config", + "params", + "wal_config" + ], + "properties": { + "params": { + "$ref": "#/components/schemas/CollectionParams" + }, + "hnsw_config": { + "$ref": "#/components/schemas/HnswConfig" + }, + "optimizer_config": { + "$ref": "#/components/schemas/OptimizersConfig" + }, + "wal_config": { + "$ref": "#/components/schemas/WalConfig" + }, + "quantization_config": { + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfig" + }, + { + "nullable": true + } + ] + } + } + }, + "CollectionParams": { + "type": "object", + "properties": { + "vectors": { + "$ref": "#/components/schemas/VectorsConfig" + }, + "shard_number": { + "description": "Number of shards the collection has", + "default": 1, + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "sharding_method": { + "description": "Sharding method Default is Auto - points are distributed across all available shards Custom - points are distributed across shards according to shard key", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardingMethod" + }, + { + "nullable": true + } + ] + }, + "replication_factor": { + "description": "Number of replicas for each shard", + "default": 1, + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "write_consistency_factor": { + "description": "Defines how many replicas should apply the operation for us to consider it successful. Increasing this number will make the collection more resilient to inconsistencies, but will also make it fail if not enough replicas are available. Does not have any performance impact.", + "default": 1, + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "read_fan_out_factor": { + "description": "Defines how many additional replicas should be processing read request at the same time. Default value is Auto, which means that fan-out will be determined automatically based on the busyness of the local replica. Having more than 0 might be useful to smooth latency spikes of individual nodes.", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "on_disk_payload": { + "description": "If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM.", + "default": false, + "type": "boolean" + }, + "sparse_vectors": { + "description": "Configuration of the sparse vector storage", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/SparseVectorParams" + }, + "nullable": true + } + } + }, + "VectorsConfig": { + "description": "Vector params separator for single and multiple vector modes Single mode:\n\n{ \"size\": 128, \"distance\": \"Cosine\" }\n\nor multiple mode:\n\n{ \"default\": { \"size\": 128, \"distance\": \"Cosine\" } }", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorParams" + }, + { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VectorParams" + } + } + ] + }, + "VectorParams": { + "description": "Params of single vector data storage", + "type": "object", + "required": [ + "distance", + "size" + ], + "properties": { + "size": { + "description": "Size of a vectors used", + "type": "integer", + "format": "uint64", + "minimum": 1 + }, + "distance": { + "$ref": "#/components/schemas/Distance" + }, + "hnsw_config": { + "description": "Custom params for HNSW index. If none - values from collection configuration are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/HnswConfigDiff" + }, + { + "nullable": true + } + ] + }, + "quantization_config": { + "description": "Custom params for quantization. If none - values from collection configuration are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfig" + }, + { + "nullable": true + } + ] + }, + "on_disk": { + "description": "If true, vectors are served from disk, improving RAM usage at the cost of latency Default: false", + "type": "boolean", + "nullable": true + }, + "datatype": { + "description": "Defines which datatype should be used to represent vectors in the storage. Choosing different datatypes allows to optimize memory usage and performance vs accuracy.\n\n- For `float32` datatype - vectors are stored as single-precision floating point numbers, 4 bytes. - For `float16` datatype - vectors are stored as half-precision floating point numbers, 2 bytes. - For `uint8` datatype - vectors are stored as unsigned 8-bit integers, 1 byte. It expects vector elements to be in range `[0, 255]`.", + "anyOf": [ + { + "$ref": "#/components/schemas/Datatype" + }, + { + "nullable": true + } + ] + }, + "multivector_config": { + "anyOf": [ + { + "$ref": "#/components/schemas/MultiVectorConfig" + }, + { + "nullable": true + } + ] + } + } + }, + "Distance": { + "description": "Type of internal tags, build from payload Distance function types used to compare vectors", + "type": "string", + "enum": [ + "Cosine", + "Euclid", + "Dot", + "Manhattan" + ] + }, + "HnswConfigDiff": { + "type": "object", + "properties": { + "m": { + "description": "Number of edges per node in the index graph. Larger the value - more accurate the search, more space required.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "ef_construct": { + "description": "Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build the index.", + "type": "integer", + "format": "uint", + "minimum": 4, + "nullable": true + }, + "full_scan_threshold": { + "description": "Minimal size (in kilobytes) of vectors for additional payload-based indexing. If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used - in this case full-scan search should be preferred by query planner and additional indexing is not required. Note: 1Kb = 1 vector of size 256", + "type": "integer", + "format": "uint", + "minimum": 10, + "nullable": true + }, + "max_indexing_threads": { + "description": "Number of parallel threads used for background index building. If 0 - automatically select from 8 to 16. Best to keep between 8 and 16 to prevent likelihood of building broken/inefficient HNSW graphs. On small CPUs, less threads are used.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "on_disk": { + "description": "Store HNSW index on disk. If set to false, the index will be stored in RAM. Default: false", + "type": "boolean", + "nullable": true + }, + "payload_m": { + "description": "Custom M param for additional payload-aware HNSW links. If not set, default M will be used.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "QuantizationConfig": { + "anyOf": [ + { + "$ref": "#/components/schemas/ScalarQuantization" + }, + { + "$ref": "#/components/schemas/ProductQuantization" + }, + { + "$ref": "#/components/schemas/BinaryQuantization" + } + ] + }, + "ScalarQuantization": { + "type": "object", + "required": [ + "scalar" + ], + "properties": { + "scalar": { + "$ref": "#/components/schemas/ScalarQuantizationConfig" + } + } + }, + "ScalarQuantizationConfig": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/ScalarType" + }, + "quantile": { + "description": "Quantile for quantization. Expected value range in [0.5, 1.0]. If not set - use the whole range of values", + "type": "number", + "format": "float", + "maximum": 1, + "minimum": 0.5, + "nullable": true + }, + "always_ram": { + "description": "If true - quantized vectors always will be stored in RAM, ignoring the config of main storage", + "type": "boolean", + "nullable": true + } + } + }, + "ScalarType": { + "type": "string", + "enum": [ + "int8" + ] + }, + "ProductQuantization": { + "type": "object", + "required": [ + "product" + ], + "properties": { + "product": { + "$ref": "#/components/schemas/ProductQuantizationConfig" + } + } + }, + "ProductQuantizationConfig": { + "type": "object", + "required": [ + "compression" + ], + "properties": { + "compression": { + "$ref": "#/components/schemas/CompressionRatio" + }, + "always_ram": { + "type": "boolean", + "nullable": true + } + } + }, + "CompressionRatio": { + "type": "string", + "enum": [ + "x4", + "x8", + "x16", + "x32", + "x64" + ] + }, + "BinaryQuantization": { + "type": "object", + "required": [ + "binary" + ], + "properties": { + "binary": { + "$ref": "#/components/schemas/BinaryQuantizationConfig" + } + } + }, + "BinaryQuantizationConfig": { + "type": "object", + "properties": { + "always_ram": { + "type": "boolean", + "nullable": true + } + } + }, + "Datatype": { + "type": "string", + "enum": [ + "float32", + "uint8", + "float16" + ] + }, + "MultiVectorConfig": { + "type": "object", + "required": [ + "comparator" + ], + "properties": { + "comparator": { + "$ref": "#/components/schemas/MultiVectorComparator" + } + } + }, + "MultiVectorComparator": { + "type": "string", + "enum": [ + "max_sim" + ] + }, + "ShardingMethod": { + "type": "string", + "enum": [ + "auto", + "custom" + ] + }, + "SparseVectorParams": { + "description": "Params of single sparse vector data storage", + "type": "object", + "properties": { + "index": { + "description": "Custom params for index. If none - values from collection configuration are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/SparseIndexParams" + }, + { + "nullable": true + } + ] + }, + "modifier": { + "description": "Configures addition value modifications for sparse vectors. Default: none", + "anyOf": [ + { + "$ref": "#/components/schemas/Modifier" + }, + { + "nullable": true + } + ] + } + } + }, + "SparseIndexParams": { + "description": "Configuration for sparse inverted index.", + "type": "object", + "properties": { + "full_scan_threshold": { + "description": "We prefer a full scan search upto (excluding) this number of vectors.\n\nNote: this is number of vectors, not KiloBytes.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "on_disk": { + "description": "Store index on disk. If set to false, the index will be stored in RAM. Default: false", + "type": "boolean", + "nullable": true + }, + "datatype": { + "description": "Defines which datatype should be used for the index. Choosing different datatypes allows to optimize memory usage and performance vs accuracy.\n\n- For `float32` datatype - vectors are stored as single-precision floating point numbers, 4 bytes. - For `float16` datatype - vectors are stored as half-precision floating point numbers, 2 bytes. - For `uint8` datatype - vectors are quantized to unsigned 8-bit integers, 1 byte. Quantization to fit byte range `[0, 255]` happens during indexing automatically, so the actual vector data does not need to conform to this range.", + "anyOf": [ + { + "$ref": "#/components/schemas/Datatype" + }, + { + "nullable": true + } + ] + } + } + }, + "Modifier": { + "description": "If used, include weight modification, which will be applied to sparse vectors at query time: None - no modification (default) Idf - inverse document frequency, based on statistics of the collection", + "type": "string", + "enum": [ + "none", + "idf" + ] + }, + "HnswConfig": { + "description": "Config of HNSW index", + "type": "object", + "required": [ + "ef_construct", + "full_scan_threshold", + "m" + ], + "properties": { + "m": { + "description": "Number of edges per node in the index graph. Larger the value - more accurate the search, more space required.", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "ef_construct": { + "description": "Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build index.", + "type": "integer", + "format": "uint", + "minimum": 4 + }, + "full_scan_threshold": { + "description": "Minimal size (in KiloBytes) of vectors for additional payload-based indexing. If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used - in this case full-scan search should be preferred by query planner and additional indexing is not required. Note: 1Kb = 1 vector of size 256", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "max_indexing_threads": { + "description": "Number of parallel threads used for background index building. If 0 - automatically select from 8 to 16. Best to keep between 8 and 16 to prevent likelihood of slow building or broken/inefficient HNSW graphs. On small CPUs, less threads are used.", + "default": 0, + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "on_disk": { + "description": "Store HNSW index on disk. If set to false, index will be stored in RAM. Default: false", + "type": "boolean", + "nullable": true + }, + "payload_m": { + "description": "Custom M param for hnsw graph built for payload index. If not set, default M will be used.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "OptimizersConfig": { + "type": "object", + "required": [ + "default_segment_number", + "deleted_threshold", + "flush_interval_sec", + "vacuum_min_vector_number" + ], + "properties": { + "deleted_threshold": { + "description": "The minimal fraction of deleted vectors in a segment, required to perform segment optimization", + "type": "number", + "format": "double", + "maximum": 1, + "minimum": 0 + }, + "vacuum_min_vector_number": { + "description": "The minimal number of vectors in a segment, required to perform segment optimization", + "type": "integer", + "format": "uint", + "minimum": 100 + }, + "default_segment_number": { + "description": "Target amount of segments optimizer will try to keep. Real amount of segments may vary depending on multiple parameters: - Amount of stored points - Current write RPS\n\nIt is recommended to select default number of segments as a factor of the number of search threads, so that each segment would be handled evenly by one of the threads. If `default_segment_number = 0`, will be automatically selected by the number of available CPUs.", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "max_segment_size": { + "description": "Do not create segments larger this size (in kilobytes). Large segments might require disproportionately long indexation times, therefore it makes sense to limit the size of segments.\n\nIf indexing speed is more important - make this parameter lower. If search speed is more important - make this parameter higher. Note: 1Kb = 1 vector of size 256 If not set, will be automatically selected considering the number of available CPUs.", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "memmap_threshold": { + "description": "Maximum size (in kilobytes) of vectors to store in-memory per segment. Segments larger than this threshold will be stored as read-only memmaped file.\n\nMemmap storage is disabled by default, to enable it, set this threshold to a reasonable value.\n\nTo disable memmap storage, set this to `0`. Internally it will use the largest threshold possible.\n\nNote: 1Kb = 1 vector of size 256", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "indexing_threshold": { + "description": "Maximum size (in kilobytes) of vectors allowed for plain index, exceeding this threshold will enable vector indexing\n\nDefault value is 20,000, based on .\n\nTo disable vector indexing, set to `0`.\n\nNote: 1kB = 1 vector of size 256.", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "flush_interval_sec": { + "description": "Minimum interval between forced flushes.", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "max_optimization_threads": { + "description": "Max number of threads (jobs) for running optimizations per shard. Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. If null - have no limit and choose dynamically to saturate CPU. If 0 - no optimization threads, optimizations will be disabled.", + "default": null, + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "WalConfig": { + "type": "object", + "required": [ + "wal_capacity_mb", + "wal_segments_ahead" + ], + "properties": { + "wal_capacity_mb": { + "description": "Size of a single WAL segment in MB", + "type": "integer", + "format": "uint", + "minimum": 1 + }, + "wal_segments_ahead": { + "description": "Number of WAL segments to create ahead of actually used ones", + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "PayloadIndexInfo": { + "description": "Display payload field type & index information", + "type": "object", + "required": [ + "data_type", + "points" + ], + "properties": { + "data_type": { + "$ref": "#/components/schemas/PayloadSchemaType" + }, + "params": { + "anyOf": [ + { + "$ref": "#/components/schemas/PayloadSchemaParams" + }, + { + "nullable": true + } + ] + }, + "points": { + "description": "Number of points indexed with this index", + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "PayloadSchemaType": { + "description": "All possible names of payload types", + "type": "string", + "enum": [ + "keyword", + "integer", + "float", + "geo", + "text", + "bool", + "datetime", + "uuid" + ] + }, + "PayloadSchemaParams": { + "description": "Payload type with parameters", + "anyOf": [ + { + "$ref": "#/components/schemas/KeywordIndexParams" + }, + { + "$ref": "#/components/schemas/IntegerIndexParams" + }, + { + "$ref": "#/components/schemas/FloatIndexParams" + }, + { + "$ref": "#/components/schemas/GeoIndexParams" + }, + { + "$ref": "#/components/schemas/TextIndexParams" + }, + { + "$ref": "#/components/schemas/BoolIndexParams" + }, + { + "$ref": "#/components/schemas/DatetimeIndexParams" + }, + { + "$ref": "#/components/schemas/UuidIndexParams" + } + ] + }, + "KeywordIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/KeywordIndexType" + }, + "is_tenant": { + "description": "If true - used for tenant optimization. Default: false.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "KeywordIndexType": { + "type": "string", + "enum": [ + "keyword" + ] + }, + "IntegerIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/IntegerIndexType" + }, + "lookup": { + "description": "If true - support direct lookups.", + "type": "boolean", + "nullable": true + }, + "range": { + "description": "If true - support ranges filters.", + "type": "boolean", + "nullable": true + }, + "is_principal": { + "description": "If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "IntegerIndexType": { + "type": "string", + "enum": [ + "integer" + ] + }, + "FloatIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/FloatIndexType" + }, + "is_principal": { + "description": "If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "FloatIndexType": { + "type": "string", + "enum": [ + "float" + ] + }, + "GeoIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/GeoIndexType" + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "GeoIndexType": { + "type": "string", + "enum": [ + "geo" + ] + }, + "TextIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/TextIndexType" + }, + "tokenizer": { + "$ref": "#/components/schemas/TokenizerType" + }, + "min_token_len": { + "description": "Minimum characters to be tokenized.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "max_token_len": { + "description": "Maximum characters to be tokenized.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "lowercase": { + "description": "If true, lowercase all tokens. Default: true.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "TextIndexType": { + "type": "string", + "enum": [ + "text" + ] + }, + "TokenizerType": { + "type": "string", + "enum": [ + "prefix", + "whitespace", + "word", + "multilingual" + ] + }, + "BoolIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/BoolIndexType" + } + } + }, + "BoolIndexType": { + "type": "string", + "enum": [ + "bool" + ] + }, + "DatetimeIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/DatetimeIndexType" + }, + "is_principal": { + "description": "If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "DatetimeIndexType": { + "type": "string", + "enum": [ + "datetime" + ] + }, + "UuidIndexParams": { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "$ref": "#/components/schemas/UuidIndexType" + }, + "is_tenant": { + "description": "If true - used for tenant optimization.", + "type": "boolean", + "nullable": true + }, + "on_disk": { + "description": "If true, store the index on disk. Default: false.", + "type": "boolean", + "nullable": true + } + } + }, + "UuidIndexType": { + "type": "string", + "enum": [ + "uuid" + ] + }, + "PointRequest": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "ids": { + "description": "Look for points with ids", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + } + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is true.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "$ref": "#/components/schemas/WithVector" + } + } + }, + "ShardKeySelector": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShardKey" + } + } + ] + }, + "ShardKey": { + "anyOf": [ + { + "type": "string", + "example": "region_1" + }, + { + "type": "integer", + "format": "uint64", + "minimum": 0, + "example": 12 + } + ] + }, + "ExtendedPointId": { + "description": "Type, used for specifying point ID in user interface", + "anyOf": [ + { + "type": "integer", + "format": "uint64", + "minimum": 0, + "example": 42 + }, + { + "type": "string", + "format": "uuid", + "example": "550e8400-e29b-41d4-a716-446655440000" + } + ] + }, + "WithPayloadInterface": { + "description": "Options for specifying which payload to include or not", + "anyOf": [ + { + "description": "If `true` - return all payload, If `false` - do not return payload", + "type": "boolean" + }, + { + "description": "Specify which fields to return", + "type": "array", + "items": { + "type": "string" + } + }, + { + "$ref": "#/components/schemas/PayloadSelector" + } + ] + }, + "PayloadSelector": { + "description": "Specifies how to treat payload selector", + "anyOf": [ + { + "$ref": "#/components/schemas/PayloadSelectorInclude" + }, + { + "$ref": "#/components/schemas/PayloadSelectorExclude" + } + ] + }, + "PayloadSelectorInclude": { + "type": "object", + "required": [ + "include" + ], + "properties": { + "include": { + "description": "Only include this payload keys", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "PayloadSelectorExclude": { + "type": "object", + "required": [ + "exclude" + ], + "properties": { + "exclude": { + "description": "Exclude this fields from returning payload", + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "WithVector": { + "description": "Options for specifying which vector to include", + "anyOf": [ + { + "description": "If `true` - return all vector, If `false` - do not return vector", + "type": "boolean" + }, + { + "description": "Specify which vector to return", + "type": "array", + "items": { + "type": "string" + } + } + ] + }, + "Record": { + "description": "Point data", + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "payload": { + "description": "Payload - values assigned to the point", + "anyOf": [ + { + "$ref": "#/components/schemas/Payload" + }, + { + "nullable": true + } + ] + }, + "vector": { + "description": "Vector of the point", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorStruct" + }, + { + "nullable": true + } + ] + }, + "shard_key": { + "description": "Shard Key", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "nullable": true + } + ] + }, + "order_value": { + "anyOf": [ + { + "$ref": "#/components/schemas/OrderValue" + }, + { + "nullable": true + } + ] + } + } + }, + "Payload": { + "type": "object", + "additionalProperties": true, + "example": { + "city": "London", + "color": "green" + } + }, + "VectorStruct": { + "description": "Full vector data per point separator with single and multiple vector modes", + "anyOf": [ + { + "type": "array", + "items": { + "type": "number", + "format": "float" + }, + "example": [ + 0.875, + 0.140625, + 0.897599995136261 + ] + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "example": [ + [ + 0.875, + 0.140625, + 0.11020000278949738 + ], + [ + 0.7580000162124634, + 0.28126001358032227, + 0.9687100052833557 + ], + [ + 0.6209999918937683, + 0.42187801003456116, + 0.9375 + ] + ] + }, + { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Vector" + }, + "example": { + "image-embeddings": [ + 0.8730000257492065, + 0.140625, + 0.897599995136261 + ] + } + }, + { + "$ref": "#/components/schemas/Document" + } + ] + }, + "Vector": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + { + "$ref": "#/components/schemas/SparseVector" + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + }, + { + "$ref": "#/components/schemas/Document" + } + ] + }, + "SparseVector": { + "description": "Sparse vector structure", + "type": "object", + "required": [ + "indices", + "values" + ], + "properties": { + "indices": { + "description": "Indices must be unique", + "type": "array", + "items": { + "type": "integer", + "format": "uint32", + "minimum": 0 + } + }, + "values": { + "description": "Values and indices must be the same length", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + } + }, + "Document": { + "description": "WARN: Work-in-progress, unimplemented\n\nText document for embedding. Requires inference infrastructure, unimplemented.", + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "description": "Text of the document This field will be used as input for the embedding model", + "type": "string" + }, + "model": { + "description": "Name of the model used to generate the vector List of available models depends on a provider", + "type": "string", + "nullable": true + } + } + }, + "OrderValue": { + "anyOf": [ + { + "type": "integer", + "format": "int64", + "example": 42 + }, + { + "type": "number", + "format": "double", + "example": 42.5 + } + ] + }, + "SearchRequest": { + "description": "Search request. Holds all conditions and parameters for the search of most similar points by vector similarity given the filtering restrictions.", + "type": "object", + "required": [ + "limit", + "vector" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "vector": { + "$ref": "#/components/schemas/NamedVectorStruct" + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Additional search params", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "limit": { + "description": "Max number of result to return", + "type": "integer", + "format": "uint", + "minimum": 1 + }, + "offset": { + "description": "Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "description": "Options for specifying which vectors to include into response. Default is false.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned.", + "type": "number", + "format": "float", + "nullable": true + } + } + }, + "NamedVectorStruct": { + "description": "Vector data separator for named and unnamed modes Unnamed mode:\n\n{ \"vector\": [1.0, 2.0, 3.0] }\n\nor named mode:\n\n{ \"vector\": { \"vector\": [1.0, 2.0, 3.0], \"name\": \"image-embeddings\" } }", + "anyOf": [ + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + { + "$ref": "#/components/schemas/NamedVector" + }, + { + "$ref": "#/components/schemas/NamedSparseVector" + } + ] + }, + "NamedVector": { + "description": "Dense vector data with name", + "type": "object", + "required": [ + "name", + "vector" + ], + "properties": { + "name": { + "description": "Name of vector data", + "type": "string" + }, + "vector": { + "description": "Vector data", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + } + }, + "NamedSparseVector": { + "description": "Sparse vector data with name", + "type": "object", + "required": [ + "name", + "vector" + ], + "properties": { + "name": { + "description": "Name of vector data", + "type": "string" + }, + "vector": { + "$ref": "#/components/schemas/SparseVector" + } + } + }, + "Filter": { + "type": "object", + "properties": { + "should": { + "description": "At least one of those conditions should match", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Condition" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + }, + { + "nullable": true + } + ] + }, + "min_should": { + "description": "At least minimum amount of given conditions should match", + "anyOf": [ + { + "$ref": "#/components/schemas/MinShould" + }, + { + "nullable": true + } + ] + }, + "must": { + "description": "All conditions must match", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Condition" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + }, + { + "nullable": true + } + ] + }, + "must_not": { + "description": "All conditions must NOT match", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Condition" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + }, + { + "nullable": true + } + ] + } + }, + "additionalProperties": false + }, + "Condition": { + "anyOf": [ + { + "$ref": "#/components/schemas/FieldCondition" + }, + { + "$ref": "#/components/schemas/IsEmptyCondition" + }, + { + "$ref": "#/components/schemas/IsNullCondition" + }, + { + "$ref": "#/components/schemas/HasIdCondition" + }, + { + "$ref": "#/components/schemas/NestedCondition" + }, + { + "$ref": "#/components/schemas/Filter" + } + ] + }, + "FieldCondition": { + "description": "All possible payload filtering conditions", + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "description": "Payload key", + "type": "string" + }, + "match": { + "description": "Check if point has field with a given value", + "anyOf": [ + { + "$ref": "#/components/schemas/Match" + }, + { + "nullable": true + } + ] + }, + "range": { + "description": "Check if points value lies in a given range", + "anyOf": [ + { + "$ref": "#/components/schemas/RangeInterface" + }, + { + "nullable": true + } + ] + }, + "geo_bounding_box": { + "description": "Check if points geo location lies in a given area", + "anyOf": [ + { + "$ref": "#/components/schemas/GeoBoundingBox" + }, + { + "nullable": true + } + ] + }, + "geo_radius": { + "description": "Check if geo point is within a given radius", + "anyOf": [ + { + "$ref": "#/components/schemas/GeoRadius" + }, + { + "nullable": true + } + ] + }, + "geo_polygon": { + "description": "Check if geo point is within a given polygon", + "anyOf": [ + { + "$ref": "#/components/schemas/GeoPolygon" + }, + { + "nullable": true + } + ] + }, + "values_count": { + "description": "Check number of values of the field", + "anyOf": [ + { + "$ref": "#/components/schemas/ValuesCount" + }, + { + "nullable": true + } + ] + } + } + }, + "Match": { + "description": "Match filter request", + "anyOf": [ + { + "$ref": "#/components/schemas/MatchValue" + }, + { + "$ref": "#/components/schemas/MatchText" + }, + { + "$ref": "#/components/schemas/MatchAny" + }, + { + "$ref": "#/components/schemas/MatchExcept" + } + ] + }, + "MatchValue": { + "description": "Exact match of the given value", + "type": "object", + "required": [ + "value" + ], + "properties": { + "value": { + "$ref": "#/components/schemas/ValueVariants" + } + } + }, + "ValueVariants": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int64" + }, + { + "type": "boolean" + } + ] + }, + "MatchText": { + "description": "Full-text match of the strings.", + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "type": "string" + } + } + }, + "MatchAny": { + "description": "Exact match on any of the given values", + "type": "object", + "required": [ + "any" + ], + "properties": { + "any": { + "$ref": "#/components/schemas/AnyVariants" + } + } + }, + "AnyVariants": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + }, + "uniqueItems": true + }, + { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "uniqueItems": true + } + ] + }, + "MatchExcept": { + "description": "Should have at least one value not matching the any given values", + "type": "object", + "required": [ + "except" + ], + "properties": { + "except": { + "$ref": "#/components/schemas/AnyVariants" + } + } + }, + "RangeInterface": { + "anyOf": [ + { + "$ref": "#/components/schemas/Range" + }, + { + "$ref": "#/components/schemas/DatetimeRange" + } + ] + }, + "Range": { + "description": "Range filter request", + "type": "object", + "properties": { + "lt": { + "description": "point.key < range.lt", + "type": "number", + "format": "double", + "nullable": true + }, + "gt": { + "description": "point.key > range.gt", + "type": "number", + "format": "double", + "nullable": true + }, + "gte": { + "description": "point.key >= range.gte", + "type": "number", + "format": "double", + "nullable": true + }, + "lte": { + "description": "point.key <= range.lte", + "type": "number", + "format": "double", + "nullable": true + } + } + }, + "DatetimeRange": { + "description": "Range filter request", + "type": "object", + "properties": { + "lt": { + "description": "point.key < range.lt", + "type": "string", + "format": "date-time", + "nullable": true + }, + "gt": { + "description": "point.key > range.gt", + "type": "string", + "format": "date-time", + "nullable": true + }, + "gte": { + "description": "point.key >= range.gte", + "type": "string", + "format": "date-time", + "nullable": true + }, + "lte": { + "description": "point.key <= range.lte", + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "GeoBoundingBox": { + "description": "Geo filter request\n\nMatches coordinates inside the rectangle, described by coordinates of lop-left and bottom-right edges", + "type": "object", + "required": [ + "bottom_right", + "top_left" + ], + "properties": { + "top_left": { + "$ref": "#/components/schemas/GeoPoint" + }, + "bottom_right": { + "$ref": "#/components/schemas/GeoPoint" + } + } + }, + "GeoPoint": { + "description": "Geo point payload schema", + "type": "object", + "required": [ + "lat", + "lon" + ], + "properties": { + "lon": { + "type": "number", + "format": "double" + }, + "lat": { + "type": "number", + "format": "double" + } + } + }, + "GeoRadius": { + "description": "Geo filter request\n\nMatches coordinates inside the circle of `radius` and center with coordinates `center`", + "type": "object", + "required": [ + "center", + "radius" + ], + "properties": { + "center": { + "$ref": "#/components/schemas/GeoPoint" + }, + "radius": { + "description": "Radius of the area in meters", + "type": "number", + "format": "double" + } + } + }, + "GeoPolygon": { + "description": "Geo filter request\n\nMatches coordinates inside the polygon, defined by `exterior` and `interiors`", + "type": "object", + "required": [ + "exterior" + ], + "properties": { + "exterior": { + "$ref": "#/components/schemas/GeoLineString" + }, + "interiors": { + "description": "Interior lines (if present) bound holes within the surface each GeoLineString must consist of a minimum of 4 points, and the first and last points must be the same.", + "type": "array", + "items": { + "$ref": "#/components/schemas/GeoLineString" + }, + "nullable": true + } + } + }, + "GeoLineString": { + "description": "Ordered sequence of GeoPoints representing the line", + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GeoPoint" + } + } + } + }, + "ValuesCount": { + "description": "Values count filter request", + "type": "object", + "properties": { + "lt": { + "description": "point.key.length() < values_count.lt", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "gt": { + "description": "point.key.length() > values_count.gt", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "gte": { + "description": "point.key.length() >= values_count.gte", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "lte": { + "description": "point.key.length() <= values_count.lte", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "IsEmptyCondition": { + "description": "Select points with empty payload for a specified field", + "type": "object", + "required": [ + "is_empty" + ], + "properties": { + "is_empty": { + "$ref": "#/components/schemas/PayloadField" + } + } + }, + "PayloadField": { + "description": "Payload field", + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "description": "Payload field name", + "type": "string" + } + } + }, + "IsNullCondition": { + "description": "Select points with null payload for a specified field", + "type": "object", + "required": [ + "is_null" + ], + "properties": { + "is_null": { + "$ref": "#/components/schemas/PayloadField" + } + } + }, + "HasIdCondition": { + "description": "ID-based filtering condition", + "type": "object", + "required": [ + "has_id" + ], + "properties": { + "has_id": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "uniqueItems": true + } + } + }, + "NestedCondition": { + "type": "object", + "required": [ + "nested" + ], + "properties": { + "nested": { + "$ref": "#/components/schemas/Nested" + } + } + }, + "Nested": { + "description": "Select points with payload for a specified nested field", + "type": "object", + "required": [ + "filter", + "key" + ], + "properties": { + "key": { + "type": "string" + }, + "filter": { + "$ref": "#/components/schemas/Filter" + } + } + }, + "MinShould": { + "type": "object", + "required": [ + "conditions", + "min_count" + ], + "properties": { + "conditions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Condition" + } + }, + "min_count": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "SearchParams": { + "description": "Additional parameters of the search", + "type": "object", + "properties": { + "hnsw_ef": { + "description": "Params relevant to HNSW index Size of the beam in a beam-search. Larger the value - more accurate the result, more time required for search.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "exact": { + "description": "Search without approximation. If set to true, search may run long but with exact results.", + "default": false, + "type": "boolean" + }, + "quantization": { + "description": "Quantization params", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationSearchParams" + }, + { + "nullable": true + } + ] + }, + "indexed_only": { + "description": "If enabled, the engine will only perform search among indexed or small segments. Using this option prevents slow searches in case of delayed index, but does not guarantee that all uploaded vectors will be included in search results", + "default": false, + "type": "boolean" + } + } + }, + "QuantizationSearchParams": { + "description": "Additional parameters of the search", + "type": "object", + "properties": { + "ignore": { + "description": "If true, quantized vectors are ignored. Default is false.", + "default": false, + "type": "boolean" + }, + "rescore": { + "description": "If true, use original vectors to re-score top-k results. Might require more time in case if original vectors are stored on disk. If not set, qdrant decides automatically apply rescoring or not.", + "default": null, + "type": "boolean", + "nullable": true + }, + "oversampling": { + "description": "Oversampling factor for quantization. Default is 1.0.\n\nDefines how many extra vectors should be pre-selected using quantized index, and then re-scored using original vectors.\n\nFor example, if `oversampling` is 2.4 and `limit` is 100, then 240 vectors will be pre-selected using quantized index, and then top-100 will be returned after re-scoring.", + "default": null, + "type": "number", + "format": "double", + "minimum": 1, + "nullable": true + } + } + }, + "ScoredPoint": { + "description": "Search result", + "type": "object", + "required": [ + "id", + "score", + "version" + ], + "properties": { + "id": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "version": { + "description": "Point version", + "type": "integer", + "format": "uint64", + "minimum": 0, + "example": 3 + }, + "score": { + "description": "Points vector distance to the query vector", + "type": "number", + "format": "float", + "example": 0.75 + }, + "payload": { + "description": "Payload - values assigned to the point", + "anyOf": [ + { + "$ref": "#/components/schemas/Payload" + }, + { + "nullable": true + } + ] + }, + "vector": { + "description": "Vector of the point", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorStruct" + }, + { + "nullable": true + } + ] + }, + "shard_key": { + "description": "Shard Key", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "nullable": true + } + ] + }, + "order_value": { + "description": "Order-by value", + "anyOf": [ + { + "$ref": "#/components/schemas/OrderValue" + }, + { + "nullable": true + } + ] + } + } + }, + "UpdateResult": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "operation_id": { + "description": "Sequential number of the operation", + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/UpdateStatus" + } + } + }, + "UpdateStatus": { + "description": "`Acknowledged` - Request is saved to WAL and will be process in a queue. `Completed` - Request is completed, changes are actual.", + "type": "string", + "enum": [ + "acknowledged", + "completed" + ] + }, + "RecommendRequest": { + "description": "Recommendation request. Provides positive and negative examples of the vectors, which can be ids of points that are already stored in the collection, raw vectors, or even ids and vectors combined.\n\nService should look for the points which are closer to positive examples and at the same time further to negative examples. The concrete way of how to compare negative and positive distances is up to the `strategy` chosen.", + "type": "object", + "required": [ + "limit" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "positive": { + "description": "Look for vectors closest to those", + "default": [], + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendExample" + } + }, + "negative": { + "description": "Try to avoid vectors like this", + "default": [], + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendExample" + } + }, + "strategy": { + "description": "How to use positive and negative examples to find the results", + "anyOf": [ + { + "$ref": "#/components/schemas/RecommendStrategy" + }, + { + "nullable": true + } + ] + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Additional search params", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "limit": { + "description": "Max number of result to return", + "type": "integer", + "format": "uint", + "minimum": 1 + }, + "offset": { + "description": "Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "description": "Options for specifying which vectors to include into response. Default is false.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned.", + "type": "number", + "format": "float", + "nullable": true + }, + "using": { + "description": "Define which vector to use for recommendation, if not specified - try to use default vector", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/UsingVector" + }, + { + "nullable": true + } + ] + }, + "lookup_from": { + "description": "The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + } + } + }, + "RecommendExample": { + "anyOf": [ + { + "$ref": "#/components/schemas/ExtendedPointId" + }, + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + { + "$ref": "#/components/schemas/SparseVector" + } + ] + }, + "RecommendStrategy": { + "description": "How to use positive and negative examples to find the results, default is `average_vector`:\n\n* `average_vector` - Average positive and negative vectors and create a single query with the formula `query = avg_pos + avg_pos - avg_neg`. Then performs normal search.\n\n* `best_score` - Uses custom search objective. Each candidate is compared against all examples, its score is then chosen from the `max(max_pos_score, max_neg_score)`. If the `max_neg_score` is chosen then it is squared and negated, otherwise it is just the `max_pos_score`.", + "type": "string", + "enum": [ + "average_vector", + "best_score" + ] + }, + "UsingVector": { + "anyOf": [ + { + "type": "string" + } + ] + }, + "LookupLocation": { + "description": "Defines a location to use for looking up the vector. Specifies collection and vector field name.", + "type": "object", + "required": [ + "collection" + ], + "properties": { + "collection": { + "description": "Name of the collection used for lookup", + "type": "string" + }, + "vector": { + "description": "Optional name of the vector field within the collection. If not provided, the default vector field will be used.", + "default": null, + "type": "string", + "nullable": true + }, + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "ScrollRequest": { + "description": "Scroll request - paginate over all points which matches given condition", + "type": "object", + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "offset": { + "description": "Start ID to read points from.", + "anyOf": [ + { + "$ref": "#/components/schemas/ExtendedPointId" + }, + { + "nullable": true + } + ] + }, + "limit": { + "description": "Page size. Default: 10", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "filter": { + "description": "Look only for points which satisfies this conditions. If not provided - all points.", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is true.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "$ref": "#/components/schemas/WithVector" + }, + "order_by": { + "description": "Order the records by a payload field.", + "anyOf": [ + { + "$ref": "#/components/schemas/OrderByInterface" + }, + { + "nullable": true + } + ] + } + } + }, + "OrderByInterface": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/OrderBy" + } + ] + }, + "OrderBy": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "key": { + "description": "Payload key to order by", + "type": "string" + }, + "direction": { + "description": "Direction of ordering: `asc` or `desc`. Default is ascending.", + "anyOf": [ + { + "$ref": "#/components/schemas/Direction" + }, + { + "nullable": true + } + ] + }, + "start_from": { + "description": "Which payload value to start scrolling from. Default is the lowest value for `asc` and the highest for `desc`", + "anyOf": [ + { + "$ref": "#/components/schemas/StartFrom" + }, + { + "nullable": true + } + ] + } + } + }, + "Direction": { + "type": "string", + "enum": [ + "asc", + "desc" + ] + }, + "StartFrom": { + "anyOf": [ + { + "type": "integer", + "format": "int64" + }, + { + "type": "number", + "format": "double" + }, + { + "type": "string", + "format": "date-time" + } + ] + }, + "ScrollResult": { + "description": "Result of the points read request", + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "description": "List of retrieved points", + "type": "array", + "items": { + "$ref": "#/components/schemas/Record" + }, + "example": [ + { + "id": 40, + "payload": { + "city": "London", + "color": "green" + }, + "vector": [ + 0.875, + 0.140625, + 0.897599995136261 + ], + "shard_key": "region_1" + }, + { + "id": 41, + "payload": { + "city": "Paris", + "color": "red" + }, + "vector": [ + 0.75, + 0.640625, + 0.8945000171661377 + ], + "shard_key": "region_1" + } + ] + }, + "next_page_offset": { + "description": "Offset which should be used to retrieve a next page result", + "anyOf": [ + { + "$ref": "#/components/schemas/ExtendedPointId" + }, + { + "nullable": true + } + ] + } + } + }, + "CreateCollection": { + "description": "Operation for creating new collection and (optionally) specify index params", + "type": "object", + "properties": { + "vectors": { + "$ref": "#/components/schemas/VectorsConfig" + }, + "shard_number": { + "description": "For auto sharding: Number of shards in collection. - Default is 1 for standalone, otherwise equal to the number of nodes - Minimum is 1\n\nFor custom sharding: Number of shards in collection per shard group. - Default is 1, meaning that each shard key will be mapped to a single shard - Minimum is 1", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "sharding_method": { + "description": "Sharding method Default is Auto - points are distributed across all available shards Custom - points are distributed across shards according to shard key", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/ShardingMethod" + }, + { + "nullable": true + } + ] + }, + "replication_factor": { + "description": "Number of shards replicas. Default is 1 Minimum is 1", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "write_consistency_factor": { + "description": "Defines how many replicas should apply the operation for us to consider it successful. Increasing this number will make the collection more resilient to inconsistencies, but will also make it fail if not enough replicas are available. Does not have any performance impact.", + "default": null, + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "on_disk_payload": { + "description": "If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM.", + "default": null, + "type": "boolean", + "nullable": true + }, + "hnsw_config": { + "description": "Custom params for HNSW index. If none - values from service configuration file are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/HnswConfigDiff" + }, + { + "nullable": true + } + ] + }, + "wal_config": { + "description": "Custom params for WAL. If none - values from service configuration file are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/WalConfigDiff" + }, + { + "nullable": true + } + ] + }, + "optimizers_config": { + "description": "Custom params for Optimizers. If none - values from service configuration file are used.", + "anyOf": [ + { + "$ref": "#/components/schemas/OptimizersConfigDiff" + }, + { + "nullable": true + } + ] + }, + "init_from": { + "description": "Specify other collection to copy data from.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/InitFrom" + }, + { + "nullable": true + } + ] + }, + "quantization_config": { + "description": "Quantization parameters. If none - quantization is disabled.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfig" + }, + { + "nullable": true + } + ] + }, + "sparse_vectors": { + "description": "Sparse vector data config.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/SparseVectorParams" + }, + "nullable": true + } + } + }, + "WalConfigDiff": { + "type": "object", + "properties": { + "wal_capacity_mb": { + "description": "Size of a single WAL segment in MB", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "wal_segments_ahead": { + "description": "Number of WAL segments to create ahead of actually used ones", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "OptimizersConfigDiff": { + "type": "object", + "properties": { + "deleted_threshold": { + "description": "The minimal fraction of deleted vectors in a segment, required to perform segment optimization", + "type": "number", + "format": "double", + "nullable": true + }, + "vacuum_min_vector_number": { + "description": "The minimal number of vectors in a segment, required to perform segment optimization", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "default_segment_number": { + "description": "Target amount of segments optimizer will try to keep. Real amount of segments may vary depending on multiple parameters: - Amount of stored points - Current write RPS\n\nIt is recommended to select default number of segments as a factor of the number of search threads, so that each segment would be handled evenly by one of the threads If `default_segment_number = 0`, will be automatically selected by the number of available CPUs", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "max_segment_size": { + "description": "Do not create segments larger this size (in kilobytes). Large segments might require disproportionately long indexation times, therefore it makes sense to limit the size of segments.\n\nIf indexation speed have more priority for your - make this parameter lower. If search speed is more important - make this parameter higher. Note: 1Kb = 1 vector of size 256", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "memmap_threshold": { + "description": "Maximum size (in kilobytes) of vectors to store in-memory per segment. Segments larger than this threshold will be stored as read-only memmaped file.\n\nMemmap storage is disabled by default, to enable it, set this threshold to a reasonable value.\n\nTo disable memmap storage, set this to `0`.\n\nNote: 1Kb = 1 vector of size 256", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "indexing_threshold": { + "description": "Maximum size (in kilobytes) of vectors allowed for plain index, exceeding this threshold will enable vector indexing\n\nDefault value is 20,000, based on .\n\nTo disable vector indexing, set to `0`.\n\nNote: 1kB = 1 vector of size 256.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "flush_interval_sec": { + "description": "Minimum interval between forced flushes.", + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "max_optimization_threads": { + "description": "Max number of threads (jobs) for running optimizations per shard. Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. If null - have no limit and choose dynamically to saturate CPU. If 0 - no optimization threads, optimizations will be disabled.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "InitFrom": { + "description": "Operation for creating new collection and (optionally) specify index params", + "type": "object", + "required": [ + "collection" + ], + "properties": { + "collection": { + "type": "string" + } + } + }, + "UpdateCollection": { + "description": "Operation for updating parameters of the existing collection", + "type": "object", + "properties": { + "vectors": { + "description": "Map of vector data parameters to update for each named vector. To update parameters in a collection having a single unnamed vector, use an empty string as name.", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorsConfigDiff" + }, + { + "nullable": true + } + ] + }, + "optimizers_config": { + "description": "Custom params for Optimizers. If none - it is left unchanged. This operation is blocking, it will only proceed once all current optimizations are complete", + "anyOf": [ + { + "$ref": "#/components/schemas/OptimizersConfigDiff" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Collection base params. If none - it is left unchanged.", + "anyOf": [ + { + "$ref": "#/components/schemas/CollectionParamsDiff" + }, + { + "nullable": true + } + ] + }, + "hnsw_config": { + "description": "HNSW parameters to update for the collection index. If none - it is left unchanged.", + "anyOf": [ + { + "$ref": "#/components/schemas/HnswConfigDiff" + }, + { + "nullable": true + } + ] + }, + "quantization_config": { + "description": "Quantization parameters to update. If none - it is left unchanged.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfigDiff" + }, + { + "nullable": true + } + ] + }, + "sparse_vectors": { + "description": "Map of sparse vector data parameters to update for each sparse vector.", + "anyOf": [ + { + "$ref": "#/components/schemas/SparseVectorsConfig" + }, + { + "nullable": true + } + ] + } + } + }, + "VectorsConfigDiff": { + "description": "Vector update params for multiple vectors\n\n{ \"vector_name\": { \"hnsw_config\": { \"m\": 8 } } }", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VectorParamsDiff" + } + }, + "VectorParamsDiff": { + "type": "object", + "properties": { + "hnsw_config": { + "description": "Update params for HNSW index. If empty object - it will be unset.", + "anyOf": [ + { + "$ref": "#/components/schemas/HnswConfigDiff" + }, + { + "nullable": true + } + ] + }, + "quantization_config": { + "description": "Update params for quantization. If none - it is left unchanged.", + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfigDiff" + }, + { + "nullable": true + } + ] + }, + "on_disk": { + "description": "If true, vectors are served from disk, improving RAM usage at the cost of latency", + "type": "boolean", + "nullable": true + } + } + }, + "QuantizationConfigDiff": { + "anyOf": [ + { + "$ref": "#/components/schemas/ScalarQuantization" + }, + { + "$ref": "#/components/schemas/ProductQuantization" + }, + { + "$ref": "#/components/schemas/BinaryQuantization" + }, + { + "$ref": "#/components/schemas/Disabled" + } + ] + }, + "Disabled": { + "type": "string", + "enum": [ + "Disabled" + ] + }, + "CollectionParamsDiff": { + "type": "object", + "properties": { + "replication_factor": { + "description": "Number of replicas for each shard", + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "write_consistency_factor": { + "description": "Minimal number successful responses from replicas to consider operation successful", + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "read_fan_out_factor": { + "description": "Fan-out every read request to these many additional remote nodes (and return first available response)", + "type": "integer", + "format": "uint32", + "minimum": 0, + "nullable": true + }, + "on_disk_payload": { + "description": "If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM.", + "default": null, + "type": "boolean", + "nullable": true + } + } + }, + "SparseVectorsConfig": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/SparseVectorParams" + } + }, + "ChangeAliasesOperation": { + "description": "Operation for performing changes of collection aliases. Alias changes are atomic, meaning that no collection modifications can happen between alias operations.", + "type": "object", + "required": [ + "actions" + ], + "properties": { + "actions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AliasOperations" + } + } + } + }, + "AliasOperations": { + "description": "Group of all the possible operations related to collection aliases", + "anyOf": [ + { + "$ref": "#/components/schemas/CreateAliasOperation" + }, + { + "$ref": "#/components/schemas/DeleteAliasOperation" + }, + { + "$ref": "#/components/schemas/RenameAliasOperation" + } + ] + }, + "CreateAliasOperation": { + "type": "object", + "required": [ + "create_alias" + ], + "properties": { + "create_alias": { + "$ref": "#/components/schemas/CreateAlias" + } + } + }, + "CreateAlias": { + "description": "Create alternative name for a collection. Collection will be available under both names for search, retrieve,", + "type": "object", + "required": [ + "alias_name", + "collection_name" + ], + "properties": { + "collection_name": { + "type": "string" + }, + "alias_name": { + "type": "string" + } + } + }, + "DeleteAliasOperation": { + "description": "Delete alias if exists", + "type": "object", + "required": [ + "delete_alias" + ], + "properties": { + "delete_alias": { + "$ref": "#/components/schemas/DeleteAlias" + } + } + }, + "DeleteAlias": { + "description": "Delete alias if exists", + "type": "object", + "required": [ + "alias_name" + ], + "properties": { + "alias_name": { + "type": "string" + } + } + }, + "RenameAliasOperation": { + "description": "Change alias to a new one", + "type": "object", + "required": [ + "rename_alias" + ], + "properties": { + "rename_alias": { + "$ref": "#/components/schemas/RenameAlias" + } + } + }, + "RenameAlias": { + "description": "Change alias to a new one", + "type": "object", + "required": [ + "new_alias_name", + "old_alias_name" + ], + "properties": { + "old_alias_name": { + "type": "string" + }, + "new_alias_name": { + "type": "string" + } + } + }, + "CreateFieldIndex": { + "type": "object", + "required": [ + "field_name" + ], + "properties": { + "field_name": { + "type": "string" + }, + "field_schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/PayloadFieldSchema" + }, + { + "nullable": true + } + ] + } + } + }, + "PayloadFieldSchema": { + "anyOf": [ + { + "$ref": "#/components/schemas/PayloadSchemaType" + }, + { + "$ref": "#/components/schemas/PayloadSchemaParams" + } + ] + }, + "PointsSelector": { + "anyOf": [ + { + "$ref": "#/components/schemas/PointIdsList" + }, + { + "$ref": "#/components/schemas/FilterSelector" + } + ] + }, + "PointIdsList": { + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + } + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "FilterSelector": { + "type": "object", + "required": [ + "filter" + ], + "properties": { + "filter": { + "$ref": "#/components/schemas/Filter" + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "PointInsertOperations": { + "anyOf": [ + { + "$ref": "#/components/schemas/PointsBatch" + }, + { + "$ref": "#/components/schemas/PointsList" + } + ] + }, + "PointsBatch": { + "type": "object", + "required": [ + "batch" + ], + "properties": { + "batch": { + "$ref": "#/components/schemas/Batch" + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "Batch": { + "type": "object", + "required": [ + "ids", + "vectors" + ], + "properties": { + "ids": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + } + }, + "vectors": { + "$ref": "#/components/schemas/BatchVectorStruct" + }, + "payloads": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/Payload" + }, + { + "nullable": true + } + ] + }, + "nullable": true + } + } + }, + "BatchVectorStruct": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + } + }, + { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Vector" + } + } + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + } + ] + }, + "PointsList": { + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PointStruct" + } + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "PointStruct": { + "type": "object", + "required": [ + "id", + "vector" + ], + "properties": { + "id": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "vector": { + "$ref": "#/components/schemas/VectorStruct" + }, + "payload": { + "description": "Payload values (optional)", + "anyOf": [ + { + "$ref": "#/components/schemas/Payload" + }, + { + "nullable": true + } + ] + } + } + }, + "SetPayload": { + "description": "This data structure is used in API interface and applied across multiple shards", + "type": "object", + "required": [ + "payload" + ], + "properties": { + "payload": { + "$ref": "#/components/schemas/Payload" + }, + "points": { + "description": "Assigns payload to each point in this list", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "nullable": true + }, + "filter": { + "description": "Assigns payload to each point that satisfy this filter condition", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "key": { + "description": "Assigns payload to each point that satisfy this path of property", + "type": "string", + "nullable": true + } + } + }, + "DeletePayload": { + "description": "This data structure is used in API interface and applied across multiple shards", + "type": "object", + "required": [ + "keys" + ], + "properties": { + "keys": { + "description": "List of payload keys to remove from payload", + "type": "array", + "items": { + "type": "string" + } + }, + "points": { + "description": "Deletes values from each point in this list", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "nullable": true + }, + "filter": { + "description": "Deletes values from points that satisfy this filter condition", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "ClusterStatus": { + "description": "Information about current cluster status and structure", + "oneOf": [ + { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "disabled" + ] + } + } + }, + { + "description": "Description of enabled cluster", + "type": "object", + "required": [ + "consensus_thread_status", + "message_send_failures", + "peer_id", + "peers", + "raft_info", + "status" + ], + "properties": { + "status": { + "type": "string", + "enum": [ + "enabled" + ] + }, + "peer_id": { + "description": "ID of this peer", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "peers": { + "description": "Peers composition of the cluster with main information", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/PeerInfo" + } + }, + "raft_info": { + "$ref": "#/components/schemas/RaftInfo" + }, + "consensus_thread_status": { + "$ref": "#/components/schemas/ConsensusThreadStatus" + }, + "message_send_failures": { + "description": "Consequent failures of message send operations in consensus by peer address. On the first success to send to that peer - entry is removed from this hashmap.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/MessageSendErrors" + } + } + } + } + ] + }, + "PeerInfo": { + "description": "Information of a peer in the cluster", + "type": "object", + "required": [ + "uri" + ], + "properties": { + "uri": { + "type": "string" + } + } + }, + "RaftInfo": { + "description": "Summary information about the current raft state", + "type": "object", + "required": [ + "commit", + "is_voter", + "pending_operations", + "term" + ], + "properties": { + "term": { + "description": "Raft divides time into terms of arbitrary length, each beginning with an election. If a candidate wins the election, it remains the leader for the rest of the term. The term number increases monotonically. Each server stores the current term number which is also exchanged in every communication.", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "commit": { + "description": "The index of the latest committed (finalized) operation that this peer is aware of.", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "pending_operations": { + "description": "Number of consensus operations pending to be applied on this peer", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "leader": { + "description": "Leader of the current term", + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "role": { + "description": "Role of this peer in the current term", + "anyOf": [ + { + "$ref": "#/components/schemas/StateRole" + }, + { + "nullable": true + } + ] + }, + "is_voter": { + "description": "Is this peer a voter or a learner", + "type": "boolean" + } + } + }, + "StateRole": { + "description": "Role of the peer in the consensus", + "type": "string", + "enum": [ + "Follower", + "Candidate", + "Leader", + "PreCandidate" + ] + }, + "ConsensusThreadStatus": { + "description": "Information about current consensus thread status", + "oneOf": [ + { + "type": "object", + "required": [ + "consensus_thread_status", + "last_update" + ], + "properties": { + "consensus_thread_status": { + "type": "string", + "enum": [ + "working" + ] + }, + "last_update": { + "type": "string", + "format": "date-time" + } + } + }, + { + "type": "object", + "required": [ + "consensus_thread_status" + ], + "properties": { + "consensus_thread_status": { + "type": "string", + "enum": [ + "stopped" + ] + } + } + }, + { + "type": "object", + "required": [ + "consensus_thread_status", + "err" + ], + "properties": { + "consensus_thread_status": { + "type": "string", + "enum": [ + "stopped_with_err" + ] + }, + "err": { + "type": "string" + } + } + } + ] + }, + "MessageSendErrors": { + "description": "Message send failures for a particular peer", + "type": "object", + "required": [ + "count" + ], + "properties": { + "count": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "latest_error": { + "type": "string", + "nullable": true + }, + "latest_error_timestamp": { + "description": "Timestamp of the latest error", + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "SnapshotDescription": { + "type": "object", + "required": [ + "name", + "size" + ], + "properties": { + "name": { + "type": "string" + }, + "creation_time": { + "type": "string", + "format": "partial-date-time", + "nullable": true + }, + "size": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "checksum": { + "type": "string", + "nullable": true + } + }, + "example": { + "name": "my-collection-3766212330831337-2024-07-22-08-31-55.snapshot", + "creation_time": "2022-08-04T10:49:10", + "size": 1000000, + "checksum": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0" + } + }, + "CountRequest": { + "description": "Count Request Counts the number of points which satisfy the given filter. If filter is not provided, the count of all points in the collection will be returned.", + "type": "object", + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "exact": { + "description": "If true, count exact number of points. If false, count approximate number of points faster. Approximate count might be unreliable during the indexing process. Default: true", + "default": true, + "type": "boolean" + } + } + }, + "CountResult": { + "type": "object", + "required": [ + "count" + ], + "properties": { + "count": { + "description": "Number of points which satisfy the conditions", + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "CollectionClusterInfo": { + "description": "Current clustering distribution for the collection", + "type": "object", + "required": [ + "local_shards", + "peer_id", + "remote_shards", + "shard_count", + "shard_transfers" + ], + "properties": { + "peer_id": { + "description": "ID of this peer", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "shard_count": { + "description": "Total number of shards", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "local_shards": { + "description": "Local shards", + "type": "array", + "items": { + "$ref": "#/components/schemas/LocalShardInfo" + } + }, + "remote_shards": { + "description": "Remote shards", + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteShardInfo" + } + }, + "shard_transfers": { + "description": "Shard transfers", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShardTransferInfo" + } + }, + "resharding_operations": { + "description": "Resharding operations", + "type": "array", + "items": { + "$ref": "#/components/schemas/ReshardingInfo" + }, + "nullable": true + } + } + }, + "LocalShardInfo": { + "type": "object", + "required": [ + "points_count", + "shard_id", + "state" + ], + "properties": { + "shard_id": { + "description": "Local shard id", + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "shard_key": { + "description": "User-defined sharding key", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "nullable": true + } + ] + }, + "points_count": { + "description": "Number of points in the shard", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "state": { + "$ref": "#/components/schemas/ReplicaState" + } + } + }, + "ReplicaState": { + "description": "State of the single shard within a replica set.", + "type": "string", + "enum": [ + "Active", + "Dead", + "Partial", + "Initializing", + "Listener", + "PartialSnapshot", + "Recovery" + ] + }, + "RemoteShardInfo": { + "type": "object", + "required": [ + "peer_id", + "shard_id", + "state" + ], + "properties": { + "shard_id": { + "description": "Remote shard id", + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "shard_key": { + "description": "User-defined sharding key", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "nullable": true + } + ] + }, + "peer_id": { + "description": "Remote peer id", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "state": { + "$ref": "#/components/schemas/ReplicaState" + } + } + }, + "ShardTransferInfo": { + "type": "object", + "required": [ + "from", + "shard_id", + "sync", + "to" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "from": { + "description": "Source peer id", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "to": { + "description": "Destination peer id", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "sync": { + "description": "If `true` transfer is a synchronization of a replicas If `false` transfer is a moving of a shard from one peer to another", + "type": "boolean" + }, + "method": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardTransferMethod" + }, + { + "nullable": true + } + ] + }, + "comment": { + "description": "A human-readable report of the transfer progress. Available only on the source peer.", + "type": "string", + "nullable": true + } + } + }, + "ShardTransferMethod": { + "description": "Methods for transferring a shard from one node to another.", + "oneOf": [ + { + "description": "Stream all shard records in batches until the whole shard is transferred.", + "type": "string", + "enum": [ + "stream_records" + ] + }, + { + "description": "Snapshot the shard, transfer and restore it on the receiver.", + "type": "string", + "enum": [ + "snapshot" + ] + }, + { + "description": "Attempt to transfer shard difference by WAL delta.", + "type": "string", + "enum": [ + "wal_delta" + ] + } + ] + }, + "ReshardingInfo": { + "type": "object", + "required": [ + "direction", + "peer_id", + "shard_id" + ], + "properties": { + "direction": { + "$ref": "#/components/schemas/ReshardingDirection" + }, + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKey" + }, + { + "nullable": true + } + ] + }, + "comment": { + "description": "A human-readable report of the operation progress. Available only on the source peer.", + "type": "string", + "nullable": true + } + } + }, + "ReshardingDirection": { + "description": "Resharding direction, scale up or down in number of shards", + "oneOf": [ + { + "description": "Scale up, add a new shard", + "type": "string", + "enum": [ + "up" + ] + }, + { + "description": "Scale down, remove a shard", + "type": "string", + "enum": [ + "down" + ] + } + ] + }, + "TelemetryData": { + "type": "object", + "required": [ + "app", + "cluster", + "collections", + "id", + "requests" + ], + "properties": { + "id": { + "type": "string" + }, + "app": { + "$ref": "#/components/schemas/AppBuildTelemetry" + }, + "collections": { + "$ref": "#/components/schemas/CollectionsTelemetry" + }, + "cluster": { + "$ref": "#/components/schemas/ClusterTelemetry" + }, + "requests": { + "$ref": "#/components/schemas/RequestsTelemetry" + } + } + }, + "AppBuildTelemetry": { + "type": "object", + "required": [ + "name", + "startup", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + }, + "features": { + "anyOf": [ + { + "$ref": "#/components/schemas/AppFeaturesTelemetry" + }, + { + "nullable": true + } + ] + }, + "system": { + "anyOf": [ + { + "$ref": "#/components/schemas/RunningEnvironmentTelemetry" + }, + { + "nullable": true + } + ] + }, + "jwt_rbac": { + "type": "boolean", + "nullable": true + }, + "hide_jwt_dashboard": { + "type": "boolean", + "nullable": true + }, + "startup": { + "type": "string", + "format": "date-time" + } + } + }, + "AppFeaturesTelemetry": { + "type": "object", + "required": [ + "debug", + "recovery_mode", + "service_debug_feature", + "web_feature" + ], + "properties": { + "debug": { + "type": "boolean" + }, + "web_feature": { + "type": "boolean" + }, + "service_debug_feature": { + "type": "boolean" + }, + "recovery_mode": { + "type": "boolean" + } + } + }, + "RunningEnvironmentTelemetry": { + "type": "object", + "required": [ + "cpu_flags", + "is_docker" + ], + "properties": { + "distribution": { + "type": "string", + "nullable": true + }, + "distribution_version": { + "type": "string", + "nullable": true + }, + "is_docker": { + "type": "boolean" + }, + "cores": { + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "ram_size": { + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "disk_size": { + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "cpu_flags": { + "type": "string" + } + } + }, + "CollectionsTelemetry": { + "type": "object", + "required": [ + "number_of_collections" + ], + "properties": { + "number_of_collections": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "collections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CollectionTelemetryEnum" + }, + "nullable": true + } + } + }, + "CollectionTelemetryEnum": { + "anyOf": [ + { + "$ref": "#/components/schemas/CollectionTelemetry" + }, + { + "$ref": "#/components/schemas/CollectionsAggregatedTelemetry" + } + ] + }, + "CollectionTelemetry": { + "type": "object", + "required": [ + "config", + "id", + "init_time_ms", + "resharding", + "shards", + "transfers" + ], + "properties": { + "id": { + "type": "string" + }, + "init_time_ms": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "config": { + "$ref": "#/components/schemas/CollectionConfig" + }, + "shards": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReplicaSetTelemetry" + } + }, + "transfers": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShardTransferInfo" + } + }, + "resharding": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ReshardingInfo" + } + } + } + }, + "ReplicaSetTelemetry": { + "type": "object", + "required": [ + "id", + "remote", + "replicate_states" + ], + "properties": { + "id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "local": { + "anyOf": [ + { + "$ref": "#/components/schemas/LocalShardTelemetry" + }, + { + "nullable": true + } + ] + }, + "remote": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RemoteShardTelemetry" + } + }, + "replicate_states": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/ReplicaState" + } + } + } + }, + "LocalShardTelemetry": { + "type": "object", + "required": [ + "optimizations", + "segments", + "total_optimized_points" + ], + "properties": { + "variant_name": { + "type": "string", + "nullable": true + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardStatus" + }, + { + "nullable": true + } + ] + }, + "total_optimized_points": { + "description": "Total number of optimized points since the last start.", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "segments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SegmentTelemetry" + } + }, + "optimizations": { + "$ref": "#/components/schemas/OptimizerTelemetry" + } + } + }, + "ShardStatus": { + "description": "Current state of the shard (supports same states as the collection) `Green` - all good. `Yellow` - optimization is running, 'Grey' - optimizations are possible but not triggered, `Red` - some operations failed and was not recovered", + "type": "string", + "enum": [ + "green", + "yellow", + "grey", + "red" + ] + }, + "SegmentTelemetry": { + "type": "object", + "required": [ + "config", + "info", + "payload_field_indices", + "vector_index_searches" + ], + "properties": { + "info": { + "$ref": "#/components/schemas/SegmentInfo" + }, + "config": { + "$ref": "#/components/schemas/SegmentConfig" + }, + "vector_index_searches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/VectorIndexSearchesTelemetry" + } + }, + "payload_field_indices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PayloadIndexTelemetry" + } + } + } + }, + "SegmentInfo": { + "description": "Aggregated information about segment", + "type": "object", + "required": [ + "disk_usage_bytes", + "index_schema", + "is_appendable", + "num_deleted_vectors", + "num_indexed_vectors", + "num_points", + "num_vectors", + "ram_usage_bytes", + "segment_type", + "vector_data" + ], + "properties": { + "segment_type": { + "$ref": "#/components/schemas/SegmentType" + }, + "num_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "num_points": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "num_indexed_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "num_deleted_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "ram_usage_bytes": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "disk_usage_bytes": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "is_appendable": { + "type": "boolean" + }, + "index_schema": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/PayloadIndexInfo" + } + }, + "vector_data": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VectorDataInfo" + } + } + } + }, + "SegmentType": { + "description": "Type of segment", + "type": "string", + "enum": [ + "plain", + "indexed", + "special" + ] + }, + "VectorDataInfo": { + "type": "object", + "required": [ + "num_deleted_vectors", + "num_indexed_vectors", + "num_vectors" + ], + "properties": { + "num_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "num_indexed_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "num_deleted_vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "SegmentConfig": { + "type": "object", + "required": [ + "payload_storage_type" + ], + "properties": { + "vector_data": { + "default": {}, + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/VectorDataConfig" + } + }, + "sparse_vector_data": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/SparseVectorDataConfig" + } + }, + "payload_storage_type": { + "$ref": "#/components/schemas/PayloadStorageType" + } + } + }, + "VectorDataConfig": { + "description": "Config of single vector data storage", + "type": "object", + "required": [ + "distance", + "index", + "size", + "storage_type" + ], + "properties": { + "size": { + "description": "Size/dimensionality of the vectors used", + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "distance": { + "$ref": "#/components/schemas/Distance" + }, + "storage_type": { + "$ref": "#/components/schemas/VectorStorageType" + }, + "index": { + "$ref": "#/components/schemas/Indexes" + }, + "quantization_config": { + "description": "Vector specific quantization config that overrides collection config", + "anyOf": [ + { + "$ref": "#/components/schemas/QuantizationConfig" + }, + { + "nullable": true + } + ] + }, + "multivector_config": { + "description": "Vector specific configuration to enable multiple vectors per point", + "anyOf": [ + { + "$ref": "#/components/schemas/MultiVectorConfig" + }, + { + "nullable": true + } + ] + }, + "datatype": { + "description": "Vector specific configuration to set specific storage element type", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorStorageDatatype" + }, + { + "nullable": true + } + ] + } + } + }, + "VectorStorageType": { + "description": "Storage types for vectors", + "oneOf": [ + { + "description": "Storage in memory (RAM)\n\nWill be very fast at the cost of consuming a lot of memory.", + "type": "string", + "enum": [ + "Memory" + ] + }, + { + "description": "Storage in mmap file, not appendable\n\nSearch performance is defined by disk speed and the fraction of vectors that fit in memory.", + "type": "string", + "enum": [ + "Mmap" + ] + }, + { + "description": "Storage in chunked mmap files, appendable\n\nSearch performance is defined by disk speed and the fraction of vectors that fit in memory.", + "type": "string", + "enum": [ + "ChunkedMmap" + ] + }, + { + "description": "Same as `ChunkedMmap`, but vectors are forced to be locked in RAM In this way we avoid cold requests to disk, but risk to run out of memory\n\nDesigned as a replacement for `Memory`, which doesn't depend on RocksDB", + "type": "string", + "enum": [ + "InRamChunkedMmap" + ] + } + ] + }, + "Indexes": { + "description": "Vector index configuration", + "oneOf": [ + { + "description": "Do not use any index, scan whole vector collection during search. Guarantee 100% precision, but may be time consuming on large collections.", + "type": "object", + "required": [ + "options", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "plain" + ] + }, + "options": { + "type": "object" + } + } + }, + { + "description": "Use filterable HNSW index for approximate search. Is very fast even on a very huge collections, but require additional space to store index and additional time to build it.", + "type": "object", + "required": [ + "options", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "hnsw" + ] + }, + "options": { + "$ref": "#/components/schemas/HnswConfig" + } + } + } + ] + }, + "VectorStorageDatatype": { + "description": "Storage types for vectors", + "type": "string", + "enum": [ + "float32", + "float16", + "uint8" + ] + }, + "SparseVectorDataConfig": { + "description": "Config of single sparse vector data storage", + "type": "object", + "required": [ + "index" + ], + "properties": { + "index": { + "$ref": "#/components/schemas/SparseIndexConfig" + } + } + }, + "SparseIndexConfig": { + "description": "Configuration for sparse inverted index.", + "type": "object", + "required": [ + "index_type" + ], + "properties": { + "full_scan_threshold": { + "description": "We prefer a full scan search upto (excluding) this number of vectors.\n\nNote: this is number of vectors, not KiloBytes.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "index_type": { + "$ref": "#/components/schemas/SparseIndexType" + }, + "datatype": { + "description": "Datatype used to store weights in the index.", + "anyOf": [ + { + "$ref": "#/components/schemas/VectorStorageDatatype" + }, + { + "nullable": true + } + ] + } + } + }, + "SparseIndexType": { + "description": "Sparse index types", + "oneOf": [ + { + "description": "Mutable RAM sparse index", + "type": "string", + "enum": [ + "MutableRam" + ] + }, + { + "description": "Immutable RAM sparse index", + "type": "string", + "enum": [ + "ImmutableRam" + ] + }, + { + "description": "Mmap sparse index", + "type": "string", + "enum": [ + "Mmap" + ] + } + ] + }, + "PayloadStorageType": { + "description": "Type of payload storage", + "oneOf": [ + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "in_memory" + ] + } + } + }, + { + "type": "object", + "required": [ + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "on_disk" + ] + } + } + } + ] + }, + "VectorIndexSearchesTelemetry": { + "type": "object", + "required": [ + "filtered_exact", + "filtered_large_cardinality", + "filtered_plain", + "filtered_small_cardinality", + "filtered_sparse", + "unfiltered_exact", + "unfiltered_hnsw", + "unfiltered_plain", + "unfiltered_sparse" + ], + "properties": { + "index_name": { + "type": "string", + "nullable": true + }, + "unfiltered_plain": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "unfiltered_hnsw": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "unfiltered_sparse": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "filtered_plain": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "filtered_small_cardinality": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "filtered_large_cardinality": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "filtered_exact": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "filtered_sparse": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "unfiltered_exact": { + "$ref": "#/components/schemas/OperationDurationStatistics" + } + } + }, + "OperationDurationStatistics": { + "type": "object", + "required": [ + "count", + "total_duration_micros" + ], + "properties": { + "count": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "fail_count": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "avg_duration_micros": { + "description": "The average time taken by 128 latest operations, calculated as a weighted mean.", + "type": "number", + "format": "float", + "nullable": true + }, + "min_duration_micros": { + "description": "The minimum duration of the operations across all the measurements.", + "type": "number", + "format": "float", + "nullable": true + }, + "max_duration_micros": { + "description": "The maximum duration of the operations across all the measurements.", + "type": "number", + "format": "float", + "nullable": true + }, + "total_duration_micros": { + "description": "The total duration of all operations in microseconds.", + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "last_responded": { + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "PayloadIndexTelemetry": { + "type": "object", + "required": [ + "points_count", + "points_values_count" + ], + "properties": { + "field_name": { + "type": "string", + "nullable": true + }, + "points_values_count": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "points_count": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "histogram_bucket_size": { + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + } + } + }, + "OptimizerTelemetry": { + "type": "object", + "required": [ + "log", + "optimizations", + "status" + ], + "properties": { + "status": { + "$ref": "#/components/schemas/OptimizersStatus" + }, + "optimizations": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "log": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TrackerTelemetry" + } + } + } + }, + "TrackerTelemetry": { + "description": "Tracker object used in telemetry", + "type": "object", + "required": [ + "name", + "segment_ids", + "start_at", + "status" + ], + "properties": { + "name": { + "description": "Name of the optimizer", + "type": "string" + }, + "segment_ids": { + "description": "Segment IDs being optimized", + "type": "array", + "items": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + }, + "status": { + "$ref": "#/components/schemas/TrackerStatus" + }, + "start_at": { + "description": "Start time of the optimizer", + "type": "string", + "format": "date-time" + }, + "end_at": { + "description": "End time of the optimizer", + "type": "string", + "format": "date-time", + "nullable": true + } + } + }, + "TrackerStatus": { + "description": "Represents the current state of the optimizer being tracked", + "oneOf": [ + { + "type": "string", + "enum": [ + "optimizing", + "done" + ] + }, + { + "type": "object", + "required": [ + "cancelled" + ], + "properties": { + "cancelled": { + "type": "string" + } + }, + "additionalProperties": false + }, + { + "type": "object", + "required": [ + "error" + ], + "properties": { + "error": { + "type": "string" + } + }, + "additionalProperties": false + } + ] + }, + "RemoteShardTelemetry": { + "type": "object", + "required": [ + "searches", + "shard_id", + "updates" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "searches": { + "$ref": "#/components/schemas/OperationDurationStatistics" + }, + "updates": { + "$ref": "#/components/schemas/OperationDurationStatistics" + } + } + }, + "CollectionsAggregatedTelemetry": { + "type": "object", + "required": [ + "optimizers_status", + "params", + "vectors" + ], + "properties": { + "vectors": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "optimizers_status": { + "$ref": "#/components/schemas/OptimizersStatus" + }, + "params": { + "$ref": "#/components/schemas/CollectionParams" + } + } + }, + "ClusterTelemetry": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "status": { + "anyOf": [ + { + "$ref": "#/components/schemas/ClusterStatusTelemetry" + }, + { + "nullable": true + } + ] + }, + "config": { + "anyOf": [ + { + "$ref": "#/components/schemas/ClusterConfigTelemetry" + }, + { + "nullable": true + } + ] + }, + "peers": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/PeerInfo" + }, + "nullable": true + }, + "metadata": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + } + }, + "ClusterStatusTelemetry": { + "type": "object", + "required": [ + "commit", + "consensus_thread_status", + "is_voter", + "number_of_peers", + "pending_operations", + "term" + ], + "properties": { + "number_of_peers": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "term": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "commit": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "pending_operations": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "role": { + "anyOf": [ + { + "$ref": "#/components/schemas/StateRole" + }, + { + "nullable": true + } + ] + }, + "is_voter": { + "type": "boolean" + }, + "peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0, + "nullable": true + }, + "consensus_thread_status": { + "$ref": "#/components/schemas/ConsensusThreadStatus" + } + } + }, + "ClusterConfigTelemetry": { + "type": "object", + "required": [ + "consensus", + "grpc_timeout_ms", + "p2p" + ], + "properties": { + "grpc_timeout_ms": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "p2p": { + "$ref": "#/components/schemas/P2pConfigTelemetry" + }, + "consensus": { + "$ref": "#/components/schemas/ConsensusConfigTelemetry" + } + } + }, + "P2pConfigTelemetry": { + "type": "object", + "required": [ + "connection_pool_size" + ], + "properties": { + "connection_pool_size": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "ConsensusConfigTelemetry": { + "type": "object", + "required": [ + "bootstrap_timeout_sec", + "max_message_queue_size", + "tick_period_ms" + ], + "properties": { + "max_message_queue_size": { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + "tick_period_ms": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "bootstrap_timeout_sec": { + "type": "integer", + "format": "uint64", + "minimum": 0 + } + } + }, + "RequestsTelemetry": { + "type": "object", + "required": [ + "grpc", + "rest" + ], + "properties": { + "rest": { + "$ref": "#/components/schemas/WebApiTelemetry" + }, + "grpc": { + "$ref": "#/components/schemas/GrpcTelemetry" + } + } + }, + "WebApiTelemetry": { + "type": "object", + "required": [ + "responses" + ], + "properties": { + "responses": { + "type": "object", + "additionalProperties": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/OperationDurationStatistics" + } + } + } + } + }, + "GrpcTelemetry": { + "type": "object", + "required": [ + "responses" + ], + "properties": { + "responses": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/OperationDurationStatistics" + } + } + } + }, + "ClusterOperations": { + "anyOf": [ + { + "$ref": "#/components/schemas/MoveShardOperation" + }, + { + "$ref": "#/components/schemas/ReplicateShardOperation" + }, + { + "$ref": "#/components/schemas/AbortTransferOperation" + }, + { + "$ref": "#/components/schemas/DropReplicaOperation" + }, + { + "$ref": "#/components/schemas/CreateShardingKeyOperation" + }, + { + "$ref": "#/components/schemas/DropShardingKeyOperation" + }, + { + "$ref": "#/components/schemas/RestartTransferOperation" + } + ] + }, + "MoveShardOperation": { + "type": "object", + "required": [ + "move_shard" + ], + "properties": { + "move_shard": { + "$ref": "#/components/schemas/MoveShard" + } + } + }, + "MoveShard": { + "type": "object", + "required": [ + "from_peer_id", + "shard_id", + "to_peer_id" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "to_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "from_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "method": { + "description": "Method for transferring the shard from one node to another", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardTransferMethod" + }, + { + "nullable": true + } + ] + } + } + }, + "ReplicateShardOperation": { + "type": "object", + "required": [ + "replicate_shard" + ], + "properties": { + "replicate_shard": { + "$ref": "#/components/schemas/ReplicateShard" + } + } + }, + "ReplicateShard": { + "type": "object", + "required": [ + "from_peer_id", + "shard_id", + "to_peer_id" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "to_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "from_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "method": { + "description": "Method for transferring the shard from one node to another", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardTransferMethod" + }, + { + "nullable": true + } + ] + } + } + }, + "AbortTransferOperation": { + "type": "object", + "required": [ + "abort_transfer" + ], + "properties": { + "abort_transfer": { + "$ref": "#/components/schemas/AbortShardTransfer" + } + } + }, + "AbortShardTransfer": { + "type": "object", + "required": [ + "from_peer_id", + "shard_id", + "to_peer_id" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "to_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "from_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + } + } + }, + "DropReplicaOperation": { + "type": "object", + "required": [ + "drop_replica" + ], + "properties": { + "drop_replica": { + "$ref": "#/components/schemas/Replica" + } + } + }, + "Replica": { + "type": "object", + "required": [ + "peer_id", + "shard_id" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + } + } + }, + "CreateShardingKeyOperation": { + "type": "object", + "required": [ + "create_sharding_key" + ], + "properties": { + "create_sharding_key": { + "$ref": "#/components/schemas/CreateShardingKey" + } + } + }, + "CreateShardingKey": { + "type": "object", + "required": [ + "shard_key" + ], + "properties": { + "shard_key": { + "$ref": "#/components/schemas/ShardKey" + }, + "shards_number": { + "description": "How many shards to create for this key If not specified, will use the default value from config", + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "replication_factor": { + "description": "How many replicas to create for each shard If not specified, will use the default value from config", + "type": "integer", + "format": "uint32", + "minimum": 1, + "nullable": true + }, + "placement": { + "description": "Placement of shards for this key List of peer ids, that can be used to place shards for this key If not specified, will be randomly placed among all peers", + "type": "array", + "items": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "nullable": true + } + } + }, + "DropShardingKeyOperation": { + "type": "object", + "required": [ + "drop_sharding_key" + ], + "properties": { + "drop_sharding_key": { + "$ref": "#/components/schemas/DropShardingKey" + } + } + }, + "DropShardingKey": { + "type": "object", + "required": [ + "shard_key" + ], + "properties": { + "shard_key": { + "$ref": "#/components/schemas/ShardKey" + } + } + }, + "RestartTransferOperation": { + "type": "object", + "required": [ + "restart_transfer" + ], + "properties": { + "restart_transfer": { + "$ref": "#/components/schemas/RestartTransfer" + } + } + }, + "RestartTransfer": { + "type": "object", + "required": [ + "from_peer_id", + "method", + "shard_id", + "to_peer_id" + ], + "properties": { + "shard_id": { + "type": "integer", + "format": "uint32", + "minimum": 0 + }, + "from_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "to_peer_id": { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + "method": { + "$ref": "#/components/schemas/ShardTransferMethod" + } + } + }, + "SearchRequestBatch": { + "type": "object", + "required": [ + "searches" + ], + "properties": { + "searches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchRequest" + } + } + } + }, + "RecommendRequestBatch": { + "type": "object", + "required": [ + "searches" + ], + "properties": { + "searches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendRequest" + } + } + } + }, + "LocksOption": { + "type": "object", + "required": [ + "write" + ], + "properties": { + "error_message": { + "type": "string", + "nullable": true + }, + "write": { + "type": "boolean" + } + } + }, + "SnapshotRecover": { + "type": "object", + "required": [ + "location" + ], + "properties": { + "location": { + "description": "Examples: - URL `http://localhost:8080/collections/my_collection/snapshots/my_snapshot` - Local path `file:///qdrant/snapshots/test_collection-2022-08-04-10-49-10.snapshot`", + "type": "string", + "format": "uri" + }, + "priority": { + "description": "Defines which data should be used as a source of truth if there are other replicas in the cluster. If set to `Snapshot`, the snapshot will be used as a source of truth, and the current state will be overwritten. If set to `Replica`, the current state will be used as a source of truth, and after recovery if will be synchronized with the snapshot.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/SnapshotPriority" + }, + { + "nullable": true + } + ] + }, + "checksum": { + "description": "Optional SHA256 checksum to verify snapshot integrity before recovery.", + "default": null, + "type": "string", + "nullable": true + }, + "api_key": { + "description": "Optional API key used when fetching the snapshot from a remote URL.", + "default": null, + "type": "string", + "nullable": true + } + } + }, + "SnapshotPriority": { + "description": "Defines source of truth for snapshot recovery: `NoSync` means - restore snapshot without *any* additional synchronization. `Snapshot` means - prefer snapshot data over the current state. `Replica` means - prefer existing data over the snapshot.", + "type": "string", + "enum": [ + "no_sync", + "snapshot", + "replica" + ] + }, + "CollectionsAliasesResponse": { + "type": "object", + "required": [ + "aliases" + ], + "properties": { + "aliases": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AliasDescription" + } + } + } + }, + "AliasDescription": { + "type": "object", + "required": [ + "alias_name", + "collection_name" + ], + "properties": { + "alias_name": { + "type": "string" + }, + "collection_name": { + "type": "string" + } + }, + "example": { + "alias_name": "blogs-title", + "collection_name": "arivx-title" + } + }, + "WriteOrdering": { + "description": "Defines write ordering guarantees for collection operations\n\n* `weak` - write operations may be reordered, works faster, default\n\n* `medium` - write operations go through dynamically selected leader, may be inconsistent for a short period of time in case of leader change\n\n* `strong` - Write operations go through the permanent leader, consistent, but may be unavailable if leader is down", + "type": "string", + "enum": [ + "weak", + "medium", + "strong" + ] + }, + "ReadConsistency": { + "description": "Read consistency parameter\n\nDefines how many replicas should be queried to get the result\n\n* `N` - send N random request and return points, which present on all of them\n\n* `majority` - send N/2+1 random request and return points, which present on all of them\n\n* `quorum` - send requests to all nodes and return points which present on majority of them\n\n* `all` - send requests to all nodes and return points which present on all of them\n\nDefault value is `Factor(1)`", + "anyOf": [ + { + "type": "integer", + "format": "uint", + "minimum": 0 + }, + { + "$ref": "#/components/schemas/ReadConsistencyType" + } + ] + }, + "ReadConsistencyType": { + "description": "* `majority` - send N/2+1 random request and return points, which present on all of them\n\n* `quorum` - send requests to all nodes and return points which present on majority of nodes\n\n* `all` - send requests to all nodes and return points which present on all nodes", + "type": "string", + "enum": [ + "majority", + "quorum", + "all" + ] + }, + "UpdateVectors": { + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "description": "Points with named vectors", + "type": "array", + "items": { + "$ref": "#/components/schemas/PointVectors" + }, + "minItems": 1 + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "PointVectors": { + "type": "object", + "required": [ + "id", + "vector" + ], + "properties": { + "id": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "vector": { + "$ref": "#/components/schemas/VectorStruct" + } + } + }, + "DeleteVectors": { + "type": "object", + "required": [ + "vector" + ], + "properties": { + "points": { + "description": "Deletes values from each point in this list", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "nullable": true + }, + "filter": { + "description": "Deletes values from points that satisfy this filter condition", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "vector": { + "description": "Vector names", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1, + "uniqueItems": true + }, + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + } + } + }, + "PointGroup": { + "type": "object", + "required": [ + "hits", + "id" + ], + "properties": { + "hits": { + "description": "Scored points that have the same value of the group_by key", + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + }, + "id": { + "$ref": "#/components/schemas/GroupId" + }, + "lookup": { + "description": "Record that has been looked up using the group id", + "anyOf": [ + { + "$ref": "#/components/schemas/Record" + }, + { + "nullable": true + } + ] + } + } + }, + "GroupId": { + "description": "Value of the group_by key, shared across all the hits in the group", + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "uint64", + "minimum": 0 + }, + { + "type": "integer", + "format": "int64" + } + ] + }, + "SearchGroupsRequest": { + "type": "object", + "required": [ + "group_by", + "group_size", + "limit", + "vector" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "vector": { + "$ref": "#/components/schemas/NamedVectorStruct" + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Additional search params", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "description": "Options for specifying which vectors to include into response. Default is false.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned.", + "type": "number", + "format": "float", + "nullable": true + }, + "group_by": { + "description": "Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups.", + "type": "string", + "minLength": 1 + }, + "group_size": { + "description": "Maximum amount of points to return per group", + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "limit": { + "description": "Maximum amount of groups to return", + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "with_lookup": { + "description": "Look for points in another collection using the group ids", + "anyOf": [ + { + "$ref": "#/components/schemas/WithLookupInterface" + }, + { + "nullable": true + } + ] + } + } + }, + "WithLookupInterface": { + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/components/schemas/WithLookup" + } + ] + }, + "WithLookup": { + "type": "object", + "required": [ + "collection" + ], + "properties": { + "collection": { + "description": "Name of the collection to use for points lookup", + "type": "string" + }, + "with_payload": { + "description": "Options for specifying which payload to include (or not)", + "default": true, + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vectors": { + "description": "Options for specifying which vectors to include (or not)", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + } + } + }, + "RecommendGroupsRequest": { + "type": "object", + "required": [ + "group_by", + "group_size", + "limit" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "positive": { + "description": "Look for vectors closest to those", + "default": [], + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendExample" + } + }, + "negative": { + "description": "Try to avoid vectors like this", + "default": [], + "type": "array", + "items": { + "$ref": "#/components/schemas/RecommendExample" + } + }, + "strategy": { + "description": "How to use positive and negative examples to find the results", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/RecommendStrategy" + }, + { + "nullable": true + } + ] + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Additional search params", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "description": "Options for specifying which vectors to include into response. Default is false.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned.", + "type": "number", + "format": "float", + "nullable": true + }, + "using": { + "description": "Define which vector to use for recommendation, if not specified - try to use default vector", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/UsingVector" + }, + { + "nullable": true + } + ] + }, + "lookup_from": { + "description": "The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + }, + "group_by": { + "description": "Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups.", + "type": "string", + "minLength": 1 + }, + "group_size": { + "description": "Maximum amount of points to return per group", + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "limit": { + "description": "Maximum amount of groups to return", + "type": "integer", + "format": "uint32", + "minimum": 1 + }, + "with_lookup": { + "description": "Look for points in another collection using the group ids", + "anyOf": [ + { + "$ref": "#/components/schemas/WithLookupInterface" + }, + { + "nullable": true + } + ] + } + } + }, + "GroupsResult": { + "type": "object", + "required": [ + "groups" + ], + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PointGroup" + } + } + } + }, + "UpdateOperations": { + "type": "object", + "required": [ + "operations" + ], + "properties": { + "operations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UpdateOperation" + } + } + } + }, + "UpdateOperation": { + "anyOf": [ + { + "$ref": "#/components/schemas/UpsertOperation" + }, + { + "$ref": "#/components/schemas/DeleteOperation" + }, + { + "$ref": "#/components/schemas/SetPayloadOperation" + }, + { + "$ref": "#/components/schemas/OverwritePayloadOperation" + }, + { + "$ref": "#/components/schemas/DeletePayloadOperation" + }, + { + "$ref": "#/components/schemas/ClearPayloadOperation" + }, + { + "$ref": "#/components/schemas/UpdateVectorsOperation" + }, + { + "$ref": "#/components/schemas/DeleteVectorsOperation" + } + ] + }, + "UpsertOperation": { + "type": "object", + "required": [ + "upsert" + ], + "properties": { + "upsert": { + "$ref": "#/components/schemas/PointInsertOperations" + } + } + }, + "DeleteOperation": { + "type": "object", + "required": [ + "delete" + ], + "properties": { + "delete": { + "$ref": "#/components/schemas/PointsSelector" + } + } + }, + "SetPayloadOperation": { + "type": "object", + "required": [ + "set_payload" + ], + "properties": { + "set_payload": { + "$ref": "#/components/schemas/SetPayload" + } + } + }, + "OverwritePayloadOperation": { + "type": "object", + "required": [ + "overwrite_payload" + ], + "properties": { + "overwrite_payload": { + "$ref": "#/components/schemas/SetPayload" + } + } + }, + "DeletePayloadOperation": { + "type": "object", + "required": [ + "delete_payload" + ], + "properties": { + "delete_payload": { + "$ref": "#/components/schemas/DeletePayload" + } + } + }, + "ClearPayloadOperation": { + "type": "object", + "required": [ + "clear_payload" + ], + "properties": { + "clear_payload": { + "$ref": "#/components/schemas/PointsSelector" + } + } + }, + "UpdateVectorsOperation": { + "type": "object", + "required": [ + "update_vectors" + ], + "properties": { + "update_vectors": { + "$ref": "#/components/schemas/UpdateVectors" + } + } + }, + "DeleteVectorsOperation": { + "type": "object", + "required": [ + "delete_vectors" + ], + "properties": { + "delete_vectors": { + "$ref": "#/components/schemas/DeleteVectors" + } + } + }, + "ShardSnapshotRecover": { + "type": "object", + "required": [ + "location" + ], + "properties": { + "location": { + "$ref": "#/components/schemas/ShardSnapshotLocation" + }, + "priority": { + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/SnapshotPriority" + }, + { + "nullable": true + } + ] + }, + "checksum": { + "description": "Optional SHA256 checksum to verify snapshot integrity before recovery.", + "default": null, + "type": "string", + "nullable": true + }, + "api_key": { + "description": "Optional API key used when fetching the snapshot from a remote URL.", + "default": null, + "type": "string", + "nullable": true + } + } + }, + "ShardSnapshotLocation": { + "anyOf": [ + { + "type": "string", + "format": "uri" + }, + { + "type": "string" + } + ] + }, + "DiscoverRequest": { + "description": "Use context and a target to find the most similar points, constrained by the context.", + "type": "object", + "required": [ + "limit" + ], + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "target": { + "description": "Look for vectors closest to this.\n\nWhen using the target (with or without context), the integer part of the score represents the rank with respect to the context, while the decimal part of the score relates to the distance to the target.", + "anyOf": [ + { + "$ref": "#/components/schemas/RecommendExample" + }, + { + "nullable": true + } + ] + }, + "context": { + "description": "Pairs of { positive, negative } examples to constrain the search.\n\nWhen using only the context (without a target), a special search - called context search - is performed where pairs of points are used to generate a loss that guides the search towards the zone where most positive examples overlap. This means that the score minimizes the scenario of finding a point closer to a negative than to a positive part of a pair.\n\nSince the score of a context relates to loss, the maximum score a point can get is 0.0, and it becomes normal that many points can have a score of 0.0.\n\nFor discovery search (when including a target), the context part of the score for each pair is calculated +1 if the point is closer to a positive than to a negative part of a pair, and -1 otherwise.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ContextExamplePair" + }, + "nullable": true + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Additional search params", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "limit": { + "description": "Max number of result to return", + "type": "integer", + "format": "uint", + "minimum": 1 + }, + "offset": { + "description": "Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues.", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "with_payload": { + "description": "Select which payload to return with the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "with_vector": { + "description": "Options for specifying which vectors to include into response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "using": { + "description": "Define which vector to use for recommendation, if not specified - try to use default vector", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/UsingVector" + }, + { + "nullable": true + } + ] + }, + "lookup_from": { + "description": "The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + } + } + }, + "ContextExamplePair": { + "type": "object", + "required": [ + "negative", + "positive" + ], + "properties": { + "positive": { + "$ref": "#/components/schemas/RecommendExample" + }, + "negative": { + "$ref": "#/components/schemas/RecommendExample" + } + } + }, + "DiscoverRequestBatch": { + "type": "object", + "required": [ + "searches" + ], + "properties": { + "searches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DiscoverRequest" + } + } + } + }, + "VersionInfo": { + "type": "object", + "required": [ + "title", + "version" + ], + "properties": { + "title": { + "type": "string" + }, + "version": { + "type": "string" + }, + "commit": { + "type": "string", + "nullable": true + } + } + }, + "CollectionExistence": { + "description": "State of existence of a collection, true = exists, false = does not exist", + "type": "object", + "required": [ + "exists" + ], + "properties": { + "exists": { + "type": "boolean" + } + } + }, + "QueryRequest": { + "type": "object", + "properties": { + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "prefetch": { + "description": "Sub-requests to perform first. If present, the query will be performed on the results of the prefetch(es).", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Prefetch" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Prefetch" + } + }, + { + "nullable": true + } + ] + }, + "query": { + "description": "Query to perform. If missing without prefetches, returns points ordered by their IDs.", + "anyOf": [ + { + "$ref": "#/components/schemas/QueryInterface" + }, + { + "nullable": true + } + ] + }, + "using": { + "description": "Define which vector name to use for querying. If missing, the default vector is used.", + "type": "string", + "nullable": true + }, + "filter": { + "description": "Filter conditions - return only those points that satisfy the specified conditions.", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Search params for when there is no prefetch", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Return points with scores better than this threshold.", + "type": "number", + "format": "float", + "nullable": true + }, + "limit": { + "description": "Max number of points to return. Default is 10.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "offset": { + "description": "Offset of the result. Skip this many points. Default is 0", + "type": "integer", + "format": "uint", + "minimum": 0, + "nullable": true + }, + "with_vector": { + "description": "Options for specifying which vectors to include into the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "with_payload": { + "description": "Options for specifying which payload to include or not. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "lookup_from": { + "description": "The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + } + } + }, + "Prefetch": { + "type": "object", + "properties": { + "prefetch": { + "description": "Sub-requests to perform first. If present, the query will be performed on the results of the prefetches.", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Prefetch" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Prefetch" + } + }, + { + "nullable": true + } + ] + }, + "query": { + "description": "Query to perform. If missing without prefetches, returns points ordered by their IDs.", + "anyOf": [ + { + "$ref": "#/components/schemas/QueryInterface" + }, + { + "nullable": true + } + ] + }, + "using": { + "description": "Define which vector name to use for querying. If missing, the default vector is used.", + "type": "string", + "nullable": true + }, + "filter": { + "description": "Filter conditions - return only those points that satisfy the specified conditions.", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Search params for when there is no prefetch", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Return points with scores better than this threshold.", + "type": "number", + "format": "float", + "nullable": true + }, + "limit": { + "description": "Max number of points to return. Default is 10.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "lookup_from": { + "description": "The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + } + } + }, + "QueryInterface": { + "anyOf": [ + { + "$ref": "#/components/schemas/VectorInput" + }, + { + "$ref": "#/components/schemas/Query" + } + ] + }, + "VectorInput": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + { + "$ref": "#/components/schemas/SparseVector" + }, + { + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + }, + { + "$ref": "#/components/schemas/ExtendedPointId" + }, + { + "$ref": "#/components/schemas/Document" + } + ] + }, + "Query": { + "anyOf": [ + { + "$ref": "#/components/schemas/NearestQuery" + }, + { + "$ref": "#/components/schemas/RecommendQuery" + }, + { + "$ref": "#/components/schemas/DiscoverQuery" + }, + { + "$ref": "#/components/schemas/ContextQuery" + }, + { + "$ref": "#/components/schemas/OrderByQuery" + }, + { + "$ref": "#/components/schemas/FusionQuery" + }, + { + "$ref": "#/components/schemas/SampleQuery" + } + ] + }, + "NearestQuery": { + "type": "object", + "required": [ + "nearest" + ], + "properties": { + "nearest": { + "$ref": "#/components/schemas/VectorInput" + } + } + }, + "RecommendQuery": { + "type": "object", + "required": [ + "recommend" + ], + "properties": { + "recommend": { + "$ref": "#/components/schemas/RecommendInput" + } + } + }, + "RecommendInput": { + "type": "object", + "properties": { + "positive": { + "description": "Look for vectors closest to the vectors from these points", + "type": "array", + "items": { + "$ref": "#/components/schemas/VectorInput" + }, + "nullable": true + }, + "negative": { + "description": "Try to avoid vectors like the vector from these points", + "type": "array", + "items": { + "$ref": "#/components/schemas/VectorInput" + }, + "nullable": true + }, + "strategy": { + "description": "How to use the provided vectors to find the results", + "anyOf": [ + { + "$ref": "#/components/schemas/RecommendStrategy" + }, + { + "nullable": true + } + ] + } + } + }, + "DiscoverQuery": { + "type": "object", + "required": [ + "discover" + ], + "properties": { + "discover": { + "$ref": "#/components/schemas/DiscoverInput" + } + } + }, + "DiscoverInput": { + "type": "object", + "required": [ + "context", + "target" + ], + "properties": { + "target": { + "$ref": "#/components/schemas/VectorInput" + }, + "context": { + "description": "Search space will be constrained by these pairs of vectors", + "anyOf": [ + { + "$ref": "#/components/schemas/ContextPair" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContextPair" + } + }, + { + "nullable": true + } + ] + } + } + }, + "ContextPair": { + "type": "object", + "required": [ + "negative", + "positive" + ], + "properties": { + "positive": { + "$ref": "#/components/schemas/VectorInput" + }, + "negative": { + "$ref": "#/components/schemas/VectorInput" + } + } + }, + "ContextQuery": { + "type": "object", + "required": [ + "context" + ], + "properties": { + "context": { + "$ref": "#/components/schemas/ContextInput" + } + } + }, + "ContextInput": { + "anyOf": [ + { + "$ref": "#/components/schemas/ContextPair" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/ContextPair" + } + }, + { + "nullable": true + } + ] + }, + "OrderByQuery": { + "type": "object", + "required": [ + "order_by" + ], + "properties": { + "order_by": { + "$ref": "#/components/schemas/OrderByInterface" + } + } + }, + "FusionQuery": { + "type": "object", + "required": [ + "fusion" + ], + "properties": { + "fusion": { + "$ref": "#/components/schemas/Fusion" + } + } + }, + "Fusion": { + "description": "Fusion algorithm allows to combine results of multiple prefetches.\n\nAvailable fusion algorithms:\n\n* `rrf` - Reciprocal Rank Fusion * `dbsf` - Distribution-Based Score Fusion", + "type": "string", + "enum": [ + "rrf", + "dbsf" + ] + }, + "SampleQuery": { + "type": "object", + "required": [ + "sample" + ], + "properties": { + "sample": { + "$ref": "#/components/schemas/Sample" + } + } + }, + "Sample": { + "type": "string", + "enum": [ + "random" + ] + }, + "QueryRequestBatch": { + "type": "object", + "required": [ + "searches" + ], + "properties": { + "searches": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QueryRequest" + } + } + } + }, + "QueryResponse": { + "type": "object", + "required": [ + "points" + ], + "properties": { + "points": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ScoredPoint" + } + } + } + }, + "QueryGroupsRequest": { + "type": "object", + "required": [ + "group_by" + ], + "properties": { + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "prefetch": { + "description": "Sub-requests to perform first. If present, the query will be performed on the results of the prefetch(es).", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/Prefetch" + }, + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Prefetch" + } + }, + { + "nullable": true + } + ] + }, + "query": { + "description": "Query to perform. If missing without prefetches, returns points ordered by their IDs.", + "anyOf": [ + { + "$ref": "#/components/schemas/QueryInterface" + }, + { + "nullable": true + } + ] + }, + "using": { + "description": "Define which vector name to use for querying. If missing, the default vector is used.", + "type": "string", + "nullable": true + }, + "filter": { + "description": "Filter conditions - return only those points that satisfy the specified conditions.", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "params": { + "description": "Search params for when there is no prefetch", + "anyOf": [ + { + "$ref": "#/components/schemas/SearchParams" + }, + { + "nullable": true + } + ] + }, + "score_threshold": { + "description": "Return points with scores better than this threshold.", + "type": "number", + "format": "float", + "nullable": true + }, + "with_vector": { + "description": "Options for specifying which vectors to include into the response. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithVector" + }, + { + "nullable": true + } + ] + }, + "with_payload": { + "description": "Options for specifying which payload to include or not. Default is false.", + "anyOf": [ + { + "$ref": "#/components/schemas/WithPayloadInterface" + }, + { + "nullable": true + } + ] + }, + "lookup_from": { + "description": "The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection", + "default": null, + "anyOf": [ + { + "$ref": "#/components/schemas/LookupLocation" + }, + { + "nullable": true + } + ] + }, + "group_by": { + "description": "Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups.", + "type": "string", + "minLength": 1 + }, + "group_size": { + "description": "Maximum amount of points to return per group. Default is 3.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "limit": { + "description": "Maximum amount of groups to return. Default is 10.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "with_lookup": { + "description": "Look for points in another collection using the group ids", + "anyOf": [ + { + "$ref": "#/components/schemas/WithLookupInterface" + }, + { + "nullable": true + } + ] + } + } + }, + "SearchMatrixRequest": { + "type": "object", + "properties": { + "shard_key": { + "description": "Specify in which shards to look for the points, if not specified - look in all shards", + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "filter": { + "description": "Look only for points which satisfies this conditions", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "sample": { + "description": "How many points to select and search within. Default is 10.", + "type": "integer", + "format": "uint", + "minimum": 2, + "nullable": true + }, + "limit": { + "description": "How many neighbours per sample to find. Default is 3.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "using": { + "description": "Define which vector name to use for querying. If missing, the default vector is used.", + "type": "string", + "nullable": true + } + } + }, + "SearchMatrixOffsetsResponse": { + "type": "object", + "required": [ + "ids", + "offsets_col", + "offsets_row", + "scores" + ], + "properties": { + "offsets_row": { + "description": "Row indices of the matrix", + "type": "array", + "items": { + "type": "integer", + "format": "uint64", + "minimum": 0 + } + }, + "offsets_col": { + "description": "Column indices of the matrix", + "type": "array", + "items": { + "type": "integer", + "format": "uint64", + "minimum": 0 + } + }, + "scores": { + "description": "Scores associated with matrix coordinates", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "ids": { + "description": "Ids of the points in order", + "type": "array", + "items": { + "$ref": "#/components/schemas/ExtendedPointId" + } + } + } + }, + "SearchMatrixPairsResponse": { + "type": "object", + "required": [ + "pairs" + ], + "properties": { + "pairs": { + "description": "List of pairs of points with scores", + "type": "array", + "items": { + "$ref": "#/components/schemas/SearchMatrixPair" + } + } + } + }, + "SearchMatrixPair": { + "description": "Pair of points (a, b) with score", + "type": "object", + "required": [ + "a", + "b", + "score" + ], + "properties": { + "a": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "b": { + "$ref": "#/components/schemas/ExtendedPointId" + }, + "score": { + "type": "number", + "format": "float" + } + } + }, + "FacetRequest": { + "type": "object", + "required": [ + "key" + ], + "properties": { + "shard_key": { + "anyOf": [ + { + "$ref": "#/components/schemas/ShardKeySelector" + }, + { + "nullable": true + } + ] + }, + "key": { + "description": "Payload key to use for faceting.", + "type": "string" + }, + "limit": { + "description": "Max number of hits to return. Default is 10.", + "type": "integer", + "format": "uint", + "minimum": 1, + "nullable": true + }, + "filter": { + "description": "Filter conditions - only consider points that satisfy these conditions.", + "anyOf": [ + { + "$ref": "#/components/schemas/Filter" + }, + { + "nullable": true + } + ] + }, + "exact": { + "description": "Whether to do a more expensive exact count for each of the values in the facet. Default is false.", + "type": "boolean", + "nullable": true + } + } + }, + "FacetResponse": { + "type": "object", + "required": [ + "hits" + ], + "properties": { + "hits": { + "type": "array", + "items": { + "$ref": "#/components/schemas/FacetValueHit" + } + } + } + }, + "FacetValueHit": { + "type": "object", + "required": [ + "count", + "value" + ], + "properties": { + "value": { + "$ref": "#/components/schemas/FacetValue" + }, + "count": { + "type": "integer", + "format": "uint", + "minimum": 0 + } + } + }, + "FacetValue": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer", + "format": "int64" + }, + { + "type": "boolean" + } + ] + } + } + } +} diff --git a/samples/client/others/crystal-qdrant/.gitignore b/samples/client/others/crystal-qdrant/.gitignore new file mode 100644 index 000000000000..15f3b69381a3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/.gitignore @@ -0,0 +1,17 @@ +# Generated by: https://openapi-generator.tech +# + +/docs/ +/lib/ +/bin/ +/.shards/ +*.dwarf + +# Libraries don't need dependency lock +# Dependencies will be locked in applications that use them +/shard.lock + +/tmp/ + +# Spectator run artifact +.spectator-failures diff --git a/samples/client/others/crystal-qdrant/.openapi-generator-ignore b/samples/client/others/crystal-qdrant/.openapi-generator-ignore new file mode 100644 index 000000000000..7484ee590a38 --- /dev/null +++ b/samples/client/others/crystal-qdrant/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/samples/client/others/crystal-qdrant/.openapi-generator/FILES b/samples/client/others/crystal-qdrant/.openapi-generator/FILES new file mode 100644 index 000000000000..74586c986b63 --- /dev/null +++ b/samples/client/others/crystal-qdrant/.openapi-generator/FILES @@ -0,0 +1,350 @@ +.gitignore +README.md +git_push.sh +shard.yml +spec/spec_helper.cr +src/qdrant-api.cr +src/qdrant-api/api/aliases.cr +src/qdrant-api/api/cluster.cr +src/qdrant-api/api/cluster/peer.cr +src/qdrant-api/api/collections.cr +src/qdrant-api/api/collections/index.cr +src/qdrant-api/api/collections/points.cr +src/qdrant-api/api/collections/shards.cr +src/qdrant-api/api/collections/snapshots.cr +src/qdrant-api/api/healthz.cr +src/qdrant-api/api/issues.cr +src/qdrant-api/api/livez.cr +src/qdrant-api/api/locks.cr +src/qdrant-api/api/metrics.cr +src/qdrant-api/api/readyz.cr +src/qdrant-api/api/root.cr +src/qdrant-api/api/snapshots.cr +src/qdrant-api/api/telemetry.cr +src/qdrant-api/api_error.cr +src/qdrant-api/client.cr +src/qdrant-api/configuration.cr +src/qdrant-api/connection.cr +src/qdrant-api/models/abort_shard_transfer.cr +src/qdrant-api/models/abort_transfer_operation.cr +src/qdrant-api/models/alias_description.cr +src/qdrant-api/models/alias_operations.cr +src/qdrant-api/models/any_variants.cr +src/qdrant-api/models/app_build_telemetry.cr +src/qdrant-api/models/app_features_telemetry.cr +src/qdrant-api/models/batch.cr +src/qdrant-api/models/batch_payloads_inner.cr +src/qdrant-api/models/batch_update200_response.cr +src/qdrant-api/models/batch_vector_struct.cr +src/qdrant-api/models/binary_quantization.cr +src/qdrant-api/models/binary_quantization_config.cr +src/qdrant-api/models/bool_index_params.cr +src/qdrant-api/models/bool_index_type.cr +src/qdrant-api/models/change_aliases_operation.cr +src/qdrant-api/models/clear_payload_operation.cr +src/qdrant-api/models/cluster_config_telemetry.cr +src/qdrant-api/models/cluster_operations.cr +src/qdrant-api/models/cluster_status.cr +src/qdrant-api/models/cluster_status200_response.cr +src/qdrant-api/models/cluster_status_one_of.cr +src/qdrant-api/models/cluster_status_one_of1.cr +src/qdrant-api/models/cluster_status_telemetry.cr +src/qdrant-api/models/cluster_telemetry.cr +src/qdrant-api/models/collection_cluster_info.cr +src/qdrant-api/models/collection_cluster_info200_response.cr +src/qdrant-api/models/collection_config.cr +src/qdrant-api/models/collection_description.cr +src/qdrant-api/models/collection_existence.cr +src/qdrant-api/models/collection_exists200_response.cr +src/qdrant-api/models/collection_info.cr +src/qdrant-api/models/collection_params.cr +src/qdrant-api/models/collection_params_diff.cr +src/qdrant-api/models/collection_status.cr +src/qdrant-api/models/collection_telemetry.cr +src/qdrant-api/models/collection_telemetry_enum.cr +src/qdrant-api/models/collections_aggregated_telemetry.cr +src/qdrant-api/models/collections_aliases_response.cr +src/qdrant-api/models/collections_response.cr +src/qdrant-api/models/collections_telemetry.cr +src/qdrant-api/models/compression_ratio.cr +src/qdrant-api/models/condition.cr +src/qdrant-api/models/consensus_config_telemetry.cr +src/qdrant-api/models/consensus_thread_status.cr +src/qdrant-api/models/consensus_thread_status_one_of.cr +src/qdrant-api/models/consensus_thread_status_one_of1.cr +src/qdrant-api/models/consensus_thread_status_one_of2.cr +src/qdrant-api/models/context_example_pair.cr +src/qdrant-api/models/context_input.cr +src/qdrant-api/models/context_pair.cr +src/qdrant-api/models/context_query.cr +src/qdrant-api/models/count_points200_response.cr +src/qdrant-api/models/count_request.cr +src/qdrant-api/models/count_result.cr +src/qdrant-api/models/create_alias.cr +src/qdrant-api/models/create_alias_operation.cr +src/qdrant-api/models/create_collection.cr +src/qdrant-api/models/create_field_index.cr +src/qdrant-api/models/create_field_index200_response.cr +src/qdrant-api/models/create_shard_key200_response.cr +src/qdrant-api/models/create_sharding_key.cr +src/qdrant-api/models/create_sharding_key_operation.cr +src/qdrant-api/models/create_snapshot200_response.cr +src/qdrant-api/models/datatype.cr +src/qdrant-api/models/datetime_index_params.cr +src/qdrant-api/models/datetime_index_type.cr +src/qdrant-api/models/datetime_range.cr +src/qdrant-api/models/delete_alias.cr +src/qdrant-api/models/delete_alias_operation.cr +src/qdrant-api/models/delete_operation.cr +src/qdrant-api/models/delete_payload.cr +src/qdrant-api/models/delete_payload_operation.cr +src/qdrant-api/models/delete_vectors.cr +src/qdrant-api/models/delete_vectors_operation.cr +src/qdrant-api/models/direction.cr +src/qdrant-api/models/disabled.cr +src/qdrant-api/models/discover_input.cr +src/qdrant-api/models/discover_input_context.cr +src/qdrant-api/models/discover_query.cr +src/qdrant-api/models/discover_request.cr +src/qdrant-api/models/discover_request_batch.cr +src/qdrant-api/models/distance.cr +src/qdrant-api/models/document.cr +src/qdrant-api/models/drop_replica_operation.cr +src/qdrant-api/models/drop_sharding_key.cr +src/qdrant-api/models/drop_sharding_key_operation.cr +src/qdrant-api/models/error_response.cr +src/qdrant-api/models/error_response_status.cr +src/qdrant-api/models/extended_point_id.cr +src/qdrant-api/models/facet200_response.cr +src/qdrant-api/models/facet_request.cr +src/qdrant-api/models/facet_response.cr +src/qdrant-api/models/facet_value.cr +src/qdrant-api/models/facet_value_hit.cr +src/qdrant-api/models/field_condition.cr +src/qdrant-api/models/filter.cr +src/qdrant-api/models/filter_selector.cr +src/qdrant-api/models/filter_should.cr +src/qdrant-api/models/float_index_params.cr +src/qdrant-api/models/float_index_type.cr +src/qdrant-api/models/fusion.cr +src/qdrant-api/models/fusion_query.cr +src/qdrant-api/models/geo_bounding_box.cr +src/qdrant-api/models/geo_index_params.cr +src/qdrant-api/models/geo_index_type.cr +src/qdrant-api/models/geo_line_string.cr +src/qdrant-api/models/geo_point.cr +src/qdrant-api/models/geo_polygon.cr +src/qdrant-api/models/geo_radius.cr +src/qdrant-api/models/get_collection200_response.cr +src/qdrant-api/models/get_collection_aliases200_response.cr +src/qdrant-api/models/get_collections200_response.cr +src/qdrant-api/models/get_locks200_response.cr +src/qdrant-api/models/get_point200_response.cr +src/qdrant-api/models/get_points200_response.cr +src/qdrant-api/models/group_id.cr +src/qdrant-api/models/groups_result.cr +src/qdrant-api/models/grpc_telemetry.cr +src/qdrant-api/models/has_id_condition.cr +src/qdrant-api/models/hnsw_config.cr +src/qdrant-api/models/hnsw_config_diff.cr +src/qdrant-api/models/indexes.cr +src/qdrant-api/models/indexes_one_of.cr +src/qdrant-api/models/indexes_one_of1.cr +src/qdrant-api/models/init_from.cr +src/qdrant-api/models/integer_index_params.cr +src/qdrant-api/models/integer_index_type.cr +src/qdrant-api/models/is_empty_condition.cr +src/qdrant-api/models/is_null_condition.cr +src/qdrant-api/models/keyword_index_params.cr +src/qdrant-api/models/keyword_index_type.cr +src/qdrant-api/models/list_snapshots200_response.cr +src/qdrant-api/models/local_shard_info.cr +src/qdrant-api/models/local_shard_telemetry.cr +src/qdrant-api/models/locks_option.cr +src/qdrant-api/models/lookup_location.cr +src/qdrant-api/models/match.cr +src/qdrant-api/models/match_any.cr +src/qdrant-api/models/match_except.cr +src/qdrant-api/models/match_text.cr +src/qdrant-api/models/match_value.cr +src/qdrant-api/models/message_send_errors.cr +src/qdrant-api/models/min_should.cr +src/qdrant-api/models/modifier.cr +src/qdrant-api/models/move_shard.cr +src/qdrant-api/models/move_shard_operation.cr +src/qdrant-api/models/multi_vector_comparator.cr +src/qdrant-api/models/multi_vector_config.cr +src/qdrant-api/models/named_sparse_vector.cr +src/qdrant-api/models/named_vector.cr +src/qdrant-api/models/named_vector_struct.cr +src/qdrant-api/models/nearest_query.cr +src/qdrant-api/models/nested.cr +src/qdrant-api/models/nested_condition.cr +src/qdrant-api/models/operation_duration_statistics.cr +src/qdrant-api/models/optimizer_telemetry.cr +src/qdrant-api/models/optimizers_config.cr +src/qdrant-api/models/optimizers_config_diff.cr +src/qdrant-api/models/optimizers_status.cr +src/qdrant-api/models/optimizers_status_one_of.cr +src/qdrant-api/models/order_by.cr +src/qdrant-api/models/order_by_interface.cr +src/qdrant-api/models/order_by_query.cr +src/qdrant-api/models/order_value.cr +src/qdrant-api/models/overwrite_payload_operation.cr +src/qdrant-api/models/p2p_config_telemetry.cr +src/qdrant-api/models/payload_field.cr +src/qdrant-api/models/payload_field_schema.cr +src/qdrant-api/models/payload_index_info.cr +src/qdrant-api/models/payload_index_telemetry.cr +src/qdrant-api/models/payload_schema_params.cr +src/qdrant-api/models/payload_schema_type.cr +src/qdrant-api/models/payload_selector.cr +src/qdrant-api/models/payload_selector_exclude.cr +src/qdrant-api/models/payload_selector_include.cr +src/qdrant-api/models/payload_storage_type.cr +src/qdrant-api/models/payload_storage_type_one_of.cr +src/qdrant-api/models/payload_storage_type_one_of1.cr +src/qdrant-api/models/peer_info.cr +src/qdrant-api/models/point_group.cr +src/qdrant-api/models/point_ids_list.cr +src/qdrant-api/models/point_insert_operations.cr +src/qdrant-api/models/point_request.cr +src/qdrant-api/models/point_struct.cr +src/qdrant-api/models/point_vectors.cr +src/qdrant-api/models/points_batch.cr +src/qdrant-api/models/points_list.cr +src/qdrant-api/models/points_selector.cr +src/qdrant-api/models/prefetch.cr +src/qdrant-api/models/product_quantization.cr +src/qdrant-api/models/product_quantization_config.cr +src/qdrant-api/models/quantization_config.cr +src/qdrant-api/models/quantization_config_diff.cr +src/qdrant-api/models/quantization_search_params.cr +src/qdrant-api/models/query.cr +src/qdrant-api/models/query_batch_points200_response.cr +src/qdrant-api/models/query_groups_request.cr +src/qdrant-api/models/query_interface.cr +src/qdrant-api/models/query_points200_response.cr +src/qdrant-api/models/query_request.cr +src/qdrant-api/models/query_request_batch.cr +src/qdrant-api/models/query_request_prefetch.cr +src/qdrant-api/models/query_response.cr +src/qdrant-api/models/raft_info.cr +src/qdrant-api/models/range.cr +src/qdrant-api/models/range_interface.cr +src/qdrant-api/models/read_consistency.cr +src/qdrant-api/models/read_consistency_type.cr +src/qdrant-api/models/recommend_example.cr +src/qdrant-api/models/recommend_groups_request.cr +src/qdrant-api/models/recommend_input.cr +src/qdrant-api/models/recommend_query.cr +src/qdrant-api/models/recommend_request.cr +src/qdrant-api/models/recommend_request_batch.cr +src/qdrant-api/models/recommend_strategy.cr +src/qdrant-api/models/record.cr +src/qdrant-api/models/recover_from_uploaded_snapshot202_response.cr +src/qdrant-api/models/remote_shard_info.cr +src/qdrant-api/models/remote_shard_telemetry.cr +src/qdrant-api/models/rename_alias.cr +src/qdrant-api/models/rename_alias_operation.cr +src/qdrant-api/models/replica.cr +src/qdrant-api/models/replica_set_telemetry.cr +src/qdrant-api/models/replica_state.cr +src/qdrant-api/models/replicate_shard.cr +src/qdrant-api/models/replicate_shard_operation.cr +src/qdrant-api/models/requests_telemetry.cr +src/qdrant-api/models/resharding_direction.cr +src/qdrant-api/models/resharding_info.cr +src/qdrant-api/models/restart_transfer.cr +src/qdrant-api/models/restart_transfer_operation.cr +src/qdrant-api/models/running_environment_telemetry.cr +src/qdrant-api/models/sample.cr +src/qdrant-api/models/sample_query.cr +src/qdrant-api/models/scalar_quantization.cr +src/qdrant-api/models/scalar_quantization_config.cr +src/qdrant-api/models/scalar_type.cr +src/qdrant-api/models/scored_point.cr +src/qdrant-api/models/scroll_points200_response.cr +src/qdrant-api/models/scroll_request.cr +src/qdrant-api/models/scroll_result.cr +src/qdrant-api/models/search_batch_points200_response.cr +src/qdrant-api/models/search_groups_request.cr +src/qdrant-api/models/search_matrix_offsets200_response.cr +src/qdrant-api/models/search_matrix_offsets_response.cr +src/qdrant-api/models/search_matrix_pair.cr +src/qdrant-api/models/search_matrix_pairs200_response.cr +src/qdrant-api/models/search_matrix_pairs_response.cr +src/qdrant-api/models/search_matrix_request.cr +src/qdrant-api/models/search_params.cr +src/qdrant-api/models/search_point_groups200_response.cr +src/qdrant-api/models/search_points200_response.cr +src/qdrant-api/models/search_request.cr +src/qdrant-api/models/search_request_batch.cr +src/qdrant-api/models/segment_config.cr +src/qdrant-api/models/segment_info.cr +src/qdrant-api/models/segment_telemetry.cr +src/qdrant-api/models/segment_type.cr +src/qdrant-api/models/set_payload.cr +src/qdrant-api/models/set_payload_operation.cr +src/qdrant-api/models/shard_key.cr +src/qdrant-api/models/shard_key_selector.cr +src/qdrant-api/models/shard_snapshot_location.cr +src/qdrant-api/models/shard_snapshot_recover.cr +src/qdrant-api/models/shard_status.cr +src/qdrant-api/models/shard_transfer_info.cr +src/qdrant-api/models/shard_transfer_method.cr +src/qdrant-api/models/sharding_method.cr +src/qdrant-api/models/snapshot_description.cr +src/qdrant-api/models/snapshot_priority.cr +src/qdrant-api/models/snapshot_recover.cr +src/qdrant-api/models/sparse_index_config.cr +src/qdrant-api/models/sparse_index_params.cr +src/qdrant-api/models/sparse_index_type.cr +src/qdrant-api/models/sparse_vector.cr +src/qdrant-api/models/sparse_vector_data_config.cr +src/qdrant-api/models/sparse_vector_params.cr +src/qdrant-api/models/start_from.cr +src/qdrant-api/models/state_role.cr +src/qdrant-api/models/telemetry200_response.cr +src/qdrant-api/models/telemetry_data.cr +src/qdrant-api/models/text_index_params.cr +src/qdrant-api/models/text_index_type.cr +src/qdrant-api/models/tokenizer_type.cr +src/qdrant-api/models/tracker_status.cr +src/qdrant-api/models/tracker_status_one_of.cr +src/qdrant-api/models/tracker_telemetry.cr +src/qdrant-api/models/update_collection.cr +src/qdrant-api/models/update_operation.cr +src/qdrant-api/models/update_operations.cr +src/qdrant-api/models/update_result.cr +src/qdrant-api/models/update_status.cr +src/qdrant-api/models/update_vectors.cr +src/qdrant-api/models/update_vectors_operation.cr +src/qdrant-api/models/upsert_operation.cr +src/qdrant-api/models/uuid_index_params.cr +src/qdrant-api/models/uuid_index_type.cr +src/qdrant-api/models/value_variants.cr +src/qdrant-api/models/values_count.cr +src/qdrant-api/models/vector.cr +src/qdrant-api/models/vector_data_config.cr +src/qdrant-api/models/vector_data_info.cr +src/qdrant-api/models/vector_index_searches_telemetry.cr +src/qdrant-api/models/vector_input.cr +src/qdrant-api/models/vector_params.cr +src/qdrant-api/models/vector_params_diff.cr +src/qdrant-api/models/vector_storage_datatype.cr +src/qdrant-api/models/vector_storage_type.cr +src/qdrant-api/models/vector_struct.cr +src/qdrant-api/models/vectors_config.cr +src/qdrant-api/models/version_info.cr +src/qdrant-api/models/wal_config.cr +src/qdrant-api/models/wal_config_diff.cr +src/qdrant-api/models/web_api_telemetry.cr +src/qdrant-api/models/with_lookup.cr +src/qdrant-api/models/with_lookup_interface.cr +src/qdrant-api/models/with_payload_interface.cr +src/qdrant-api/models/with_vector.cr +src/qdrant-api/models/write_ordering.cr +src/qdrant-api/response.cr +src/qdrant-api/serializable.cr +src/qdrant-api/validation.cr diff --git a/samples/client/others/crystal-qdrant/.openapi-generator/VERSION b/samples/client/others/crystal-qdrant/.openapi-generator/VERSION new file mode 100644 index 000000000000..186c33c96ed8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.24.0-SNAPSHOT diff --git a/samples/client/others/crystal-qdrant/README.md b/samples/client/others/crystal-qdrant/README.md new file mode 100644 index 000000000000..09ddc16fa48a --- /dev/null +++ b/samples/client/others/crystal-qdrant/README.md @@ -0,0 +1,186 @@ +# qdrant-api + +The Crystal module for the Qdrant API + +API description for Qdrant vector search engine. + +This document describes CRUD and search operations on collections of points (vectors with payload). + +Qdrant supports any combinations of `should`, `min_should`, `must` and `must_not` conditions, which makes it possible to use in applications when object could not be described solely by vector. It could be location features, availability flags, and other custom properties businesses should take into account. +## Examples +This examples cover the most basic use-cases - collection creation and basic vector search. +### Create collection +First - let's create a collection with dot-production metric. +``` +curl -X PUT 'http://localhost:6333/collections/test_collection' \\ + -H 'Content-Type: application/json' \\ + --data-raw '{ + \"vectors\": { + \"size\": 4, + \"distance\": \"Dot\" + } + }' + +``` +Expected response: +``` +{ + \"result\": true, + \"status\": \"ok\", + \"time\": 0.031095451 +} +``` +We can ensure that collection was created: +``` +curl 'http://localhost:6333/collections/test_collection' +``` +Expected response: +``` +{ + \"result\": { + \"status\": \"green\", + \"vectors_count\": 0, + \"segments_count\": 5, + \"disk_data_size\": 0, + \"ram_data_size\": 0, + \"config\": { + \"params\": { + \"vectors\": { + \"size\": 4, + \"distance\": \"Dot\" + } + }, + \"hnsw_config\": { + \"m\": 16, + \"ef_construct\": 100, + \"full_scan_threshold\": 10000 + }, + \"optimizer_config\": { + \"deleted_threshold\": 0.2, + \"vacuum_min_vector_number\": 1000, + \"default_segment_number\": 2, + \"max_segment_size\": null, + \"memmap_threshold\": null, + \"indexing_threshold\": 20000, + \"flush_interval_sec\": 5, + \"max_optimization_threads\": null + }, + \"wal_config\": { + \"wal_capacity_mb\": 32, + \"wal_segments_ahead\": 0 + } + } + }, + \"status\": \"ok\", + \"time\": 2.1199e-05 +} +``` + +### Add points +Let's now add vectors with some payload: +``` +curl -L -X PUT 'http://localhost:6333/collections/test_collection/points?wait=true' \\ -H 'Content-Type: application/json' \\ --data-raw '{ + \"points\": [ + {\"id\": 1, \"vector\": [0.05, 0.61, 0.76, 0.74], \"payload\": {\"city\": \"Berlin\"}}, + {\"id\": 2, \"vector\": [0.19, 0.81, 0.75, 0.11], \"payload\": {\"city\": [\"Berlin\", \"London\"] }}, + {\"id\": 3, \"vector\": [0.36, 0.55, 0.47, 0.94], \"payload\": {\"city\": [\"Berlin\", \"Moscow\"] }}, + {\"id\": 4, \"vector\": [0.18, 0.01, 0.85, 0.80], \"payload\": {\"city\": [\"London\", \"Moscow\"] }}, + {\"id\": 5, \"vector\": [0.24, 0.18, 0.22, 0.44], \"payload\": {\"count\": [0]}}, + {\"id\": 6, \"vector\": [0.35, 0.08, 0.11, 0.44]} + ] +}' +``` +Expected response: +``` +{ + \"result\": { + \"operation_id\": 0, + \"status\": \"completed\" + }, + \"status\": \"ok\", + \"time\": 0.000206061 +} +``` +### Search with filtering +Let's start with a basic request: +``` +curl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{ + \"vector\": [0.2,0.1,0.9,0.7], + \"top\": 3 +}' +``` +Expected response: +``` +{ + \"result\": [ + { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 }, + { \"id\": 1, \"score\": 1.273, \"payload\": null, \"version\": 0 }, + { \"id\": 3, \"score\": 1.208, \"payload\": null, \"version\": 0 } + ], + \"status\": \"ok\", + \"time\": 0.000055785 +} +``` +But result is different if we add a filter: +``` +curl -L -X POST 'http://localhost:6333/collections/test_collection/points/search' \\ -H 'Content-Type: application/json' \\ --data-raw '{ + \"filter\": { + \"should\": [ + { + \"key\": \"city\", + \"match\": { + \"value\": \"London\" + } + } + ] + }, + \"vector\": [0.2, 0.1, 0.9, 0.7], + \"top\": 3 +}' +``` +Expected response: +``` +{ + \"result\": [ + { \"id\": 4, \"score\": 1.362, \"payload\": null, \"version\": 0 }, + { \"id\": 2, \"score\": 0.871, \"payload\": null, \"version\": 0 } + ], + \"status\": \"ok\", + \"time\": 0.000093972 +} +``` + + +This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: + +- API version: master +- Package version: 1.0.0 +- Generator version: 7.24.0-SNAPSHOT +- Build package: org.openapitools.codegen.languages.CrystalClientCodegen + +## Installation + +### Install from Git + +Add the following to shard.yaml + +```yaml +dependencies: + qdrant-api: + github: GIT_USER_ID/GIT_REPO_ID + version: ~> 1.0.0 +``` + +## Development + +Install dependencies + +```shell +shards +``` + +Run the tests: + +```shell +crystal spec +``` diff --git a/samples/client/others/crystal-qdrant/git_push.sh b/samples/client/others/crystal-qdrant/git_push.sh new file mode 100644 index 000000000000..f53a75d4fabe --- /dev/null +++ b/samples/client/others/crystal-qdrant/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/samples/client/others/crystal-qdrant/shard.yml b/samples/client/others/crystal-qdrant/shard.yml new file mode 100644 index 000000000000..a6eef6bb759e --- /dev/null +++ b/samples/client/others/crystal-qdrant/shard.yml @@ -0,0 +1,25 @@ +name: qdrant-api + +version: 1.0.0 + +authors: + - + +description: | + - This shard maps to a REST API + +crystal: ">= 0.35.1" + +dependencies: + crest: + github: mamantoha/crest + version: ~> 1.3.13 + +development_dependencies: + ameba: + github: crystal-ameba/ameba + spectator: + gitlab: arctic-fox/spectator + version: ~> 0.12.0 + +license: unlicense diff --git a/samples/client/others/crystal-qdrant/spec/api/aliases_spec.cr b/samples/client/others/crystal-qdrant/spec/api/aliases_spec.cr new file mode 100644 index 000000000000..e93310b74f91 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/aliases_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Aliases +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Aliases" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Aliases.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Aliases) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/cluster/peer_spec.cr b/samples/client/others/crystal-qdrant/spec/api/cluster/peer_spec.cr new file mode 100644 index 000000000000..f4c6fc372f66 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/cluster/peer_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Qdrant::Api::Cluster::Peer +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Cluster::Peer" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Cluster::Peer.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Cluster::Peer) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/cluster_spec.cr b/samples/client/others/crystal-qdrant/spec/api/cluster_spec.cr new file mode 100644 index 000000000000..056ef6035f83 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/cluster_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Cluster +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Cluster" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Cluster.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Cluster) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/collections/index_spec.cr b/samples/client/others/crystal-qdrant/spec/api/collections/index_spec.cr new file mode 100644 index 000000000000..c088c9ffaeb3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/collections/index_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Qdrant::Api::Collections::Index +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Collections::Index" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Collections::Index.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Collections::Index) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/collections/points_spec.cr b/samples/client/others/crystal-qdrant/spec/api/collections/points_spec.cr new file mode 100644 index 000000000000..00392b3b0ee1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/collections/points_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Qdrant::Api::Collections::Points +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Collections::Points" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Collections::Points.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Collections::Points) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/collections/shards_spec.cr b/samples/client/others/crystal-qdrant/spec/api/collections/shards_spec.cr new file mode 100644 index 000000000000..2dbe18a9ac4c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/collections/shards_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Qdrant::Api::Collections::Shards +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Collections::Shards" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Collections::Shards.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Collections::Shards) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/collections/snapshots_spec.cr b/samples/client/others/crystal-qdrant/spec/api/collections/snapshots_spec.cr new file mode 100644 index 000000000000..5a01f0c7aba1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/collections/snapshots_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../../spec_helper" + +# Unit tests for Qdrant::Api::Collections::Snapshots +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Collections::Snapshots" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Collections::Snapshots.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Collections::Snapshots) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/collections_spec.cr b/samples/client/others/crystal-qdrant/spec/api/collections_spec.cr new file mode 100644 index 000000000000..7cf01e89b926 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/collections_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Collections +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Collections" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Collections.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Collections) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/healthz_spec.cr b/samples/client/others/crystal-qdrant/spec/api/healthz_spec.cr new file mode 100644 index 000000000000..f0f02dd55247 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/healthz_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Healthz +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Healthz" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Healthz.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Healthz) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/issues_spec.cr b/samples/client/others/crystal-qdrant/spec/api/issues_spec.cr new file mode 100644 index 000000000000..2ad29b586d7b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/issues_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Issues +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Issues" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Issues.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Issues) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/livez_spec.cr b/samples/client/others/crystal-qdrant/spec/api/livez_spec.cr new file mode 100644 index 000000000000..5ae527653a0e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/livez_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Livez +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Livez" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Livez.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Livez) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/locks_spec.cr b/samples/client/others/crystal-qdrant/spec/api/locks_spec.cr new file mode 100644 index 000000000000..1ac69316a4fe --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/locks_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Locks +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Locks" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Locks.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Locks) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/metrics_spec.cr b/samples/client/others/crystal-qdrant/spec/api/metrics_spec.cr new file mode 100644 index 000000000000..7bf7c2413679 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/metrics_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Metrics +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Metrics" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Metrics.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Metrics) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/readyz_spec.cr b/samples/client/others/crystal-qdrant/spec/api/readyz_spec.cr new file mode 100644 index 000000000000..e0b038c05373 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/readyz_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Readyz +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Readyz" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Readyz.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Readyz) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/root_spec.cr b/samples/client/others/crystal-qdrant/spec/api/root_spec.cr new file mode 100644 index 000000000000..c012e0f95064 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/root_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Root +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Root" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Root.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Root) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/snapshots_spec.cr b/samples/client/others/crystal-qdrant/spec/api/snapshots_spec.cr new file mode 100644 index 000000000000..0a1c3c6fc5ee --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/snapshots_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Snapshots +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Snapshots" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Snapshots.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Snapshots) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/api/telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/api/telemetry_spec.cr new file mode 100644 index 000000000000..458675c2b9b2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/api/telemetry_spec.cr @@ -0,0 +1,23 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Telemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe "Telemetry" do + # Structural test: the resource sub-client is constructible from a Connection + # obtained through the generated client facade. (No network: unit specs must + # not hit a server.) + it "is constructible from a Connection" do + client = Qdrant::Api::Client.new(host: "localhost") + instance = Qdrant::Api::Telemetry.new(client.connection) + expect(instance).to be_a(Qdrant::Api::Telemetry) + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/abort_shard_transfer_spec.cr b/samples/client/others/crystal-qdrant/spec/models/abort_shard_transfer_spec.cr new file mode 100644 index 000000000000..e2756591c45d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/abort_shard_transfer_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AbortShardTransfer +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AbortShardTransfer do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::AbortShardTransfer.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/abort_transfer_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/abort_transfer_operation_spec.cr new file mode 100644 index 000000000000..cb6a8fc732d6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/abort_transfer_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AbortTransferOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AbortTransferOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::AbortTransferOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/alias_description_spec.cr b/samples/client/others/crystal-qdrant/spec/models/alias_description_spec.cr new file mode 100644 index 000000000000..49095fd45e3b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/alias_description_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AliasDescription +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AliasDescription do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::AliasDescription.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/alias_operations_spec.cr b/samples/client/others/crystal-qdrant/spec/models/alias_operations_spec.cr new file mode 100644 index 000000000000..e03c2ff545de --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/alias_operations_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AliasOperations +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AliasOperations do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::AliasOperations.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/any_variants_spec.cr b/samples/client/others/crystal-qdrant/spec/models/any_variants_spec.cr new file mode 100644 index 000000000000..fe98747eb134 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/any_variants_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AnyVariants +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AnyVariants do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::AnyVariants.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/app_build_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/app_build_telemetry_spec.cr new file mode 100644 index 000000000000..d0490a964ff7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/app_build_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AppBuildTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AppBuildTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::AppBuildTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/app_features_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/app_features_telemetry_spec.cr new file mode 100644 index 000000000000..75fad5a65250 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/app_features_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::AppFeaturesTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::AppFeaturesTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::AppFeaturesTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/batch_payloads_inner_spec.cr b/samples/client/others/crystal-qdrant/spec/models/batch_payloads_inner_spec.cr new file mode 100644 index 000000000000..7412a2ed42e4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/batch_payloads_inner_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BatchPayloadsInner +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BatchPayloadsInner do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::BatchPayloadsInner.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/batch_spec.cr new file mode 100644 index 000000000000..19ff1e42a647 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Batch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Batch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::Batch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/batch_update200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/batch_update200_response_spec.cr new file mode 100644 index 000000000000..77c78bc78368 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/batch_update200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BatchUpdate200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BatchUpdate200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::BatchUpdate200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::BatchUpdate200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::BatchUpdate200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/batch_vector_struct_spec.cr b/samples/client/others/crystal-qdrant/spec/models/batch_vector_struct_spec.cr new file mode 100644 index 000000000000..e853d979579a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/batch_vector_struct_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BatchVectorStruct +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BatchVectorStruct do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::BatchVectorStruct.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/binary_quantization_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/binary_quantization_config_spec.cr new file mode 100644 index 000000000000..40c5b0758bbe --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/binary_quantization_config_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BinaryQuantizationConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BinaryQuantizationConfig do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::BinaryQuantizationConfig.from_json("{}") + expect(instance).to be_a(Qdrant::Api::BinaryQuantizationConfig) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::BinaryQuantizationConfig.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/binary_quantization_spec.cr b/samples/client/others/crystal-qdrant/spec/models/binary_quantization_spec.cr new file mode 100644 index 000000000000..98c0df36fd15 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/binary_quantization_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BinaryQuantization +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BinaryQuantization do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::BinaryQuantization.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/bool_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/bool_index_params_spec.cr new file mode 100644 index 000000000000..fb7d4188da36 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/bool_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BoolIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BoolIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::BoolIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/bool_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/bool_index_type_spec.cr new file mode 100644 index 000000000000..f814f42ad3cd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/bool_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::BoolIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::BoolIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::BoolIndexType.from_json(%("bool")) + expect(value).to be_a(Qdrant::Api::BoolIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/change_aliases_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/change_aliases_operation_spec.cr new file mode 100644 index 000000000000..4db93ab22003 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/change_aliases_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ChangeAliasesOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ChangeAliasesOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ChangeAliasesOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/clear_payload_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/clear_payload_operation_spec.cr new file mode 100644 index 000000000000..45643b6c1c72 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/clear_payload_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClearPayloadOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClearPayloadOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClearPayloadOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_config_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_config_telemetry_spec.cr new file mode 100644 index 000000000000..a5dd5750cb8b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_config_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterConfigTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterConfigTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClusterConfigTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_operations_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_operations_spec.cr new file mode 100644 index 000000000000..d45f41d8d6b6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_operations_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterOperations +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterOperations do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ClusterOperations.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_status200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_status200_response_spec.cr new file mode 100644 index 000000000000..a7d55c70ce47 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_status200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterStatus200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterStatus200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ClusterStatus200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ClusterStatus200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ClusterStatus200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of1_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of1_spec.cr new file mode 100644 index 000000000000..a39075bc679c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of1_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterStatusOneOf1 +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterStatusOneOf1 do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClusterStatusOneOf1.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of_spec.cr new file mode 100644 index 000000000000..981b0446dfd4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_status_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterStatusOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterStatusOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClusterStatusOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_status_spec.cr new file mode 100644 index 000000000000..e8c947a16b25 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_status_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterStatus do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::ClusterStatus.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::ClusterStatus.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_status_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_status_telemetry_spec.cr new file mode 100644 index 000000000000..150cbc8f2dfe --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_status_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterStatusTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterStatusTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClusterStatusTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/cluster_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/cluster_telemetry_spec.cr new file mode 100644 index 000000000000..d1ff40943f41 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/cluster_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ClusterTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ClusterTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ClusterTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info200_response_spec.cr new file mode 100644 index 000000000000..5afabd17b8d2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionClusterInfo200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionClusterInfo200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CollectionClusterInfo200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CollectionClusterInfo200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CollectionClusterInfo200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info_spec.cr new file mode 100644 index 000000000000..c1fe6d065312 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_cluster_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionClusterInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionClusterInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionClusterInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_config_spec.cr new file mode 100644 index 000000000000..7dc266f4f85b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_description_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_description_spec.cr new file mode 100644 index 000000000000..5434903b5a23 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_description_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionDescription +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionDescription do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionDescription.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_existence_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_existence_spec.cr new file mode 100644 index 000000000000..8cb4b22caf69 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_existence_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionExistence +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionExistence do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionExistence.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_exists200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_exists200_response_spec.cr new file mode 100644 index 000000000000..9c7431045c16 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_exists200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionExists200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionExists200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CollectionExists200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CollectionExists200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CollectionExists200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_info_spec.cr new file mode 100644 index 000000000000..05c27c4f8392 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_params_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_params_diff_spec.cr new file mode 100644 index 000000000000..69faceb58604 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_params_diff_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionParamsDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionParamsDiff do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CollectionParamsDiff.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CollectionParamsDiff) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CollectionParamsDiff.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_params_spec.cr new file mode 100644 index 000000000000..494a8891bec2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_params_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionParams do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CollectionParams.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CollectionParams) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CollectionParams.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_status_spec.cr new file mode 100644 index 000000000000..a96c69a10764 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_status_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionStatus do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::CollectionStatus.from_json(%("green")) + expect(value).to be_a(Qdrant::Api::CollectionStatus) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_enum_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_enum_spec.cr new file mode 100644 index 000000000000..799a1370e5b6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_enum_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionTelemetryEnum +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionTelemetryEnum do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::CollectionTelemetryEnum.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_spec.cr new file mode 100644 index 000000000000..fd5e0fd14b59 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collection_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collections_aggregated_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collections_aggregated_telemetry_spec.cr new file mode 100644 index 000000000000..48a41a81ebf5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collections_aggregated_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionsAggregatedTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionsAggregatedTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionsAggregatedTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collections_aliases_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collections_aliases_response_spec.cr new file mode 100644 index 000000000000..62270a602eb8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collections_aliases_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionsAliasesResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionsAliasesResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionsAliasesResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collections_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collections_response_spec.cr new file mode 100644 index 000000000000..905ee725efdf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collections_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionsResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionsResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionsResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/collections_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/collections_telemetry_spec.cr new file mode 100644 index 000000000000..c26526cb97f6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/collections_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CollectionsTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CollectionsTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CollectionsTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/compression_ratio_spec.cr b/samples/client/others/crystal-qdrant/spec/models/compression_ratio_spec.cr new file mode 100644 index 000000000000..d4fb2b801368 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/compression_ratio_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CompressionRatio +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CompressionRatio do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::CompressionRatio.from_json(%("x4")) + expect(value).to be_a(Qdrant::Api::CompressionRatio) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/condition_spec.cr new file mode 100644 index 000000000000..87fb503874bf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/condition_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Condition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Condition do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::Condition.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/consensus_config_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/consensus_config_telemetry_spec.cr new file mode 100644 index 000000000000..9abf65d01473 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/consensus_config_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ConsensusConfigTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ConsensusConfigTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ConsensusConfigTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of1_spec.cr b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of1_spec.cr new file mode 100644 index 000000000000..16caba725bc5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of1_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ConsensusThreadStatusOneOf1 +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ConsensusThreadStatusOneOf1 do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ConsensusThreadStatusOneOf1.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of2_spec.cr b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of2_spec.cr new file mode 100644 index 000000000000..36c6b974ef30 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of2_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ConsensusThreadStatusOneOf2 +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ConsensusThreadStatusOneOf2 do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ConsensusThreadStatusOneOf2.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of_spec.cr new file mode 100644 index 000000000000..be12319977bb --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ConsensusThreadStatusOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ConsensusThreadStatusOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ConsensusThreadStatusOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_spec.cr new file mode 100644 index 000000000000..4c8202fd38b8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/consensus_thread_status_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ConsensusThreadStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ConsensusThreadStatus do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::ConsensusThreadStatus.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::ConsensusThreadStatus.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/context_example_pair_spec.cr b/samples/client/others/crystal-qdrant/spec/models/context_example_pair_spec.cr new file mode 100644 index 000000000000..f3099e138bef --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/context_example_pair_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ContextExamplePair +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ContextExamplePair do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ContextExamplePair.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/context_input_spec.cr b/samples/client/others/crystal-qdrant/spec/models/context_input_spec.cr new file mode 100644 index 000000000000..870382e59a9d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/context_input_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ContextInput +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ContextInput do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ContextInput.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/context_pair_spec.cr b/samples/client/others/crystal-qdrant/spec/models/context_pair_spec.cr new file mode 100644 index 000000000000..e2c9b65d62c7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/context_pair_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ContextPair +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ContextPair do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ContextPair.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/context_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/context_query_spec.cr new file mode 100644 index 000000000000..b9602df273c4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/context_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ContextQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ContextQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ContextQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/count_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/count_points200_response_spec.cr new file mode 100644 index 000000000000..5dd013b139c8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/count_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CountPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CountPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CountPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CountPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CountPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/count_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/count_request_spec.cr new file mode 100644 index 000000000000..29fecc4a1dce --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/count_request_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CountRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CountRequest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CountRequest.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CountRequest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CountRequest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/count_result_spec.cr b/samples/client/others/crystal-qdrant/spec/models/count_result_spec.cr new file mode 100644 index 000000000000..e52290c6c301 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/count_result_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CountResult +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CountResult do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CountResult.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_alias_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_alias_operation_spec.cr new file mode 100644 index 000000000000..ac32163f4d08 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_alias_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateAliasOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateAliasOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CreateAliasOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_alias_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_alias_spec.cr new file mode 100644 index 000000000000..31ec69b8977d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_alias_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateAlias +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateAlias do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CreateAlias.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_collection_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_collection_spec.cr new file mode 100644 index 000000000000..e5c1225c448f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_collection_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateCollection +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateCollection do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CreateCollection.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CreateCollection) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CreateCollection.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_field_index200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_field_index200_response_spec.cr new file mode 100644 index 000000000000..b6ceb027af4c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_field_index200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateFieldIndex200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateFieldIndex200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CreateFieldIndex200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CreateFieldIndex200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CreateFieldIndex200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_field_index_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_field_index_spec.cr new file mode 100644 index 000000000000..38ce64fa5fa8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_field_index_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateFieldIndex +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateFieldIndex do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CreateFieldIndex.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_shard_key200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_shard_key200_response_spec.cr new file mode 100644 index 000000000000..b9ffe06a8d41 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_shard_key200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateShardKey200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateShardKey200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CreateShardKey200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CreateShardKey200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CreateShardKey200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_operation_spec.cr new file mode 100644 index 000000000000..d6e1e09b368b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateShardingKeyOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateShardingKeyOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CreateShardingKeyOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_spec.cr new file mode 100644 index 000000000000..73fdcb123e38 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_sharding_key_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateShardingKey +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateShardingKey do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::CreateShardingKey.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/create_snapshot200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/create_snapshot200_response_spec.cr new file mode 100644 index 000000000000..fe6eb225b166 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/create_snapshot200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::CreateSnapshot200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::CreateSnapshot200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::CreateSnapshot200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::CreateSnapshot200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::CreateSnapshot200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/datatype_spec.cr b/samples/client/others/crystal-qdrant/spec/models/datatype_spec.cr new file mode 100644 index 000000000000..2882fb1523d3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/datatype_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Datatype +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Datatype do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Datatype.from_json(%("float32")) + expect(value).to be_a(Qdrant::Api::Datatype) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/datetime_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/datetime_index_params_spec.cr new file mode 100644 index 000000000000..12dbbbd52972 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/datetime_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DatetimeIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DatetimeIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DatetimeIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/datetime_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/datetime_index_type_spec.cr new file mode 100644 index 000000000000..d6fec30aea78 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/datetime_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DatetimeIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DatetimeIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::DatetimeIndexType.from_json(%("datetime")) + expect(value).to be_a(Qdrant::Api::DatetimeIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/datetime_range_spec.cr b/samples/client/others/crystal-qdrant/spec/models/datetime_range_spec.cr new file mode 100644 index 000000000000..a5ae33896123 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/datetime_range_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DatetimeRange +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DatetimeRange do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::DatetimeRange.from_json("{}") + expect(instance).to be_a(Qdrant::Api::DatetimeRange) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::DatetimeRange.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_alias_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_alias_operation_spec.cr new file mode 100644 index 000000000000..acdab9d66203 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_alias_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeleteAliasOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeleteAliasOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeleteAliasOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_alias_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_alias_spec.cr new file mode 100644 index 000000000000..7ec3b93197b9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_alias_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeleteAlias +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeleteAlias do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeleteAlias.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_operation_spec.cr new file mode 100644 index 000000000000..152ff0222e90 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeleteOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeleteOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeleteOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_payload_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_payload_operation_spec.cr new file mode 100644 index 000000000000..cab8deff0ea7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_payload_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeletePayloadOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeletePayloadOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeletePayloadOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_payload_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_payload_spec.cr new file mode 100644 index 000000000000..e347f46845fd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_payload_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeletePayload +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeletePayload do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeletePayload.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_vectors_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_vectors_operation_spec.cr new file mode 100644 index 000000000000..e23d7d6ebec8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_vectors_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeleteVectorsOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeleteVectorsOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeleteVectorsOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/delete_vectors_spec.cr b/samples/client/others/crystal-qdrant/spec/models/delete_vectors_spec.cr new file mode 100644 index 000000000000..3ee266979dfe --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/delete_vectors_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DeleteVectors +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DeleteVectors do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DeleteVectors.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/direction_spec.cr b/samples/client/others/crystal-qdrant/spec/models/direction_spec.cr new file mode 100644 index 000000000000..7875c5bf919b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/direction_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Direction +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Direction do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Direction.from_json(%("asc")) + expect(value).to be_a(Qdrant::Api::Direction) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/disabled_spec.cr b/samples/client/others/crystal-qdrant/spec/models/disabled_spec.cr new file mode 100644 index 000000000000..4df841c41c41 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/disabled_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Disabled +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Disabled do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Disabled.from_json(%("Disabled")) + expect(value).to be_a(Qdrant::Api::Disabled) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/discover_input_context_spec.cr b/samples/client/others/crystal-qdrant/spec/models/discover_input_context_spec.cr new file mode 100644 index 000000000000..2ca03a47e9db --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/discover_input_context_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DiscoverInputContext +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DiscoverInputContext do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::DiscoverInputContext.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/discover_input_spec.cr b/samples/client/others/crystal-qdrant/spec/models/discover_input_spec.cr new file mode 100644 index 000000000000..a2a7ea326822 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/discover_input_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DiscoverInput +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DiscoverInput do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DiscoverInput.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/discover_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/discover_query_spec.cr new file mode 100644 index 000000000000..6dabf8854751 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/discover_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DiscoverQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DiscoverQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DiscoverQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/discover_request_batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/discover_request_batch_spec.cr new file mode 100644 index 000000000000..7c465e8e6386 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/discover_request_batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DiscoverRequestBatch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DiscoverRequestBatch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DiscoverRequestBatch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/discover_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/discover_request_spec.cr new file mode 100644 index 000000000000..0f84987c765f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/discover_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DiscoverRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DiscoverRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DiscoverRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/distance_spec.cr b/samples/client/others/crystal-qdrant/spec/models/distance_spec.cr new file mode 100644 index 000000000000..0b9771e7bd71 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/distance_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Distance +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Distance do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Distance.from_json(%("Cosine")) + expect(value).to be_a(Qdrant::Api::Distance) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/document_spec.cr b/samples/client/others/crystal-qdrant/spec/models/document_spec.cr new file mode 100644 index 000000000000..80a81d03ed73 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/document_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Document +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Document do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::Document.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/drop_replica_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/drop_replica_operation_spec.cr new file mode 100644 index 000000000000..6725bcbccc5e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/drop_replica_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DropReplicaOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DropReplicaOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DropReplicaOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_operation_spec.cr new file mode 100644 index 000000000000..50c61bcdfe98 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DropShardingKeyOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DropShardingKeyOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DropShardingKeyOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_spec.cr b/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_spec.cr new file mode 100644 index 000000000000..3a9f20d341f6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/drop_sharding_key_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::DropShardingKey +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::DropShardingKey do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::DropShardingKey.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/error_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/error_response_spec.cr new file mode 100644 index 000000000000..80ee63f10028 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/error_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ErrorResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ErrorResponse do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ErrorResponse.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ErrorResponse) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ErrorResponse.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/error_response_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/error_response_status_spec.cr new file mode 100644 index 000000000000..530a54274ddd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/error_response_status_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ErrorResponseStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ErrorResponseStatus do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ErrorResponseStatus.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ErrorResponseStatus) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ErrorResponseStatus.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/extended_point_id_spec.cr b/samples/client/others/crystal-qdrant/spec/models/extended_point_id_spec.cr new file mode 100644 index 000000000000..2f9fad6e9f73 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/extended_point_id_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ExtendedPointId +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ExtendedPointId do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ExtendedPointId.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/facet200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/facet200_response_spec.cr new file mode 100644 index 000000000000..b2cfa7fd32d3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/facet200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Facet200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Facet200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::Facet200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::Facet200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::Facet200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/facet_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/facet_request_spec.cr new file mode 100644 index 000000000000..1f20211c98b0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/facet_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FacetRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FacetRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FacetRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/facet_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/facet_response_spec.cr new file mode 100644 index 000000000000..f2dd2b93565e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/facet_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FacetResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FacetResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FacetResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/facet_value_hit_spec.cr b/samples/client/others/crystal-qdrant/spec/models/facet_value_hit_spec.cr new file mode 100644 index 000000000000..7e1a41e7572d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/facet_value_hit_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FacetValueHit +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FacetValueHit do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FacetValueHit.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/facet_value_spec.cr b/samples/client/others/crystal-qdrant/spec/models/facet_value_spec.cr new file mode 100644 index 000000000000..9a23f28373ea --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/facet_value_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FacetValue +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FacetValue do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::FacetValue.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/field_condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/field_condition_spec.cr new file mode 100644 index 000000000000..1ca4300d9d54 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/field_condition_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FieldCondition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FieldCondition do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FieldCondition.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/filter_selector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/filter_selector_spec.cr new file mode 100644 index 000000000000..a26f48623ae9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/filter_selector_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FilterSelector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FilterSelector do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FilterSelector.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/filter_should_spec.cr b/samples/client/others/crystal-qdrant/spec/models/filter_should_spec.cr new file mode 100644 index 000000000000..1f34ca871901 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/filter_should_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FilterShould +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FilterShould do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::FilterShould.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/filter_spec.cr b/samples/client/others/crystal-qdrant/spec/models/filter_spec.cr new file mode 100644 index 000000000000..381aa7742d9d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/filter_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Filter +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Filter do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::Filter.from_json("{}") + expect(instance).to be_a(Qdrant::Api::Filter) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::Filter.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/float_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/float_index_params_spec.cr new file mode 100644 index 000000000000..32d7afb9bf6d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/float_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FloatIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FloatIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FloatIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/float_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/float_index_type_spec.cr new file mode 100644 index 000000000000..e76b87c2867f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/float_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FloatIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FloatIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::FloatIndexType.from_json(%("float")) + expect(value).to be_a(Qdrant::Api::FloatIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/fusion_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/fusion_query_spec.cr new file mode 100644 index 000000000000..da13fd3e4133 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/fusion_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::FusionQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::FusionQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::FusionQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/fusion_spec.cr b/samples/client/others/crystal-qdrant/spec/models/fusion_spec.cr new file mode 100644 index 000000000000..a9651b077077 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/fusion_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Fusion +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Fusion do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Fusion.from_json(%("rrf")) + expect(value).to be_a(Qdrant::Api::Fusion) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_bounding_box_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_bounding_box_spec.cr new file mode 100644 index 000000000000..f344b1fcd5be --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_bounding_box_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoBoundingBox +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoBoundingBox do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoBoundingBox.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_index_params_spec.cr new file mode 100644 index 000000000000..e80d65b55d06 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_index_type_spec.cr new file mode 100644 index 000000000000..6e6f84503a24 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::GeoIndexType.from_json(%("geo")) + expect(value).to be_a(Qdrant::Api::GeoIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_line_string_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_line_string_spec.cr new file mode 100644 index 000000000000..bc78a26d1b91 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_line_string_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoLineString +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoLineString do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoLineString.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_point_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_point_spec.cr new file mode 100644 index 000000000000..0a1381162114 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_point_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoPoint +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoPoint do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoPoint.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_polygon_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_polygon_spec.cr new file mode 100644 index 000000000000..478029c044eb --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_polygon_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoPolygon +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoPolygon do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoPolygon.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/geo_radius_spec.cr b/samples/client/others/crystal-qdrant/spec/models/geo_radius_spec.cr new file mode 100644 index 000000000000..0ef8d6a59171 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/geo_radius_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GeoRadius +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GeoRadius do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GeoRadius.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_collection200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_collection200_response_spec.cr new file mode 100644 index 000000000000..3d9c106183aa --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_collection200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetCollection200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetCollection200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetCollection200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetCollection200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetCollection200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_collection_aliases200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_collection_aliases200_response_spec.cr new file mode 100644 index 000000000000..b8d79e3fd4a9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_collection_aliases200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetCollectionAliases200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetCollectionAliases200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetCollectionAliases200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetCollectionAliases200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetCollectionAliases200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_collections200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_collections200_response_spec.cr new file mode 100644 index 000000000000..2ace204d5c40 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_collections200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetCollections200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetCollections200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetCollections200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetCollections200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetCollections200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_locks200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_locks200_response_spec.cr new file mode 100644 index 000000000000..d01e8083051f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_locks200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetLocks200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetLocks200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetLocks200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetLocks200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetLocks200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_point200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_point200_response_spec.cr new file mode 100644 index 000000000000..5f97af3c5d45 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_point200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetPoint200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetPoint200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetPoint200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetPoint200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetPoint200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/get_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/get_points200_response_spec.cr new file mode 100644 index 000000000000..acecb7449269 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/get_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GetPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GetPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::GetPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::GetPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::GetPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/group_id_spec.cr b/samples/client/others/crystal-qdrant/spec/models/group_id_spec.cr new file mode 100644 index 000000000000..c4f9662e4a83 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/group_id_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GroupId +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GroupId do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::GroupId.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/groups_result_spec.cr b/samples/client/others/crystal-qdrant/spec/models/groups_result_spec.cr new file mode 100644 index 000000000000..033863622760 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/groups_result_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GroupsResult +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GroupsResult do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GroupsResult.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/grpc_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/grpc_telemetry_spec.cr new file mode 100644 index 000000000000..02f9041fc72c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/grpc_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::GrpcTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::GrpcTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::GrpcTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/has_id_condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/has_id_condition_spec.cr new file mode 100644 index 000000000000..ba3b9bc5ce94 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/has_id_condition_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::HasIdCondition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::HasIdCondition do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::HasIdCondition.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/hnsw_config_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/hnsw_config_diff_spec.cr new file mode 100644 index 000000000000..a4f3ce493cf6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/hnsw_config_diff_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::HnswConfigDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::HnswConfigDiff do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::HnswConfigDiff.from_json("{}") + expect(instance).to be_a(Qdrant::Api::HnswConfigDiff) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::HnswConfigDiff.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/hnsw_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/hnsw_config_spec.cr new file mode 100644 index 000000000000..67f9702afdfa --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/hnsw_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::HnswConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::HnswConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::HnswConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/indexes_one_of1_spec.cr b/samples/client/others/crystal-qdrant/spec/models/indexes_one_of1_spec.cr new file mode 100644 index 000000000000..8e88e662b41e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/indexes_one_of1_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IndexesOneOf1 +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IndexesOneOf1 do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::IndexesOneOf1.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/indexes_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/indexes_one_of_spec.cr new file mode 100644 index 000000000000..c1903c9a0cb8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/indexes_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IndexesOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IndexesOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::IndexesOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/indexes_spec.cr b/samples/client/others/crystal-qdrant/spec/models/indexes_spec.cr new file mode 100644 index 000000000000..390cc0ffb483 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/indexes_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Indexes +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Indexes do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::Indexes.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::Indexes.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/init_from_spec.cr b/samples/client/others/crystal-qdrant/spec/models/init_from_spec.cr new file mode 100644 index 000000000000..1e8878171598 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/init_from_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::InitFrom +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::InitFrom do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::InitFrom.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/integer_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/integer_index_params_spec.cr new file mode 100644 index 000000000000..f0e0da6a1e21 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/integer_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IntegerIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IntegerIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::IntegerIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/integer_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/integer_index_type_spec.cr new file mode 100644 index 000000000000..3e8b5e2e3adc --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/integer_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IntegerIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IntegerIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::IntegerIndexType.from_json(%("integer")) + expect(value).to be_a(Qdrant::Api::IntegerIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/is_empty_condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/is_empty_condition_spec.cr new file mode 100644 index 000000000000..5386e7eeba68 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/is_empty_condition_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IsEmptyCondition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IsEmptyCondition do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::IsEmptyCondition.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/is_null_condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/is_null_condition_spec.cr new file mode 100644 index 000000000000..ced219302ea4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/is_null_condition_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::IsNullCondition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::IsNullCondition do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::IsNullCondition.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/keyword_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/keyword_index_params_spec.cr new file mode 100644 index 000000000000..d19d88c470e6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/keyword_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::KeywordIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::KeywordIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::KeywordIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/keyword_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/keyword_index_type_spec.cr new file mode 100644 index 000000000000..3820ca5fba05 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/keyword_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::KeywordIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::KeywordIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::KeywordIndexType.from_json(%("keyword")) + expect(value).to be_a(Qdrant::Api::KeywordIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/list_snapshots200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/list_snapshots200_response_spec.cr new file mode 100644 index 000000000000..875381e2a684 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/list_snapshots200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ListSnapshots200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ListSnapshots200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ListSnapshots200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ListSnapshots200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ListSnapshots200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/local_shard_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/local_shard_info_spec.cr new file mode 100644 index 000000000000..a4ac17f5ca48 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/local_shard_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::LocalShardInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::LocalShardInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::LocalShardInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/local_shard_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/local_shard_telemetry_spec.cr new file mode 100644 index 000000000000..7ca64ac46c47 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/local_shard_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::LocalShardTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::LocalShardTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::LocalShardTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/locks_option_spec.cr b/samples/client/others/crystal-qdrant/spec/models/locks_option_spec.cr new file mode 100644 index 000000000000..e25ed084e587 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/locks_option_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::LocksOption +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::LocksOption do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::LocksOption.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/lookup_location_spec.cr b/samples/client/others/crystal-qdrant/spec/models/lookup_location_spec.cr new file mode 100644 index 000000000000..c6309e857d37 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/lookup_location_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::LookupLocation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::LookupLocation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::LookupLocation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/match_any_spec.cr b/samples/client/others/crystal-qdrant/spec/models/match_any_spec.cr new file mode 100644 index 000000000000..0144fbe9a096 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/match_any_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MatchAny +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MatchAny do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MatchAny.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/match_except_spec.cr b/samples/client/others/crystal-qdrant/spec/models/match_except_spec.cr new file mode 100644 index 000000000000..2189c99c44c0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/match_except_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MatchExcept +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MatchExcept do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MatchExcept.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/match_spec.cr b/samples/client/others/crystal-qdrant/spec/models/match_spec.cr new file mode 100644 index 000000000000..59fc871cf85a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/match_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Match +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Match do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::Match.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/match_text_spec.cr b/samples/client/others/crystal-qdrant/spec/models/match_text_spec.cr new file mode 100644 index 000000000000..d82e279a4395 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/match_text_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MatchText +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MatchText do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MatchText.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/match_value_spec.cr b/samples/client/others/crystal-qdrant/spec/models/match_value_spec.cr new file mode 100644 index 000000000000..9025240a5adf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/match_value_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MatchValue +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MatchValue do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MatchValue.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/message_send_errors_spec.cr b/samples/client/others/crystal-qdrant/spec/models/message_send_errors_spec.cr new file mode 100644 index 000000000000..5cda0df69234 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/message_send_errors_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MessageSendErrors +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MessageSendErrors do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MessageSendErrors.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/min_should_spec.cr b/samples/client/others/crystal-qdrant/spec/models/min_should_spec.cr new file mode 100644 index 000000000000..a3488cd2d244 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/min_should_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MinShould +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MinShould do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MinShould.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/modifier_spec.cr b/samples/client/others/crystal-qdrant/spec/models/modifier_spec.cr new file mode 100644 index 000000000000..8cbe130887e8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/modifier_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Modifier +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Modifier do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Modifier.from_json(%("none")) + expect(value).to be_a(Qdrant::Api::Modifier) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/move_shard_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/move_shard_operation_spec.cr new file mode 100644 index 000000000000..3f6a3e435eb9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/move_shard_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MoveShardOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MoveShardOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MoveShardOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/move_shard_spec.cr b/samples/client/others/crystal-qdrant/spec/models/move_shard_spec.cr new file mode 100644 index 000000000000..6972dbf1c731 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/move_shard_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MoveShard +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MoveShard do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MoveShard.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/multi_vector_comparator_spec.cr b/samples/client/others/crystal-qdrant/spec/models/multi_vector_comparator_spec.cr new file mode 100644 index 000000000000..a0c902a43501 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/multi_vector_comparator_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MultiVectorComparator +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MultiVectorComparator do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::MultiVectorComparator.from_json(%("max_sim")) + expect(value).to be_a(Qdrant::Api::MultiVectorComparator) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/multi_vector_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/multi_vector_config_spec.cr new file mode 100644 index 000000000000..396de563d112 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/multi_vector_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::MultiVectorConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::MultiVectorConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::MultiVectorConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/named_sparse_vector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/named_sparse_vector_spec.cr new file mode 100644 index 000000000000..971cd46b0892 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/named_sparse_vector_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::NamedSparseVector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::NamedSparseVector do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::NamedSparseVector.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/named_vector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/named_vector_spec.cr new file mode 100644 index 000000000000..8186bc307464 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/named_vector_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::NamedVector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::NamedVector do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::NamedVector.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/named_vector_struct_spec.cr b/samples/client/others/crystal-qdrant/spec/models/named_vector_struct_spec.cr new file mode 100644 index 000000000000..e45baa77ae45 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/named_vector_struct_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::NamedVectorStruct +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::NamedVectorStruct do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::NamedVectorStruct.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/nearest_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/nearest_query_spec.cr new file mode 100644 index 000000000000..a45f28aaca6b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/nearest_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::NearestQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::NearestQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::NearestQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/nested_condition_spec.cr b/samples/client/others/crystal-qdrant/spec/models/nested_condition_spec.cr new file mode 100644 index 000000000000..c60fb55457b6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/nested_condition_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::NestedCondition +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::NestedCondition do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::NestedCondition.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/nested_spec.cr b/samples/client/others/crystal-qdrant/spec/models/nested_spec.cr new file mode 100644 index 000000000000..932ba308a244 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/nested_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Nested +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Nested do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::Nested.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/operation_duration_statistics_spec.cr b/samples/client/others/crystal-qdrant/spec/models/operation_duration_statistics_spec.cr new file mode 100644 index 000000000000..55644d44ff71 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/operation_duration_statistics_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OperationDurationStatistics +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OperationDurationStatistics do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OperationDurationStatistics.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/optimizer_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/optimizer_telemetry_spec.cr new file mode 100644 index 000000000000..bba14887753d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/optimizer_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OptimizerTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OptimizerTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OptimizerTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/optimizers_config_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/optimizers_config_diff_spec.cr new file mode 100644 index 000000000000..ae0e332e2271 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/optimizers_config_diff_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OptimizersConfigDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OptimizersConfigDiff do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::OptimizersConfigDiff.from_json("{}") + expect(instance).to be_a(Qdrant::Api::OptimizersConfigDiff) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::OptimizersConfigDiff.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/optimizers_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/optimizers_config_spec.cr new file mode 100644 index 000000000000..da5283f52660 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/optimizers_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OptimizersConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OptimizersConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OptimizersConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/optimizers_status_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/optimizers_status_one_of_spec.cr new file mode 100644 index 000000000000..deb79124d679 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/optimizers_status_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OptimizersStatusOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OptimizersStatusOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OptimizersStatusOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/optimizers_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/optimizers_status_spec.cr new file mode 100644 index 000000000000..e3275afd18d9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/optimizers_status_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OptimizersStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OptimizersStatus do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::OptimizersStatus.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::OptimizersStatus.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/order_by_interface_spec.cr b/samples/client/others/crystal-qdrant/spec/models/order_by_interface_spec.cr new file mode 100644 index 000000000000..b756b2c0c181 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/order_by_interface_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OrderByInterface +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OrderByInterface do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::OrderByInterface.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/order_by_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/order_by_query_spec.cr new file mode 100644 index 000000000000..7d45e58216be --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/order_by_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OrderByQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OrderByQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OrderByQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/order_by_spec.cr b/samples/client/others/crystal-qdrant/spec/models/order_by_spec.cr new file mode 100644 index 000000000000..3901090faa90 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/order_by_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OrderBy +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OrderBy do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OrderBy.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/order_value_spec.cr b/samples/client/others/crystal-qdrant/spec/models/order_value_spec.cr new file mode 100644 index 000000000000..3895970d8616 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/order_value_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OrderValue +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OrderValue do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::OrderValue.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/overwrite_payload_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/overwrite_payload_operation_spec.cr new file mode 100644 index 000000000000..8dec4e864d99 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/overwrite_payload_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::OverwritePayloadOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::OverwritePayloadOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::OverwritePayloadOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/p2p_config_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/p2p_config_telemetry_spec.cr new file mode 100644 index 000000000000..68d68330cc3f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/p2p_config_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::P2pConfigTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::P2pConfigTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::P2pConfigTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_field_schema_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_field_schema_spec.cr new file mode 100644 index 000000000000..33b3f87b9e69 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_field_schema_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadFieldSchema +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadFieldSchema do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::PayloadFieldSchema.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_field_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_field_spec.cr new file mode 100644 index 000000000000..2c53cb18d653 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_field_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadField +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadField do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadField.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_index_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_index_info_spec.cr new file mode 100644 index 000000000000..d31dc5a743d4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_index_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadIndexInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadIndexInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadIndexInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_index_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_index_telemetry_spec.cr new file mode 100644 index 000000000000..8b2411803efd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_index_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadIndexTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadIndexTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadIndexTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_schema_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_schema_params_spec.cr new file mode 100644 index 000000000000..bd912033d65e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_schema_params_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadSchemaParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadSchemaParams do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::PayloadSchemaParams.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_schema_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_schema_type_spec.cr new file mode 100644 index 000000000000..9cb3e917c7f9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_schema_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadSchemaType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadSchemaType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::PayloadSchemaType.from_json(%("keyword")) + expect(value).to be_a(Qdrant::Api::PayloadSchemaType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_selector_exclude_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_selector_exclude_spec.cr new file mode 100644 index 000000000000..c3b0b0a452a9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_selector_exclude_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadSelectorExclude +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadSelectorExclude do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadSelectorExclude.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_selector_include_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_selector_include_spec.cr new file mode 100644 index 000000000000..1ede95b4f554 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_selector_include_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadSelectorInclude +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadSelectorInclude do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadSelectorInclude.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_selector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_selector_spec.cr new file mode 100644 index 000000000000..71071e7b4562 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_selector_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadSelector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadSelector do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::PayloadSelector.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of1_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of1_spec.cr new file mode 100644 index 000000000000..3c5ebc8ab1d6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of1_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadStorageTypeOneOf1 +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadStorageTypeOneOf1 do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadStorageTypeOneOf1.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of_spec.cr new file mode 100644 index 000000000000..075a92c45d0b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadStorageTypeOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadStorageTypeOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PayloadStorageTypeOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_spec.cr new file mode 100644 index 000000000000..23e7d982d9fb --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/payload_storage_type_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PayloadStorageType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PayloadStorageType do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::PayloadStorageType.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::PayloadStorageType.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/peer_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/peer_info_spec.cr new file mode 100644 index 000000000000..5af84d32173f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/peer_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PeerInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PeerInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PeerInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_group_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_group_spec.cr new file mode 100644 index 000000000000..efdf9a8d7ac4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_group_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointGroup +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointGroup do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointGroup.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_ids_list_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_ids_list_spec.cr new file mode 100644 index 000000000000..771739468d20 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_ids_list_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointIdsList +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointIdsList do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointIdsList.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_insert_operations_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_insert_operations_spec.cr new file mode 100644 index 000000000000..640b0355dfbc --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_insert_operations_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointInsertOperations +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointInsertOperations do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::PointInsertOperations.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_request_spec.cr new file mode 100644 index 000000000000..dd23dea8c645 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_struct_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_struct_spec.cr new file mode 100644 index 000000000000..dc79acfebdcd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_struct_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointStruct +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointStruct do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointStruct.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/point_vectors_spec.cr b/samples/client/others/crystal-qdrant/spec/models/point_vectors_spec.cr new file mode 100644 index 000000000000..b1f104a9acb3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/point_vectors_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointVectors +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointVectors do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointVectors.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/points_batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/points_batch_spec.cr new file mode 100644 index 000000000000..0559eb120c3a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/points_batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointsBatch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointsBatch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointsBatch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/points_list_spec.cr b/samples/client/others/crystal-qdrant/spec/models/points_list_spec.cr new file mode 100644 index 000000000000..a2b07bbb41a2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/points_list_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointsList +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointsList do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::PointsList.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/points_selector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/points_selector_spec.cr new file mode 100644 index 000000000000..e50ab6e4a13c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/points_selector_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::PointsSelector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::PointsSelector do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::PointsSelector.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/prefetch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/prefetch_spec.cr new file mode 100644 index 000000000000..23c640cb1bed --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/prefetch_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Prefetch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Prefetch do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::Prefetch.from_json("{}") + expect(instance).to be_a(Qdrant::Api::Prefetch) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::Prefetch.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/product_quantization_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/product_quantization_config_spec.cr new file mode 100644 index 000000000000..ffebdc951ff9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/product_quantization_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ProductQuantizationConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ProductQuantizationConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ProductQuantizationConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/product_quantization_spec.cr b/samples/client/others/crystal-qdrant/spec/models/product_quantization_spec.cr new file mode 100644 index 000000000000..ba3670df2e1b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/product_quantization_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ProductQuantization +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ProductQuantization do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ProductQuantization.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/quantization_config_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/quantization_config_diff_spec.cr new file mode 100644 index 000000000000..bd7d6edc56f0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/quantization_config_diff_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QuantizationConfigDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QuantizationConfigDiff do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::QuantizationConfigDiff.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/quantization_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/quantization_config_spec.cr new file mode 100644 index 000000000000..04e258d3238e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/quantization_config_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QuantizationConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QuantizationConfig do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::QuantizationConfig.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/quantization_search_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/quantization_search_params_spec.cr new file mode 100644 index 000000000000..08b0b72d90ab --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/quantization_search_params_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QuantizationSearchParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QuantizationSearchParams do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::QuantizationSearchParams.from_json("{}") + expect(instance).to be_a(Qdrant::Api::QuantizationSearchParams) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::QuantizationSearchParams.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_batch_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_batch_points200_response_spec.cr new file mode 100644 index 000000000000..13425ecf33cf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_batch_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryBatchPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryBatchPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::QueryBatchPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::QueryBatchPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::QueryBatchPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_groups_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_groups_request_spec.cr new file mode 100644 index 000000000000..a80f8eccf77d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_groups_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryGroupsRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryGroupsRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::QueryGroupsRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_interface_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_interface_spec.cr new file mode 100644 index 000000000000..9e8984e17b21 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_interface_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryInterface +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryInterface do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::QueryInterface.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_points200_response_spec.cr new file mode 100644 index 000000000000..2897a33c3bec --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::QueryPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::QueryPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::QueryPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_request_batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_request_batch_spec.cr new file mode 100644 index 000000000000..1b4f8babea06 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_request_batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryRequestBatch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryRequestBatch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::QueryRequestBatch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_request_prefetch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_request_prefetch_spec.cr new file mode 100644 index 000000000000..e10dca325a85 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_request_prefetch_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryRequestPrefetch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryRequestPrefetch do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::QueryRequestPrefetch.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_request_spec.cr new file mode 100644 index 000000000000..b7c6bbbdbda9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_request_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryRequest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::QueryRequest.from_json("{}") + expect(instance).to be_a(Qdrant::Api::QueryRequest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::QueryRequest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_response_spec.cr new file mode 100644 index 000000000000..14e3a1195304 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::QueryResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::QueryResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::QueryResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/query_spec.cr new file mode 100644 index 000000000000..1dbdd71398e8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/query_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Query +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Query do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::Query.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/raft_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/raft_info_spec.cr new file mode 100644 index 000000000000..2621e904b966 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/raft_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RaftInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RaftInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RaftInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/range_interface_spec.cr b/samples/client/others/crystal-qdrant/spec/models/range_interface_spec.cr new file mode 100644 index 000000000000..fb47d61d8db0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/range_interface_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RangeInterface +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RangeInterface do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::RangeInterface.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/range_spec.cr b/samples/client/others/crystal-qdrant/spec/models/range_spec.cr new file mode 100644 index 000000000000..94c6ba3e014a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/range_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Range +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Range do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::Range.from_json("{}") + expect(instance).to be_a(Qdrant::Api::Range) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::Range.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/read_consistency_spec.cr b/samples/client/others/crystal-qdrant/spec/models/read_consistency_spec.cr new file mode 100644 index 000000000000..53c445227caa --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/read_consistency_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReadConsistency +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReadConsistency do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ReadConsistency.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/read_consistency_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/read_consistency_type_spec.cr new file mode 100644 index 000000000000..f419fcf8ba79 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/read_consistency_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReadConsistencyType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReadConsistencyType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ReadConsistencyType.from_json(%("majority")) + expect(value).to be_a(Qdrant::Api::ReadConsistencyType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_example_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_example_spec.cr new file mode 100644 index 000000000000..f7a27563da45 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_example_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendExample +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendExample do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::RecommendExample.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_groups_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_groups_request_spec.cr new file mode 100644 index 000000000000..9f970a4e2a0b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_groups_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendGroupsRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendGroupsRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RecommendGroupsRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_input_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_input_spec.cr new file mode 100644 index 000000000000..170759843e24 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_input_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendInput +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendInput do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::RecommendInput.from_json("{}") + expect(instance).to be_a(Qdrant::Api::RecommendInput) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::RecommendInput.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_query_spec.cr new file mode 100644 index 000000000000..f5b8fe3b2c70 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RecommendQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_request_batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_request_batch_spec.cr new file mode 100644 index 000000000000..da3109bcf3cf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_request_batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendRequestBatch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendRequestBatch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RecommendRequestBatch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_request_spec.cr new file mode 100644 index 000000000000..a745008aeb6c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RecommendRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recommend_strategy_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recommend_strategy_spec.cr new file mode 100644 index 000000000000..4126c0a9ef4e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recommend_strategy_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecommendStrategy +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecommendStrategy do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::RecommendStrategy.from_json(%("average_vector")) + expect(value).to be_a(Qdrant::Api::RecommendStrategy) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/record_spec.cr b/samples/client/others/crystal-qdrant/spec/models/record_spec.cr new file mode 100644 index 000000000000..3ed0aa58255a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/record_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Record +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Record do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::Record.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/recover_from_uploaded_snapshot202_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/recover_from_uploaded_snapshot202_response_spec.cr new file mode 100644 index 000000000000..74bfcd98993f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/recover_from_uploaded_snapshot202_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RecoverFromUploadedSnapshot202Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RecoverFromUploadedSnapshot202Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::RecoverFromUploadedSnapshot202Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::RecoverFromUploadedSnapshot202Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::RecoverFromUploadedSnapshot202Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/remote_shard_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/remote_shard_info_spec.cr new file mode 100644 index 000000000000..82d6c3c415b2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/remote_shard_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RemoteShardInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RemoteShardInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RemoteShardInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/remote_shard_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/remote_shard_telemetry_spec.cr new file mode 100644 index 000000000000..52bbf5f32531 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/remote_shard_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RemoteShardTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RemoteShardTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RemoteShardTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/rename_alias_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/rename_alias_operation_spec.cr new file mode 100644 index 000000000000..5139524b71c7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/rename_alias_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RenameAliasOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RenameAliasOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RenameAliasOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/rename_alias_spec.cr b/samples/client/others/crystal-qdrant/spec/models/rename_alias_spec.cr new file mode 100644 index 000000000000..a9bd6a0639ab --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/rename_alias_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RenameAlias +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RenameAlias do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RenameAlias.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/replica_set_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/replica_set_telemetry_spec.cr new file mode 100644 index 000000000000..979f81eeb40c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/replica_set_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReplicaSetTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReplicaSetTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ReplicaSetTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/replica_spec.cr b/samples/client/others/crystal-qdrant/spec/models/replica_spec.cr new file mode 100644 index 000000000000..6795512d9f76 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/replica_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Replica +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Replica do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::Replica.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/replica_state_spec.cr b/samples/client/others/crystal-qdrant/spec/models/replica_state_spec.cr new file mode 100644 index 000000000000..beba33603ff8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/replica_state_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReplicaState +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReplicaState do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ReplicaState.from_json(%("Active")) + expect(value).to be_a(Qdrant::Api::ReplicaState) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/replicate_shard_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/replicate_shard_operation_spec.cr new file mode 100644 index 000000000000..623a9b26e1f7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/replicate_shard_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReplicateShardOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReplicateShardOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ReplicateShardOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/replicate_shard_spec.cr b/samples/client/others/crystal-qdrant/spec/models/replicate_shard_spec.cr new file mode 100644 index 000000000000..c851e8161e63 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/replicate_shard_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReplicateShard +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReplicateShard do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ReplicateShard.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/requests_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/requests_telemetry_spec.cr new file mode 100644 index 000000000000..5adea3c47c07 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/requests_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RequestsTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RequestsTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RequestsTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/resharding_direction_spec.cr b/samples/client/others/crystal-qdrant/spec/models/resharding_direction_spec.cr new file mode 100644 index 000000000000..be9fd59d2187 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/resharding_direction_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReshardingDirection +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReshardingDirection do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ReshardingDirection.from_json(%("up")) + expect(value).to be_a(Qdrant::Api::ReshardingDirection) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/resharding_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/resharding_info_spec.cr new file mode 100644 index 000000000000..233ad5df1fce --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/resharding_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ReshardingInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ReshardingInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ReshardingInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/restart_transfer_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/restart_transfer_operation_spec.cr new file mode 100644 index 000000000000..5e17f2058a1a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/restart_transfer_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RestartTransferOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RestartTransferOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RestartTransferOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/restart_transfer_spec.cr b/samples/client/others/crystal-qdrant/spec/models/restart_transfer_spec.cr new file mode 100644 index 000000000000..85bb5ebc4925 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/restart_transfer_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RestartTransfer +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RestartTransfer do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RestartTransfer.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/running_environment_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/running_environment_telemetry_spec.cr new file mode 100644 index 000000000000..49be0988915b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/running_environment_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::RunningEnvironmentTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::RunningEnvironmentTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::RunningEnvironmentTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sample_query_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sample_query_spec.cr new file mode 100644 index 000000000000..a133eabf4405 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sample_query_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SampleQuery +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SampleQuery do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SampleQuery.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sample_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sample_spec.cr new file mode 100644 index 000000000000..eb4e649975bf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sample_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Sample +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Sample do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::Sample.from_json(%("random")) + expect(value).to be_a(Qdrant::Api::Sample) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_config_spec.cr new file mode 100644 index 000000000000..71470eda95b3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScalarQuantizationConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScalarQuantizationConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ScalarQuantizationConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_spec.cr new file mode 100644 index 000000000000..52fa8632ff25 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scalar_quantization_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScalarQuantization +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScalarQuantization do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ScalarQuantization.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scalar_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scalar_type_spec.cr new file mode 100644 index 000000000000..f76fa6df1a4e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scalar_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScalarType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScalarType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ScalarType.from_json(%("int8")) + expect(value).to be_a(Qdrant::Api::ScalarType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scored_point_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scored_point_spec.cr new file mode 100644 index 000000000000..eae18d52de8d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scored_point_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScoredPoint +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScoredPoint do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ScoredPoint.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scroll_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scroll_points200_response_spec.cr new file mode 100644 index 000000000000..39f547945cbc --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scroll_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScrollPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScrollPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ScrollPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ScrollPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ScrollPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scroll_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scroll_request_spec.cr new file mode 100644 index 000000000000..f69bbbc40a0d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scroll_request_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScrollRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScrollRequest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ScrollRequest.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ScrollRequest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ScrollRequest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/scroll_result_spec.cr b/samples/client/others/crystal-qdrant/spec/models/scroll_result_spec.cr new file mode 100644 index 000000000000..aa9a8bdf9718 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/scroll_result_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ScrollResult +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ScrollResult do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ScrollResult.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_batch_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_batch_points200_response_spec.cr new file mode 100644 index 000000000000..fc24ed93b9fd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_batch_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchBatchPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchBatchPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchBatchPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchBatchPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchBatchPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_groups_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_groups_request_spec.cr new file mode 100644 index 000000000000..1a265c68ec6f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_groups_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchGroupsRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchGroupsRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchGroupsRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets200_response_spec.cr new file mode 100644 index 000000000000..ddeeffe10065 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixOffsets200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixOffsets200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchMatrixOffsets200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchMatrixOffsets200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchMatrixOffsets200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets_response_spec.cr new file mode 100644 index 000000000000..ebf9a1617a8e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_offsets_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixOffsetsResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixOffsetsResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchMatrixOffsetsResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_pair_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pair_spec.cr new file mode 100644 index 000000000000..8fc9893adb22 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pair_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixPair +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixPair do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchMatrixPair.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs200_response_spec.cr new file mode 100644 index 000000000000..a93e54495fe0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixPairs200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixPairs200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchMatrixPairs200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchMatrixPairs200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchMatrixPairs200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs_response_spec.cr new file mode 100644 index 000000000000..aa5da9a5d3a1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_pairs_response_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixPairsResponse +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixPairsResponse do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchMatrixPairsResponse.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_matrix_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_matrix_request_spec.cr new file mode 100644 index 000000000000..8c8f15b311d6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_matrix_request_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchMatrixRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchMatrixRequest do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchMatrixRequest.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchMatrixRequest) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchMatrixRequest.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_params_spec.cr new file mode 100644 index 000000000000..740087bcea45 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_params_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchParams do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchParams.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchParams) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchParams.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_point_groups200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_point_groups200_response_spec.cr new file mode 100644 index 000000000000..d83cb754e847 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_point_groups200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchPointGroups200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchPointGroups200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchPointGroups200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchPointGroups200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchPointGroups200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_points200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_points200_response_spec.cr new file mode 100644 index 000000000000..5a075c619384 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_points200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchPoints200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchPoints200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SearchPoints200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SearchPoints200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SearchPoints200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_request_batch_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_request_batch_spec.cr new file mode 100644 index 000000000000..dee2d66c7966 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_request_batch_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchRequestBatch +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchRequestBatch do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchRequestBatch.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/search_request_spec.cr b/samples/client/others/crystal-qdrant/spec/models/search_request_spec.cr new file mode 100644 index 000000000000..1ebde8ab2c23 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/search_request_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SearchRequest +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SearchRequest do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SearchRequest.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/segment_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/segment_config_spec.cr new file mode 100644 index 000000000000..970e990a7c58 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/segment_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SegmentConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SegmentConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SegmentConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/segment_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/segment_info_spec.cr new file mode 100644 index 000000000000..05efca83a7a2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/segment_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SegmentInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SegmentInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SegmentInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/segment_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/segment_telemetry_spec.cr new file mode 100644 index 000000000000..1d778204e84c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/segment_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SegmentTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SegmentTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SegmentTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/segment_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/segment_type_spec.cr new file mode 100644 index 000000000000..51f6593fa5f9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/segment_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SegmentType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SegmentType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::SegmentType.from_json(%("plain")) + expect(value).to be_a(Qdrant::Api::SegmentType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/set_payload_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/set_payload_operation_spec.cr new file mode 100644 index 000000000000..0ee9b2dfb000 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/set_payload_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SetPayloadOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SetPayloadOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SetPayloadOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/set_payload_spec.cr b/samples/client/others/crystal-qdrant/spec/models/set_payload_spec.cr new file mode 100644 index 000000000000..1b23bd8fb989 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/set_payload_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SetPayload +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SetPayload do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SetPayload.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_key_selector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_key_selector_spec.cr new file mode 100644 index 000000000000..9141288aeab0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_key_selector_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardKeySelector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardKeySelector do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ShardKeySelector.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_key_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_key_spec.cr new file mode 100644 index 000000000000..ea7e46595033 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_key_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardKey +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardKey do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ShardKey.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_location_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_location_spec.cr new file mode 100644 index 000000000000..940b7ecd7a63 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_location_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardSnapshotLocation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardSnapshotLocation do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ShardSnapshotLocation.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_recover_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_recover_spec.cr new file mode 100644 index 000000000000..bc6c58386635 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_snapshot_recover_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardSnapshotRecover +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardSnapshotRecover do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ShardSnapshotRecover.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_status_spec.cr new file mode 100644 index 000000000000..1fb2b2d9e10d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_status_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardStatus do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ShardStatus.from_json(%("green")) + expect(value).to be_a(Qdrant::Api::ShardStatus) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_transfer_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_transfer_info_spec.cr new file mode 100644 index 000000000000..d2ac63b25c00 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_transfer_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardTransferInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardTransferInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::ShardTransferInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/shard_transfer_method_spec.cr b/samples/client/others/crystal-qdrant/spec/models/shard_transfer_method_spec.cr new file mode 100644 index 000000000000..9fd1e2e66598 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/shard_transfer_method_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardTransferMethod +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardTransferMethod do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ShardTransferMethod.from_json(%("stream_records")) + expect(value).to be_a(Qdrant::Api::ShardTransferMethod) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sharding_method_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sharding_method_spec.cr new file mode 100644 index 000000000000..33ab4e844904 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sharding_method_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ShardingMethod +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ShardingMethod do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::ShardingMethod.from_json(%("auto")) + expect(value).to be_a(Qdrant::Api::ShardingMethod) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/snapshot_description_spec.cr b/samples/client/others/crystal-qdrant/spec/models/snapshot_description_spec.cr new file mode 100644 index 000000000000..194374427ec5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/snapshot_description_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SnapshotDescription +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SnapshotDescription do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SnapshotDescription.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/snapshot_priority_spec.cr b/samples/client/others/crystal-qdrant/spec/models/snapshot_priority_spec.cr new file mode 100644 index 000000000000..5c512052a5f0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/snapshot_priority_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SnapshotPriority +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SnapshotPriority do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::SnapshotPriority.from_json(%("no_sync")) + expect(value).to be_a(Qdrant::Api::SnapshotPriority) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/snapshot_recover_spec.cr b/samples/client/others/crystal-qdrant/spec/models/snapshot_recover_spec.cr new file mode 100644 index 000000000000..53937e06c32b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/snapshot_recover_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SnapshotRecover +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SnapshotRecover do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SnapshotRecover.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_index_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_index_config_spec.cr new file mode 100644 index 000000000000..576ab020d451 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_index_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseIndexConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseIndexConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SparseIndexConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_index_params_spec.cr new file mode 100644 index 000000000000..20bcdbf1946d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_index_params_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseIndexParams do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SparseIndexParams.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SparseIndexParams) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SparseIndexParams.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_index_type_spec.cr new file mode 100644 index 000000000000..aebd42065770 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::SparseIndexType.from_json(%("MutableRam")) + expect(value).to be_a(Qdrant::Api::SparseIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_vector_data_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_data_config_spec.cr new file mode 100644 index 000000000000..7ca92cc5cc5f --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_data_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseVectorDataConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseVectorDataConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SparseVectorDataConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_vector_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_params_spec.cr new file mode 100644 index 000000000000..711e30ae18a8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_params_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseVectorParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseVectorParams do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::SparseVectorParams.from_json("{}") + expect(instance).to be_a(Qdrant::Api::SparseVectorParams) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::SparseVectorParams.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/sparse_vector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_spec.cr new file mode 100644 index 000000000000..8230a8c8ed39 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/sparse_vector_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::SparseVector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::SparseVector do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::SparseVector.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/start_from_spec.cr b/samples/client/others/crystal-qdrant/spec/models/start_from_spec.cr new file mode 100644 index 000000000000..e4f26760ce58 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/start_from_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::StartFrom +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::StartFrom do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::StartFrom.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/state_role_spec.cr b/samples/client/others/crystal-qdrant/spec/models/state_role_spec.cr new file mode 100644 index 000000000000..c8c4e506deac --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/state_role_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::StateRole +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::StateRole do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::StateRole.from_json(%("Follower")) + expect(value).to be_a(Qdrant::Api::StateRole) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/telemetry200_response_spec.cr b/samples/client/others/crystal-qdrant/spec/models/telemetry200_response_spec.cr new file mode 100644 index 000000000000..a5a7710b497b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/telemetry200_response_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Telemetry200Response +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Telemetry200Response do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::Telemetry200Response.from_json("{}") + expect(instance).to be_a(Qdrant::Api::Telemetry200Response) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::Telemetry200Response.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/telemetry_data_spec.cr b/samples/client/others/crystal-qdrant/spec/models/telemetry_data_spec.cr new file mode 100644 index 000000000000..efaaaf034469 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/telemetry_data_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TelemetryData +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TelemetryData do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::TelemetryData.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/text_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/text_index_params_spec.cr new file mode 100644 index 000000000000..356f81310ebf --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/text_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TextIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TextIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::TextIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/text_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/text_index_type_spec.cr new file mode 100644 index 000000000000..154e2aaf24db --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/text_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TextIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TextIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::TextIndexType.from_json(%("text")) + expect(value).to be_a(Qdrant::Api::TextIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/tokenizer_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/tokenizer_type_spec.cr new file mode 100644 index 000000000000..9a8fe7637868 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/tokenizer_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TokenizerType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TokenizerType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::TokenizerType.from_json(%("prefix")) + expect(value).to be_a(Qdrant::Api::TokenizerType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/tracker_status_one_of_spec.cr b/samples/client/others/crystal-qdrant/spec/models/tracker_status_one_of_spec.cr new file mode 100644 index 000000000000..5e5c04511bae --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/tracker_status_one_of_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TrackerStatusOneOf +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TrackerStatusOneOf do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::TrackerStatusOneOf.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/tracker_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/tracker_status_spec.cr new file mode 100644 index 000000000000..3e69e2962325 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/tracker_status_spec.cr @@ -0,0 +1,26 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TrackerStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TrackerStatus do + describe ".openapi_one_of" do + it "lists the items referenced in the oneOf array" do + expect(Qdrant::Api::TrackerStatus.openapi_one_of).to_not be_empty + end + end + + describe ".build" do + it "is defined on the oneOf union type" do + expect(Qdrant::Api::TrackerStatus.responds_to?(:build)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/tracker_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/tracker_telemetry_spec.cr new file mode 100644 index 000000000000..f1a2e64e0b50 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/tracker_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::TrackerTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::TrackerTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::TrackerTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_collection_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_collection_spec.cr new file mode 100644 index 000000000000..2f4aa031d2f2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_collection_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateCollection +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateCollection do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::UpdateCollection.from_json("{}") + expect(instance).to be_a(Qdrant::Api::UpdateCollection) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::UpdateCollection.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_operation_spec.cr new file mode 100644 index 000000000000..765226002f91 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_operation_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateOperation do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::UpdateOperation.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_operations_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_operations_spec.cr new file mode 100644 index 000000000000..e59a01308afc --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_operations_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateOperations +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateOperations do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UpdateOperations.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_result_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_result_spec.cr new file mode 100644 index 000000000000..27e1949994cd --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_result_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateResult +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateResult do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UpdateResult.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_status_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_status_spec.cr new file mode 100644 index 000000000000..ab1c749de7da --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_status_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateStatus +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateStatus do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::UpdateStatus.from_json(%("acknowledged")) + expect(value).to be_a(Qdrant::Api::UpdateStatus) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_vectors_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_vectors_operation_spec.cr new file mode 100644 index 000000000000..a91b96e9ec57 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_vectors_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateVectorsOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateVectorsOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UpdateVectorsOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/update_vectors_spec.cr b/samples/client/others/crystal-qdrant/spec/models/update_vectors_spec.cr new file mode 100644 index 000000000000..999ffd1750d1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/update_vectors_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpdateVectors +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpdateVectors do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UpdateVectors.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/upsert_operation_spec.cr b/samples/client/others/crystal-qdrant/spec/models/upsert_operation_spec.cr new file mode 100644 index 000000000000..014238416494 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/upsert_operation_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UpsertOperation +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UpsertOperation do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UpsertOperation.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/uuid_index_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/uuid_index_params_spec.cr new file mode 100644 index 000000000000..04e8349597d7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/uuid_index_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UuidIndexParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UuidIndexParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::UuidIndexParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/uuid_index_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/uuid_index_type_spec.cr new file mode 100644 index 000000000000..48d125e166b1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/uuid_index_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::UuidIndexType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::UuidIndexType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::UuidIndexType.from_json(%("uuid")) + expect(value).to be_a(Qdrant::Api::UuidIndexType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/value_variants_spec.cr b/samples/client/others/crystal-qdrant/spec/models/value_variants_spec.cr new file mode 100644 index 000000000000..2cfdd203bb92 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/value_variants_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ValueVariants +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ValueVariants do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::ValueVariants.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/values_count_spec.cr b/samples/client/others/crystal-qdrant/spec/models/values_count_spec.cr new file mode 100644 index 000000000000..35209f309d1e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/values_count_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::ValuesCount +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::ValuesCount do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::ValuesCount.from_json("{}") + expect(instance).to be_a(Qdrant::Api::ValuesCount) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::ValuesCount.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_data_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_data_config_spec.cr new file mode 100644 index 000000000000..5c00b00fcb2b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_data_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorDataConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorDataConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::VectorDataConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_data_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_data_info_spec.cr new file mode 100644 index 000000000000..31c446d29ba5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_data_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorDataInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorDataInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::VectorDataInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_index_searches_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_index_searches_telemetry_spec.cr new file mode 100644 index 000000000000..758620dd629d --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_index_searches_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorIndexSearchesTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorIndexSearchesTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::VectorIndexSearchesTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_input_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_input_spec.cr new file mode 100644 index 000000000000..7ca907d0ce7e --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_input_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorInput +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorInput do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::VectorInput.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_params_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_params_diff_spec.cr new file mode 100644 index 000000000000..5e83404283a9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_params_diff_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorParamsDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorParamsDiff do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::VectorParamsDiff.from_json("{}") + expect(instance).to be_a(Qdrant::Api::VectorParamsDiff) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::VectorParamsDiff.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_params_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_params_spec.cr new file mode 100644 index 000000000000..d7e74130e748 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_params_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorParams +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorParams do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::VectorParams.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_spec.cr new file mode 100644 index 000000000000..19e46f2b9da2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::Vector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::Vector do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::Vector.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_storage_datatype_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_storage_datatype_spec.cr new file mode 100644 index 000000000000..57e4e9ab6112 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_storage_datatype_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorStorageDatatype +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorStorageDatatype do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::VectorStorageDatatype.from_json(%("float32")) + expect(value).to be_a(Qdrant::Api::VectorStorageDatatype) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_storage_type_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_storage_type_spec.cr new file mode 100644 index 000000000000..9278047973d9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_storage_type_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorStorageType +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorStorageType do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::VectorStorageType.from_json(%("Memory")) + expect(value).to be_a(Qdrant::Api::VectorStorageType) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vector_struct_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vector_struct_spec.cr new file mode 100644 index 000000000000..c117227fd579 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vector_struct_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorStruct +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorStruct do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::VectorStruct.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/vectors_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/vectors_config_spec.cr new file mode 100644 index 000000000000..1c1db19e766c --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/vectors_config_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VectorsConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VectorsConfig do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::VectorsConfig.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/version_info_spec.cr b/samples/client/others/crystal-qdrant/spec/models/version_info_spec.cr new file mode 100644 index 000000000000..938b9131bf2a --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/version_info_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::VersionInfo +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::VersionInfo do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::VersionInfo.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/wal_config_diff_spec.cr b/samples/client/others/crystal-qdrant/spec/models/wal_config_diff_spec.cr new file mode 100644 index 000000000000..354a50d8eed4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/wal_config_diff_spec.cr @@ -0,0 +1,29 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WalConfigDiff +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WalConfigDiff do + describe "JSON round-trip" do + it "parses an empty JSON object and re-serialises to valid JSON" do + instance = Qdrant::Api::WalConfigDiff.from_json("{}") + expect(instance).to be_a(Qdrant::Api::WalConfigDiff) + expect(JSON.parse(instance.to_json)).to be_a(JSON::Any) + end + end + + describe "#to_h" do + it "returns a Hash representation" do + instance = Qdrant::Api::WalConfigDiff.from_json("{}") + expect(instance.to_h).to be_a(Hash(String, JSON::Any)) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/wal_config_spec.cr b/samples/client/others/crystal-qdrant/spec/models/wal_config_spec.cr new file mode 100644 index 000000000000..6901f3f9742b --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/wal_config_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WalConfig +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WalConfig do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::WalConfig.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/web_api_telemetry_spec.cr b/samples/client/others/crystal-qdrant/spec/models/web_api_telemetry_spec.cr new file mode 100644 index 000000000000..997615742563 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/web_api_telemetry_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WebApiTelemetry +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WebApiTelemetry do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::WebApiTelemetry.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/with_lookup_interface_spec.cr b/samples/client/others/crystal-qdrant/spec/models/with_lookup_interface_spec.cr new file mode 100644 index 000000000000..05eaf38e77f6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/with_lookup_interface_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WithLookupInterface +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WithLookupInterface do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::WithLookupInterface.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/with_lookup_spec.cr b/samples/client/others/crystal-qdrant/spec/models/with_lookup_spec.cr new file mode 100644 index 000000000000..9f6e4c4df991 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/with_lookup_spec.cr @@ -0,0 +1,24 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WithLookup +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WithLookup do + describe "required-field enforcement" do + # A required, non-nilable property without a default makes JSON::Serializable + # reject a document that omits it. (Assumes at least one required field has no + # default; models where every required field has a default are not present in + # the generated samples.) + it "raises when required properties are missing" do + expect { Qdrant::Api::WithLookup.from_json("{}") }.to raise_error(JSON::SerializableError) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/with_payload_interface_spec.cr b/samples/client/others/crystal-qdrant/spec/models/with_payload_interface_spec.cr new file mode 100644 index 000000000000..a6a418c2fd12 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/with_payload_interface_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WithPayloadInterface +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WithPayloadInterface do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::WithPayloadInterface.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/with_vector_spec.cr b/samples/client/others/crystal-qdrant/spec/models/with_vector_spec.cr new file mode 100644 index 000000000000..2017b238b9d9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/with_vector_spec.cr @@ -0,0 +1,20 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WithVector +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WithVector do + describe "union (anyOf)" do + it "is (de)serialisable as a union alias" do + expect(Qdrant::Api::WithVector.responds_to?(:from_json)).to be_true + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/models/write_ordering_spec.cr b/samples/client/others/crystal-qdrant/spec/models/write_ordering_spec.cr new file mode 100644 index 000000000000..871f41bcdfaa --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/models/write_ordering_spec.cr @@ -0,0 +1,21 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "../spec_helper" + +# Unit tests for Qdrant::Api::WriteOrdering +# Automatically generated by openapi-generator (https://openapi-generator.tech) +# Please update as you see appropriate +Spectator.describe Qdrant::Api::WriteOrdering do + describe "JSON round-trip" do + it "parses an allowed value" do + value = Qdrant::Api::WriteOrdering.from_json(%("weak")) + expect(value).to be_a(Qdrant::Api::WriteOrdering) + end + end +end diff --git a/samples/client/others/crystal-qdrant/spec/spec_helper.cr b/samples/client/others/crystal-qdrant/spec/spec_helper.cr new file mode 100644 index 000000000000..d93d154715fa --- /dev/null +++ b/samples/client/others/crystal-qdrant/spec/spec_helper.cr @@ -0,0 +1,11 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +# load modules +require "spectator" +require "../src/qdrant-api" diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api.cr b/samples/client/others/crystal-qdrant/src/qdrant-api.cr new file mode 100644 index 000000000000..a8f474f6a186 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api.cr @@ -0,0 +1,364 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# +require "big" +require "big/json" +require "json" +require "log" +require "time" +require "uri" +require "yaml" + +require "./qdrant-api/configuration" +require "./qdrant-api/connection" +require "./qdrant-api/response" +require "./qdrant-api/api_error" +require "./qdrant-api/client" +require "./qdrant-api/serializable" +require "./qdrant-api/validation" + +# Models +require "./qdrant-api/models/abort_shard_transfer" +require "./qdrant-api/models/abort_transfer_operation" +require "./qdrant-api/models/alias_description" +require "./qdrant-api/models/alias_operations" +require "./qdrant-api/models/any_variants" +require "./qdrant-api/models/app_build_telemetry" +require "./qdrant-api/models/app_features_telemetry" +require "./qdrant-api/models/batch" +require "./qdrant-api/models/batch_payloads_inner" +require "./qdrant-api/models/batch_update200_response" +require "./qdrant-api/models/batch_vector_struct" +require "./qdrant-api/models/binary_quantization" +require "./qdrant-api/models/binary_quantization_config" +require "./qdrant-api/models/bool_index_params" +require "./qdrant-api/models/bool_index_type" +require "./qdrant-api/models/change_aliases_operation" +require "./qdrant-api/models/clear_payload_operation" +require "./qdrant-api/models/cluster_config_telemetry" +require "./qdrant-api/models/cluster_operations" +require "./qdrant-api/models/cluster_status" +require "./qdrant-api/models/cluster_status200_response" +require "./qdrant-api/models/cluster_status_one_of" +require "./qdrant-api/models/cluster_status_one_of1" +require "./qdrant-api/models/cluster_status_telemetry" +require "./qdrant-api/models/cluster_telemetry" +require "./qdrant-api/models/collection_cluster_info" +require "./qdrant-api/models/collection_cluster_info200_response" +require "./qdrant-api/models/collection_config" +require "./qdrant-api/models/collection_description" +require "./qdrant-api/models/collection_existence" +require "./qdrant-api/models/collection_exists200_response" +require "./qdrant-api/models/collection_info" +require "./qdrant-api/models/collection_params" +require "./qdrant-api/models/collection_params_diff" +require "./qdrant-api/models/collection_status" +require "./qdrant-api/models/collection_telemetry" +require "./qdrant-api/models/collection_telemetry_enum" +require "./qdrant-api/models/collections_aggregated_telemetry" +require "./qdrant-api/models/collections_aliases_response" +require "./qdrant-api/models/collections_response" +require "./qdrant-api/models/collections_telemetry" +require "./qdrant-api/models/compression_ratio" +require "./qdrant-api/models/condition" +require "./qdrant-api/models/consensus_config_telemetry" +require "./qdrant-api/models/consensus_thread_status" +require "./qdrant-api/models/consensus_thread_status_one_of" +require "./qdrant-api/models/consensus_thread_status_one_of1" +require "./qdrant-api/models/consensus_thread_status_one_of2" +require "./qdrant-api/models/context_example_pair" +require "./qdrant-api/models/context_input" +require "./qdrant-api/models/context_pair" +require "./qdrant-api/models/context_query" +require "./qdrant-api/models/count_points200_response" +require "./qdrant-api/models/count_request" +require "./qdrant-api/models/count_result" +require "./qdrant-api/models/create_alias" +require "./qdrant-api/models/create_alias_operation" +require "./qdrant-api/models/create_collection" +require "./qdrant-api/models/create_field_index" +require "./qdrant-api/models/create_field_index200_response" +require "./qdrant-api/models/create_shard_key200_response" +require "./qdrant-api/models/create_sharding_key" +require "./qdrant-api/models/create_sharding_key_operation" +require "./qdrant-api/models/create_snapshot200_response" +require "./qdrant-api/models/datatype" +require "./qdrant-api/models/datetime_index_params" +require "./qdrant-api/models/datetime_index_type" +require "./qdrant-api/models/datetime_range" +require "./qdrant-api/models/delete_alias" +require "./qdrant-api/models/delete_alias_operation" +require "./qdrant-api/models/delete_operation" +require "./qdrant-api/models/delete_payload" +require "./qdrant-api/models/delete_payload_operation" +require "./qdrant-api/models/delete_vectors" +require "./qdrant-api/models/delete_vectors_operation" +require "./qdrant-api/models/direction" +require "./qdrant-api/models/disabled" +require "./qdrant-api/models/discover_input" +require "./qdrant-api/models/discover_input_context" +require "./qdrant-api/models/discover_query" +require "./qdrant-api/models/discover_request" +require "./qdrant-api/models/discover_request_batch" +require "./qdrant-api/models/distance" +require "./qdrant-api/models/document" +require "./qdrant-api/models/drop_replica_operation" +require "./qdrant-api/models/drop_sharding_key" +require "./qdrant-api/models/drop_sharding_key_operation" +require "./qdrant-api/models/error_response" +require "./qdrant-api/models/error_response_status" +require "./qdrant-api/models/extended_point_id" +require "./qdrant-api/models/facet200_response" +require "./qdrant-api/models/facet_request" +require "./qdrant-api/models/facet_response" +require "./qdrant-api/models/facet_value" +require "./qdrant-api/models/facet_value_hit" +require "./qdrant-api/models/field_condition" +require "./qdrant-api/models/filter" +require "./qdrant-api/models/filter_selector" +require "./qdrant-api/models/filter_should" +require "./qdrant-api/models/float_index_params" +require "./qdrant-api/models/float_index_type" +require "./qdrant-api/models/fusion" +require "./qdrant-api/models/fusion_query" +require "./qdrant-api/models/geo_bounding_box" +require "./qdrant-api/models/geo_index_params" +require "./qdrant-api/models/geo_index_type" +require "./qdrant-api/models/geo_line_string" +require "./qdrant-api/models/geo_point" +require "./qdrant-api/models/geo_polygon" +require "./qdrant-api/models/geo_radius" +require "./qdrant-api/models/get_collection200_response" +require "./qdrant-api/models/get_collection_aliases200_response" +require "./qdrant-api/models/get_collections200_response" +require "./qdrant-api/models/get_locks200_response" +require "./qdrant-api/models/get_point200_response" +require "./qdrant-api/models/get_points200_response" +require "./qdrant-api/models/group_id" +require "./qdrant-api/models/groups_result" +require "./qdrant-api/models/grpc_telemetry" +require "./qdrant-api/models/has_id_condition" +require "./qdrant-api/models/hnsw_config" +require "./qdrant-api/models/hnsw_config_diff" +require "./qdrant-api/models/indexes" +require "./qdrant-api/models/indexes_one_of" +require "./qdrant-api/models/indexes_one_of1" +require "./qdrant-api/models/init_from" +require "./qdrant-api/models/integer_index_params" +require "./qdrant-api/models/integer_index_type" +require "./qdrant-api/models/is_empty_condition" +require "./qdrant-api/models/is_null_condition" +require "./qdrant-api/models/keyword_index_params" +require "./qdrant-api/models/keyword_index_type" +require "./qdrant-api/models/list_snapshots200_response" +require "./qdrant-api/models/local_shard_info" +require "./qdrant-api/models/local_shard_telemetry" +require "./qdrant-api/models/locks_option" +require "./qdrant-api/models/lookup_location" +require "./qdrant-api/models/match" +require "./qdrant-api/models/match_any" +require "./qdrant-api/models/match_except" +require "./qdrant-api/models/match_text" +require "./qdrant-api/models/match_value" +require "./qdrant-api/models/message_send_errors" +require "./qdrant-api/models/min_should" +require "./qdrant-api/models/modifier" +require "./qdrant-api/models/move_shard" +require "./qdrant-api/models/move_shard_operation" +require "./qdrant-api/models/multi_vector_comparator" +require "./qdrant-api/models/multi_vector_config" +require "./qdrant-api/models/named_sparse_vector" +require "./qdrant-api/models/named_vector" +require "./qdrant-api/models/named_vector_struct" +require "./qdrant-api/models/nearest_query" +require "./qdrant-api/models/nested" +require "./qdrant-api/models/nested_condition" +require "./qdrant-api/models/operation_duration_statistics" +require "./qdrant-api/models/optimizer_telemetry" +require "./qdrant-api/models/optimizers_config" +require "./qdrant-api/models/optimizers_config_diff" +require "./qdrant-api/models/optimizers_status" +require "./qdrant-api/models/optimizers_status_one_of" +require "./qdrant-api/models/order_by" +require "./qdrant-api/models/order_by_interface" +require "./qdrant-api/models/order_by_query" +require "./qdrant-api/models/order_value" +require "./qdrant-api/models/overwrite_payload_operation" +require "./qdrant-api/models/p2p_config_telemetry" +require "./qdrant-api/models/payload_field" +require "./qdrant-api/models/payload_field_schema" +require "./qdrant-api/models/payload_index_info" +require "./qdrant-api/models/payload_index_telemetry" +require "./qdrant-api/models/payload_schema_params" +require "./qdrant-api/models/payload_schema_type" +require "./qdrant-api/models/payload_selector" +require "./qdrant-api/models/payload_selector_exclude" +require "./qdrant-api/models/payload_selector_include" +require "./qdrant-api/models/payload_storage_type" +require "./qdrant-api/models/payload_storage_type_one_of" +require "./qdrant-api/models/payload_storage_type_one_of1" +require "./qdrant-api/models/peer_info" +require "./qdrant-api/models/point_group" +require "./qdrant-api/models/point_ids_list" +require "./qdrant-api/models/point_insert_operations" +require "./qdrant-api/models/point_request" +require "./qdrant-api/models/point_struct" +require "./qdrant-api/models/point_vectors" +require "./qdrant-api/models/points_batch" +require "./qdrant-api/models/points_list" +require "./qdrant-api/models/points_selector" +require "./qdrant-api/models/prefetch" +require "./qdrant-api/models/product_quantization" +require "./qdrant-api/models/product_quantization_config" +require "./qdrant-api/models/quantization_config" +require "./qdrant-api/models/quantization_config_diff" +require "./qdrant-api/models/quantization_search_params" +require "./qdrant-api/models/query" +require "./qdrant-api/models/query_batch_points200_response" +require "./qdrant-api/models/query_groups_request" +require "./qdrant-api/models/query_interface" +require "./qdrant-api/models/query_points200_response" +require "./qdrant-api/models/query_request" +require "./qdrant-api/models/query_request_batch" +require "./qdrant-api/models/query_request_prefetch" +require "./qdrant-api/models/query_response" +require "./qdrant-api/models/raft_info" +require "./qdrant-api/models/range" +require "./qdrant-api/models/range_interface" +require "./qdrant-api/models/read_consistency" +require "./qdrant-api/models/read_consistency_type" +require "./qdrant-api/models/recommend_example" +require "./qdrant-api/models/recommend_groups_request" +require "./qdrant-api/models/recommend_input" +require "./qdrant-api/models/recommend_query" +require "./qdrant-api/models/recommend_request" +require "./qdrant-api/models/recommend_request_batch" +require "./qdrant-api/models/recommend_strategy" +require "./qdrant-api/models/record" +require "./qdrant-api/models/recover_from_uploaded_snapshot202_response" +require "./qdrant-api/models/remote_shard_info" +require "./qdrant-api/models/remote_shard_telemetry" +require "./qdrant-api/models/rename_alias" +require "./qdrant-api/models/rename_alias_operation" +require "./qdrant-api/models/replica" +require "./qdrant-api/models/replica_set_telemetry" +require "./qdrant-api/models/replica_state" +require "./qdrant-api/models/replicate_shard" +require "./qdrant-api/models/replicate_shard_operation" +require "./qdrant-api/models/requests_telemetry" +require "./qdrant-api/models/resharding_direction" +require "./qdrant-api/models/resharding_info" +require "./qdrant-api/models/restart_transfer" +require "./qdrant-api/models/restart_transfer_operation" +require "./qdrant-api/models/running_environment_telemetry" +require "./qdrant-api/models/sample" +require "./qdrant-api/models/sample_query" +require "./qdrant-api/models/scalar_quantization" +require "./qdrant-api/models/scalar_quantization_config" +require "./qdrant-api/models/scalar_type" +require "./qdrant-api/models/scored_point" +require "./qdrant-api/models/scroll_points200_response" +require "./qdrant-api/models/scroll_request" +require "./qdrant-api/models/scroll_result" +require "./qdrant-api/models/search_batch_points200_response" +require "./qdrant-api/models/search_groups_request" +require "./qdrant-api/models/search_matrix_offsets200_response" +require "./qdrant-api/models/search_matrix_offsets_response" +require "./qdrant-api/models/search_matrix_pair" +require "./qdrant-api/models/search_matrix_pairs200_response" +require "./qdrant-api/models/search_matrix_pairs_response" +require "./qdrant-api/models/search_matrix_request" +require "./qdrant-api/models/search_params" +require "./qdrant-api/models/search_point_groups200_response" +require "./qdrant-api/models/search_points200_response" +require "./qdrant-api/models/search_request" +require "./qdrant-api/models/search_request_batch" +require "./qdrant-api/models/segment_config" +require "./qdrant-api/models/segment_info" +require "./qdrant-api/models/segment_telemetry" +require "./qdrant-api/models/segment_type" +require "./qdrant-api/models/set_payload" +require "./qdrant-api/models/set_payload_operation" +require "./qdrant-api/models/shard_key" +require "./qdrant-api/models/shard_key_selector" +require "./qdrant-api/models/shard_snapshot_location" +require "./qdrant-api/models/shard_snapshot_recover" +require "./qdrant-api/models/shard_status" +require "./qdrant-api/models/shard_transfer_info" +require "./qdrant-api/models/shard_transfer_method" +require "./qdrant-api/models/sharding_method" +require "./qdrant-api/models/snapshot_description" +require "./qdrant-api/models/snapshot_priority" +require "./qdrant-api/models/snapshot_recover" +require "./qdrant-api/models/sparse_index_config" +require "./qdrant-api/models/sparse_index_params" +require "./qdrant-api/models/sparse_index_type" +require "./qdrant-api/models/sparse_vector" +require "./qdrant-api/models/sparse_vector_data_config" +require "./qdrant-api/models/sparse_vector_params" +require "./qdrant-api/models/start_from" +require "./qdrant-api/models/state_role" +require "./qdrant-api/models/telemetry200_response" +require "./qdrant-api/models/telemetry_data" +require "./qdrant-api/models/text_index_params" +require "./qdrant-api/models/text_index_type" +require "./qdrant-api/models/tokenizer_type" +require "./qdrant-api/models/tracker_status" +require "./qdrant-api/models/tracker_status_one_of" +require "./qdrant-api/models/tracker_telemetry" +require "./qdrant-api/models/update_collection" +require "./qdrant-api/models/update_operation" +require "./qdrant-api/models/update_operations" +require "./qdrant-api/models/update_result" +require "./qdrant-api/models/update_status" +require "./qdrant-api/models/update_vectors" +require "./qdrant-api/models/update_vectors_operation" +require "./qdrant-api/models/upsert_operation" +require "./qdrant-api/models/uuid_index_params" +require "./qdrant-api/models/uuid_index_type" +require "./qdrant-api/models/value_variants" +require "./qdrant-api/models/values_count" +require "./qdrant-api/models/vector" +require "./qdrant-api/models/vector_data_config" +require "./qdrant-api/models/vector_data_info" +require "./qdrant-api/models/vector_index_searches_telemetry" +require "./qdrant-api/models/vector_input" +require "./qdrant-api/models/vector_params" +require "./qdrant-api/models/vector_params_diff" +require "./qdrant-api/models/vector_storage_datatype" +require "./qdrant-api/models/vector_storage_type" +require "./qdrant-api/models/vector_struct" +require "./qdrant-api/models/vectors_config" +require "./qdrant-api/models/version_info" +require "./qdrant-api/models/wal_config" +require "./qdrant-api/models/wal_config_diff" +require "./qdrant-api/models/web_api_telemetry" +require "./qdrant-api/models/with_lookup" +require "./qdrant-api/models/with_lookup_interface" +require "./qdrant-api/models/with_payload_interface" +require "./qdrant-api/models/with_vector" +require "./qdrant-api/models/write_ordering" + +# APIs +require "./qdrant-api/api/aliases" +require "./qdrant-api/api/cluster" +require "./qdrant-api/api/cluster/peer" +require "./qdrant-api/api/collections" +require "./qdrant-api/api/collections/index" +require "./qdrant-api/api/collections/points" +require "./qdrant-api/api/collections/shards" +require "./qdrant-api/api/collections/snapshots" +require "./qdrant-api/api/healthz" +require "./qdrant-api/api/issues" +require "./qdrant-api/api/livez" +require "./qdrant-api/api/locks" +require "./qdrant-api/api/metrics" +require "./qdrant-api/api/readyz" +require "./qdrant-api/api/root" +require "./qdrant-api/api/snapshots" +require "./qdrant-api/api/telemetry" + diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/aliases.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/aliases.cr new file mode 100644 index 000000000000..afce993584f2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/aliases.cr @@ -0,0 +1,17 @@ +require "json" + +module Qdrant::Api + class Aliases + def initialize(@conn : Connection); end + + # List collections aliases Get list of all existing collections aliases + def list() : Response(Qdrant::Api::GetCollectionAliases200Response) + @conn.request(Qdrant::Api::GetCollectionAliases200Response, + method: :GET, + path: "/aliases", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster.cr new file mode 100644 index 000000000000..b1767ba2ccdc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster.cr @@ -0,0 +1,26 @@ +require "json" + +module Qdrant::Api + class Cluster + def initialize(@conn : Connection); end + + # Tries to recover current peer Raft state. + def recover() : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/cluster/recover", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Get cluster status info Get information about the current state and composition of the cluster + def status() : Response(Qdrant::Api::ClusterStatus200Response) + @conn.request(Qdrant::Api::ClusterStatus200Response, + method: :GET, + path: "/cluster", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster/peer.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster/peer.cr new file mode 100644 index 000000000000..c31c3d3139f0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/cluster/peer.cr @@ -0,0 +1,18 @@ +require "json" + +module Qdrant::Api + class Cluster::Peer + def initialize(@conn : Connection); end + + # Remove peer from the cluster Tries to remove peer from the cluster. Will return an error if peer has shards on it. + def delete(peer_id : Int32, *, force : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/cluster/peer/{peer_id}".sub("{peer_id}", Qdrant::Api.enc(peer_id)), + query: { "force" => force }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections.cr new file mode 100644 index 000000000000..08efbf72560a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections.cr @@ -0,0 +1,144 @@ +require "json" + +module Qdrant::Api + class Collections + def initialize(@conn : Connection); end + + # Update aliases of the collections + def aliases(change_aliases_operation : Qdrant::Api::ChangeAliasesOperation? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/aliases", + body: change_aliases_operation, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # List aliases for collection Get list of all aliases for a collection + def aliases_get(collection_name : String) : Response(Qdrant::Api::GetCollectionAliases200Response) + @conn.request(Qdrant::Api::GetCollectionAliases200Response, + method: :GET, + path: "/collections/{collection_name}/aliases".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Collection cluster info Get cluster information for a collection + def cluster(collection_name : String) : Response(Qdrant::Api::CollectionClusterInfo200Response) + @conn.request(Qdrant::Api::CollectionClusterInfo200Response, + method: :GET, + path: "/collections/{collection_name}/cluster".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Collection cluster info Get cluster information for a collection + def cluster_get(collection_name : String) : Response(Qdrant::Api::CollectionClusterInfo200Response) + @conn.request(Qdrant::Api::CollectionClusterInfo200Response, + method: :GET, + path: "/collections/{collection_name}/cluster".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Update collection cluster setup + def cluster_post(collection_name : String, cluster_operations : Qdrant::Api::ClusterOperations? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/cluster".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: cluster_operations, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Update collection cluster setup + def cluster_post_1(collection_name : String, cluster_operations : Qdrant::Api::ClusterOperations? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/cluster".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: cluster_operations, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete collection Drop collection and all associated data + def delete(collection_name : String, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/collections/{collection_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + query: { "timeout" => timeout }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Check the existence of a collection Returns \"true\" if the given collection name exists, and \"false\" otherwise + def exists(collection_name : String) : Response(Qdrant::Api::CollectionExists200Response) + @conn.request(Qdrant::Api::CollectionExists200Response, + method: :GET, + path: "/collections/{collection_name}/exists".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Facet a payload key with a given filter. Count points that satisfy the given filter for each unique value of a payload key. + def facet(collection_name : String, facet_request : Qdrant::Api::FacetRequest? = nil, *, timeout : Int32? = nil, consistency : Qdrant::Api::ReadConsistency? = nil) : Response(Qdrant::Api::Facet200Response) + @conn.request(Qdrant::Api::Facet200Response, + method: :POST, + path: "/collections/{collection_name}/facet".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: facet_request, + query: { "timeout" => timeout, "consistency" => consistency }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Collection info Get detailed information about specified existing collection + def get(collection_name : String) : Response(Qdrant::Api::GetCollection200Response) + @conn.request(Qdrant::Api::GetCollection200Response, + method: :GET, + path: "/collections/{collection_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # List collections Get list name of all existing collections + def list() : Response(Qdrant::Api::GetCollections200Response) + @conn.request(Qdrant::Api::GetCollections200Response, + method: :GET, + path: "/collections", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Update collection parameters Update parameters of the existing collection + def partial_update(collection_name : String, update_collection : Qdrant::Api::UpdateCollection? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PATCH, + path: "/collections/{collection_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: update_collection, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Create collection Create new collection with given parameters + def update(collection_name : String, create_collection : Qdrant::Api::CreateCollection? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: create_collection, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/index.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/index.cr new file mode 100644 index 000000000000..99591f1b189f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/index.cr @@ -0,0 +1,30 @@ +require "json" + +module Qdrant::Api + class Collections::Index + def initialize(@conn : Connection); end + + # Create index for field in collection Create index for field in collection + def bulk_update(collection_name : String, create_field_index : Qdrant::Api::CreateFieldIndex? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :PUT, + path: "/collections/{collection_name}/index".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: create_field_index, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete index for field in collection Delete field index for collection + def delete(collection_name : String, field_name : String, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :DELETE, + path: "/collections/{collection_name}/index/{field_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{field_name}", Qdrant::Api.enc(field_name)), + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/points.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/points.cr new file mode 100644 index 000000000000..fac298a055ce --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/points.cr @@ -0,0 +1,318 @@ +require "json" + +module Qdrant::Api + class Collections::Points + def initialize(@conn : Connection); end + + # Batch update points Apply a series of update operations for points, vectors and payloads + def batch(collection_name : String, update_operations : Qdrant::Api::UpdateOperations? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::BatchUpdate200Response) + @conn.request(Qdrant::Api::BatchUpdate200Response, + method: :POST, + path: "/collections/{collection_name}/points/batch".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: update_operations, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Upsert points Perform insert + updates on points. If point with given ID already exists - it will be overwritten. + def bulk_update(collection_name : String, point_insert_operations : Qdrant::Api::PointInsertOperations? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :PUT, + path: "/collections/{collection_name}/points".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: point_insert_operations, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Count points Count points which matches given filtering condition + def count(collection_name : String, count_request : Qdrant::Api::CountRequest? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CountPoints200Response) + @conn.request(Qdrant::Api::CountPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/count".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: count_request, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Get points Retrieve multiple points by specified IDs + def create(collection_name : String, point_request : Qdrant::Api::PointRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::GetPoints200Response) + @conn.request(Qdrant::Api::GetPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: point_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete points Delete points + def delete(collection_name : String, points_selector : Qdrant::Api::PointsSelector? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :POST, + path: "/collections/{collection_name}/points/delete".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: points_selector, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Discover points Use context and a target to find the most similar points to the target, constrained by the context. When using only the context (without a target), a special search - called context search - is performed where pairs of points are used to generate a loss that guides the search towards the zone where most positive examples overlap. This means that the score minimizes the scenario of finding a point closer to a negative than to a positive part of a pair. Since the score of a context relates to loss, the maximum score a point can get is 0.0, and it becomes normal that many points can have a score of 0.0. When using target (with or without context), the score behaves a little different: The integer part of the score represents the rank with respect to the context, while the decimal part of the score relates to the distance to the target. The context part of the score for each pair is calculated +1 if the point is closer to a positive than to a negative part of a pair, and -1 otherwise. + def discover(collection_name : String, discover_request : Qdrant::Api::DiscoverRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPoints200Response) + @conn.request(Qdrant::Api::SearchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/discover".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: discover_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Discover batch points Look for points based on target and/or positive and negative example pairs, in batch. + def discover_batch(collection_name : String, discover_request_batch : Qdrant::Api::DiscoverRequestBatch? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchBatchPoints200Response) + @conn.request(Qdrant::Api::SearchBatchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/discover/batch".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: discover_request_batch, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Get point Retrieve full information of single point by id + def get(collection_name : String, id : Qdrant::Api::ExtendedPointId, *, consistency : Qdrant::Api::ReadConsistency? = nil) : Response(Qdrant::Api::GetPoint200Response) + @conn.request(Qdrant::Api::GetPoint200Response, + method: :GET, + path: "/collections/{collection_name}/points/{id}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{id}", Qdrant::Api.enc(id)), + query: { "consistency" => consistency }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Overwrite payload Replace full payload of points with new one + def payload(collection_name : String, set_payload : Qdrant::Api::SetPayload? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :PUT, + path: "/collections/{collection_name}/points/payload".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: set_payload, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Clear payload Remove all payload for specified points + def payload_clear(collection_name : String, points_selector : Qdrant::Api::PointsSelector? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :POST, + path: "/collections/{collection_name}/points/payload/clear".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: points_selector, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete payload Delete specified key payload for points + def payload_delete(collection_name : String, delete_payload : Qdrant::Api::DeletePayload? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :POST, + path: "/collections/{collection_name}/points/payload/delete".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: delete_payload, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Set payload Set payload values for points + def payload_post(collection_name : String, set_payload : Qdrant::Api::SetPayload? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :POST, + path: "/collections/{collection_name}/points/payload".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: set_payload, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Query points Universally query points. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + def query(collection_name : String, query_request : Qdrant::Api::QueryRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::QueryPoints200Response) + @conn.request(Qdrant::Api::QueryPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/query".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: query_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Query points in batch Universally query points in batch. This endpoint covers all capabilities of search, recommend, discover, filters. But also enables hybrid and multi-stage queries. + def query_batch(collection_name : String, query_request_batch : Qdrant::Api::QueryRequestBatch? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::QueryBatchPoints200Response) + @conn.request(Qdrant::Api::QueryBatchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/query/batch".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: query_request_batch, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Query points, grouped by a given payload field Universally query points, grouped by a given payload field + def query_groups(collection_name : String, query_groups_request : Qdrant::Api::QueryGroupsRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPointGroups200Response) + @conn.request(Qdrant::Api::SearchPointGroups200Response, + method: :POST, + path: "/collections/{collection_name}/points/query/groups".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: query_groups_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recommend points Look for the points which are closer to stored positive examples and at the same time further to negative examples. + def recommend(collection_name : String, recommend_request : Qdrant::Api::RecommendRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPoints200Response) + @conn.request(Qdrant::Api::SearchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/recommend".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: recommend_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recommend batch points Look for the points which are closer to stored positive examples and at the same time further to negative examples. + def recommend_batch(collection_name : String, recommend_request_batch : Qdrant::Api::RecommendRequestBatch? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchBatchPoints200Response) + @conn.request(Qdrant::Api::SearchBatchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/recommend/batch".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: recommend_request_batch, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recommend point groups Look for the points which are closer to stored positive examples and at the same time further to negative examples, grouped by a given payload field. + def recommend_groups(collection_name : String, recommend_groups_request : Qdrant::Api::RecommendGroupsRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPointGroups200Response) + @conn.request(Qdrant::Api::SearchPointGroups200Response, + method: :POST, + path: "/collections/{collection_name}/points/recommend/groups".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: recommend_groups_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Scroll points Scroll request - paginate over all points which matches given filtering condition + def scroll(collection_name : String, scroll_request : Qdrant::Api::ScrollRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::ScrollPoints200Response) + @conn.request(Qdrant::Api::ScrollPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/scroll".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: scroll_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Search points Retrieve closest points based on vector similarity and given filtering conditions + def search(collection_name : String, search_request : Qdrant::Api::SearchRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPoints200Response) + @conn.request(Qdrant::Api::SearchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/search".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: search_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Search batch points Retrieve by batch the closest points based on vector similarity and given filtering conditions + def search_batch(collection_name : String, search_request_batch : Qdrant::Api::SearchRequestBatch? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchBatchPoints200Response) + @conn.request(Qdrant::Api::SearchBatchPoints200Response, + method: :POST, + path: "/collections/{collection_name}/points/search/batch".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: search_request_batch, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Search point groups Retrieve closest points based on vector similarity and given filtering conditions, grouped by a given payload field + def search_groups(collection_name : String, search_groups_request : Qdrant::Api::SearchGroupsRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchPointGroups200Response) + @conn.request(Qdrant::Api::SearchPointGroups200Response, + method: :POST, + path: "/collections/{collection_name}/points/search/groups".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: search_groups_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Search points matrix distance offsets Compute distance matrix for sampled points with an offset based output format + def search_matrix_offsets(collection_name : String, search_matrix_request : Qdrant::Api::SearchMatrixRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchMatrixOffsets200Response) + @conn.request(Qdrant::Api::SearchMatrixOffsets200Response, + method: :POST, + path: "/collections/{collection_name}/points/search/matrix/offsets".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: search_matrix_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Search points matrix distance pairs Compute distance matrix for sampled points with a pair based output format + def search_matrix_pairs(collection_name : String, search_matrix_request : Qdrant::Api::SearchMatrixRequest? = nil, *, consistency : Qdrant::Api::ReadConsistency? = nil, timeout : Int32? = nil) : Response(Qdrant::Api::SearchMatrixPairs200Response) + @conn.request(Qdrant::Api::SearchMatrixPairs200Response, + method: :POST, + path: "/collections/{collection_name}/points/search/matrix/pairs".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: search_matrix_request, + query: { "consistency" => consistency, "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Update vectors Update specified named vectors on points, keep unspecified vectors intact. + def vectors(collection_name : String, update_vectors : Qdrant::Api::UpdateVectors? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :PUT, + path: "/collections/{collection_name}/points/vectors".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: update_vectors, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete vectors Delete named vectors from the given points. + def vectors_delete(collection_name : String, delete_vectors : Qdrant::Api::DeleteVectors? = nil, *, wait : Bool? = nil, ordering : Qdrant::Api::WriteOrdering? = nil) : Response(Qdrant::Api::CreateFieldIndex200Response) + @conn.request(Qdrant::Api::CreateFieldIndex200Response, + method: :POST, + path: "/collections/{collection_name}/points/vectors/delete".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: delete_vectors, + query: { "wait" => wait, "ordering" => ordering }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/shards.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/shards.cr new file mode 100644 index 000000000000..f9bbd5f8f259 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/shards.cr @@ -0,0 +1,178 @@ +require "json" + +module Qdrant::Api + class Collections::Shards + def initialize(@conn : Connection); end + + # Create shard key + def bulk_update(collection_name : String, create_sharding_key : Qdrant::Api::CreateShardingKey? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/shards".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: create_sharding_key, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Create shard key + def bulk_update_put(collection_name : String, create_sharding_key : Qdrant::Api::CreateShardingKey? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/shards".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: create_sharding_key, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete shard key + def delete(collection_name : String, drop_sharding_key : Qdrant::Api::DropShardingKey? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/shards/delete".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: drop_sharding_key, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete shard key + def delete_post(collection_name : String, drop_sharding_key : Qdrant::Api::DropShardingKey? = nil, *, timeout : Int32? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/shards/delete".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: drop_sharding_key, + query: { "timeout" => timeout }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # List shards snapshots for a collection Get list of snapshots for a shard of a collection + def snapshots(collection_name : String, shard_id : Int32) : Response(Qdrant::Api::ListSnapshots200Response) + @conn.request(Qdrant::Api::ListSnapshots200Response, + method: :GET, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete shard snapshot Delete snapshot of a shard for a collection + def snapshots_delete(collection_name : String, shard_id : Int32, snapshot_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete shard snapshot Delete snapshot of a shard for a collection + def snapshots_delete_1(collection_name : String, shard_id : Int32, snapshot_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # List shards snapshots for a collection Get list of snapshots for a shard of a collection + def snapshots_get(collection_name : String, shard_id : Int32) : Response(Qdrant::Api::ListSnapshots200Response) + @conn.request(Qdrant::Api::ListSnapshots200Response, + method: :GET, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Download collection snapshot Download specified snapshot of a shard from a collection as a file + def snapshots_get_1(collection_name : String, shard_id : Int32, snapshot_name : String) : Response(::File) + @conn.request(::File, + method: :GET, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + accept: %w[application/json application/octet-stream], + auth: %w[api-key bearerAuth]) + end + + # Download collection snapshot Download specified snapshot of a shard from a collection as a file + def snapshots_get_2(collection_name : String, shard_id : Int32, snapshot_name : String) : Response(::File) + @conn.request(::File, + method: :GET, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + accept: %w[application/json application/octet-stream], + auth: %w[api-key bearerAuth]) + end + + # Create shard snapshot Create new snapshot of a shard for a collection + def snapshots_post(collection_name : String, shard_id : Int32, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateSnapshot200Response) + @conn.request(Qdrant::Api::CreateSnapshot200Response, + method: :POST, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Create shard snapshot Create new snapshot of a shard for a collection + def snapshots_post_1(collection_name : String, shard_id : Int32, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateSnapshot200Response) + @conn.request(Qdrant::Api::CreateSnapshot200Response, + method: :POST, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from a snapshot Recover shard of a local collection data from a snapshot. This will overwrite any data, stored in this shard, for the collection. + def snapshots_recover(collection_name : String, shard_id : Int32, shard_snapshot_recover : Qdrant::Api::ShardSnapshotRecover? = nil, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/recover".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + body: shard_snapshot_recover, + query: { "wait" => wait }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from a snapshot Recover shard of a local collection data from a snapshot. This will overwrite any data, stored in this shard, for the collection. + def snapshots_recover_put(collection_name : String, shard_id : Int32, shard_snapshot_recover : Qdrant::Api::ShardSnapshotRecover? = nil, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/recover".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + body: shard_snapshot_recover, + query: { "wait" => wait }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover shard from an uploaded snapshot Recover shard of a local collection from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection shard. + def snapshots_upload(collection_name : String, shard_id : Int32, snapshot : ::File? = nil, *, wait : Bool? = nil, priority : Qdrant::Api::SnapshotPriority? = nil, checksum : String? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/upload".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + query: { "wait" => wait, "priority" => priority, "checksum" => checksum }, + form: Hash(String, Crest::ParamsValue){ "snapshot" => snapshot }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover shard from an uploaded snapshot Recover shard of a local collection from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection shard. + def snapshots_upload_post(collection_name : String, shard_id : Int32, snapshot : ::File? = nil, *, wait : Bool? = nil, priority : Qdrant::Api::SnapshotPriority? = nil, checksum : String? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/shards/{shard_id}/snapshots/upload".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{shard_id}", Qdrant::Api.enc(shard_id)), + query: { "wait" => wait, "priority" => priority, "checksum" => checksum }, + form: Hash(String, Crest::ParamsValue){ "snapshot" => snapshot }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/snapshots.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/snapshots.cr new file mode 100644 index 000000000000..e50302db32a4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/collections/snapshots.cr @@ -0,0 +1,130 @@ +require "json" + +module Qdrant::Api + class Collections::Snapshots + def initialize(@conn : Connection); end + + # Create collection snapshot Create new snapshot for a collection + def create(collection_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateSnapshot200Response) + @conn.request(Qdrant::Api::CreateSnapshot200Response, + method: :POST, + path: "/collections/{collection_name}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Create collection snapshot Create new snapshot for a collection + def create_post(collection_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateSnapshot200Response) + @conn.request(Qdrant::Api::CreateSnapshot200Response, + method: :POST, + path: "/collections/{collection_name}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete collection snapshot Delete snapshot for a collection + def delete(collection_name : String, snapshot_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/collections/{collection_name}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete collection snapshot Delete snapshot for a collection + def delete_delete(collection_name : String, snapshot_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/collections/{collection_name}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Download collection snapshot Download specified snapshot from a collection as a file + def get(collection_name : String, snapshot_name : String) : Response(::File) + @conn.request(::File, + method: :GET, + path: "/collections/{collection_name}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + accept: %w[application/json application/octet-stream], + auth: %w[api-key bearerAuth]) + end + + # Download collection snapshot Download specified snapshot from a collection as a file + def get_get(collection_name : String, snapshot_name : String) : Response(::File) + @conn.request(::File, + method: :GET, + path: "/collections/{collection_name}/snapshots/{snapshot_name}".sub("{collection_name}", Qdrant::Api.enc(collection_name)).sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + accept: %w[application/json application/octet-stream], + auth: %w[api-key bearerAuth]) + end + + # List collection snapshots Get list of snapshots for a collection + def list(collection_name : String) : Response(Qdrant::Api::ListSnapshots200Response) + @conn.request(Qdrant::Api::ListSnapshots200Response, + method: :GET, + path: "/collections/{collection_name}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # List collection snapshots Get list of snapshots for a collection + def list_get(collection_name : String) : Response(Qdrant::Api::ListSnapshots200Response) + @conn.request(Qdrant::Api::ListSnapshots200Response, + method: :GET, + path: "/collections/{collection_name}/snapshots".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from a snapshot Recover local collection data from a snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created. + def recover(collection_name : String, snapshot_recover : Qdrant::Api::SnapshotRecover? = nil, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/snapshots/recover".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: snapshot_recover, + query: { "wait" => wait }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from a snapshot Recover local collection data from a snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created. + def recover_put(collection_name : String, snapshot_recover : Qdrant::Api::SnapshotRecover? = nil, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :PUT, + path: "/collections/{collection_name}/snapshots/recover".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + body: snapshot_recover, + query: { "wait" => wait }, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from an uploaded snapshot Recover local collection data from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created. + def upload(collection_name : String, snapshot : ::File? = nil, *, wait : Bool? = nil, priority : Qdrant::Api::SnapshotPriority? = nil, checksum : String? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/snapshots/upload".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + query: { "wait" => wait, "priority" => priority, "checksum" => checksum }, + form: Hash(String, Crest::ParamsValue){ "snapshot" => snapshot }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Recover from an uploaded snapshot Recover local collection data from an uploaded snapshot. This will overwrite any data, stored on this node, for the collection. If collection does not exist - it will be created. + def upload_post(collection_name : String, snapshot : ::File? = nil, *, wait : Bool? = nil, priority : Qdrant::Api::SnapshotPriority? = nil, checksum : String? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :POST, + path: "/collections/{collection_name}/snapshots/upload".sub("{collection_name}", Qdrant::Api.enc(collection_name)), + query: { "wait" => wait, "priority" => priority, "checksum" => checksum }, + form: Hash(String, Crest::ParamsValue){ "snapshot" => snapshot }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/healthz.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/healthz.cr new file mode 100644 index 000000000000..460c9e53ccf7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/healthz.cr @@ -0,0 +1,18 @@ +require "json" + +module Qdrant::Api + class Healthz + def initialize(@conn : Connection); end + + # Kubernetes healthz endpoint An endpoint for health checking used in Kubernetes. + def list() : Response(String) + @conn.request(String, + method: :GET, + path: "/healthz", + accept: %w[text/plain], + raw: true, + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/issues.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/issues.cr new file mode 100644 index 000000000000..f4a08c8c2f7b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/issues.cr @@ -0,0 +1,26 @@ +require "json" + +module Qdrant::Api + class Issues + def initialize(@conn : Connection); end + + # Clear issues Removes all issues reported so far + def bulk_destroy() : Response(Bool) + @conn.request(Bool, + method: :DELETE, + path: "/issues", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Get issues Get a report of performance issues and configuration suggestions + def list() : Response(JSON::Any) + @conn.request(JSON::Any, + method: :GET, + path: "/issues", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/livez.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/livez.cr new file mode 100644 index 000000000000..dfd49dbeb59f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/livez.cr @@ -0,0 +1,18 @@ +require "json" + +module Qdrant::Api + class Livez + def initialize(@conn : Connection); end + + # Kubernetes livez endpoint An endpoint for health checking used in Kubernetes. + def list() : Response(String) + @conn.request(String, + method: :GET, + path: "/livez", + accept: %w[text/plain], + raw: true, + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/locks.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/locks.cr new file mode 100644 index 000000000000..a61b08051ea1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/locks.cr @@ -0,0 +1,28 @@ +require "json" + +module Qdrant::Api + class Locks + def initialize(@conn : Connection); end + + # Set lock options Set lock options. If write is locked, all write operations and collection creation are forbidden. Returns previous lock options + def create(locks_option : Qdrant::Api::LocksOption? = nil) : Response(Qdrant::Api::GetLocks200Response) + @conn.request(Qdrant::Api::GetLocks200Response, + method: :POST, + path: "/locks", + body: locks_option, + accept: %w[application/json], + content_type: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Get lock options Get lock options. If write is locked, all write operations and collection creation are forbidden + def list() : Response(Qdrant::Api::GetLocks200Response) + @conn.request(Qdrant::Api::GetLocks200Response, + method: :GET, + path: "/locks", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/metrics.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/metrics.cr new file mode 100644 index 000000000000..fffeb52a344d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/metrics.cr @@ -0,0 +1,19 @@ +require "json" + +module Qdrant::Api + class Metrics + def initialize(@conn : Connection); end + + # Collect Prometheus metrics data Collect metrics data including app info, collections info, cluster info and statistics + def list(*, anonymize : Bool? = nil) : Response(String) + @conn.request(String, + method: :GET, + path: "/metrics", + query: { "anonymize" => anonymize }, + accept: %w[text/plain], + raw: true, + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/readyz.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/readyz.cr new file mode 100644 index 000000000000..c1b4d0c32e95 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/readyz.cr @@ -0,0 +1,18 @@ +require "json" + +module Qdrant::Api + class Readyz + def initialize(@conn : Connection); end + + # Kubernetes readyz endpoint An endpoint for health checking used in Kubernetes. + def list() : Response(String) + @conn.request(String, + method: :GET, + path: "/readyz", + accept: %w[text/plain], + raw: true, + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/root.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/root.cr new file mode 100644 index 000000000000..32f0c94b133d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/root.cr @@ -0,0 +1,17 @@ +require "json" + +module Qdrant::Api + class Root + def initialize(@conn : Connection); end + + # Returns information about the running Qdrant instance Returns information about the running Qdrant instance like version and commit id + def list() : Response(Qdrant::Api::VersionInfo) + @conn.request(Qdrant::Api::VersionInfo, + method: :GET, + path: "/", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/snapshots.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/snapshots.cr new file mode 100644 index 000000000000..470f002c8e21 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/snapshots.cr @@ -0,0 +1,46 @@ +require "json" + +module Qdrant::Api + class Snapshots + def initialize(@conn : Connection); end + + # Create storage snapshot Create new snapshot of the whole storage + def create(*, wait : Bool? = nil) : Response(Qdrant::Api::CreateSnapshot200Response) + @conn.request(Qdrant::Api::CreateSnapshot200Response, + method: :POST, + path: "/snapshots", + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Delete storage snapshot Delete snapshot of the whole storage + def delete(snapshot_name : String, *, wait : Bool? = nil) : Response(Qdrant::Api::CreateShardKey200Response) + @conn.request(Qdrant::Api::CreateShardKey200Response, + method: :DELETE, + path: "/snapshots/{snapshot_name}".sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + query: { "wait" => wait }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + + # Download storage snapshot Download specified snapshot of the whole storage as a file + def get(snapshot_name : String) : Response(::File) + @conn.request(::File, + method: :GET, + path: "/snapshots/{snapshot_name}".sub("{snapshot_name}", Qdrant::Api.enc(snapshot_name)), + accept: %w[application/json application/octet-stream], + auth: %w[api-key bearerAuth]) + end + + # List of storage snapshots Get list of snapshots of the whole storage + def list() : Response(Qdrant::Api::ListSnapshots200Response) + @conn.request(Qdrant::Api::ListSnapshots200Response, + method: :GET, + path: "/snapshots", + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api/telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api/telemetry.cr new file mode 100644 index 000000000000..d39edfbee81e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api/telemetry.cr @@ -0,0 +1,18 @@ +require "json" + +module Qdrant::Api + class Telemetry + def initialize(@conn : Connection); end + + # Collect telemetry data Collect telemetry data including app info, system info, collections info, cluster info, configs and statistics + def list(*, anonymize : Bool? = nil) : Response(Qdrant::Api::Telemetry200Response) + @conn.request(Qdrant::Api::Telemetry200Response, + method: :GET, + path: "/telemetry", + query: { "anonymize" => anonymize }, + accept: %w[application/json], + auth: %w[api-key bearerAuth]) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/api_error.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/api_error.cr new file mode 100644 index 000000000000..c3ade0864c85 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/api_error.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ApiError < Exception + getter code : Int32? + getter response_headers : HTTP::Headers? + + # Usage examples: + # ApiError.new + # ApiError.new(message: "message") + # ApiError.new(code: 500, response_headers: HTTP::Headers.new, message: "") + # ApiError.new(code: 404, message: "Not Found") + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, message : String?) + super(message) + end + + def initialize(@code : Int32?, @response_headers : HTTP::Headers?, body : String) + msg = body.empty? ? "the server returns an error but the HTTP response body is empty." : body + super(msg) + @message = msg + end + + def initialize(message : String) + super(message) + @code = nil + @response_headers = nil + end + + def initialize + super(nil) + @code = nil + @response_headers = nil + end + + # Override to_s to display a friendly error message + def to_s(io : IO) : Nil + io << "\nHTTP status code: #{code}" if @code + io << "\nResponse headers: #{response_headers}" if @response_headers + if message.nil? || message.try &.empty? + io << "\nError message: the server returns an error but the HTTP response body is empty." + else + io << "\nResponse body: #{message}" + end + end + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/client.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/client.cr new file mode 100644 index 000000000000..7bed74904803 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/client.cr @@ -0,0 +1,161 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Client + getter connection : Connection + + def initialize(*, host : String, token : String? = nil, scheme : String = "https") + cfg = Configuration.new + cfg.host = host + cfg.scheme = scheme + cfg.access_token = token if token + @connection = Connection.new(cfg) + end + + def initialize(@connection : Connection); end + def aliases : Aliases + @aliases ||= Aliases.new(@connection) + end + + @aliases : Aliases? + def cluster : Cluster + @cluster ||= Cluster.new(@connection) + end + + @cluster : Cluster? + def collections : Collections + @collections ||= Collections.new(@connection) + end + + @collections : Collections? + def healthz : Healthz + @healthz ||= Healthz.new(@connection) + end + + @healthz : Healthz? + def issues : Issues + @issues ||= Issues.new(@connection) + end + + @issues : Issues? + def livez : Livez + @livez ||= Livez.new(@connection) + end + + @livez : Livez? + def locks : Locks + @locks ||= Locks.new(@connection) + end + + @locks : Locks? + def metrics : Metrics + @metrics ||= Metrics.new(@connection) + end + + @metrics : Metrics? + def readyz : Readyz + @readyz ||= Readyz.new(@connection) + end + + @readyz : Readyz? + def root : Root + @root ||= Root.new(@connection) + end + + @root : Root? + def snapshots : Snapshots + @snapshots ||= Snapshots.new(@connection) + end + + @snapshots : Snapshots? + def telemetry : Telemetry + @telemetry ||= Telemetry.new(@connection) + end + + @telemetry : Telemetry? + end + + class Aliases + def initialize(@conn : Connection); end + end + + class Cluster + def initialize(@conn : Connection); end + + def peer : Cluster::Peer + @peer ||= Cluster::Peer.new(@conn) + end + + @peer : Cluster::Peer? + end + + class Collections + def initialize(@conn : Connection); end + + def index : Collections::Index + @index ||= Collections::Index.new(@conn) + end + + @index : Collections::Index? + + def points : Collections::Points + @points ||= Collections::Points.new(@conn) + end + + @points : Collections::Points? + + def shards : Collections::Shards + @shards ||= Collections::Shards.new(@conn) + end + + @shards : Collections::Shards? + + def snapshots : Collections::Snapshots + @snapshots ||= Collections::Snapshots.new(@conn) + end + + @snapshots : Collections::Snapshots? + end + + class Healthz + def initialize(@conn : Connection); end + end + + class Issues + def initialize(@conn : Connection); end + end + + class Livez + def initialize(@conn : Connection); end + end + + class Locks + def initialize(@conn : Connection); end + end + + class Metrics + def initialize(@conn : Connection); end + end + + class Readyz + def initialize(@conn : Connection); end + end + + class Root + def initialize(@conn : Connection); end + end + + class Snapshots + def initialize(@conn : Connection); end + end + + class Telemetry + def initialize(@conn : Connection); end + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/configuration.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/configuration.cr new file mode 100644 index 000000000000..3da810411365 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/configuration.cr @@ -0,0 +1,232 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +require "base64" +require "crest" +require "http" +require "log" + +module Qdrant::Api + class Configuration + # Defines url scheme + property scheme : String + + # Defines url host + property host : String + + # Defines url base path + property base_path : String + + # Defines API keys used with API Key authentications. + # + # @return [Hash] key: parameter name, value: parameter value (API key) + # + # @example parameter name is "api_key", API key is "xxx" (e.g. "api_key=xxx" in query string) + # config.api_key[:api_key] = "xxx" + property api_key : Hash(Symbol, String) + + # Defines API key prefixes used with API Key authentications. + # + # @return [Hash] key: parameter name, value: API key prefix + # + # @example parameter name is "Authorization", API key prefix is "Token" (e.g. "Authorization: Token xxx" in headers) + # config.api_key_prefix[:api_key] = "Token" + property api_key_prefix : Hash(Symbol, String) + + # Defines the username used with HTTP basic authentication. + # + # @return [String] + property username : String? + + # Defines the password used with HTTP basic authentication. + # + # @return [String] + property password : String? + + # Defines the access token (Bearer) used with OAuth2. + property access_token : String? + + # Set this to enable/disable debugging. When enabled (set to true), HTTP request/response + # details will be logged with `logger.debug` (see the `logger` attribute). + # Default to false. + # + # @return [true, false] + property debugging : Bool + + # Enable the underlying HTTP client's (crest) request/response logging. Off by default, so the + # shard produces no log output unless a consumer opts in (e.g. a higher-level client wrapper + # can expose `config.logging = true`). Independent of `debugging`. + property logging : Bool + + # Logger used by crest when `logging` is enabled. Defaults to `Crest::CommonLogger`; assign a + # custom `Crest::Logger` to control formatting/output. + property logger : Crest::Logger + + # Defines the temporary folder to store downloaded files + # (for API endpoints that have file response). + # Default to use `Tempfile`. + # + # @return [String] + property temp_folder_path : String? + + # The time limit for HTTP request in seconds. + # Default to 0 (never times out). + property timeout : Int32 + + # Set this to false to skip client side validation in the operation. + # Default to true. + # @return [true, false] + property client_side_validation : Bool + + ### TLS/SSL setting + # Set this to false to skip verifying SSL certificate when calling API from https server. + # Default to true. + # + # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks. + # + # @return [true, false] + #TODO attr_accessor :verify_ssl + + ### TLS/SSL setting + # Set this to false to skip verifying SSL host name + # Default to true. + # + # @note Do NOT set it to false in production code, otherwise you would face multiple types of cryptographic attacks. + # + # @return [true, false] + # TODO attr_accessor :verify_ssl_host + + ### TLS/SSL setting + # Set this to customize the certificate file to verify the peer. + # + # @return [String] the path to the certificate file + # + # @see The `cainfo` option of Typhoeus, `--cert` option of libcurl. Related source code: + # https://github.com/typhoeus/typhoeus/blob/master/lib/typhoeus/easy_factory.rb#L145 + # TODO attr_accessor :ssl_ca_cert + + ### TLS/SSL setting + # Client certificate file (for client certificate) + # TODO attr_accessor :cert_file + + ### TLS/SSL setting + # Client private key file (for client certificate) + # TODO attr_accessor :key_file + + # Set this to customize parameters encoding of array parameter with multi collectionFormat. + # Default to Nil. + # + # @see The params_encoding option of Ethon. Related source code: + # https://github.com/typhoeus/ethon/blob/master/lib/ethon/easy/queryable.rb#L96 + #property params_encoding : String? + + # Default headers sent with every request. + property default_headers : HTTP::Headers = HTTP::Headers.new + + # Params encoder used to encode array query parameters. + # Default: Crest::NestedParamsEncoder (encodes arrays as key=a&key=b). + property params_encoder : Crest::ParamsEncoder.class = Crest::NestedParamsEncoder + + # Create a new `Configuration`. + def initialize + @scheme = "http" + @host = "localhost:6333" + @base_path = "" + @api_key = {} of Symbol => String + @api_key_prefix = {} of Symbol => String + @timeout = 0 + @client_side_validation = true + #@params_encoding = nil + #@cert_file = nil + #@key_file = nil + @debugging = false + @logging = false + @logger = Crest::CommonLogger.new + @username = nil + @password = nil + @access_token = nil + @temp_folder_path = nil + end + + # Create a new `Configuration` with block. + # + # ``` + # config = Qdrant::Api::Configuration.new do |config| + # config.username = "xxx" + # config.password = "xxx" + # end + # ``` + def initialize + initialize + yield self + end + + # The default Configuration object. + def self.default + @@default ||= Configuration.new + end + + # Configure object with block. + def configure + yield self + end + + def scheme=(scheme) + # remove :// from scheme + @scheme = scheme.sub(/:\/\//, "") + end + + def host=(host) + # remove http(s):// and anything after a slash + @host = host.sub(/https?:\/\//, "").split("/").first + end + + def base_path=(base_path) + # Add leading and trailing slashes to base_path + @base_path = "/#{base_path}".gsub(/\/+/, "/") + @base_path = "" if @base_path == "/" + end + + # Returns the base URL for requests. + def base_url + "#{scheme}://#{[host, base_path].join("/").gsub(/\/+/, "/")}".sub(/\/+\z/, "") + end + + # Gets API key (with prefix if set). + # @param [String] param_name the parameter name of API key auth + def api_key_with_prefix(param_name) + if prefix = @api_key_prefix[param_name]? + "#{prefix} #{@api_key[param_name]}" + else + @api_key[param_name]? || "" + end + end + + # Gets Basic Auth token string + def basic_auth_token + "Basic " + Base64.strict_encode("#{username}:#{password}") + end + + # Applies authentication credentials to request headers and query params. + # Called by Connection#request for every outgoing request. + def apply_auth!(headers : HTTP::Headers, params : Hash(String, String | Array(String)), auth_names : Array(String)) : Nil + if auth_names.includes?("api-key") + value = api_key_with_prefix(:"api-key") + unless value.empty? + headers["api-key"] = value + end + end + if auth_names.includes?("bearerAuth") + if token = @access_token + headers["Authorization"] = "Bearer #{token}" + end + end + end + + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/connection.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/connection.cr new file mode 100644 index 000000000000..530bc9688e68 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/connection.cr @@ -0,0 +1,96 @@ +require "crest" +require "json" +require "log" +require "uri" + +module Qdrant::Api + Log = ::Log.for("qdrant-api") + + def self.enc(value) : String + URI.encode_path_segment(value.to_s) + end + + class Connection + getter config : Configuration + + def initialize(@config : Configuration); end + + def request(klass : T.class, *, method : Symbol, path : String, + body = nil, query : Hash(String, _)? = nil, + form : Hash(String, Crest::ParamsValue)? = nil, + header : Hash(String, String?)? = nil, + accept : Array(String) = %w[application/json], + content_type : Array(String) = %w[application/json], + auth : Array(String) = %w[], + raw : Bool = false) : Response(T) forall T + Log.debug { "#{method} #{path}" } if config.debugging + + headers = config.default_headers.dup + header.try &.each { |k, v| headers[k] = v unless v.nil? } + # Prefer a JSON media type when the operation offers one: the body is always + # JSON-decoded (T.from_json), so requesting application/xml first (as some specs + # list it) would yield a response we can't parse. + headers["Accept"] = (accept.find(&.includes?("json")) || accept.first) unless accept.empty? + q = {} of String => String | Array(String) + query.try &.each do |k, v| + next if v.nil? + case v + when Array then q[k] = v.map(&.to_s) + else q[k] = v.to_s + end + end + config.apply_auth!(headers, q, auth) + + # Determine what to pass as the form/body argument to Crest + # If there's a JSON body, serialize it and pass as raw string form + body_str : String? = body.nil? ? nil : body.to_json + headers["Content-Type"] = content_type.first if body_str && !content_type.empty? + + crest_form : Hash(String, Crest::ParamsValue) | String | Nil = + if body_str + body_str + elsif form && !form.empty? + form + else + nil + end + + headers_hash = {} of String => String | Array(String) + headers.each { |k, vs| headers_hash[k] = vs.size == 1 ? vs.first : vs } + + resp = Crest::Request.execute( + method, + config.base_url + path, + crest_form, + headers: headers_hash, + params: q, + params_encoder: config.params_encoder, + logging: config.logging, + logger: config.logger, + handle_errors: false) + + resp_headers = to_http_headers(resp.headers) + unless 200 <= resp.status_code < 300 + raise ApiError.new(resp.status_code, resp_headers, resp.body) + end + + # `raw` (set by operations whose response isn't JSON, e.g. text/plain or binary) returns the + # body untouched; a String return type is otherwise JSON-decoded (unquoted). + value = {% if T == Nil %} nil {% elsif T == String %} (raw ? resp.body : String.from_json(resp.body)) {% else %} T.from_json(resp.body) {% end %} + Response(T).new(value, resp.status_code, resp_headers) + end + + # Crest returns headers as a Hash whose values may be a String or an Array(String); + # convert to the idiomatic HTTP::Headers used by Response/ApiError. + private def to_http_headers(raw) : HTTP::Headers + headers = HTTP::Headers.new + raw.each do |key, value| + case value + when Array then value.each { |v| headers.add(key, v) } + else headers[key] = value.to_s + end + end + headers + end + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_shard_transfer.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_shard_transfer.cr new file mode 100644 index 000000000000..1d4bab5661d3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_shard_transfer.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class AbortShardTransfer + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "to_peer_id", emit_null: false)] + property to_peer_id : Int32 + + @[JSON::Field(key: "from_peer_id", emit_null: false)] + property from_peer_id : Int32 + + validates(shard_id, Int32, false, minimum: 0) + validates(to_peer_id, Int32, false, minimum: 0) + validates(from_peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @to_peer_id : Int32, @from_peer_id : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = to_peer_id_validation_error(@to_peer_id)) + invalid_properties.push(msg) + end + if (msg = from_peer_id_validation_error(@from_peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, to_peer_id, from_peer_id) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_transfer_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_transfer_operation.cr new file mode 100644 index 000000000000..ed85218ad027 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/abort_transfer_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class AbortTransferOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "abort_transfer", emit_null: false)] + property abort_transfer : AbortShardTransfer + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@abort_transfer : AbortShardTransfer) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(abort_transfer) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_description.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_description.cr new file mode 100644 index 000000000000..05f499d94d65 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_description.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class AliasDescription + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "alias_name", emit_null: false)] + property alias_name : String + + @[JSON::Field(key: "collection_name", emit_null: false)] + property collection_name : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@alias_name : String, @collection_name : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(alias_name, collection_name) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_operations.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_operations.cr new file mode 100644 index 000000000000..d1db1f465e1e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/alias_operations.cr @@ -0,0 +1,81 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Group of all the possible operations related to collection aliases + # AliasOperations (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class AliasOperations + getter value + + def initialize(@value : CreateAliasOperation) + end + def initialize(@value : DeleteAliasOperation) + end + def initialize(@value : RenameAliasOperation) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + CreateAliasOperation, DeleteAliasOperation, RenameAliasOperation + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(CreateAliasOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteAliasOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(RenameAliasOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in AliasOperations (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(CreateAliasOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteAliasOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(RenameAliasOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in AliasOperations (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/any_variants.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/any_variants.cr new file mode 100644 index 000000000000..b84464916d19 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/any_variants.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # AnyVariants (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class AnyVariants + getter value + + def initialize(@value : Set(Int64)) + end + def initialize(@value : Set(String)) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Set(Int64), Set(String) + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Set(Int64).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Set(String).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in AnyVariants (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Set(Int64).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Set(String).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in AnyVariants (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_build_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_build_telemetry.cr new file mode 100644 index 000000000000..cdc75a4c5014 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_build_telemetry.cr @@ -0,0 +1,61 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class AppBuildTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + @[JSON::Field(key: "version", emit_null: false)] + property version : String + + @[JSON::Field(key: "startup", emit_null: false)] + property startup : Time + + # Optional properties + @[JSON::Field(key: "features", emit_null: false)] + property features : AppFeaturesTelemetry? + + @[JSON::Field(key: "system", emit_null: false)] + property system : RunningEnvironmentTelemetry? + + @[JSON::Field(key: "jwt_rbac", emit_null: false)] + property jwt_rbac : Bool? + + @[JSON::Field(key: "hide_jwt_dashboard", emit_null: false)] + property hide_jwt_dashboard : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String, @version : String, @startup : Time, @features : AppFeaturesTelemetry? = nil, @system : RunningEnvironmentTelemetry? = nil, @jwt_rbac : Bool? = nil, @hide_jwt_dashboard : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, version, features, system, jwt_rbac, hide_jwt_dashboard, startup) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_features_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_features_telemetry.cr new file mode 100644 index 000000000000..e83284519a4e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/app_features_telemetry.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class AppFeaturesTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "debug", emit_null: false)] + property debug : Bool + + @[JSON::Field(key: "web_feature", emit_null: false)] + property web_feature : Bool + + @[JSON::Field(key: "service_debug_feature", emit_null: false)] + property service_debug_feature : Bool + + @[JSON::Field(key: "recovery_mode", emit_null: false)] + property recovery_mode : Bool + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@debug : Bool, @web_feature : Bool, @service_debug_feature : Bool, @recovery_mode : Bool) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(debug, web_feature, service_debug_feature, recovery_mode) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch.cr new file mode 100644 index 000000000000..b8309149c7f6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Batch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "ids", emit_null: false)] + property ids : Array(ExtendedPointId) + + @[JSON::Field(key: "vectors", emit_null: false)] + property vectors : BatchVectorStruct + + # Optional properties + @[JSON::Field(key: "payloads", emit_null: false)] + property payloads : Array(BatchPayloadsInner)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@ids : Array(ExtendedPointId), @vectors : BatchVectorStruct, @payloads : Array(BatchPayloadsInner)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(ids, vectors, payloads) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_payloads_inner.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_payloads_inner.cr new file mode 100644 index 000000000000..6e3bcb40a482 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_payloads_inner.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # BatchPayloadsInner (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class BatchPayloadsInner + getter value + + def initialize(@value : Hash(String, JSON::Any)) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Hash(String, JSON::Any) + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Hash(String, JSON::Any).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in BatchPayloadsInner (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Hash(String, JSON::Any).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in BatchPayloadsInner (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_update200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_update200_response.cr new file mode 100644 index 000000000000..47324b676552 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_update200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class BatchUpdate200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(UpdateResult)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(UpdateResult)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_vector_struct.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_vector_struct.cr new file mode 100644 index 000000000000..3eed8338a066 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/batch_vector_struct.cr @@ -0,0 +1,90 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # BatchVectorStruct (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class BatchVectorStruct + getter value + + def initialize(@value : Array(Array(Array(Float32)))) + end + def initialize(@value : Array(Array(Float32))) + end + def initialize(@value : Array(Document)) + end + def initialize(@value : Hash(String, Array(Vector))) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Array(Array(Float32))), Array(Array(Float32)), Array(Document), Hash(String, Array(Vector)) + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Array(Array(Float32))).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Array(Float32)).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Document).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Hash(String, Array(Vector)).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in BatchVectorStruct (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Array(Array(Float32))).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Array(Float32)).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Document).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Hash(String, Array(Vector)).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in BatchVectorStruct (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization.cr new file mode 100644 index 000000000000..dcb8ccce1de6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class BinaryQuantization + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "binary", emit_null: false)] + property binary : BinaryQuantizationConfig + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@binary : BinaryQuantizationConfig) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(binary) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization_config.cr new file mode 100644 index 000000000000..0462bb82a6d2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/binary_quantization_config.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class BinaryQuantizationConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "always_ram", emit_null: false)] + property always_ram : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@always_ram : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(always_ram) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_params.cr new file mode 100644 index 000000000000..cb122ca39eae --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_params.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class BoolIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : BoolIndexType + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : BoolIndexType) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_type.cr new file mode 100644 index 000000000000..d2682d9e382c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/bool_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # BoolIndexType (OpenAPI enum). Allowed values: "bool". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias BoolIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/change_aliases_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/change_aliases_operation.cr new file mode 100644 index 000000000000..ebe8f67c5f95 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/change_aliases_operation.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Operation for performing changes of collection aliases. Alias changes are atomic, meaning that no collection modifications can happen between alias operations. + class ChangeAliasesOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "actions", emit_null: false)] + property actions : Array(AliasOperations) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@actions : Array(AliasOperations)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(actions) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/clear_payload_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/clear_payload_operation.cr new file mode 100644 index 000000000000..d89faef293c6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/clear_payload_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClearPayloadOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "clear_payload", emit_null: false)] + property clear_payload : PointsSelector + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@clear_payload : PointsSelector) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(clear_payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_config_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_config_telemetry.cr new file mode 100644 index 000000000000..f30b96a36fd7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_config_telemetry.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClusterConfigTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "grpc_timeout_ms", emit_null: false)] + property grpc_timeout_ms : Int32 + + @[JSON::Field(key: "p2p", emit_null: false)] + property p2p : P2pConfigTelemetry + + @[JSON::Field(key: "consensus", emit_null: false)] + property consensus : ConsensusConfigTelemetry + + validates(grpc_timeout_ms, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@grpc_timeout_ms : Int32, @p2p : P2pConfigTelemetry, @consensus : ConsensusConfigTelemetry) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = grpc_timeout_ms_validation_error(@grpc_timeout_ms)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(grpc_timeout_ms, p2p, consensus) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_operations.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_operations.cr new file mode 100644 index 000000000000..c4f2dac58c3d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_operations.cr @@ -0,0 +1,120 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ClusterOperations (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ClusterOperations + getter value + + def initialize(@value : AbortTransferOperation) + end + def initialize(@value : CreateShardingKeyOperation) + end + def initialize(@value : DropReplicaOperation) + end + def initialize(@value : DropShardingKeyOperation) + end + def initialize(@value : MoveShardOperation) + end + def initialize(@value : ReplicateShardOperation) + end + def initialize(@value : RestartTransferOperation) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + AbortTransferOperation, CreateShardingKeyOperation, DropReplicaOperation, DropShardingKeyOperation, MoveShardOperation, ReplicateShardOperation, RestartTransferOperation + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(AbortTransferOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(CreateShardingKeyOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DropReplicaOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DropShardingKeyOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(MoveShardOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ReplicateShardOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(RestartTransferOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ClusterOperations (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(AbortTransferOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(CreateShardingKeyOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DropReplicaOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DropShardingKeyOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(MoveShardOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ReplicateShardOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(RestartTransferOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ClusterOperations (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status.cr new file mode 100644 index 000000000000..8411a0ec6b2d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Information about current cluster status and structure + # ClusterStatus (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class ClusterStatus + getter value + + def initialize(@value : ClusterStatusOneOf) + end + def initialize(@value : ClusterStatusOneOf1) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + ClusterStatusOneOf, ClusterStatusOneOf1 + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(ClusterStatusOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ClusterStatusOneOf1.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ClusterStatus (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(ClusterStatusOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ClusterStatusOneOf1.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ClusterStatus (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status200_response.cr new file mode 100644 index 000000000000..e99782b542b1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClusterStatus200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : ClusterStatus? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : ClusterStatus? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of.cr new file mode 100644 index 000000000000..bb33e8009661 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClusterStatusOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "status", emit_null: false)] + property status : String + + validates(status, String, false, enum: ["disabled"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@status : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = status_validation_error(@status)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(status) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of1.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of1.cr new file mode 100644 index 000000000000..12a6dc5888f8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_one_of1.cr @@ -0,0 +1,69 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Description of enabled cluster + class ClusterStatusOneOf1 + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "status", emit_null: false)] + property status : String + + # ID of this peer + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32 + + # Peers composition of the cluster with main information + @[JSON::Field(key: "peers", emit_null: false)] + property peers : Hash(String, PeerInfo) + + @[JSON::Field(key: "raft_info", emit_null: false)] + property raft_info : RaftInfo + + @[JSON::Field(key: "consensus_thread_status", emit_null: false)] + property consensus_thread_status : ConsensusThreadStatus + + # Consequent failures of message send operations in consensus by peer address. On the first success to send to that peer - entry is removed from this hashmap. + @[JSON::Field(key: "message_send_failures", emit_null: false)] + property message_send_failures : Hash(String, MessageSendErrors) + + validates(status, String, false, enum: ["enabled"]) + validates(peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@status : String, @peer_id : Int32, @peers : Hash(String, PeerInfo), @raft_info : RaftInfo, @consensus_thread_status : ConsensusThreadStatus, @message_send_failures : Hash(String, MessageSendErrors)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = status_validation_error(@status)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(status, peer_id, peers, raft_info, consensus_thread_status, message_send_failures) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_telemetry.cr new file mode 100644 index 000000000000..4a09780a394b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_status_telemetry.cr @@ -0,0 +1,84 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClusterStatusTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "number_of_peers", emit_null: false)] + property number_of_peers : Int32 + + @[JSON::Field(key: "term", emit_null: false)] + property term : Int32 + + @[JSON::Field(key: "commit", emit_null: false)] + property commit : Int32 + + @[JSON::Field(key: "pending_operations", emit_null: false)] + property pending_operations : Int32 + + @[JSON::Field(key: "is_voter", emit_null: false)] + property is_voter : Bool + + @[JSON::Field(key: "consensus_thread_status", emit_null: false)] + property consensus_thread_status : ConsensusThreadStatus + + # Optional properties + @[JSON::Field(key: "role", emit_null: false)] + property role : StateRole? + + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32? + + validates(number_of_peers, Int32, false, minimum: 0) + validates(term, Int32, false, minimum: 0) + validates(commit, Int32, false, minimum: 0) + validates(pending_operations, Int32, false, minimum: 0) + validates(peer_id, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@number_of_peers : Int32, @term : Int32, @commit : Int32, @pending_operations : Int32, @is_voter : Bool, @consensus_thread_status : ConsensusThreadStatus, @role : StateRole? = nil, @peer_id : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = number_of_peers_validation_error(@number_of_peers)) + invalid_properties.push(msg) + end + if (msg = term_validation_error(@term)) + invalid_properties.push(msg) + end + if (msg = commit_validation_error(@commit)) + invalid_properties.push(msg) + end + if (msg = pending_operations_validation_error(@pending_operations)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(number_of_peers, term, commit, pending_operations, role, is_voter, peer_id, consensus_thread_status) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_telemetry.cr new file mode 100644 index 000000000000..6cb22addd13b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/cluster_telemetry.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ClusterTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "enabled", emit_null: false)] + property enabled : Bool + + # Optional properties + @[JSON::Field(key: "status", emit_null: false)] + property status : ClusterStatusTelemetry? + + @[JSON::Field(key: "config", emit_null: false)] + property config : ClusterConfigTelemetry? + + @[JSON::Field(key: "peers", emit_null: false)] + property peers : Hash(String, PeerInfo)? + + @[JSON::Field(key: "metadata", emit_null: false)] + property metadata : Hash(String, JSON::Any)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@enabled : Bool, @status : ClusterStatusTelemetry? = nil, @config : ClusterConfigTelemetry? = nil, @peers : Hash(String, PeerInfo)? = nil, @metadata : Hash(String, JSON::Any)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(enabled, status, config, peers, metadata) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info.cr new file mode 100644 index 000000000000..0cb89f13453f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info.cr @@ -0,0 +1,73 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Current clustering distribution for the collection + class CollectionClusterInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # ID of this peer + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32 + + # Total number of shards + @[JSON::Field(key: "shard_count", emit_null: false)] + property shard_count : Int32 + + # Local shards + @[JSON::Field(key: "local_shards", emit_null: false)] + property local_shards : Array(LocalShardInfo) + + # Remote shards + @[JSON::Field(key: "remote_shards", emit_null: false)] + property remote_shards : Array(RemoteShardInfo) + + # Shard transfers + @[JSON::Field(key: "shard_transfers", emit_null: false)] + property shard_transfers : Array(ShardTransferInfo) + + # Optional properties + # Resharding operations + @[JSON::Field(key: "resharding_operations", emit_null: false)] + property resharding_operations : Array(ReshardingInfo)? + + validates(peer_id, Int32, false, minimum: 0) + validates(shard_count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@peer_id : Int32, @shard_count : Int32, @local_shards : Array(LocalShardInfo), @remote_shards : Array(RemoteShardInfo), @shard_transfers : Array(ShardTransferInfo), @resharding_operations : Array(ReshardingInfo)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + if (msg = shard_count_validation_error(@shard_count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(peer_id, shard_count, local_shards, remote_shards, shard_transfers, resharding_operations) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info200_response.cr new file mode 100644 index 000000000000..ec3b22e9694b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_cluster_info200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionClusterInfo200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CollectionClusterInfo? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CollectionClusterInfo? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_config.cr new file mode 100644 index 000000000000..862fd1c0f9ca --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_config.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "params", emit_null: false)] + property params : CollectionParams + + @[JSON::Field(key: "hnsw_config", emit_null: false)] + property hnsw_config : HnswConfig + + @[JSON::Field(key: "optimizer_config", emit_null: false)] + property optimizer_config : OptimizersConfig + + @[JSON::Field(key: "wal_config", emit_null: false)] + property wal_config : WalConfig + + # Optional properties + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfig? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@params : CollectionParams, @hnsw_config : HnswConfig, @optimizer_config : OptimizersConfig, @wal_config : WalConfig, @quantization_config : QuantizationConfig? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(params, hnsw_config, optimizer_config, wal_config, quantization_config) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_description.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_description.cr new file mode 100644 index 000000000000..c5e6f38e9854 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_description.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionDescription + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_existence.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_existence.cr new file mode 100644 index 000000000000..acb353a139c4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_existence.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # State of existence of a collection, true = exists, false = does not exist + class CollectionExistence + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "exists", emit_null: false)] + property exists : Bool + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@exists : Bool) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(exists) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_exists200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_exists200_response.cr new file mode 100644 index 000000000000..c148c30db764 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_exists200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionExists200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CollectionExistence? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CollectionExistence? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_info.cr new file mode 100644 index 000000000000..5bdf4a04e9cc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_info.cr @@ -0,0 +1,86 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Current statistics and configuration of the collection + class CollectionInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "status", emit_null: false)] + property status : CollectionStatus + + @[JSON::Field(key: "optimizer_status", emit_null: false)] + property optimizer_status : OptimizersStatus + + # Number of segments in collection. Each segment has independent vector as payload indexes + @[JSON::Field(key: "segments_count", emit_null: false)] + property segments_count : Int32 + + @[JSON::Field(key: "config", emit_null: false)] + property config : CollectionConfig + + # Types of stored payload + @[JSON::Field(key: "payload_schema", emit_null: false)] + property payload_schema : Hash(String, PayloadIndexInfo) + + # Optional properties + # DEPRECATED: Approximate number of vectors in collection. All vectors in collection are available for querying. Calculated as `points_count x vectors_per_point`. Where `vectors_per_point` is a number of named vectors in schema. + @[JSON::Field(key: "vectors_count", emit_null: false)] + property vectors_count : Int32? + + # Approximate number of indexed vectors in the collection. Indexed vectors in large segments are faster to query, as it is stored in a specialized vector index. + @[JSON::Field(key: "indexed_vectors_count", emit_null: false)] + property indexed_vectors_count : Int32? + + # Approximate number of points (vectors + payloads) in collection. Each point could be accessed by unique id. + @[JSON::Field(key: "points_count", emit_null: false)] + property points_count : Int32? + + validates(vectors_count, Int32, true, minimum: 0) + validates(indexed_vectors_count, Int32, true, minimum: 0) + validates(points_count, Int32, true, minimum: 0) + validates(segments_count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@status : CollectionStatus, @optimizer_status : OptimizersStatus, @segments_count : Int32, @config : CollectionConfig, @payload_schema : Hash(String, PayloadIndexInfo), @vectors_count : Int32? = nil, @indexed_vectors_count : Int32? = nil, @points_count : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = vectors_count_validation_error(@vectors_count)) + invalid_properties.push(msg) + end + if (msg = indexed_vectors_count_validation_error(@indexed_vectors_count)) + invalid_properties.push(msg) + end + if (msg = points_count_validation_error(@points_count)) + invalid_properties.push(msg) + end + if (msg = segments_count_validation_error(@segments_count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(status, optimizer_status, vectors_count, indexed_vectors_count, points_count, segments_count, config, payload_schema) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params.cr new file mode 100644 index 000000000000..35f35a68ec82 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params.cr @@ -0,0 +1,86 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "vectors", emit_null: false)] + property vectors : VectorsConfig? + + # Number of shards the collection has + @[JSON::Field(key: "shard_number", emit_null: false)] + property shard_number : Int32? = 1 + + # Sharding method Default is Auto - points are distributed across all available shards Custom - points are distributed across shards according to shard key + @[JSON::Field(key: "sharding_method", emit_null: false)] + property sharding_method : ShardingMethod? + + # Number of replicas for each shard + @[JSON::Field(key: "replication_factor", emit_null: false)] + property replication_factor : Int32? = 1 + + # Defines how many replicas should apply the operation for us to consider it successful. Increasing this number will make the collection more resilient to inconsistencies, but will also make it fail if not enough replicas are available. Does not have any performance impact. + @[JSON::Field(key: "write_consistency_factor", emit_null: false)] + property write_consistency_factor : Int32? = 1 + + # Defines how many additional replicas should be processing read request at the same time. Default value is Auto, which means that fan-out will be determined automatically based on the busyness of the local replica. Having more than 0 might be useful to smooth latency spikes of individual nodes. + @[JSON::Field(key: "read_fan_out_factor", emit_null: false)] + property read_fan_out_factor : Int32? + + # If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM. + @[JSON::Field(key: "on_disk_payload", emit_null: false)] + property on_disk_payload : Bool? = false + + # Configuration of the sparse vector storage + @[JSON::Field(key: "sparse_vectors", emit_null: false)] + property sparse_vectors : Hash(String, SparseVectorParams)? + + validates(shard_number, Int32, true, minimum: 1) + validates(replication_factor, Int32, true, minimum: 1) + validates(write_consistency_factor, Int32, true, minimum: 1) + validates(read_fan_out_factor, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vectors : VectorsConfig? = nil, @shard_number : Int32? = 1, @sharding_method : ShardingMethod? = nil, @replication_factor : Int32? = 1, @write_consistency_factor : Int32? = 1, @read_fan_out_factor : Int32? = nil, @on_disk_payload : Bool? = false, @sparse_vectors : Hash(String, SparseVectorParams)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_number_validation_error(@shard_number)) + invalid_properties.push(msg) + end + if (msg = replication_factor_validation_error(@replication_factor)) + invalid_properties.push(msg) + end + if (msg = write_consistency_factor_validation_error(@write_consistency_factor)) + invalid_properties.push(msg) + end + if (msg = read_fan_out_factor_validation_error(@read_fan_out_factor)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(vectors, shard_number, sharding_method, replication_factor, write_consistency_factor, read_fan_out_factor, on_disk_payload, sparse_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params_diff.cr new file mode 100644 index 000000000000..4889dc55c75b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_params_diff.cr @@ -0,0 +1,67 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionParamsDiff + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Number of replicas for each shard + @[JSON::Field(key: "replication_factor", emit_null: false)] + property replication_factor : Int32? + + # Minimal number successful responses from replicas to consider operation successful + @[JSON::Field(key: "write_consistency_factor", emit_null: false)] + property write_consistency_factor : Int32? + + # Fan-out every read request to these many additional remote nodes (and return first available response) + @[JSON::Field(key: "read_fan_out_factor", emit_null: false)] + property read_fan_out_factor : Int32? + + # If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM. + @[JSON::Field(key: "on_disk_payload", emit_null: false)] + property on_disk_payload : Bool? + + validates(replication_factor, Int32, true, minimum: 1) + validates(write_consistency_factor, Int32, true, minimum: 1) + validates(read_fan_out_factor, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@replication_factor : Int32? = nil, @write_consistency_factor : Int32? = nil, @read_fan_out_factor : Int32? = nil, @on_disk_payload : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = replication_factor_validation_error(@replication_factor)) + invalid_properties.push(msg) + end + if (msg = write_consistency_factor_validation_error(@write_consistency_factor)) + invalid_properties.push(msg) + end + if (msg = read_fan_out_factor_validation_error(@read_fan_out_factor)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(replication_factor, write_consistency_factor, read_fan_out_factor, on_disk_payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_status.cr new file mode 100644 index 000000000000..a0d6606e81b8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_status.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # CollectionStatus (OpenAPI enum). Allowed values: "green", "yellow", "grey", "red". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias CollectionStatus = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry.cr new file mode 100644 index 000000000000..6d3cfe854cd4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry.cr @@ -0,0 +1,61 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : String + + @[JSON::Field(key: "init_time_ms", emit_null: false)] + property init_time_ms : Int32 + + @[JSON::Field(key: "config", emit_null: false)] + property config : CollectionConfig + + @[JSON::Field(key: "shards", emit_null: false)] + property shards : Array(ReplicaSetTelemetry) + + @[JSON::Field(key: "transfers", emit_null: false)] + property transfers : Array(ShardTransferInfo) + + @[JSON::Field(key: "resharding", emit_null: false)] + property resharding : Array(ReshardingInfo) + + validates(init_time_ms, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : String, @init_time_ms : Int32, @config : CollectionConfig, @shards : Array(ReplicaSetTelemetry), @transfers : Array(ShardTransferInfo), @resharding : Array(ReshardingInfo)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = init_time_ms_validation_error(@init_time_ms)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, init_time_ms, config, shards, transfers, resharding) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry_enum.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry_enum.cr new file mode 100644 index 000000000000..cab5e5c798a6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collection_telemetry_enum.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # CollectionTelemetryEnum (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class CollectionTelemetryEnum + getter value + + def initialize(@value : CollectionTelemetry) + end + def initialize(@value : CollectionsAggregatedTelemetry) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + CollectionTelemetry, CollectionsAggregatedTelemetry + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(CollectionTelemetry.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(CollectionsAggregatedTelemetry.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in CollectionTelemetryEnum (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(CollectionTelemetry.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(CollectionsAggregatedTelemetry.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in CollectionTelemetryEnum (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aggregated_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aggregated_telemetry.cr new file mode 100644 index 000000000000..52e8d320ed51 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aggregated_telemetry.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionsAggregatedTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "vectors", emit_null: false)] + property vectors : Int32 + + @[JSON::Field(key: "optimizers_status", emit_null: false)] + property optimizers_status : OptimizersStatus + + @[JSON::Field(key: "params", emit_null: false)] + property params : CollectionParams + + validates(vectors, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vectors : Int32, @optimizers_status : OptimizersStatus, @params : CollectionParams) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = vectors_validation_error(@vectors)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(vectors, optimizers_status, params) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aliases_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aliases_response.cr new file mode 100644 index 000000000000..73660b66a00b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_aliases_response.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionsAliasesResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "aliases", emit_null: false)] + property aliases : Array(AliasDescription) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@aliases : Array(AliasDescription)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(aliases) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_response.cr new file mode 100644 index 000000000000..32aa28baca1f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_response.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionsResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "collections", emit_null: false)] + property collections : Array(CollectionDescription) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@collections : Array(CollectionDescription)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(collections) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_telemetry.cr new file mode 100644 index 000000000000..9dc1e56cd352 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/collections_telemetry.cr @@ -0,0 +1,50 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CollectionsTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "number_of_collections", emit_null: false)] + property number_of_collections : Int32 + + # Optional properties + @[JSON::Field(key: "collections", emit_null: false)] + property collections : Array(CollectionTelemetryEnum)? + + validates(number_of_collections, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@number_of_collections : Int32, @collections : Array(CollectionTelemetryEnum)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = number_of_collections_validation_error(@number_of_collections)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(number_of_collections, collections) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/compression_ratio.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/compression_ratio.cr new file mode 100644 index 000000000000..e9d1a824ef39 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/compression_ratio.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # CompressionRatio (OpenAPI enum). Allowed values: "x4", "x8", "x16", "x32", "x64". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias CompressionRatio = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/condition.cr new file mode 100644 index 000000000000..1a070c14ce41 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/condition.cr @@ -0,0 +1,110 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Condition (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class Condition + getter value + + def initialize(@value : FieldCondition) + end + def initialize(@value : Filter) + end + def initialize(@value : HasIdCondition) + end + def initialize(@value : IsEmptyCondition) + end + def initialize(@value : IsNullCondition) + end + def initialize(@value : NestedCondition) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + FieldCondition, Filter, HasIdCondition, IsEmptyCondition, IsNullCondition, NestedCondition + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(FieldCondition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Filter.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(HasIdCondition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(IsEmptyCondition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(IsNullCondition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(NestedCondition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in Condition (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(FieldCondition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Filter.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(HasIdCondition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(IsEmptyCondition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(IsNullCondition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(NestedCondition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in Condition (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_config_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_config_telemetry.cr new file mode 100644 index 000000000000..7670a26dc367 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_config_telemetry.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ConsensusConfigTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "max_message_queue_size", emit_null: false)] + property max_message_queue_size : Int32 + + @[JSON::Field(key: "tick_period_ms", emit_null: false)] + property tick_period_ms : Int32 + + @[JSON::Field(key: "bootstrap_timeout_sec", emit_null: false)] + property bootstrap_timeout_sec : Int32 + + validates(max_message_queue_size, Int32, false, minimum: 0) + validates(tick_period_ms, Int32, false, minimum: 0) + validates(bootstrap_timeout_sec, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@max_message_queue_size : Int32, @tick_period_ms : Int32, @bootstrap_timeout_sec : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = max_message_queue_size_validation_error(@max_message_queue_size)) + invalid_properties.push(msg) + end + if (msg = tick_period_ms_validation_error(@tick_period_ms)) + invalid_properties.push(msg) + end + if (msg = bootstrap_timeout_sec_validation_error(@bootstrap_timeout_sec)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(max_message_queue_size, tick_period_ms, bootstrap_timeout_sec) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status.cr new file mode 100644 index 000000000000..33579e3d9937 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status.cr @@ -0,0 +1,90 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Information about current consensus thread status + # ConsensusThreadStatus (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class ConsensusThreadStatus + getter value + + def initialize(@value : ConsensusThreadStatusOneOf) + end + def initialize(@value : ConsensusThreadStatusOneOf1) + end + def initialize(@value : ConsensusThreadStatusOneOf2) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + ConsensusThreadStatusOneOf, ConsensusThreadStatusOneOf1, ConsensusThreadStatusOneOf2 + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(ConsensusThreadStatusOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ConsensusThreadStatusOneOf1.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ConsensusThreadStatusOneOf2.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ConsensusThreadStatus (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(ConsensusThreadStatusOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ConsensusThreadStatusOneOf1.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ConsensusThreadStatusOneOf2.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ConsensusThreadStatus (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of.cr new file mode 100644 index 000000000000..2818e2aea0d5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ConsensusThreadStatusOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "consensus_thread_status", emit_null: false)] + property consensus_thread_status : String + + @[JSON::Field(key: "last_update", emit_null: false)] + property last_update : Time + + validates(consensus_thread_status, String, false, enum: ["working"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@consensus_thread_status : String, @last_update : Time) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = consensus_thread_status_validation_error(@consensus_thread_status)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(consensus_thread_status, last_update) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of1.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of1.cr new file mode 100644 index 000000000000..6ee298faa984 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of1.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ConsensusThreadStatusOneOf1 + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "consensus_thread_status", emit_null: false)] + property consensus_thread_status : String + + validates(consensus_thread_status, String, false, enum: ["stopped"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@consensus_thread_status : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = consensus_thread_status_validation_error(@consensus_thread_status)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(consensus_thread_status) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of2.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of2.cr new file mode 100644 index 000000000000..f10581df6074 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/consensus_thread_status_one_of2.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ConsensusThreadStatusOneOf2 + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "consensus_thread_status", emit_null: false)] + property consensus_thread_status : String + + @[JSON::Field(key: "err", emit_null: false)] + property err : String + + validates(consensus_thread_status, String, false, enum: ["stopped_with_err"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@consensus_thread_status : String, @err : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = consensus_thread_status_validation_error(@consensus_thread_status)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(consensus_thread_status, err) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_example_pair.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_example_pair.cr new file mode 100644 index 000000000000..5f3f284ada4e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_example_pair.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ContextExamplePair + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "positive", emit_null: false)] + property positive : RecommendExample + + @[JSON::Field(key: "negative", emit_null: false)] + property negative : RecommendExample + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@positive : RecommendExample, @negative : RecommendExample) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(positive, negative) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_input.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_input.cr new file mode 100644 index 000000000000..baa743272bec --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_input.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ContextInput (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ContextInput + getter value + + def initialize(@value : Array(ContextPair)) + end + def initialize(@value : ContextPair) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(ContextPair), ContextPair + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(ContextPair).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ContextPair.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ContextInput (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(ContextPair).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ContextPair.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ContextInput (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_pair.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_pair.cr new file mode 100644 index 000000000000..c117b2da3481 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_pair.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ContextPair + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "positive", emit_null: false)] + property positive : VectorInput + + @[JSON::Field(key: "negative", emit_null: false)] + property negative : VectorInput + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@positive : VectorInput, @negative : VectorInput) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(positive, negative) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_query.cr new file mode 100644 index 000000000000..8f464011c273 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/context_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ContextQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "context", emit_null: false)] + property context : ContextInput + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@context : ContextInput) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(context) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_points200_response.cr new file mode 100644 index 000000000000..7251934cc169 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CountPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CountResult? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CountResult? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_request.cr new file mode 100644 index 000000000000..1afaf074548e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_request.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Count Request Counts the number of points which satisfy the given filter. If filter is not provided, the count of all points in the collection will be returned. + class CountRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # If true, count exact number of points. If false, count approximate number of points faster. Approximate count might be unreliable during the indexing process. Default: true + @[JSON::Field(key: "exact", emit_null: false)] + property exact : Bool? = true + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKeySelector? = nil, @filter : Filter? = nil, @exact : Bool? = true) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, filter, exact) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_result.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_result.cr new file mode 100644 index 000000000000..cc7feae053ba --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/count_result.cr @@ -0,0 +1,47 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CountResult + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Number of points which satisfy the conditions + @[JSON::Field(key: "count", emit_null: false)] + property count : Int32 + + validates(count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@count : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = count_validation_error(@count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(count) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias.cr new file mode 100644 index 000000000000..da23a8980a8b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Create alternative name for a collection. Collection will be available under both names for search, retrieve, + class CreateAlias + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "collection_name", emit_null: false)] + property collection_name : String + + @[JSON::Field(key: "alias_name", emit_null: false)] + property alias_name : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@collection_name : String, @alias_name : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(collection_name, alias_name) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias_operation.cr new file mode 100644 index 000000000000..b84b0fcd94cc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_alias_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateAliasOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "create_alias", emit_null: false)] + property create_alias : CreateAlias + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@create_alias : CreateAlias) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(create_alias) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_collection.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_collection.cr new file mode 100644 index 000000000000..9ff830813349 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_collection.cr @@ -0,0 +1,99 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Operation for creating new collection and (optionally) specify index params + class CreateCollection + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "vectors", emit_null: false)] + property vectors : VectorsConfig? + + # For auto sharding: Number of shards in collection. - Default is 1 for standalone, otherwise equal to the number of nodes - Minimum is 1 For custom sharding: Number of shards in collection per shard group. - Default is 1, meaning that each shard key will be mapped to a single shard - Minimum is 1 + @[JSON::Field(key: "shard_number", emit_null: false)] + property shard_number : Int32? + + # Sharding method Default is Auto - points are distributed across all available shards Custom - points are distributed across shards according to shard key + @[JSON::Field(key: "sharding_method", emit_null: false)] + property sharding_method : ShardingMethod? + + # Number of shards replicas. Default is 1 Minimum is 1 + @[JSON::Field(key: "replication_factor", emit_null: false)] + property replication_factor : Int32? + + # Defines how many replicas should apply the operation for us to consider it successful. Increasing this number will make the collection more resilient to inconsistencies, but will also make it fail if not enough replicas are available. Does not have any performance impact. + @[JSON::Field(key: "write_consistency_factor", emit_null: false)] + property write_consistency_factor : Int32? + + # If true - point's payload will not be stored in memory. It will be read from the disk every time it is requested. This setting saves RAM by (slightly) increasing the response time. Note: those payload values that are involved in filtering and are indexed - remain in RAM. + @[JSON::Field(key: "on_disk_payload", emit_null: false)] + property on_disk_payload : Bool? + + # Custom params for HNSW index. If none - values from service configuration file are used. + @[JSON::Field(key: "hnsw_config", emit_null: false)] + property hnsw_config : HnswConfigDiff? + + # Custom params for WAL. If none - values from service configuration file are used. + @[JSON::Field(key: "wal_config", emit_null: false)] + property wal_config : WalConfigDiff? + + # Custom params for Optimizers. If none - values from service configuration file are used. + @[JSON::Field(key: "optimizers_config", emit_null: false)] + property optimizers_config : OptimizersConfigDiff? + + # Specify other collection to copy data from. + @[JSON::Field(key: "init_from", emit_null: false)] + property init_from : InitFrom? + + # Quantization parameters. If none - quantization is disabled. + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfig? + + # Sparse vector data config. + @[JSON::Field(key: "sparse_vectors", emit_null: false)] + property sparse_vectors : Hash(String, SparseVectorParams)? + + validates(shard_number, Int32, true, minimum: 1) + validates(replication_factor, Int32, true, minimum: 1) + validates(write_consistency_factor, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vectors : VectorsConfig? = nil, @shard_number : Int32? = nil, @sharding_method : ShardingMethod? = nil, @replication_factor : Int32? = nil, @write_consistency_factor : Int32? = nil, @on_disk_payload : Bool? = nil, @hnsw_config : HnswConfigDiff? = nil, @wal_config : WalConfigDiff? = nil, @optimizers_config : OptimizersConfigDiff? = nil, @init_from : InitFrom? = nil, @quantization_config : QuantizationConfig? = nil, @sparse_vectors : Hash(String, SparseVectorParams)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_number_validation_error(@shard_number)) + invalid_properties.push(msg) + end + if (msg = replication_factor_validation_error(@replication_factor)) + invalid_properties.push(msg) + end + if (msg = write_consistency_factor_validation_error(@write_consistency_factor)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(vectors, shard_number, sharding_method, replication_factor, write_consistency_factor, on_disk_payload, hnsw_config, wal_config, optimizers_config, init_from, quantization_config, sparse_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index.cr new file mode 100644 index 000000000000..a1bdf7947419 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateFieldIndex + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "field_name", emit_null: false)] + property field_name : String + + # Optional properties + @[JSON::Field(key: "field_schema", emit_null: false)] + property field_schema : PayloadFieldSchema? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@field_name : String, @field_schema : PayloadFieldSchema? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(field_name, field_schema) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index200_response.cr new file mode 100644 index 000000000000..055c932d6a1d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_field_index200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateFieldIndex200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : UpdateResult? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : UpdateResult? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_shard_key200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_shard_key200_response.cr new file mode 100644 index 000000000000..b80ea0f81c9a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_shard_key200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateShardKey200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key.cr new file mode 100644 index 000000000000..fde1414de653 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key.cr @@ -0,0 +1,63 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateShardingKey + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey + + # Optional properties + # How many shards to create for this key If not specified, will use the default value from config + @[JSON::Field(key: "shards_number", emit_null: false)] + property shards_number : Int32? + + # How many replicas to create for each shard If not specified, will use the default value from config + @[JSON::Field(key: "replication_factor", emit_null: false)] + property replication_factor : Int32? + + # Placement of shards for this key List of peer ids, that can be used to place shards for this key If not specified, will be randomly placed among all peers + @[JSON::Field(key: "placement", emit_null: false)] + property placement : Array(Int32)? + + validates(shards_number, Int32, true, minimum: 1) + validates(replication_factor, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKey, @shards_number : Int32? = nil, @replication_factor : Int32? = nil, @placement : Array(Int32)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shards_number_validation_error(@shards_number)) + invalid_properties.push(msg) + end + if (msg = replication_factor_validation_error(@replication_factor)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, shards_number, replication_factor, placement) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key_operation.cr new file mode 100644 index 000000000000..c1ef595af320 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_sharding_key_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateShardingKeyOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "create_sharding_key", emit_null: false)] + property create_sharding_key : CreateShardingKey + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@create_sharding_key : CreateShardingKey) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(create_sharding_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_snapshot200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_snapshot200_response.cr new file mode 100644 index 000000000000..e3cd57bf9b49 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/create_snapshot200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class CreateSnapshot200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : SnapshotDescription? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : SnapshotDescription? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/datatype.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datatype.cr new file mode 100644 index 000000000000..1a43d83a80e7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datatype.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Datatype (OpenAPI enum). Allowed values: "float32", "uint8", "float16". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Datatype = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_params.cr new file mode 100644 index 000000000000..cba80a213ce7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_params.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DatetimeIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : DatetimeIndexType + + # Optional properties + # If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests. + @[JSON::Field(key: "is_principal", emit_null: false)] + property is_principal : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : DatetimeIndexType, @is_principal : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, is_principal, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_type.cr new file mode 100644 index 000000000000..3fad223021b0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # DatetimeIndexType (OpenAPI enum). Allowed values: "datetime". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias DatetimeIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_range.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_range.cr new file mode 100644 index 000000000000..b333218a165e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/datetime_range.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Range filter request + class DatetimeRange + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # point.key < range.lt + @[JSON::Field(key: "lt", emit_null: false)] + property lt : Time? + + # point.key > range.gt + @[JSON::Field(key: "gt", emit_null: false)] + property gt : Time? + + # point.key >= range.gte + @[JSON::Field(key: "gte", emit_null: false)] + property gte : Time? + + # point.key <= range.lte + @[JSON::Field(key: "lte", emit_null: false)] + property lte : Time? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@lt : Time? = nil, @gt : Time? = nil, @gte : Time? = nil, @lte : Time? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(lt, gt, gte, lte) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias.cr new file mode 100644 index 000000000000..f797a9a6abbd --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Delete alias if exists + class DeleteAlias + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "alias_name", emit_null: false)] + property alias_name : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@alias_name : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(alias_name) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias_operation.cr new file mode 100644 index 000000000000..9dbac0bafb03 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_alias_operation.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Delete alias if exists + class DeleteAliasOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "delete_alias", emit_null: false)] + property delete_alias : DeleteAlias + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@delete_alias : DeleteAlias) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(delete_alias) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_operation.cr new file mode 100644 index 000000000000..e4036f521f03 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DeleteOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "delete", emit_null: false)] + property delete : PointsSelector + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@delete : PointsSelector) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(delete) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload.cr new file mode 100644 index 000000000000..32061f26584b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # This data structure is used in API interface and applied across multiple shards + class DeletePayload + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # List of payload keys to remove from payload + @[JSON::Field(key: "keys", emit_null: false)] + property keys : Array(String) + + # Optional properties + # Deletes values from each point in this list + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(ExtendedPointId)? + + # Deletes values from points that satisfy this filter condition + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@keys : Array(String), @points : Array(ExtendedPointId)? = nil, @filter : Filter? = nil, @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(keys, points, filter, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload_operation.cr new file mode 100644 index 000000000000..fbc4dfa8f9d1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_payload_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DeletePayloadOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "delete_payload", emit_null: false)] + property delete_payload : DeletePayload + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@delete_payload : DeletePayload) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(delete_payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors.cr new file mode 100644 index 000000000000..a95a5c659981 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DeleteVectors + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Vector names + @[JSON::Field(key: "vector", emit_null: false)] + property vector : Set(String) + + # Optional properties + # Deletes values from each point in this list + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(ExtendedPointId)? + + # Deletes values from points that satisfy this filter condition + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vector : Set(String), @points : Array(ExtendedPointId)? = nil, @filter : Filter? = nil, @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points, filter, vector, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors_operation.cr new file mode 100644 index 000000000000..6947cd4d573c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/delete_vectors_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DeleteVectorsOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "delete_vectors", emit_null: false)] + property delete_vectors : DeleteVectors + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@delete_vectors : DeleteVectors) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(delete_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/direction.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/direction.cr new file mode 100644 index 000000000000..50bfea8802e2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/direction.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Direction (OpenAPI enum). Allowed values: "asc", "desc". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Direction = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/disabled.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/disabled.cr new file mode 100644 index 000000000000..dad1b2385ca5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/disabled.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Disabled (OpenAPI enum). Allowed values: "Disabled". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Disabled = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input.cr new file mode 100644 index 000000000000..08884d011a93 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DiscoverInput + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "target", emit_null: false)] + property target : VectorInput + + @[JSON::Field(key: "context", emit_null: false)] + property context : DiscoverInputContext + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@target : VectorInput, @context : DiscoverInputContext) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(target, context) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input_context.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input_context.cr new file mode 100644 index 000000000000..5619fd166324 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_input_context.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Search space will be constrained by these pairs of vectors + # DiscoverInputContext (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class DiscoverInputContext + getter value + + def initialize(@value : Array(ContextPair)) + end + def initialize(@value : ContextPair) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(ContextPair), ContextPair + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(ContextPair).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ContextPair.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in DiscoverInputContext (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(ContextPair).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ContextPair.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in DiscoverInputContext (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_query.cr new file mode 100644 index 000000000000..0d2c80570915 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DiscoverQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "discover", emit_null: false)] + property discover : DiscoverInput + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@discover : DiscoverInput) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(discover) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request.cr new file mode 100644 index 000000000000..93f66ed0a49e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request.cr @@ -0,0 +1,93 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Use context and a target to find the most similar points, constrained by the context. + class DiscoverRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Max number of result to return + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32 + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look for vectors closest to this. When using the target (with or without context), the integer part of the score represents the rank with respect to the context, while the decimal part of the score relates to the distance to the target. + @[JSON::Field(key: "target", emit_null: false)] + property target : RecommendExample? + + # Pairs of { positive, negative } examples to constrain the search. When using only the context (without a target), a special search - called context search - is performed where pairs of points are used to generate a loss that guides the search towards the zone where most positive examples overlap. This means that the score minimizes the scenario of finding a point closer to a negative than to a positive part of a pair. Since the score of a context relates to loss, the maximum score a point can get is 0.0, and it becomes normal that many points can have a score of 0.0. For discovery search (when including a target), the context part of the score for each pair is calculated +1 if the point is closer to a positive than to a negative part of a pair, and -1 otherwise. + @[JSON::Field(key: "context", emit_null: false)] + property context : Array(ContextExamplePair)? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Additional search params + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues. + @[JSON::Field(key: "offset", emit_null: false)] + property offset : Int32? + + # Select which payload to return with the response. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include into response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Define which vector to use for recommendation, if not specified - try to use default vector + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + validates(limit, Int32, false, minimum: 1) + validates(offset, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@limit : Int32, @shard_key : ShardKeySelector? = nil, @target : RecommendExample? = nil, @context : Array(ContextExamplePair)? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @offset : Int32? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @using : String? = nil, @lookup_from : LookupLocation? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + if (msg = offset_validation_error(@offset)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, target, context, filter, params, limit, offset, with_payload, with_vector, using, lookup_from) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request_batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request_batch.cr new file mode 100644 index 000000000000..0cf6d888e38f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/discover_request_batch.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DiscoverRequestBatch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "searches", emit_null: false)] + property searches : Array(DiscoverRequest) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@searches : Array(DiscoverRequest)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(searches) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/distance.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/distance.cr new file mode 100644 index 000000000000..820cb24874ea --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/distance.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Distance (OpenAPI enum). Allowed values: "Cosine", "Euclid", "Dot", "Manhattan". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Distance = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/document.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/document.cr new file mode 100644 index 000000000000..5ac8f6976b71 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/document.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # WARN: Work-in-progress, unimplemented Text document for embedding. Requires inference infrastructure, unimplemented. + class Document + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Text of the document This field will be used as input for the embedding model + @[JSON::Field(key: "text", emit_null: false)] + property text : String + + # Optional properties + # Name of the model used to generate the vector List of available models depends on a provider + @[JSON::Field(key: "model", emit_null: false)] + property model : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@text : String, @model : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(text, model) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_replica_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_replica_operation.cr new file mode 100644 index 000000000000..f742ea0d6b59 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_replica_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DropReplicaOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "drop_replica", emit_null: false)] + property drop_replica : Replica + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@drop_replica : Replica) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(drop_replica) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key.cr new file mode 100644 index 000000000000..b8547f2de442 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DropShardingKey + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKey) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key_operation.cr new file mode 100644 index 000000000000..16b70c6dbb5e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/drop_sharding_key_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class DropShardingKeyOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "drop_sharding_key", emit_null: false)] + property drop_sharding_key : DropShardingKey + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@drop_sharding_key : DropShardingKey) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(drop_sharding_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response.cr new file mode 100644 index 000000000000..b980bbc0977a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ErrorResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : ErrorResponseStatus? + + @[JSON::Field(key: "result", emit_null: false)] + property result : JSON::Any? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : ErrorResponseStatus? = nil, @result : JSON::Any? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response_status.cr new file mode 100644 index 000000000000..b2b2e3465b5f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/error_response_status.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ErrorResponseStatus + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Description of the occurred error. + @[JSON::Field(key: "error", emit_null: false)] + property error : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@error : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(error) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/extended_point_id.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/extended_point_id.cr new file mode 100644 index 000000000000..a9e5344832f6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/extended_point_id.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Type, used for specifying point ID in user interface + # ExtendedPointId (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ExtendedPointId + getter value + + def initialize(@value : Int32) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Int32, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Int32.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ExtendedPointId (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Int32.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ExtendedPointId (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet200_response.cr new file mode 100644 index 000000000000..e4664fc7f299 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Facet200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : FacetResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : FacetResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_request.cr new file mode 100644 index 000000000000..bc1d938e1494 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_request.cr @@ -0,0 +1,63 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FacetRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload key to use for faceting. + @[JSON::Field(key: "key", emit_null: false)] + property key : String + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Max number of hits to return. Default is 10. + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # Filter conditions - only consider points that satisfy these conditions. + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Whether to do a more expensive exact count for each of the values in the facet. Default is false. + @[JSON::Field(key: "exact", emit_null: false)] + property exact : Bool? + + validates(limit, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@key : String, @shard_key : ShardKeySelector? = nil, @limit : Int32? = nil, @filter : Filter? = nil, @exact : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, key, limit, filter, exact) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_response.cr new file mode 100644 index 000000000000..4181945ac812 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_response.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FacetResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "hits", emit_null: false)] + property hits : Array(FacetValueHit) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@hits : Array(FacetValueHit)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(hits) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value.cr new file mode 100644 index 000000000000..69ba1cadf1ef --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # FacetValue (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class FacetValue + getter value + + def initialize(@value : Bool) + end + def initialize(@value : Int64) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Bool, Int64, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Bool.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in FacetValue (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Bool.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in FacetValue (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value_hit.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value_hit.cr new file mode 100644 index 000000000000..8bb936032c0e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/facet_value_hit.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FacetValueHit + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "value", emit_null: false)] + property value : FacetValue + + @[JSON::Field(key: "count", emit_null: false)] + property count : Int32 + + validates(count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@value : FacetValue, @count : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = count_validation_error(@count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(value, count) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/field_condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/field_condition.cr new file mode 100644 index 000000000000..92598c559461 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/field_condition.cr @@ -0,0 +1,69 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # All possible payload filtering conditions + class FieldCondition + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload key + @[JSON::Field(key: "key", emit_null: false)] + property key : String + + # Optional properties + # Check if point has field with a given value + @[JSON::Field(key: "match", emit_null: false)] + property match : Match? + + # Check if points value lies in a given range + @[JSON::Field(key: "range", emit_null: false)] + property range : RangeInterface? + + # Check if points geo location lies in a given area + @[JSON::Field(key: "geo_bounding_box", emit_null: false)] + property geo_bounding_box : GeoBoundingBox? + + # Check if geo point is within a given radius + @[JSON::Field(key: "geo_radius", emit_null: false)] + property geo_radius : GeoRadius? + + # Check if geo point is within a given polygon + @[JSON::Field(key: "geo_polygon", emit_null: false)] + property geo_polygon : GeoPolygon? + + # Check number of values of the field + @[JSON::Field(key: "values_count", emit_null: false)] + property values_count : ValuesCount? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@key : String, @match : Match? = nil, @range : RangeInterface? = nil, @geo_bounding_box : GeoBoundingBox? = nil, @geo_radius : GeoRadius? = nil, @geo_polygon : GeoPolygon? = nil, @values_count : ValuesCount? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(key, match, range, geo_bounding_box, geo_radius, geo_polygon, values_count) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter.cr new file mode 100644 index 000000000000..eb74aab6139d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Filter + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "should", emit_null: false)] + property should : FilterShould? + + # At least minimum amount of given conditions should match + @[JSON::Field(key: "min_should", emit_null: false)] + property min_should : MinShould? + + @[JSON::Field(key: "must", emit_null: false)] + property must : FilterShould? + + @[JSON::Field(key: "must_not", emit_null: false)] + property must_not : FilterShould? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@should : FilterShould? = nil, @min_should : MinShould? = nil, @must : FilterShould? = nil, @must_not : FilterShould? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(should, min_should, must, must_not) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_selector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_selector.cr new file mode 100644 index 000000000000..20d715d967da --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_selector.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FilterSelector + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@filter : Filter, @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(filter, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_should.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_should.cr new file mode 100644 index 000000000000..0b519f430e21 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/filter_should.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # At least one of those conditions should match + # FilterShould (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class FilterShould + getter value + + def initialize(@value : Array(Condition)) + end + def initialize(@value : Condition) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Condition), Condition + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Condition).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Condition.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in FilterShould (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Condition).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Condition.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in FilterShould (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_params.cr new file mode 100644 index 000000000000..e99aff5bc794 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_params.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FloatIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : FloatIndexType + + # Optional properties + # If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests. + @[JSON::Field(key: "is_principal", emit_null: false)] + property is_principal : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : FloatIndexType, @is_principal : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, is_principal, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_type.cr new file mode 100644 index 000000000000..8e5340bb7ed9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/float_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # FloatIndexType (OpenAPI enum). Allowed values: "float". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias FloatIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion.cr new file mode 100644 index 000000000000..c83104e85a9f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Fusion (OpenAPI enum). Allowed values: "rrf", "dbsf". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Fusion = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion_query.cr new file mode 100644 index 000000000000..5436859459ae --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/fusion_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class FusionQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "fusion", emit_null: false)] + property fusion : Fusion + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@fusion : Fusion) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(fusion) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_bounding_box.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_bounding_box.cr new file mode 100644 index 000000000000..2c246b187f3b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_bounding_box.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Geo filter request Matches coordinates inside the rectangle, described by coordinates of lop-left and bottom-right edges + class GeoBoundingBox + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "top_left", emit_null: false)] + property top_left : GeoPoint + + @[JSON::Field(key: "bottom_right", emit_null: false)] + property bottom_right : GeoPoint + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@top_left : GeoPoint, @bottom_right : GeoPoint) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(top_left, bottom_right) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_params.cr new file mode 100644 index 000000000000..60183074671e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_params.cr @@ -0,0 +1,47 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GeoIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : GeoIndexType + + # Optional properties + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : GeoIndexType, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_type.cr new file mode 100644 index 000000000000..fafe11387587 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # GeoIndexType (OpenAPI enum). Allowed values: "geo". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias GeoIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_line_string.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_line_string.cr new file mode 100644 index 000000000000..ed9b3fb9ac51 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_line_string.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Ordered sequence of GeoPoints representing the line + class GeoLineString + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(GeoPoint) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(GeoPoint)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_point.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_point.cr new file mode 100644 index 000000000000..7a2e670bc6c9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_point.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Geo point payload schema + class GeoPoint + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "lon", emit_null: false)] + property lon : Float64 + + @[JSON::Field(key: "lat", emit_null: false)] + property lat : Float64 + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@lon : Float64, @lat : Float64) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(lon, lat) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_polygon.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_polygon.cr new file mode 100644 index 000000000000..da56821cbf99 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_polygon.cr @@ -0,0 +1,48 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Geo filter request Matches coordinates inside the polygon, defined by `exterior` and `interiors` + class GeoPolygon + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "exterior", emit_null: false)] + property exterior : GeoLineString + + # Optional properties + # Interior lines (if present) bound holes within the surface each GeoLineString must consist of a minimum of 4 points, and the first and last points must be the same. + @[JSON::Field(key: "interiors", emit_null: false)] + property interiors : Array(GeoLineString)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@exterior : GeoLineString, @interiors : Array(GeoLineString)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(exterior, interiors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_radius.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_radius.cr new file mode 100644 index 000000000000..b55e46173108 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/geo_radius.cr @@ -0,0 +1,47 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Geo filter request Matches coordinates inside the circle of `radius` and center with coordinates `center` + class GeoRadius + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "center", emit_null: false)] + property center : GeoPoint + + # Radius of the area in meters + @[JSON::Field(key: "radius", emit_null: false)] + property radius : Float64 + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@center : GeoPoint, @radius : Float64) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(center, radius) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection200_response.cr new file mode 100644 index 000000000000..e4e5c6194cfd --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetCollection200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CollectionInfo? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CollectionInfo? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection_aliases200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection_aliases200_response.cr new file mode 100644 index 000000000000..5ae5d66786c0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collection_aliases200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetCollectionAliases200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CollectionsAliasesResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CollectionsAliasesResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collections200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collections200_response.cr new file mode 100644 index 000000000000..60e0aab3f34f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_collections200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetCollections200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : CollectionsResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : CollectionsResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_locks200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_locks200_response.cr new file mode 100644 index 000000000000..41e089a30f70 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_locks200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetLocks200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : LocksOption? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : LocksOption? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_point200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_point200_response.cr new file mode 100644 index 000000000000..ee5474781407 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_point200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetPoint200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Record? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Record? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_points200_response.cr new file mode 100644 index 000000000000..490532642c4b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/get_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GetPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(Record)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(Record)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/group_id.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/group_id.cr new file mode 100644 index 000000000000..b2dc069e1e36 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/group_id.cr @@ -0,0 +1,81 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Value of the group_by key, shared across all the hits in the group + # GroupId (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class GroupId + getter value + + def initialize(@value : Int32) + end + def initialize(@value : Int64) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Int32, Int64, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Int32.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in GroupId (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Int32.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in GroupId (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/groups_result.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/groups_result.cr new file mode 100644 index 000000000000..c875d7cfa69e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/groups_result.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GroupsResult + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "groups", emit_null: false)] + property groups : Array(PointGroup) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@groups : Array(PointGroup)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(groups) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/grpc_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/grpc_telemetry.cr new file mode 100644 index 000000000000..bae815696818 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/grpc_telemetry.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class GrpcTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "responses", emit_null: false)] + property responses : Hash(String, OperationDurationStatistics) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@responses : Hash(String, OperationDurationStatistics)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(responses) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/has_id_condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/has_id_condition.cr new file mode 100644 index 000000000000..94e41196cbc5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/has_id_condition.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ID-based filtering condition + class HasIdCondition + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "has_id", emit_null: false)] + property has_id : Set(ExtendedPointId) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@has_id : Set(ExtendedPointId)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(has_id) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config.cr new file mode 100644 index 000000000000..05df05c08b6f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config.cr @@ -0,0 +1,85 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Config of HNSW index + class HnswConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Number of edges per node in the index graph. Larger the value - more accurate the search, more space required. + @[JSON::Field(key: "m", emit_null: false)] + property m : Int32 + + # Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build index. + @[JSON::Field(key: "ef_construct", emit_null: false)] + property ef_construct : Int32 + + # Minimal size (in KiloBytes) of vectors for additional payload-based indexing. If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used - in this case full-scan search should be preferred by query planner and additional indexing is not required. Note: 1Kb = 1 vector of size 256 + @[JSON::Field(key: "full_scan_threshold", emit_null: false)] + property full_scan_threshold : Int32 + + # Optional properties + # Number of parallel threads used for background index building. If 0 - automatically select from 8 to 16. Best to keep between 8 and 16 to prevent likelihood of slow building or broken/inefficient HNSW graphs. On small CPUs, less threads are used. + @[JSON::Field(key: "max_indexing_threads", emit_null: false)] + property max_indexing_threads : Int32? = 0 + + # Store HNSW index on disk. If set to false, index will be stored in RAM. Default: false + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + # Custom M param for hnsw graph built for payload index. If not set, default M will be used. + @[JSON::Field(key: "payload_m", emit_null: false)] + property payload_m : Int32? + + validates(m, Int32, false, minimum: 0) + validates(ef_construct, Int32, false, minimum: 4) + validates(full_scan_threshold, Int32, false, minimum: 0) + validates(max_indexing_threads, Int32, true, minimum: 0) + validates(payload_m, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@m : Int32, @ef_construct : Int32, @full_scan_threshold : Int32, @max_indexing_threads : Int32? = 0, @on_disk : Bool? = nil, @payload_m : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = m_validation_error(@m)) + invalid_properties.push(msg) + end + if (msg = ef_construct_validation_error(@ef_construct)) + invalid_properties.push(msg) + end + if (msg = full_scan_threshold_validation_error(@full_scan_threshold)) + invalid_properties.push(msg) + end + if (msg = max_indexing_threads_validation_error(@max_indexing_threads)) + invalid_properties.push(msg) + end + if (msg = payload_m_validation_error(@payload_m)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(m, ef_construct, full_scan_threshold, max_indexing_threads, on_disk, payload_m) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config_diff.cr new file mode 100644 index 000000000000..efce2cadb320 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/hnsw_config_diff.cr @@ -0,0 +1,83 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class HnswConfigDiff + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Number of edges per node in the index graph. Larger the value - more accurate the search, more space required. + @[JSON::Field(key: "m", emit_null: false)] + property m : Int32? + + # Number of neighbours to consider during the index building. Larger the value - more accurate the search, more time required to build the index. + @[JSON::Field(key: "ef_construct", emit_null: false)] + property ef_construct : Int32? + + # Minimal size (in kilobytes) of vectors for additional payload-based indexing. If payload chunk is smaller than `full_scan_threshold_kb` additional indexing won't be used - in this case full-scan search should be preferred by query planner and additional indexing is not required. Note: 1Kb = 1 vector of size 256 + @[JSON::Field(key: "full_scan_threshold", emit_null: false)] + property full_scan_threshold : Int32? + + # Number of parallel threads used for background index building. If 0 - automatically select from 8 to 16. Best to keep between 8 and 16 to prevent likelihood of building broken/inefficient HNSW graphs. On small CPUs, less threads are used. + @[JSON::Field(key: "max_indexing_threads", emit_null: false)] + property max_indexing_threads : Int32? + + # Store HNSW index on disk. If set to false, the index will be stored in RAM. Default: false + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + # Custom M param for additional payload-aware HNSW links. If not set, default M will be used. + @[JSON::Field(key: "payload_m", emit_null: false)] + property payload_m : Int32? + + validates(m, Int32, true, minimum: 0) + validates(ef_construct, Int32, true, minimum: 4) + validates(full_scan_threshold, Int32, true, minimum: 10) + validates(max_indexing_threads, Int32, true, minimum: 0) + validates(payload_m, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@m : Int32? = nil, @ef_construct : Int32? = nil, @full_scan_threshold : Int32? = nil, @max_indexing_threads : Int32? = nil, @on_disk : Bool? = nil, @payload_m : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = m_validation_error(@m)) + invalid_properties.push(msg) + end + if (msg = ef_construct_validation_error(@ef_construct)) + invalid_properties.push(msg) + end + if (msg = full_scan_threshold_validation_error(@full_scan_threshold)) + invalid_properties.push(msg) + end + if (msg = max_indexing_threads_validation_error(@max_indexing_threads)) + invalid_properties.push(msg) + end + if (msg = payload_m_validation_error(@payload_m)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(m, ef_construct, full_scan_threshold, max_indexing_threads, on_disk, payload_m) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes.cr new file mode 100644 index 000000000000..e0e2ccdfaec8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Vector index configuration + # Indexes (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class Indexes + getter value + + def initialize(@value : IndexesOneOf) + end + def initialize(@value : IndexesOneOf1) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + IndexesOneOf, IndexesOneOf1 + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(IndexesOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(IndexesOneOf1.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in Indexes (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(IndexesOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(IndexesOneOf1.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in Indexes (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of.cr new file mode 100644 index 000000000000..ae05765bd7c6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of.cr @@ -0,0 +1,50 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Do not use any index, scan whole vector collection during search. Guarantee 100% precision, but may be time consuming on large collections. + class IndexesOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : String + + @[JSON::Field(key: "options", emit_null: false)] + property options : JSON::Any + + validates(_type, String, false, enum: ["plain"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : String, @options : JSON::Any) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = _type_validation_error(@_type)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, options) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of1.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of1.cr new file mode 100644 index 000000000000..9f591988f028 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/indexes_one_of1.cr @@ -0,0 +1,50 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Use filterable HNSW index for approximate search. Is very fast even on a very huge collections, but require additional space to store index and additional time to build it. + class IndexesOneOf1 + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : String + + @[JSON::Field(key: "options", emit_null: false)] + property options : HnswConfig + + validates(_type, String, false, enum: ["hnsw"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : String, @options : HnswConfig) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = _type_validation_error(@_type)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, options) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/init_from.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/init_from.cr new file mode 100644 index 000000000000..b347cfd61dae --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/init_from.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Operation for creating new collection and (optionally) specify index params + class InitFrom + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "collection", emit_null: false)] + property collection : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@collection : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(collection) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_params.cr new file mode 100644 index 000000000000..8992881d79d1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_params.cr @@ -0,0 +1,59 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class IntegerIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : IntegerIndexType + + # Optional properties + # If true - support direct lookups. + @[JSON::Field(key: "lookup", emit_null: false)] + property lookup : Bool? + + # If true - support ranges filters. + @[JSON::Field(key: "range", emit_null: false)] + property range : Bool? + + # If true - use this key to organize storage of the collection data. This option assumes that this key will be used in majority of filtered requests. + @[JSON::Field(key: "is_principal", emit_null: false)] + property is_principal : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : IntegerIndexType, @lookup : Bool? = nil, @range : Bool? = nil, @is_principal : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, lookup, range, is_principal, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_type.cr new file mode 100644 index 000000000000..e78d34d96c72 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/integer_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # IntegerIndexType (OpenAPI enum). Allowed values: "integer". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias IntegerIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_empty_condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_empty_condition.cr new file mode 100644 index 000000000000..f8e91f4777f9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_empty_condition.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Select points with empty payload for a specified field + class IsEmptyCondition + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "is_empty", emit_null: false)] + property is_empty : PayloadField + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@is_empty : PayloadField) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(is_empty) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_null_condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_null_condition.cr new file mode 100644 index 000000000000..21b2dbabd195 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/is_null_condition.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Select points with null payload for a specified field + class IsNullCondition + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "is_null", emit_null: false)] + property is_null : PayloadField + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@is_null : PayloadField) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(is_null) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_params.cr new file mode 100644 index 000000000000..2efe90e9a3c8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_params.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class KeywordIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : KeywordIndexType + + # Optional properties + # If true - used for tenant optimization. Default: false. + @[JSON::Field(key: "is_tenant", emit_null: false)] + property is_tenant : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : KeywordIndexType, @is_tenant : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, is_tenant, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_type.cr new file mode 100644 index 000000000000..6b2ac91ddad9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/keyword_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # KeywordIndexType (OpenAPI enum). Allowed values: "keyword". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias KeywordIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/list_snapshots200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/list_snapshots200_response.cr new file mode 100644 index 000000000000..bdbe5a4c2035 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/list_snapshots200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ListSnapshots200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(SnapshotDescription)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(SnapshotDescription)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_info.cr new file mode 100644 index 000000000000..3c2c8606a21b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_info.cr @@ -0,0 +1,63 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class LocalShardInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Local shard id + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + # Number of points in the shard + @[JSON::Field(key: "points_count", emit_null: false)] + property points_count : Int32 + + @[JSON::Field(key: "state", emit_null: false)] + property state : ReplicaState + + # Optional properties + # User-defined sharding key + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey? + + validates(shard_id, Int32, false, minimum: 0) + validates(points_count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @points_count : Int32, @state : ReplicaState, @shard_key : ShardKey? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = points_count_validation_error(@points_count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, shard_key, points_count, state) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_telemetry.cr new file mode 100644 index 000000000000..613a9f4d906c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/local_shard_telemetry.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class LocalShardTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Total number of optimized points since the last start. + @[JSON::Field(key: "total_optimized_points", emit_null: false)] + property total_optimized_points : Int32 + + @[JSON::Field(key: "segments", emit_null: false)] + property segments : Array(SegmentTelemetry) + + @[JSON::Field(key: "optimizations", emit_null: false)] + property optimizations : OptimizerTelemetry + + # Optional properties + @[JSON::Field(key: "variant_name", emit_null: false)] + property variant_name : String? + + @[JSON::Field(key: "status", emit_null: false)] + property status : ShardStatus? + + validates(total_optimized_points, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@total_optimized_points : Int32, @segments : Array(SegmentTelemetry), @optimizations : OptimizerTelemetry, @variant_name : String? = nil, @status : ShardStatus? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = total_optimized_points_validation_error(@total_optimized_points)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(variant_name, status, total_optimized_points, segments, optimizations) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/locks_option.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/locks_option.cr new file mode 100644 index 000000000000..bc2f879f03b2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/locks_option.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class LocksOption + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "write", emit_null: false)] + property write : Bool + + # Optional properties + @[JSON::Field(key: "error_message", emit_null: false)] + property error_message : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@write : Bool, @error_message : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(error_message, write) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/lookup_location.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/lookup_location.cr new file mode 100644 index 000000000000..df6430aece9a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/lookup_location.cr @@ -0,0 +1,53 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Defines a location to use for looking up the vector. Specifies collection and vector field name. + class LookupLocation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Name of the collection used for lookup + @[JSON::Field(key: "collection", emit_null: false)] + property collection : String + + # Optional properties + # Optional name of the vector field within the collection. If not provided, the default vector field will be used. + @[JSON::Field(key: "vector", emit_null: false)] + property vector : String? + + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@collection : String, @vector : String? = nil, @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(collection, vector, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/match.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match.cr new file mode 100644 index 000000000000..da603ec15f2d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match.cr @@ -0,0 +1,91 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Match filter request + # Match (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class Match + getter value + + def initialize(@value : MatchAny) + end + def initialize(@value : MatchExcept) + end + def initialize(@value : MatchText) + end + def initialize(@value : MatchValue) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + MatchAny, MatchExcept, MatchText, MatchValue + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(MatchAny.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchExcept.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchText.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchValue.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in Match (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(MatchAny.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchExcept.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchText.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(MatchValue.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in Match (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_any.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_any.cr new file mode 100644 index 000000000000..c705fe1338c9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_any.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Exact match on any of the given values + class MatchAny + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "any", emit_null: false)] + property any : AnyVariants + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@any : AnyVariants) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(any) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_except.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_except.cr new file mode 100644 index 000000000000..43fd1baeb1f7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_except.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Should have at least one value not matching the any given values + class MatchExcept + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "except", emit_null: false)] + property except : AnyVariants + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@except : AnyVariants) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(except) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_text.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_text.cr new file mode 100644 index 000000000000..3892200a3c2f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_text.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Full-text match of the strings. + class MatchText + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "text", emit_null: false)] + property text : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@text : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(text) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_value.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_value.cr new file mode 100644 index 000000000000..f2d74a8f12a3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/match_value.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Exact match of the given value + class MatchValue + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "value", emit_null: false)] + property value : ValueVariants + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@value : ValueVariants) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(value) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/message_send_errors.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/message_send_errors.cr new file mode 100644 index 000000000000..7fd0473c67ae --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/message_send_errors.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Message send failures for a particular peer + class MessageSendErrors + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "count", emit_null: false)] + property count : Int32 + + # Optional properties + @[JSON::Field(key: "latest_error", emit_null: false)] + property latest_error : String? + + # Timestamp of the latest error + @[JSON::Field(key: "latest_error_timestamp", emit_null: false)] + property latest_error_timestamp : Time? + + validates(count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@count : Int32, @latest_error : String? = nil, @latest_error_timestamp : Time? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = count_validation_error(@count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(count, latest_error, latest_error_timestamp) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/min_should.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/min_should.cr new file mode 100644 index 000000000000..647c442c8a02 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/min_should.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class MinShould + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "conditions", emit_null: false)] + property conditions : Array(Condition) + + @[JSON::Field(key: "min_count", emit_null: false)] + property min_count : Int32 + + validates(min_count, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@conditions : Array(Condition), @min_count : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = min_count_validation_error(@min_count)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(conditions, min_count) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/modifier.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/modifier.cr new file mode 100644 index 000000000000..137f3c219967 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/modifier.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Modifier (OpenAPI enum). Allowed values: "none", "idf". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Modifier = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard.cr new file mode 100644 index 000000000000..da4f543ec2e0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard.cr @@ -0,0 +1,65 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class MoveShard + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "to_peer_id", emit_null: false)] + property to_peer_id : Int32 + + @[JSON::Field(key: "from_peer_id", emit_null: false)] + property from_peer_id : Int32 + + # Optional properties + # Method for transferring the shard from one node to another + @[JSON::Field(key: "method", emit_null: false)] + property method : ShardTransferMethod? + + validates(shard_id, Int32, false, minimum: 0) + validates(to_peer_id, Int32, false, minimum: 0) + validates(from_peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @to_peer_id : Int32, @from_peer_id : Int32, @method : ShardTransferMethod? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = to_peer_id_validation_error(@to_peer_id)) + invalid_properties.push(msg) + end + if (msg = from_peer_id_validation_error(@from_peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, to_peer_id, from_peer_id, method) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard_operation.cr new file mode 100644 index 000000000000..963c7d978084 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/move_shard_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class MoveShardOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "move_shard", emit_null: false)] + property move_shard : MoveShard + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@move_shard : MoveShard) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(move_shard) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_comparator.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_comparator.cr new file mode 100644 index 000000000000..8392f3ca1d63 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_comparator.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # MultiVectorComparator (OpenAPI enum). Allowed values: "max_sim". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias MultiVectorComparator = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_config.cr new file mode 100644 index 000000000000..3c117ac4c9fc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/multi_vector_config.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class MultiVectorConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "comparator", emit_null: false)] + property comparator : MultiVectorComparator + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@comparator : MultiVectorComparator) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(comparator) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_sparse_vector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_sparse_vector.cr new file mode 100644 index 000000000000..af4c6776670f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_sparse_vector.cr @@ -0,0 +1,47 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Sparse vector data with name + class NamedSparseVector + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Name of vector data + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + @[JSON::Field(key: "vector", emit_null: false)] + property vector : SparseVector + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String, @vector : SparseVector) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, vector) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector.cr new file mode 100644 index 000000000000..48dda76994ec --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector.cr @@ -0,0 +1,48 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Dense vector data with name + class NamedVector + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Name of vector data + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + # Vector data + @[JSON::Field(key: "vector", emit_null: false)] + property vector : Array(Float32) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String, @vector : Array(Float32)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, vector) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector_struct.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector_struct.cr new file mode 100644 index 000000000000..6bafc9e7064e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/named_vector_struct.cr @@ -0,0 +1,81 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Vector data separator for named and unnamed modes Unnamed mode: { \"vector\": [1.0, 2.0, 3.0] } or named mode: { \"vector\": { \"vector\": [1.0, 2.0, 3.0], \"name\": \"image-embeddings\" } } + # NamedVectorStruct (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class NamedVectorStruct + getter value + + def initialize(@value : Array(Float32)) + end + def initialize(@value : NamedSparseVector) + end + def initialize(@value : NamedVector) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Float32), NamedSparseVector, NamedVector + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Float32).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(NamedSparseVector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(NamedVector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in NamedVectorStruct (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Float32).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(NamedSparseVector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(NamedVector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in NamedVectorStruct (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/nearest_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nearest_query.cr new file mode 100644 index 000000000000..ec1614b28b18 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nearest_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class NearestQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "nearest", emit_null: false)] + property nearest : VectorInput + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@nearest : VectorInput) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(nearest) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested.cr new file mode 100644 index 000000000000..853980c01a37 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Select points with payload for a specified nested field + class Nested + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "key", emit_null: false)] + property key : String + + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@key : String, @filter : Filter) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(key, filter) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested_condition.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested_condition.cr new file mode 100644 index 000000000000..0e38cf71188a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/nested_condition.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class NestedCondition + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "nested", emit_null: false)] + property nested : Nested + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@nested : Nested) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(nested) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/operation_duration_statistics.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/operation_duration_statistics.cr new file mode 100644 index 000000000000..1c52d4d7b110 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/operation_duration_statistics.cr @@ -0,0 +1,77 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OperationDurationStatistics + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "count", emit_null: false)] + property count : Int32 + + # The total duration of all operations in microseconds. + @[JSON::Field(key: "total_duration_micros", emit_null: false)] + property total_duration_micros : Int32 + + # Optional properties + @[JSON::Field(key: "fail_count", emit_null: false)] + property fail_count : Int32? + + # The average time taken by 128 latest operations, calculated as a weighted mean. + @[JSON::Field(key: "avg_duration_micros", emit_null: false)] + property avg_duration_micros : Float32? + + # The minimum duration of the operations across all the measurements. + @[JSON::Field(key: "min_duration_micros", emit_null: false)] + property min_duration_micros : Float32? + + # The maximum duration of the operations across all the measurements. + @[JSON::Field(key: "max_duration_micros", emit_null: false)] + property max_duration_micros : Float32? + + @[JSON::Field(key: "last_responded", emit_null: false)] + property last_responded : Time? + + validates(count, Int32, false, minimum: 0) + validates(fail_count, Int32, true, minimum: 0) + validates(total_duration_micros, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@count : Int32, @total_duration_micros : Int32, @fail_count : Int32? = nil, @avg_duration_micros : Float32? = nil, @min_duration_micros : Float32? = nil, @max_duration_micros : Float32? = nil, @last_responded : Time? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = count_validation_error(@count)) + invalid_properties.push(msg) + end + if (msg = fail_count_validation_error(@fail_count)) + invalid_properties.push(msg) + end + if (msg = total_duration_micros_validation_error(@total_duration_micros)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(count, fail_count, avg_duration_micros, min_duration_micros, max_duration_micros, total_duration_micros, last_responded) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizer_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizer_telemetry.cr new file mode 100644 index 000000000000..70b024f6c2d2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizer_telemetry.cr @@ -0,0 +1,48 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OptimizerTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "status", emit_null: false)] + property status : OptimizersStatus + + @[JSON::Field(key: "optimizations", emit_null: false)] + property optimizations : OperationDurationStatistics + + @[JSON::Field(key: "log", emit_null: false)] + property log : Array(TrackerTelemetry) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@status : OptimizersStatus, @optimizations : OperationDurationStatistics, @log : Array(TrackerTelemetry)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(status, optimizations, log) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config.cr new file mode 100644 index 000000000000..4de2f6b14e7e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config.cr @@ -0,0 +1,104 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OptimizersConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # The minimal fraction of deleted vectors in a segment, required to perform segment optimization + @[JSON::Field(key: "deleted_threshold", emit_null: false)] + property deleted_threshold : Float64 + + # The minimal number of vectors in a segment, required to perform segment optimization + @[JSON::Field(key: "vacuum_min_vector_number", emit_null: false)] + property vacuum_min_vector_number : Int32 + + # Target amount of segments optimizer will try to keep. Real amount of segments may vary depending on multiple parameters: - Amount of stored points - Current write RPS It is recommended to select default number of segments as a factor of the number of search threads, so that each segment would be handled evenly by one of the threads. If `default_segment_number = 0`, will be automatically selected by the number of available CPUs. + @[JSON::Field(key: "default_segment_number", emit_null: false)] + property default_segment_number : Int32 + + # Minimum interval between forced flushes. + @[JSON::Field(key: "flush_interval_sec", emit_null: false)] + property flush_interval_sec : Int32 + + # Optional properties + # Do not create segments larger this size (in kilobytes). Large segments might require disproportionately long indexation times, therefore it makes sense to limit the size of segments. If indexing speed is more important - make this parameter lower. If search speed is more important - make this parameter higher. Note: 1Kb = 1 vector of size 256 If not set, will be automatically selected considering the number of available CPUs. + @[JSON::Field(key: "max_segment_size", emit_null: false)] + property max_segment_size : Int32? + + # Maximum size (in kilobytes) of vectors to store in-memory per segment. Segments larger than this threshold will be stored as read-only memmaped file. Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value. To disable memmap storage, set this to `0`. Internally it will use the largest threshold possible. Note: 1Kb = 1 vector of size 256 + @[JSON::Field(key: "memmap_threshold", emit_null: false)] + property memmap_threshold : Int32? + + # Maximum size (in kilobytes) of vectors allowed for plain index, exceeding this threshold will enable vector indexing Default value is 20,000, based on . To disable vector indexing, set to `0`. Note: 1kB = 1 vector of size 256. + @[JSON::Field(key: "indexing_threshold", emit_null: false)] + property indexing_threshold : Int32? + + # Max number of threads (jobs) for running optimizations per shard. Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. If null - have no limit and choose dynamically to saturate CPU. If 0 - no optimization threads, optimizations will be disabled. + @[JSON::Field(key: "max_optimization_threads", emit_null: false)] + property max_optimization_threads : Int32? + + validates(deleted_threshold, Float64, false, maximum: 1, minimum: 0) + validates(vacuum_min_vector_number, Int32, false, minimum: 100) + validates(default_segment_number, Int32, false, minimum: 0) + validates(max_segment_size, Int32, true, minimum: 0) + validates(memmap_threshold, Int32, true, minimum: 0) + validates(indexing_threshold, Int32, true, minimum: 0) + validates(flush_interval_sec, Int32, false, minimum: 0) + validates(max_optimization_threads, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@deleted_threshold : Float64, @vacuum_min_vector_number : Int32, @default_segment_number : Int32, @flush_interval_sec : Int32, @max_segment_size : Int32? = nil, @memmap_threshold : Int32? = nil, @indexing_threshold : Int32? = nil, @max_optimization_threads : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = deleted_threshold_validation_error(@deleted_threshold)) + invalid_properties.push(msg) + end + if (msg = vacuum_min_vector_number_validation_error(@vacuum_min_vector_number)) + invalid_properties.push(msg) + end + if (msg = default_segment_number_validation_error(@default_segment_number)) + invalid_properties.push(msg) + end + if (msg = max_segment_size_validation_error(@max_segment_size)) + invalid_properties.push(msg) + end + if (msg = memmap_threshold_validation_error(@memmap_threshold)) + invalid_properties.push(msg) + end + if (msg = indexing_threshold_validation_error(@indexing_threshold)) + invalid_properties.push(msg) + end + if (msg = flush_interval_sec_validation_error(@flush_interval_sec)) + invalid_properties.push(msg) + end + if (msg = max_optimization_threads_validation_error(@max_optimization_threads)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(deleted_threshold, vacuum_min_vector_number, default_segment_number, max_segment_size, memmap_threshold, indexing_threshold, flush_interval_sec, max_optimization_threads) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config_diff.cr new file mode 100644 index 000000000000..76a2f8ba971f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_config_diff.cr @@ -0,0 +1,99 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OptimizersConfigDiff + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # The minimal fraction of deleted vectors in a segment, required to perform segment optimization + @[JSON::Field(key: "deleted_threshold", emit_null: false)] + property deleted_threshold : Float64? + + # The minimal number of vectors in a segment, required to perform segment optimization + @[JSON::Field(key: "vacuum_min_vector_number", emit_null: false)] + property vacuum_min_vector_number : Int32? + + # Target amount of segments optimizer will try to keep. Real amount of segments may vary depending on multiple parameters: - Amount of stored points - Current write RPS It is recommended to select default number of segments as a factor of the number of search threads, so that each segment would be handled evenly by one of the threads If `default_segment_number = 0`, will be automatically selected by the number of available CPUs + @[JSON::Field(key: "default_segment_number", emit_null: false)] + property default_segment_number : Int32? + + # Do not create segments larger this size (in kilobytes). Large segments might require disproportionately long indexation times, therefore it makes sense to limit the size of segments. If indexation speed have more priority for your - make this parameter lower. If search speed is more important - make this parameter higher. Note: 1Kb = 1 vector of size 256 + @[JSON::Field(key: "max_segment_size", emit_null: false)] + property max_segment_size : Int32? + + # Maximum size (in kilobytes) of vectors to store in-memory per segment. Segments larger than this threshold will be stored as read-only memmaped file. Memmap storage is disabled by default, to enable it, set this threshold to a reasonable value. To disable memmap storage, set this to `0`. Note: 1Kb = 1 vector of size 256 + @[JSON::Field(key: "memmap_threshold", emit_null: false)] + property memmap_threshold : Int32? + + # Maximum size (in kilobytes) of vectors allowed for plain index, exceeding this threshold will enable vector indexing Default value is 20,000, based on . To disable vector indexing, set to `0`. Note: 1kB = 1 vector of size 256. + @[JSON::Field(key: "indexing_threshold", emit_null: false)] + property indexing_threshold : Int32? + + # Minimum interval between forced flushes. + @[JSON::Field(key: "flush_interval_sec", emit_null: false)] + property flush_interval_sec : Int32? + + # Max number of threads (jobs) for running optimizations per shard. Note: each optimization job will also use `max_indexing_threads` threads by itself for index building. If null - have no limit and choose dynamically to saturate CPU. If 0 - no optimization threads, optimizations will be disabled. + @[JSON::Field(key: "max_optimization_threads", emit_null: false)] + property max_optimization_threads : Int32? + + validates(vacuum_min_vector_number, Int32, true, minimum: 0) + validates(default_segment_number, Int32, true, minimum: 0) + validates(max_segment_size, Int32, true, minimum: 0) + validates(memmap_threshold, Int32, true, minimum: 0) + validates(indexing_threshold, Int32, true, minimum: 0) + validates(flush_interval_sec, Int32, true, minimum: 0) + validates(max_optimization_threads, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@deleted_threshold : Float64? = nil, @vacuum_min_vector_number : Int32? = nil, @default_segment_number : Int32? = nil, @max_segment_size : Int32? = nil, @memmap_threshold : Int32? = nil, @indexing_threshold : Int32? = nil, @flush_interval_sec : Int32? = nil, @max_optimization_threads : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = vacuum_min_vector_number_validation_error(@vacuum_min_vector_number)) + invalid_properties.push(msg) + end + if (msg = default_segment_number_validation_error(@default_segment_number)) + invalid_properties.push(msg) + end + if (msg = max_segment_size_validation_error(@max_segment_size)) + invalid_properties.push(msg) + end + if (msg = memmap_threshold_validation_error(@memmap_threshold)) + invalid_properties.push(msg) + end + if (msg = indexing_threshold_validation_error(@indexing_threshold)) + invalid_properties.push(msg) + end + if (msg = flush_interval_sec_validation_error(@flush_interval_sec)) + invalid_properties.push(msg) + end + if (msg = max_optimization_threads_validation_error(@max_optimization_threads)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(deleted_threshold, vacuum_min_vector_number, default_segment_number, max_segment_size, memmap_threshold, indexing_threshold, flush_interval_sec, max_optimization_threads) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status.cr new file mode 100644 index 000000000000..aa75c566793c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Current state of the collection + # OptimizersStatus (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class OptimizersStatus + getter value + + def initialize(@value : OptimizersStatusOneOf) + end + def initialize(@value : String) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + OptimizersStatusOneOf, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(OptimizersStatusOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in OptimizersStatus (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(OptimizersStatusOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in OptimizersStatus (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status_one_of.cr new file mode 100644 index 000000000000..9a94ebb7db2c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/optimizers_status_one_of.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Something wrong happened with optimizers + class OptimizersStatusOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "error", emit_null: false)] + property error : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@error : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(error) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by.cr new file mode 100644 index 000000000000..46031c8dc31d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OrderBy + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload key to order by + @[JSON::Field(key: "key", emit_null: false)] + property key : String + + # Optional properties + # Direction of ordering: `asc` or `desc`. Default is ascending. + @[JSON::Field(key: "direction", emit_null: false)] + property direction : Direction? + + # Which payload value to start scrolling from. Default is the lowest value for `asc` and the highest for `desc` + @[JSON::Field(key: "start_from", emit_null: false)] + property start_from : StartFrom? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@key : String, @direction : Direction? = nil, @start_from : StartFrom? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(key, direction, start_from) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_interface.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_interface.cr new file mode 100644 index 000000000000..e830dd54ad33 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_interface.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # OrderByInterface (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class OrderByInterface + getter value + + def initialize(@value : OrderBy) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + OrderBy, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(OrderBy.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in OrderByInterface (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(OrderBy.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in OrderByInterface (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_query.cr new file mode 100644 index 000000000000..4bab6664caa8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_by_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OrderByQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "order_by", emit_null: false)] + property order_by : OrderByInterface + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@order_by : OrderByInterface) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(order_by) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_value.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_value.cr new file mode 100644 index 000000000000..d1cddaedcdf9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/order_value.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # OrderValue (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class OrderValue + getter value + + def initialize(@value : Float64) + end + def initialize(@value : Int64) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Float64, Int64 + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Float64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in OrderValue (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Float64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in OrderValue (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/overwrite_payload_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/overwrite_payload_operation.cr new file mode 100644 index 000000000000..77f17f06d36a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/overwrite_payload_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class OverwritePayloadOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "overwrite_payload", emit_null: false)] + property overwrite_payload : SetPayload + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@overwrite_payload : SetPayload) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(overwrite_payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/p2p_config_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/p2p_config_telemetry.cr new file mode 100644 index 000000000000..2b132d1ad1fc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/p2p_config_telemetry.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class P2pConfigTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "connection_pool_size", emit_null: false)] + property connection_pool_size : Int32 + + validates(connection_pool_size, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@connection_pool_size : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = connection_pool_size_validation_error(@connection_pool_size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(connection_pool_size) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field.cr new file mode 100644 index 000000000000..47bfc2b38cec --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field.cr @@ -0,0 +1,44 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Payload field + class PayloadField + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload field name + @[JSON::Field(key: "key", emit_null: false)] + property key : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@key : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field_schema.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field_schema.cr new file mode 100644 index 000000000000..44a5890e46e8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_field_schema.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # PayloadFieldSchema (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class PayloadFieldSchema + getter value + + def initialize(@value : PayloadSchemaParams) + end + def initialize(@value : PayloadSchemaType) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + PayloadSchemaParams, PayloadSchemaType + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(PayloadSchemaParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSchemaType.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PayloadFieldSchema (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(PayloadSchemaParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSchemaType.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PayloadFieldSchema (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_info.cr new file mode 100644 index 000000000000..3b404ae21b5d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_info.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Display payload field type & index information + class PayloadIndexInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "data_type", emit_null: false)] + property data_type : PayloadSchemaType + + # Number of points indexed with this index + @[JSON::Field(key: "points", emit_null: false)] + property points : Int32 + + # Optional properties + @[JSON::Field(key: "params", emit_null: false)] + property params : PayloadSchemaParams? + + validates(points, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@data_type : PayloadSchemaType, @points : Int32, @params : PayloadSchemaParams? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = points_validation_error(@points)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(data_type, params, points) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_telemetry.cr new file mode 100644 index 000000000000..cc832c63d22f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_index_telemetry.cr @@ -0,0 +1,64 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PayloadIndexTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "points_values_count", emit_null: false)] + property points_values_count : Int32 + + @[JSON::Field(key: "points_count", emit_null: false)] + property points_count : Int32 + + # Optional properties + @[JSON::Field(key: "field_name", emit_null: false)] + property field_name : String? + + @[JSON::Field(key: "histogram_bucket_size", emit_null: false)] + property histogram_bucket_size : Int32? + + validates(points_values_count, Int32, false, minimum: 0) + validates(points_count, Int32, false, minimum: 0) + validates(histogram_bucket_size, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points_values_count : Int32, @points_count : Int32, @field_name : String? = nil, @histogram_bucket_size : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = points_values_count_validation_error(@points_values_count)) + invalid_properties.push(msg) + end + if (msg = points_count_validation_error(@points_count)) + invalid_properties.push(msg) + end + if (msg = histogram_bucket_size_validation_error(@histogram_bucket_size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(field_name, points_values_count, points_count, histogram_bucket_size) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_params.cr new file mode 100644 index 000000000000..2f17ac2abe23 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_params.cr @@ -0,0 +1,131 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Payload type with parameters + # PayloadSchemaParams (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class PayloadSchemaParams + getter value + + def initialize(@value : BoolIndexParams) + end + def initialize(@value : DatetimeIndexParams) + end + def initialize(@value : FloatIndexParams) + end + def initialize(@value : GeoIndexParams) + end + def initialize(@value : IntegerIndexParams) + end + def initialize(@value : KeywordIndexParams) + end + def initialize(@value : TextIndexParams) + end + def initialize(@value : UuidIndexParams) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + BoolIndexParams, DatetimeIndexParams, FloatIndexParams, GeoIndexParams, IntegerIndexParams, KeywordIndexParams, TextIndexParams, UuidIndexParams + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(BoolIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DatetimeIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(FloatIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(GeoIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(IntegerIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(KeywordIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(TextIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(UuidIndexParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PayloadSchemaParams (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(BoolIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DatetimeIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(FloatIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(GeoIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(IntegerIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(KeywordIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(TextIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(UuidIndexParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PayloadSchemaParams (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_type.cr new file mode 100644 index 000000000000..08c02c6c74b4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_schema_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # PayloadSchemaType (OpenAPI enum). Allowed values: "keyword", "integer", "float", "geo", "text", "bool", "datetime", "uuid". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias PayloadSchemaType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector.cr new file mode 100644 index 000000000000..b14a820397c2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Specifies how to treat payload selector + # PayloadSelector (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class PayloadSelector + getter value + + def initialize(@value : PayloadSelectorExclude) + end + def initialize(@value : PayloadSelectorInclude) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + PayloadSelectorExclude, PayloadSelectorInclude + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(PayloadSelectorExclude.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSelectorInclude.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PayloadSelector (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(PayloadSelectorExclude.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSelectorInclude.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PayloadSelector (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_exclude.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_exclude.cr new file mode 100644 index 000000000000..06fcdee8b614 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_exclude.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PayloadSelectorExclude + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Exclude this fields from returning payload + @[JSON::Field(key: "exclude", emit_null: false)] + property exclude : Array(String) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@exclude : Array(String)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(exclude) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_include.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_include.cr new file mode 100644 index 000000000000..432f081e5a1b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_selector_include.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PayloadSelectorInclude + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Only include this payload keys + @[JSON::Field(key: "include", emit_null: false)] + property _include : Array(String) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_include : Array(String)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_include) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type.cr new file mode 100644 index 000000000000..789a13a707a5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Type of payload storage + # PayloadStorageType (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class PayloadStorageType + getter value + + def initialize(@value : PayloadStorageTypeOneOf) + end + def initialize(@value : PayloadStorageTypeOneOf1) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + PayloadStorageTypeOneOf, PayloadStorageTypeOneOf1 + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(PayloadStorageTypeOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadStorageTypeOneOf1.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PayloadStorageType (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(PayloadStorageTypeOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadStorageTypeOneOf1.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PayloadStorageType (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of.cr new file mode 100644 index 000000000000..932220e88631 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PayloadStorageTypeOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : String + + validates(_type, String, false, enum: ["in_memory"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = _type_validation_error(@_type)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of1.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of1.cr new file mode 100644 index 000000000000..e8de199fc989 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/payload_storage_type_one_of1.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PayloadStorageTypeOneOf1 + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : String + + validates(_type, String, false, enum: ["on_disk"]) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = _type_validation_error(@_type)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/peer_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/peer_info.cr new file mode 100644 index 000000000000..57a0f1d5366e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/peer_info.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Information of a peer in the cluster + class PeerInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "uri", emit_null: false)] + property uri : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@uri : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(uri) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_group.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_group.cr new file mode 100644 index 000000000000..bb30a6d96487 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_group.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointGroup + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Scored points that have the same value of the group_by key + @[JSON::Field(key: "hits", emit_null: false)] + property hits : Array(ScoredPoint) + + @[JSON::Field(key: "id", emit_null: false)] + property id : GroupId + + # Optional properties + # Record that has been looked up using the group id + @[JSON::Field(key: "lookup", emit_null: false)] + property lookup : Record? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@hits : Array(ScoredPoint), @id : GroupId, @lookup : Record? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(hits, id, lookup) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_ids_list.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_ids_list.cr new file mode 100644 index 000000000000..bd0223416c1c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_ids_list.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointIdsList + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(ExtendedPointId) + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(ExtendedPointId), @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_insert_operations.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_insert_operations.cr new file mode 100644 index 000000000000..8eaab4af4e00 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_insert_operations.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # PointInsertOperations (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class PointInsertOperations + getter value + + def initialize(@value : PointsBatch) + end + def initialize(@value : PointsList) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + PointsBatch, PointsList + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(PointsBatch.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PointsList.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PointInsertOperations (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(PointsBatch.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PointsList.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PointInsertOperations (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_request.cr new file mode 100644 index 000000000000..deacdb0a4afa --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_request.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Look for points with ids + @[JSON::Field(key: "ids", emit_null: false)] + property ids : Array(ExtendedPointId) + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Select which payload to return with the response. Default is true. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@ids : Array(ExtendedPointId), @shard_key : ShardKeySelector? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, ids, with_payload, with_vector) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_struct.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_struct.cr new file mode 100644 index 000000000000..d86d11f6bff6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_struct.cr @@ -0,0 +1,50 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointStruct + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : ExtendedPointId + + @[JSON::Field(key: "vector", emit_null: false)] + property vector : VectorStruct + + # Optional properties + # Payload values (optional) + @[JSON::Field(key: "payload", emit_null: false)] + property payload : Hash(String, JSON::Any)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : ExtendedPointId, @vector : VectorStruct, @payload : Hash(String, JSON::Any)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, vector, payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_vectors.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_vectors.cr new file mode 100644 index 000000000000..a27dbdab6aa7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/point_vectors.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointVectors + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : ExtendedPointId + + @[JSON::Field(key: "vector", emit_null: false)] + property vector : VectorStruct + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : ExtendedPointId, @vector : VectorStruct) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, vector) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_batch.cr new file mode 100644 index 000000000000..60705f7d8c4a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_batch.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointsBatch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "batch", emit_null: false)] + property batch : Batch + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@batch : Batch, @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(batch, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_list.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_list.cr new file mode 100644 index 000000000000..44681135622d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_list.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class PointsList + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(PointStruct) + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(PointStruct), @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_selector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_selector.cr new file mode 100644 index 000000000000..491f30a14d9a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/points_selector.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # PointsSelector (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class PointsSelector + getter value + + def initialize(@value : FilterSelector) + end + def initialize(@value : PointIdsList) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + FilterSelector, PointIdsList + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(FilterSelector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PointIdsList.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in PointsSelector (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(FilterSelector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PointIdsList.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in PointsSelector (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/prefetch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/prefetch.cr new file mode 100644 index 000000000000..8168f8c75a13 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/prefetch.cr @@ -0,0 +1,74 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Prefetch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "prefetch", emit_null: false)] + property prefetch : QueryRequestPrefetch? + + # Query to perform. If missing without prefetches, returns points ordered by their IDs. + @[JSON::Field(key: "query", emit_null: false)] + property query : QueryInterface? + + # Define which vector name to use for querying. If missing, the default vector is used. + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # Filter conditions - return only those points that satisfy the specified conditions. + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Search params for when there is no prefetch + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Return points with scores better than this threshold. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Max number of points to return. Default is 10. + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + validates(limit, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@prefetch : QueryRequestPrefetch? = nil, @query : QueryInterface? = nil, @using : String? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @score_threshold : Float32? = nil, @limit : Int32? = nil, @lookup_from : LookupLocation? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(prefetch, query, using, filter, params, score_threshold, limit, lookup_from) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization.cr new file mode 100644 index 000000000000..fcf1763efba9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ProductQuantization + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "product", emit_null: false)] + property product : ProductQuantizationConfig + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@product : ProductQuantizationConfig) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(product) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization_config.cr new file mode 100644 index 000000000000..63330c0262ad --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/product_quantization_config.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ProductQuantizationConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "compression", emit_null: false)] + property compression : CompressionRatio + + # Optional properties + @[JSON::Field(key: "always_ram", emit_null: false)] + property always_ram : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@compression : CompressionRatio, @always_ram : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(compression, always_ram) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config.cr new file mode 100644 index 000000000000..38b8c320f59b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # QuantizationConfig (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class QuantizationConfig + getter value + + def initialize(@value : BinaryQuantization) + end + def initialize(@value : ProductQuantization) + end + def initialize(@value : ScalarQuantization) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + BinaryQuantization, ProductQuantization, ScalarQuantization + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(BinaryQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ProductQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ScalarQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in QuantizationConfig (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(BinaryQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ProductQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ScalarQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in QuantizationConfig (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config_diff.cr new file mode 100644 index 000000000000..ea3caabdc79c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_config_diff.cr @@ -0,0 +1,90 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # QuantizationConfigDiff (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class QuantizationConfigDiff + getter value + + def initialize(@value : BinaryQuantization) + end + def initialize(@value : Disabled) + end + def initialize(@value : ProductQuantization) + end + def initialize(@value : ScalarQuantization) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + BinaryQuantization, Disabled, ProductQuantization, ScalarQuantization + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(BinaryQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Disabled.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ProductQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ScalarQuantization.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in QuantizationConfigDiff (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(BinaryQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Disabled.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ProductQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ScalarQuantization.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in QuantizationConfigDiff (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_search_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_search_params.cr new file mode 100644 index 000000000000..77aaeead47cf --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/quantization_search_params.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Additional parameters of the search + class QuantizationSearchParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # If true, quantized vectors are ignored. Default is false. + @[JSON::Field(key: "ignore", emit_null: false)] + property ignore : Bool? = false + + # If true, use original vectors to re-score top-k results. Might require more time in case if original vectors are stored on disk. If not set, qdrant decides automatically apply rescoring or not. + @[JSON::Field(key: "rescore", emit_null: false)] + property rescore : Bool? + + # Oversampling factor for quantization. Default is 1.0. Defines how many extra vectors should be pre-selected using quantized index, and then re-scored using original vectors. For example, if `oversampling` is 2.4 and `limit` is 100, then 240 vectors will be pre-selected using quantized index, and then top-100 will be returned after re-scoring. + @[JSON::Field(key: "oversampling", emit_null: false)] + property oversampling : Float64? + + validates(oversampling, Float64, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@ignore : Bool? = false, @rescore : Bool? = nil, @oversampling : Float64? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = oversampling_validation_error(@oversampling)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(ignore, rescore, oversampling) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query.cr new file mode 100644 index 000000000000..ee99cad330f4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query.cr @@ -0,0 +1,120 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Query (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class Query + getter value + + def initialize(@value : ContextQuery) + end + def initialize(@value : DiscoverQuery) + end + def initialize(@value : FusionQuery) + end + def initialize(@value : NearestQuery) + end + def initialize(@value : OrderByQuery) + end + def initialize(@value : RecommendQuery) + end + def initialize(@value : SampleQuery) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + ContextQuery, DiscoverQuery, FusionQuery, NearestQuery, OrderByQuery, RecommendQuery, SampleQuery + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(ContextQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DiscoverQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(FusionQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(NearestQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(OrderByQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(RecommendQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(SampleQuery.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in Query (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(ContextQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DiscoverQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(FusionQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(NearestQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(OrderByQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(RecommendQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(SampleQuery.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in Query (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_batch_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_batch_points200_response.cr new file mode 100644 index 000000000000..678f21d41517 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_batch_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryBatchPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(QueryResponse)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(QueryResponse)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_groups_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_groups_request.cr new file mode 100644 index 000000000000..9ddeec451ec4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_groups_request.cr @@ -0,0 +1,106 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryGroupsRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups. + @[JSON::Field(key: "group_by", emit_null: false)] + property group_by : String + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + @[JSON::Field(key: "prefetch", emit_null: false)] + property prefetch : QueryRequestPrefetch? + + # Query to perform. If missing without prefetches, returns points ordered by their IDs. + @[JSON::Field(key: "query", emit_null: false)] + property query : QueryInterface? + + # Define which vector name to use for querying. If missing, the default vector is used. + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # Filter conditions - return only those points that satisfy the specified conditions. + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Search params for when there is no prefetch + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Return points with scores better than this threshold. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Options for specifying which vectors to include into the response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Options for specifying which payload to include or not. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + # Maximum amount of points to return per group. Default is 3. + @[JSON::Field(key: "group_size", emit_null: false)] + property group_size : Int32? + + # Maximum amount of groups to return. Default is 10. + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # Look for points in another collection using the group ids + @[JSON::Field(key: "with_lookup", emit_null: false)] + property with_lookup : WithLookupInterface? + + validates(group_by, String, false, min_length: 1) + validates(group_size, Int32, true, minimum: 1) + validates(limit, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@group_by : String, @shard_key : ShardKeySelector? = nil, @prefetch : QueryRequestPrefetch? = nil, @query : QueryInterface? = nil, @using : String? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @score_threshold : Float32? = nil, @with_vector : WithVector? = nil, @with_payload : WithPayloadInterface? = nil, @lookup_from : LookupLocation? = nil, @group_size : Int32? = nil, @limit : Int32? = nil, @with_lookup : WithLookupInterface? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = group_by_validation_error(@group_by)) + invalid_properties.push(msg) + end + if (msg = group_size_validation_error(@group_size)) + invalid_properties.push(msg) + end + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, prefetch, query, using, filter, params, score_threshold, with_vector, with_payload, lookup_from, group_by, group_size, limit, with_lookup) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_interface.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_interface.cr new file mode 100644 index 000000000000..c7fd67e13068 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_interface.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # QueryInterface (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class QueryInterface + getter value + + def initialize(@value : Query) + end + def initialize(@value : VectorInput) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Query, VectorInput + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Query.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(VectorInput.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in QueryInterface (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Query.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(VectorInput.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in QueryInterface (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_points200_response.cr new file mode 100644 index 000000000000..b2918d37addf --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : QueryResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : QueryResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request.cr new file mode 100644 index 000000000000..603a98a9d9a1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request.cr @@ -0,0 +1,93 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + @[JSON::Field(key: "prefetch", emit_null: false)] + property prefetch : QueryRequestPrefetch? + + # Query to perform. If missing without prefetches, returns points ordered by their IDs. + @[JSON::Field(key: "query", emit_null: false)] + property query : QueryInterface? + + # Define which vector name to use for querying. If missing, the default vector is used. + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # Filter conditions - return only those points that satisfy the specified conditions. + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Search params for when there is no prefetch + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Return points with scores better than this threshold. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Max number of points to return. Default is 10. + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # Offset of the result. Skip this many points. Default is 0 + @[JSON::Field(key: "offset", emit_null: false)] + property offset : Int32? + + # Options for specifying which vectors to include into the response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Options for specifying which payload to include or not. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # The location to use for IDs lookup, if not specified - use the current collection and the 'using' vector Note: the other collection vectors should have the same vector size as the 'using' vector in the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + validates(limit, Int32, true, minimum: 1) + validates(offset, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKeySelector? = nil, @prefetch : QueryRequestPrefetch? = nil, @query : QueryInterface? = nil, @using : String? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @score_threshold : Float32? = nil, @limit : Int32? = nil, @offset : Int32? = nil, @with_vector : WithVector? = nil, @with_payload : WithPayloadInterface? = nil, @lookup_from : LookupLocation? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + if (msg = offset_validation_error(@offset)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, prefetch, query, using, filter, params, score_threshold, limit, offset, with_vector, with_payload, lookup_from) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_batch.cr new file mode 100644 index 000000000000..99d69f3a656b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_batch.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryRequestBatch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "searches", emit_null: false)] + property searches : Array(QueryRequest) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@searches : Array(QueryRequest)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(searches) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_prefetch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_prefetch.cr new file mode 100644 index 000000000000..f46361882c8a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_request_prefetch.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Sub-requests to perform first. If present, the query will be performed on the results of the prefetch(es). + # QueryRequestPrefetch (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class QueryRequestPrefetch + getter value + + def initialize(@value : Array(Prefetch)) + end + def initialize(@value : Prefetch) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Prefetch), Prefetch + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Prefetch).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Prefetch.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in QueryRequestPrefetch (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Prefetch).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Prefetch.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in QueryRequestPrefetch (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_response.cr new file mode 100644 index 000000000000..7f0c467d3b61 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/query_response.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class QueryResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(ScoredPoint) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(ScoredPoint)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/raft_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/raft_info.cr new file mode 100644 index 000000000000..7f1806dcab1d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/raft_info.cr @@ -0,0 +1,81 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Summary information about the current raft state + class RaftInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Raft divides time into terms of arbitrary length, each beginning with an election. If a candidate wins the election, it remains the leader for the rest of the term. The term number increases monotonically. Each server stores the current term number which is also exchanged in every communication. + @[JSON::Field(key: "term", emit_null: false)] + property term : Int32 + + # The index of the latest committed (finalized) operation that this peer is aware of. + @[JSON::Field(key: "commit", emit_null: false)] + property commit : Int32 + + # Number of consensus operations pending to be applied on this peer + @[JSON::Field(key: "pending_operations", emit_null: false)] + property pending_operations : Int32 + + # Is this peer a voter or a learner + @[JSON::Field(key: "is_voter", emit_null: false)] + property is_voter : Bool + + # Optional properties + # Leader of the current term + @[JSON::Field(key: "leader", emit_null: false)] + property leader : Int32? + + # Role of this peer in the current term + @[JSON::Field(key: "role", emit_null: false)] + property role : StateRole? + + validates(term, Int32, false, minimum: 0) + validates(commit, Int32, false, minimum: 0) + validates(pending_operations, Int32, false, minimum: 0) + validates(leader, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@term : Int32, @commit : Int32, @pending_operations : Int32, @is_voter : Bool, @leader : Int32? = nil, @role : StateRole? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = term_validation_error(@term)) + invalid_properties.push(msg) + end + if (msg = commit_validation_error(@commit)) + invalid_properties.push(msg) + end + if (msg = pending_operations_validation_error(@pending_operations)) + invalid_properties.push(msg) + end + if (msg = leader_validation_error(@leader)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(term, commit, pending_operations, leader, role, is_voter) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/range.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/range.cr new file mode 100644 index 000000000000..bc59ced98154 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/range.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Range filter request + class Range + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # point.key < range.lt + @[JSON::Field(key: "lt", emit_null: false)] + property lt : Float64? + + # point.key > range.gt + @[JSON::Field(key: "gt", emit_null: false)] + property gt : Float64? + + # point.key >= range.gte + @[JSON::Field(key: "gte", emit_null: false)] + property gte : Float64? + + # point.key <= range.lte + @[JSON::Field(key: "lte", emit_null: false)] + property lte : Float64? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@lt : Float64? = nil, @gt : Float64? = nil, @gte : Float64? = nil, @lte : Float64? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(lt, gt, gte, lte) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/range_interface.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/range_interface.cr new file mode 100644 index 000000000000..9c403e0dfe0d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/range_interface.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # RangeInterface (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class RangeInterface + getter value + + def initialize(@value : DatetimeRange) + end + def initialize(@value : Range) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + DatetimeRange, Range + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(DatetimeRange.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Range.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in RangeInterface (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(DatetimeRange.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Range.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in RangeInterface (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency.cr new file mode 100644 index 000000000000..ae4d47c50c4f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Read consistency parameter Defines how many replicas should be queried to get the result * `N` - send N random request and return points, which present on all of them * `majority` - send N/2+1 random request and return points, which present on all of them * `quorum` - send requests to all nodes and return points which present on majority of them * `all` - send requests to all nodes and return points which present on all of them Default value is `Factor(1)` + # ReadConsistency (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ReadConsistency + getter value + + def initialize(@value : Int32) + end + def initialize(@value : ReadConsistencyType) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Int32, ReadConsistencyType + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Int32.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ReadConsistencyType.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ReadConsistency (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Int32.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ReadConsistencyType.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ReadConsistency (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency_type.cr new file mode 100644 index 000000000000..a16fea011387 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/read_consistency_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ReadConsistencyType (OpenAPI enum). Allowed values: "majority", "quorum", "all". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ReadConsistencyType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_example.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_example.cr new file mode 100644 index 000000000000..aec3f22075fd --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_example.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # RecommendExample (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class RecommendExample + getter value + + def initialize(@value : Array(Float32)) + end + def initialize(@value : ExtendedPointId) + end + def initialize(@value : SparseVector) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Float32), ExtendedPointId, SparseVector + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Float32).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ExtendedPointId.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in RecommendExample (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Float32).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ExtendedPointId.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in RecommendExample (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_groups_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_groups_request.cr new file mode 100644 index 000000000000..17d2d5b6c93c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_groups_request.cr @@ -0,0 +1,112 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RecommendGroupsRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups. + @[JSON::Field(key: "group_by", emit_null: false)] + property group_by : String + + # Maximum amount of points to return per group + @[JSON::Field(key: "group_size", emit_null: false)] + property group_size : Int32 + + # Maximum amount of groups to return + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32 + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look for vectors closest to those + @[JSON::Field(key: "positive", emit_null: false)] + property positive : Array(RecommendExample)? + + # Try to avoid vectors like this + @[JSON::Field(key: "negative", emit_null: false)] + property negative : Array(RecommendExample)? + + # How to use positive and negative examples to find the results + @[JSON::Field(key: "strategy", emit_null: false)] + property strategy : RecommendStrategy? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Additional search params + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Select which payload to return with the response. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include into response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Define which vector to use for recommendation, if not specified - try to use default vector + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + # Look for points in another collection using the group ids + @[JSON::Field(key: "with_lookup", emit_null: false)] + property with_lookup : WithLookupInterface? + + validates(group_by, String, false, min_length: 1) + validates(group_size, Int32, false, minimum: 1) + validates(limit, Int32, false, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@group_by : String, @group_size : Int32, @limit : Int32, @shard_key : ShardKeySelector? = nil, @positive : Array(RecommendExample)? = nil, @negative : Array(RecommendExample)? = nil, @strategy : RecommendStrategy? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @score_threshold : Float32? = nil, @using : String? = nil, @lookup_from : LookupLocation? = nil, @with_lookup : WithLookupInterface? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = group_by_validation_error(@group_by)) + invalid_properties.push(msg) + end + if (msg = group_size_validation_error(@group_size)) + invalid_properties.push(msg) + end + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, positive, negative, strategy, filter, params, with_payload, with_vector, score_threshold, using, lookup_from, group_by, group_size, limit, with_lookup) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_input.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_input.cr new file mode 100644 index 000000000000..abdb9dac5217 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_input.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RecommendInput + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Look for vectors closest to the vectors from these points + @[JSON::Field(key: "positive", emit_null: false)] + property positive : Array(VectorInput)? + + # Try to avoid vectors like the vector from these points + @[JSON::Field(key: "negative", emit_null: false)] + property negative : Array(VectorInput)? + + # How to use the provided vectors to find the results + @[JSON::Field(key: "strategy", emit_null: false)] + property strategy : RecommendStrategy? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@positive : Array(VectorInput)? = nil, @negative : Array(VectorInput)? = nil, @strategy : RecommendStrategy? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(positive, negative, strategy) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_query.cr new file mode 100644 index 000000000000..60e98143c314 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RecommendQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "recommend", emit_null: false)] + property recommend : RecommendInput + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@recommend : RecommendInput) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(recommend) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request.cr new file mode 100644 index 000000000000..5bb4f2302f70 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request.cr @@ -0,0 +1,101 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Recommendation request. Provides positive and negative examples of the vectors, which can be ids of points that are already stored in the collection, raw vectors, or even ids and vectors combined. Service should look for the points which are closer to positive examples and at the same time further to negative examples. The concrete way of how to compare negative and positive distances is up to the `strategy` chosen. + class RecommendRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Max number of result to return + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32 + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look for vectors closest to those + @[JSON::Field(key: "positive", emit_null: false)] + property positive : Array(RecommendExample)? + + # Try to avoid vectors like this + @[JSON::Field(key: "negative", emit_null: false)] + property negative : Array(RecommendExample)? + + # How to use positive and negative examples to find the results + @[JSON::Field(key: "strategy", emit_null: false)] + property strategy : RecommendStrategy? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Additional search params + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues. + @[JSON::Field(key: "offset", emit_null: false)] + property offset : Int32? + + # Select which payload to return with the response. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include into response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Define which vector to use for recommendation, if not specified - try to use default vector + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + # The location used to lookup vectors. If not specified - use current collection. Note: the other collection should have the same vector size as the current collection + @[JSON::Field(key: "lookup_from", emit_null: false)] + property lookup_from : LookupLocation? + + validates(limit, Int32, false, minimum: 1) + validates(offset, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@limit : Int32, @shard_key : ShardKeySelector? = nil, @positive : Array(RecommendExample)? = nil, @negative : Array(RecommendExample)? = nil, @strategy : RecommendStrategy? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @offset : Int32? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @score_threshold : Float32? = nil, @using : String? = nil, @lookup_from : LookupLocation? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + if (msg = offset_validation_error(@offset)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, positive, negative, strategy, filter, params, limit, offset, with_payload, with_vector, score_threshold, using, lookup_from) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request_batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request_batch.cr new file mode 100644 index 000000000000..6a0577351aa7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_request_batch.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RecommendRequestBatch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "searches", emit_null: false)] + property searches : Array(RecommendRequest) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@searches : Array(RecommendRequest)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(searches) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_strategy.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_strategy.cr new file mode 100644 index 000000000000..f43f03a054a9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recommend_strategy.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # RecommendStrategy (OpenAPI enum). Allowed values: "average_vector", "best_score". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias RecommendStrategy = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/record.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/record.cr new file mode 100644 index 000000000000..d4124a86e4e3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/record.cr @@ -0,0 +1,59 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Point data + class Record + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : ExtendedPointId + + # Optional properties + # Payload - values assigned to the point + @[JSON::Field(key: "payload", emit_null: false)] + property payload : Hash(String, JSON::Any)? + + # Vector of the point + @[JSON::Field(key: "vector", emit_null: false)] + property vector : VectorStruct? + + # Shard Key + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey? + + @[JSON::Field(key: "order_value", emit_null: false)] + property order_value : OrderValue? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : ExtendedPointId, @payload : Hash(String, JSON::Any)? = nil, @vector : VectorStruct? = nil, @shard_key : ShardKey? = nil, @order_value : OrderValue? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, payload, vector, shard_key, order_value) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/recover_from_uploaded_snapshot202_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recover_from_uploaded_snapshot202_response.cr new file mode 100644 index 000000000000..3b16f832a04b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/recover_from_uploaded_snapshot202_response.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RecoverFromUploadedSnapshot202Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_info.cr new file mode 100644 index 000000000000..f64a3a682648 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_info.cr @@ -0,0 +1,63 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RemoteShardInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Remote shard id + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + # Remote peer id + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32 + + @[JSON::Field(key: "state", emit_null: false)] + property state : ReplicaState + + # Optional properties + # User-defined sharding key + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey? + + validates(shard_id, Int32, false, minimum: 0) + validates(peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @peer_id : Int32, @state : ReplicaState, @shard_key : ShardKey? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, shard_key, peer_id, state) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_telemetry.cr new file mode 100644 index 000000000000..9656a5950d30 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/remote_shard_telemetry.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RemoteShardTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "searches", emit_null: false)] + property searches : OperationDurationStatistics + + @[JSON::Field(key: "updates", emit_null: false)] + property updates : OperationDurationStatistics + + # Optional properties + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32? + + validates(shard_id, Int32, false, minimum: 0) + validates(peer_id, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @searches : OperationDurationStatistics, @updates : OperationDurationStatistics, @peer_id : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, peer_id, searches, updates) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias.cr new file mode 100644 index 000000000000..ba7a25223396 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias.cr @@ -0,0 +1,46 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Change alias to a new one + class RenameAlias + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "old_alias_name", emit_null: false)] + property old_alias_name : String + + @[JSON::Field(key: "new_alias_name", emit_null: false)] + property new_alias_name : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@old_alias_name : String, @new_alias_name : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(old_alias_name, new_alias_name) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias_operation.cr new file mode 100644 index 000000000000..746ca84eb949 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/rename_alias_operation.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Change alias to a new one + class RenameAliasOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "rename_alias", emit_null: false)] + property rename_alias : RenameAlias + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@rename_alias : RenameAlias) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(rename_alias) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica.cr new file mode 100644 index 000000000000..3c3b41a15b9d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica.cr @@ -0,0 +1,53 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Replica + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32 + + validates(shard_id, Int32, false, minimum: 0) + validates(peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @peer_id : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, peer_id) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_set_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_set_telemetry.cr new file mode 100644 index 000000000000..0d0673788b9a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_set_telemetry.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ReplicaSetTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : Int32 + + @[JSON::Field(key: "remote", emit_null: false)] + property remote : Array(RemoteShardTelemetry) + + @[JSON::Field(key: "replicate_states", emit_null: false)] + property replicate_states : Hash(String, ReplicaState) + + # Optional properties + @[JSON::Field(key: "local", emit_null: false)] + property local : LocalShardTelemetry? + + validates(id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : Int32, @remote : Array(RemoteShardTelemetry), @replicate_states : Hash(String, ReplicaState), @local : LocalShardTelemetry? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = id_validation_error(@id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, local, remote, replicate_states) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_state.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_state.cr new file mode 100644 index 000000000000..4619a5f2ad6a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replica_state.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ReplicaState (OpenAPI enum). Allowed values: "Active", "Dead", "Partial", "Initializing", "Listener", "PartialSnapshot", "Recovery". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ReplicaState = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard.cr new file mode 100644 index 000000000000..bc8a9ea03731 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard.cr @@ -0,0 +1,65 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ReplicateShard + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "to_peer_id", emit_null: false)] + property to_peer_id : Int32 + + @[JSON::Field(key: "from_peer_id", emit_null: false)] + property from_peer_id : Int32 + + # Optional properties + # Method for transferring the shard from one node to another + @[JSON::Field(key: "method", emit_null: false)] + property method : ShardTransferMethod? + + validates(shard_id, Int32, false, minimum: 0) + validates(to_peer_id, Int32, false, minimum: 0) + validates(from_peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @to_peer_id : Int32, @from_peer_id : Int32, @method : ShardTransferMethod? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = to_peer_id_validation_error(@to_peer_id)) + invalid_properties.push(msg) + end + if (msg = from_peer_id_validation_error(@from_peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, to_peer_id, from_peer_id, method) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard_operation.cr new file mode 100644 index 000000000000..dd6e75c1e99f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/replicate_shard_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ReplicateShardOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "replicate_shard", emit_null: false)] + property replicate_shard : ReplicateShard + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@replicate_shard : ReplicateShard) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(replicate_shard) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/requests_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/requests_telemetry.cr new file mode 100644 index 000000000000..3fffce818019 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/requests_telemetry.cr @@ -0,0 +1,45 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RequestsTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "rest", emit_null: false)] + property rest : WebApiTelemetry + + @[JSON::Field(key: "grpc", emit_null: false)] + property grpc : GrpcTelemetry + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@rest : WebApiTelemetry, @grpc : GrpcTelemetry) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(rest, grpc) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_direction.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_direction.cr new file mode 100644 index 000000000000..bf33e6392160 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_direction.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ReshardingDirection (OpenAPI enum). Allowed values: "up", "down". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ReshardingDirection = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_info.cr new file mode 100644 index 000000000000..049c0ca36dd7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/resharding_info.cr @@ -0,0 +1,64 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ReshardingInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "direction", emit_null: false)] + property direction : ReshardingDirection + + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "peer_id", emit_null: false)] + property peer_id : Int32 + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey? + + # A human-readable report of the operation progress. Available only on the source peer. + @[JSON::Field(key: "comment", emit_null: false)] + property comment : String? + + validates(shard_id, Int32, false, minimum: 0) + validates(peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@direction : ReshardingDirection, @shard_id : Int32, @peer_id : Int32, @shard_key : ShardKey? = nil, @comment : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = peer_id_validation_error(@peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(direction, shard_id, peer_id, shard_key, comment) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer.cr new file mode 100644 index 000000000000..d6ef43f5d7c3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer.cr @@ -0,0 +1,63 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RestartTransfer + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + @[JSON::Field(key: "from_peer_id", emit_null: false)] + property from_peer_id : Int32 + + @[JSON::Field(key: "to_peer_id", emit_null: false)] + property to_peer_id : Int32 + + @[JSON::Field(key: "method", emit_null: false)] + property method : ShardTransferMethod + + validates(shard_id, Int32, false, minimum: 0) + validates(from_peer_id, Int32, false, minimum: 0) + validates(to_peer_id, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @from_peer_id : Int32, @to_peer_id : Int32, @method : ShardTransferMethod) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = from_peer_id_validation_error(@from_peer_id)) + invalid_properties.push(msg) + end + if (msg = to_peer_id_validation_error(@to_peer_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, from_peer_id, to_peer_id, method) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer_operation.cr new file mode 100644 index 000000000000..dcc770a5bdf8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/restart_transfer_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RestartTransferOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "restart_transfer", emit_null: false)] + property restart_transfer : RestartTransfer + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@restart_transfer : RestartTransfer) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(restart_transfer) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/running_environment_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/running_environment_telemetry.cr new file mode 100644 index 000000000000..da27830e5b2d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/running_environment_telemetry.cr @@ -0,0 +1,73 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class RunningEnvironmentTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "is_docker", emit_null: false)] + property is_docker : Bool + + @[JSON::Field(key: "cpu_flags", emit_null: false)] + property cpu_flags : String + + # Optional properties + @[JSON::Field(key: "distribution", emit_null: false)] + property distribution : String? + + @[JSON::Field(key: "distribution_version", emit_null: false)] + property distribution_version : String? + + @[JSON::Field(key: "cores", emit_null: false)] + property cores : Int32? + + @[JSON::Field(key: "ram_size", emit_null: false)] + property ram_size : Int32? + + @[JSON::Field(key: "disk_size", emit_null: false)] + property disk_size : Int32? + + validates(cores, Int32, true, minimum: 0) + validates(ram_size, Int32, true, minimum: 0) + validates(disk_size, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@is_docker : Bool, @cpu_flags : String, @distribution : String? = nil, @distribution_version : String? = nil, @cores : Int32? = nil, @ram_size : Int32? = nil, @disk_size : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = cores_validation_error(@cores)) + invalid_properties.push(msg) + end + if (msg = ram_size_validation_error(@ram_size)) + invalid_properties.push(msg) + end + if (msg = disk_size_validation_error(@disk_size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(distribution, distribution_version, is_docker, cores, ram_size, disk_size, cpu_flags) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample.cr new file mode 100644 index 000000000000..6934e8f822ab --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Sample (OpenAPI enum). Allowed values: "random". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias Sample = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample_query.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample_query.cr new file mode 100644 index 000000000000..e87f48c4003c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sample_query.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SampleQuery + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "sample", emit_null: false)] + property sample : Sample + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@sample : Sample) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(sample) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization.cr new file mode 100644 index 000000000000..ca2f38c6f363 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ScalarQuantization + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "scalar", emit_null: false)] + property scalar : ScalarQuantizationConfig + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@scalar : ScalarQuantizationConfig) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(scalar) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization_config.cr new file mode 100644 index 000000000000..f48d8c22a839 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_quantization_config.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ScalarQuantizationConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : ScalarType + + # Optional properties + # Quantile for quantization. Expected value range in [0.5, 1.0]. If not set - use the whole range of values + @[JSON::Field(key: "quantile", emit_null: false)] + property quantile : Float32? + + # If true - quantized vectors always will be stored in RAM, ignoring the config of main storage + @[JSON::Field(key: "always_ram", emit_null: false)] + property always_ram : Bool? + + validates(quantile, Float32, true, maximum: 1, minimum: 0.5) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : ScalarType, @quantile : Float32? = nil, @always_ram : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = quantile_validation_error(@quantile)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, quantile, always_ram) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_type.cr new file mode 100644 index 000000000000..df897de7896d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scalar_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ScalarType (OpenAPI enum). Allowed values: "int8". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ScalarType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scored_point.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scored_point.cr new file mode 100644 index 000000000000..67b0a79e58a9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scored_point.cr @@ -0,0 +1,72 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Search result + class ScoredPoint + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : ExtendedPointId + + # Point version + @[JSON::Field(key: "version", emit_null: false)] + property version : Int32 + + # Points vector distance to the query vector + @[JSON::Field(key: "score", emit_null: false)] + property score : Float32 + + # Optional properties + # Payload - values assigned to the point + @[JSON::Field(key: "payload", emit_null: false)] + property payload : Hash(String, JSON::Any)? + + # Vector of the point + @[JSON::Field(key: "vector", emit_null: false)] + property vector : VectorStruct? + + # Shard Key + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKey? + + # Order-by value + @[JSON::Field(key: "order_value", emit_null: false)] + property order_value : OrderValue? + + validates(version, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : ExtendedPointId, @version : Int32, @score : Float32, @payload : Hash(String, JSON::Any)? = nil, @vector : VectorStruct? = nil, @shard_key : ShardKey? = nil, @order_value : OrderValue? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = version_validation_error(@version)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, version, score, payload, vector, shard_key, order_value) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_points200_response.cr new file mode 100644 index 000000000000..e816dfe7faa6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ScrollPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : ScrollResult? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : ScrollResult? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_request.cr new file mode 100644 index 000000000000..abeb1c7b12d5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_request.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Scroll request - paginate over all points which matches given condition + class ScrollRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Start ID to read points from. + @[JSON::Field(key: "offset", emit_null: false)] + property offset : ExtendedPointId? + + # Page size. Default: 10 + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # Look only for points which satisfies this conditions. If not provided - all points. + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Select which payload to return with the response. Default is true. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Order the records by a payload field. + @[JSON::Field(key: "order_by", emit_null: false)] + property order_by : OrderByInterface? + + validates(limit, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKeySelector? = nil, @offset : ExtendedPointId? = nil, @limit : Int32? = nil, @filter : Filter? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @order_by : OrderByInterface? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, offset, limit, filter, with_payload, with_vector, order_by) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_result.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_result.cr new file mode 100644 index 000000000000..ac167b35b796 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/scroll_result.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Result of the points read request + class ScrollResult + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # List of retrieved points + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(Record) + + # Optional properties + # Offset which should be used to retrieve a next page result + @[JSON::Field(key: "next_page_offset", emit_null: false)] + property next_page_offset : ExtendedPointId? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(Record), @next_page_offset : ExtendedPointId? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points, next_page_offset) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_batch_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_batch_points200_response.cr new file mode 100644 index 000000000000..28b6978b76e6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_batch_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchBatchPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(Array(ScoredPoint))? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(Array(ScoredPoint))? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_groups_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_groups_request.cr new file mode 100644 index 000000000000..f276b9cc47ec --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_groups_request.cr @@ -0,0 +1,95 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchGroupsRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "vector", emit_null: false)] + property vector : NamedVectorStruct + + # Payload field to group by, must be a string or number field. If the field contains more than 1 value, all values will be used for grouping. One point can be in multiple groups. + @[JSON::Field(key: "group_by", emit_null: false)] + property group_by : String + + # Maximum amount of points to return per group + @[JSON::Field(key: "group_size", emit_null: false)] + property group_size : Int32 + + # Maximum amount of groups to return + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32 + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Additional search params + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Select which payload to return with the response. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include into response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + # Look for points in another collection using the group ids + @[JSON::Field(key: "with_lookup", emit_null: false)] + property with_lookup : WithLookupInterface? + + validates(group_by, String, false, min_length: 1) + validates(group_size, Int32, false, minimum: 1) + validates(limit, Int32, false, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vector : NamedVectorStruct, @group_by : String, @group_size : Int32, @limit : Int32, @shard_key : ShardKeySelector? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @score_threshold : Float32? = nil, @with_lookup : WithLookupInterface? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = group_by_validation_error(@group_by)) + invalid_properties.push(msg) + end + if (msg = group_size_validation_error(@group_size)) + invalid_properties.push(msg) + end + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, vector, filter, params, with_payload, with_vector, score_threshold, group_by, group_size, limit, with_lookup) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets200_response.cr new file mode 100644 index 000000000000..228f77c9deb5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchMatrixOffsets200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : SearchMatrixOffsetsResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : SearchMatrixOffsetsResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets_response.cr new file mode 100644 index 000000000000..b4ccf98de2e6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_offsets_response.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchMatrixOffsetsResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Row indices of the matrix + @[JSON::Field(key: "offsets_row", emit_null: false)] + property offsets_row : Array(Int32) + + # Column indices of the matrix + @[JSON::Field(key: "offsets_col", emit_null: false)] + property offsets_col : Array(Int32) + + # Scores associated with matrix coordinates + @[JSON::Field(key: "scores", emit_null: false)] + property scores : Array(Float32) + + # Ids of the points in order + @[JSON::Field(key: "ids", emit_null: false)] + property ids : Array(ExtendedPointId) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@offsets_row : Array(Int32), @offsets_col : Array(Int32), @scores : Array(Float32), @ids : Array(ExtendedPointId)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(offsets_row, offsets_col, scores, ids) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pair.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pair.cr new file mode 100644 index 000000000000..4688f7b90b35 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pair.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Pair of points (a, b) with score + class SearchMatrixPair + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "a", emit_null: false)] + property a : ExtendedPointId + + @[JSON::Field(key: "b", emit_null: false)] + property b : ExtendedPointId + + @[JSON::Field(key: "score", emit_null: false)] + property score : Float32 + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@a : ExtendedPointId, @b : ExtendedPointId, @score : Float32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(a, b, score) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs200_response.cr new file mode 100644 index 000000000000..8d1a049f4818 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchMatrixPairs200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : SearchMatrixPairsResponse? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : SearchMatrixPairsResponse? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs_response.cr new file mode 100644 index 000000000000..3a9f086c32dc --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_pairs_response.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchMatrixPairsResponse + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # List of pairs of points with scores + @[JSON::Field(key: "pairs", emit_null: false)] + property pairs : Array(SearchMatrixPair) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@pairs : Array(SearchMatrixPair)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(pairs) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_request.cr new file mode 100644 index 000000000000..c4b2142011ec --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_matrix_request.cr @@ -0,0 +1,67 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchMatrixRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # How many points to select and search within. Default is 10. + @[JSON::Field(key: "sample", emit_null: false)] + property sample : Int32? + + # How many neighbours per sample to find. Default is 3. + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32? + + # Define which vector name to use for querying. If missing, the default vector is used. + @[JSON::Field(key: "using", emit_null: false)] + property using : String? + + validates(sample, Int32, true, minimum: 2) + validates(limit, Int32, true, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_key : ShardKeySelector? = nil, @filter : Filter? = nil, @sample : Int32? = nil, @limit : Int32? = nil, @using : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = sample_validation_error(@sample)) + invalid_properties.push(msg) + end + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, filter, sample, limit, using) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_params.cr new file mode 100644 index 000000000000..bfbef287a7e2 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_params.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Additional parameters of the search + class SearchParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Params relevant to HNSW index Size of the beam in a beam-search. Larger the value - more accurate the result, more time required for search. + @[JSON::Field(key: "hnsw_ef", emit_null: false)] + property hnsw_ef : Int32? + + # Search without approximation. If set to true, search may run long but with exact results. + @[JSON::Field(key: "exact", emit_null: false)] + property exact : Bool? = false + + # Quantization params + @[JSON::Field(key: "quantization", emit_null: false)] + property quantization : QuantizationSearchParams? + + # If enabled, the engine will only perform search among indexed or small segments. Using this option prevents slow searches in case of delayed index, but does not guarantee that all uploaded vectors will be included in search results + @[JSON::Field(key: "indexed_only", emit_null: false)] + property indexed_only : Bool? = false + + validates(hnsw_ef, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@hnsw_ef : Int32? = nil, @exact : Bool? = false, @quantization : QuantizationSearchParams? = nil, @indexed_only : Bool? = false) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = hnsw_ef_validation_error(@hnsw_ef)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(hnsw_ef, exact, quantization, indexed_only) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_point_groups200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_point_groups200_response.cr new file mode 100644 index 000000000000..f8c083726b12 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_point_groups200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchPointGroups200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : GroupsResult? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : GroupsResult? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_points200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_points200_response.cr new file mode 100644 index 000000000000..babecf88ac52 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_points200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchPoints200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : Array(ScoredPoint)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : Array(ScoredPoint)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request.cr new file mode 100644 index 000000000000..e5a2b137b60e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request.cr @@ -0,0 +1,84 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Search request. Holds all conditions and parameters for the search of most similar points by vector similarity given the filtering restrictions. + class SearchRequest + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "vector", emit_null: false)] + property vector : NamedVectorStruct + + # Max number of result to return + @[JSON::Field(key: "limit", emit_null: false)] + property limit : Int32 + + # Optional properties + # Specify in which shards to look for the points, if not specified - look in all shards + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Look only for points which satisfies this conditions + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + # Additional search params + @[JSON::Field(key: "params", emit_null: false)] + property params : SearchParams? + + # Offset of the first result to return. May be used to paginate results. Note: large offset values may cause performance issues. + @[JSON::Field(key: "offset", emit_null: false)] + property offset : Int32? + + # Select which payload to return with the response. Default is false. + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include into response. Default is false. + @[JSON::Field(key: "with_vector", emit_null: false)] + property with_vector : WithVector? + + # Define a minimal score threshold for the result. If defined, less similar results will not be returned. Score of the returned result might be higher or smaller than the threshold depending on the Distance function used. E.g. for cosine similarity only higher scores will be returned. + @[JSON::Field(key: "score_threshold", emit_null: false)] + property score_threshold : Float32? + + validates(limit, Int32, false, minimum: 1) + validates(offset, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vector : NamedVectorStruct, @limit : Int32, @shard_key : ShardKeySelector? = nil, @filter : Filter? = nil, @params : SearchParams? = nil, @offset : Int32? = nil, @with_payload : WithPayloadInterface? = nil, @with_vector : WithVector? = nil, @score_threshold : Float32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = limit_validation_error(@limit)) + invalid_properties.push(msg) + end + if (msg = offset_validation_error(@offset)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_key, vector, filter, params, limit, offset, with_payload, with_vector, score_threshold) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request_batch.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request_batch.cr new file mode 100644 index 000000000000..08249d3e7b8d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/search_request_batch.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SearchRequestBatch + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "searches", emit_null: false)] + property searches : Array(SearchRequest) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@searches : Array(SearchRequest)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(searches) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_config.cr new file mode 100644 index 000000000000..4ddc34780abe --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_config.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SegmentConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "payload_storage_type", emit_null: false)] + property payload_storage_type : PayloadStorageType + + # Optional properties + @[JSON::Field(key: "vector_data", emit_null: false)] + property vector_data : Hash(String, VectorDataConfig)? + + @[JSON::Field(key: "sparse_vector_data", emit_null: false)] + property sparse_vector_data : Hash(String, SparseVectorDataConfig)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@payload_storage_type : PayloadStorageType, @vector_data : Hash(String, VectorDataConfig)? = nil, @sparse_vector_data : Hash(String, SparseVectorDataConfig)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(vector_data, sparse_vector_data, payload_storage_type) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_info.cr new file mode 100644 index 000000000000..a91053bb4796 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_info.cr @@ -0,0 +1,94 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Aggregated information about segment + class SegmentInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "segment_type", emit_null: false)] + property segment_type : SegmentType + + @[JSON::Field(key: "num_vectors", emit_null: false)] + property num_vectors : Int32 + + @[JSON::Field(key: "num_points", emit_null: false)] + property num_points : Int32 + + @[JSON::Field(key: "num_indexed_vectors", emit_null: false)] + property num_indexed_vectors : Int32 + + @[JSON::Field(key: "num_deleted_vectors", emit_null: false)] + property num_deleted_vectors : Int32 + + @[JSON::Field(key: "ram_usage_bytes", emit_null: false)] + property ram_usage_bytes : Int32 + + @[JSON::Field(key: "disk_usage_bytes", emit_null: false)] + property disk_usage_bytes : Int32 + + @[JSON::Field(key: "is_appendable", emit_null: false)] + property is_appendable : Bool + + @[JSON::Field(key: "index_schema", emit_null: false)] + property index_schema : Hash(String, PayloadIndexInfo) + + @[JSON::Field(key: "vector_data", emit_null: false)] + property vector_data : Hash(String, VectorDataInfo) + + validates(num_vectors, Int32, false, minimum: 0) + validates(num_points, Int32, false, minimum: 0) + validates(num_indexed_vectors, Int32, false, minimum: 0) + validates(num_deleted_vectors, Int32, false, minimum: 0) + validates(ram_usage_bytes, Int32, false, minimum: 0) + validates(disk_usage_bytes, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@segment_type : SegmentType, @num_vectors : Int32, @num_points : Int32, @num_indexed_vectors : Int32, @num_deleted_vectors : Int32, @ram_usage_bytes : Int32, @disk_usage_bytes : Int32, @is_appendable : Bool, @index_schema : Hash(String, PayloadIndexInfo), @vector_data : Hash(String, VectorDataInfo)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = num_vectors_validation_error(@num_vectors)) + invalid_properties.push(msg) + end + if (msg = num_points_validation_error(@num_points)) + invalid_properties.push(msg) + end + if (msg = num_indexed_vectors_validation_error(@num_indexed_vectors)) + invalid_properties.push(msg) + end + if (msg = num_deleted_vectors_validation_error(@num_deleted_vectors)) + invalid_properties.push(msg) + end + if (msg = ram_usage_bytes_validation_error(@ram_usage_bytes)) + invalid_properties.push(msg) + end + if (msg = disk_usage_bytes_validation_error(@disk_usage_bytes)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(segment_type, num_vectors, num_points, num_indexed_vectors, num_deleted_vectors, ram_usage_bytes, disk_usage_bytes, is_appendable, index_schema, vector_data) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_telemetry.cr new file mode 100644 index 000000000000..5190552a703d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_telemetry.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SegmentTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "info", emit_null: false)] + property info : SegmentInfo + + @[JSON::Field(key: "config", emit_null: false)] + property config : SegmentConfig + + @[JSON::Field(key: "vector_index_searches", emit_null: false)] + property vector_index_searches : Array(VectorIndexSearchesTelemetry) + + @[JSON::Field(key: "payload_field_indices", emit_null: false)] + property payload_field_indices : Array(PayloadIndexTelemetry) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@info : SegmentInfo, @config : SegmentConfig, @vector_index_searches : Array(VectorIndexSearchesTelemetry), @payload_field_indices : Array(PayloadIndexTelemetry)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(info, config, vector_index_searches, payload_field_indices) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_type.cr new file mode 100644 index 000000000000..03dd3f8035c5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/segment_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # SegmentType (OpenAPI enum). Allowed values: "plain", "indexed", "special". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias SegmentType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload.cr new file mode 100644 index 000000000000..4fdb956e1611 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload.cr @@ -0,0 +1,59 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # This data structure is used in API interface and applied across multiple shards + class SetPayload + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "payload", emit_null: false)] + property payload : Hash(String, JSON::Any) + + # Optional properties + # Assigns payload to each point in this list + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(ExtendedPointId)? + + # Assigns payload to each point that satisfy this filter condition + @[JSON::Field(key: "filter", emit_null: false)] + property filter : Filter? + + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + # Assigns payload to each point that satisfy this path of property + @[JSON::Field(key: "key", emit_null: false)] + property key : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@payload : Hash(String, JSON::Any), @points : Array(ExtendedPointId)? = nil, @filter : Filter? = nil, @shard_key : ShardKeySelector? = nil, @key : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(payload, points, filter, shard_key, key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload_operation.cr new file mode 100644 index 000000000000..21040ead68d3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/set_payload_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SetPayloadOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "set_payload", emit_null: false)] + property set_payload : SetPayload + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@set_payload : SetPayload) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(set_payload) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key.cr new file mode 100644 index 000000000000..7620e5e13e8e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardKey (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ShardKey + getter value + + def initialize(@value : Int32) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Int32, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Int32.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ShardKey (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Int32.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ShardKey (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key_selector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key_selector.cr new file mode 100644 index 000000000000..870f130677f8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_key_selector.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardKeySelector (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ShardKeySelector + getter value + + def initialize(@value : Array(ShardKey)) + end + def initialize(@value : ShardKey) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(ShardKey), ShardKey + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(ShardKey).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ShardKey.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ShardKeySelector (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(ShardKey).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ShardKey.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ShardKeySelector (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_location.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_location.cr new file mode 100644 index 000000000000..031707b0915b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_location.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardSnapshotLocation (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ShardSnapshotLocation + getter value + + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ShardSnapshotLocation (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ShardSnapshotLocation (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_recover.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_recover.cr new file mode 100644 index 000000000000..5b842115ea1d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_snapshot_recover.cr @@ -0,0 +1,54 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ShardSnapshotRecover + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "location", emit_null: false)] + property location : ShardSnapshotLocation + + # Optional properties + @[JSON::Field(key: "priority", emit_null: false)] + property priority : SnapshotPriority? + + # Optional SHA256 checksum to verify snapshot integrity before recovery. + @[JSON::Field(key: "checksum", emit_null: false)] + property checksum : String? + + # Optional API key used when fetching the snapshot from a remote URL. + @[JSON::Field(key: "api_key", emit_null: false)] + property api_key : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@location : ShardSnapshotLocation, @priority : SnapshotPriority? = nil, @checksum : String? = nil, @api_key : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(location, priority, checksum, api_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_status.cr new file mode 100644 index 000000000000..794522b557aa --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_status.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardStatus (OpenAPI enum). Allowed values: "green", "yellow", "grey", "red". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ShardStatus = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_info.cr new file mode 100644 index 000000000000..dd6624e58fb1 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_info.cr @@ -0,0 +1,74 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class ShardTransferInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "shard_id", emit_null: false)] + property shard_id : Int32 + + # Source peer id + @[JSON::Field(key: "from", emit_null: false)] + property from : Int32 + + # Destination peer id + @[JSON::Field(key: "to", emit_null: false)] + property to : Int32 + + # If `true` transfer is a synchronization of a replicas If `false` transfer is a moving of a shard from one peer to another + @[JSON::Field(key: "sync", emit_null: false)] + property sync : Bool + + # Optional properties + @[JSON::Field(key: "method", emit_null: false)] + property method : ShardTransferMethod? + + # A human-readable report of the transfer progress. Available only on the source peer. + @[JSON::Field(key: "comment", emit_null: false)] + property comment : String? + + validates(shard_id, Int32, false, minimum: 0) + validates(from, Int32, false, minimum: 0) + validates(to, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@shard_id : Int32, @from : Int32, @to : Int32, @sync : Bool, @method : ShardTransferMethod? = nil, @comment : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = shard_id_validation_error(@shard_id)) + invalid_properties.push(msg) + end + if (msg = from_validation_error(@from)) + invalid_properties.push(msg) + end + if (msg = to_validation_error(@to)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(shard_id, from, to, sync, method, comment) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_method.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_method.cr new file mode 100644 index 000000000000..c0984c6ce658 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/shard_transfer_method.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardTransferMethod (OpenAPI enum). Allowed values: "stream_records", "snapshot", "wal_delta". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ShardTransferMethod = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sharding_method.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sharding_method.cr new file mode 100644 index 000000000000..ea1a8bc21511 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sharding_method.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ShardingMethod (OpenAPI enum). Allowed values: "auto", "custom". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias ShardingMethod = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_description.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_description.cr new file mode 100644 index 000000000000..ff47da8da851 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_description.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SnapshotDescription + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + @[JSON::Field(key: "size", emit_null: false)] + property size : Int32 + + # Optional properties + @[JSON::Field(key: "creation_time", emit_null: false)] + property creation_time : String? + + @[JSON::Field(key: "checksum", emit_null: false)] + property checksum : String? + + validates(size, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String, @size : Int32, @creation_time : String? = nil, @checksum : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = size_validation_error(@size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, creation_time, size, checksum) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_priority.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_priority.cr new file mode 100644 index 000000000000..cbb5e0d45db3 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_priority.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # SnapshotPriority (OpenAPI enum). Allowed values: "no_sync", "snapshot", "replica". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias SnapshotPriority = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_recover.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_recover.cr new file mode 100644 index 000000000000..c017a373bc1b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/snapshot_recover.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class SnapshotRecover + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Examples: - URL `http://localhost:8080/collections/my_collection/snapshots/my_snapshot` - Local path `file:///qdrant/snapshots/test_collection-2022-08-04-10-49-10.snapshot` + @[JSON::Field(key: "location", emit_null: false)] + property location : String + + # Optional properties + # Defines which data should be used as a source of truth if there are other replicas in the cluster. If set to `Snapshot`, the snapshot will be used as a source of truth, and the current state will be overwritten. If set to `Replica`, the current state will be used as a source of truth, and after recovery if will be synchronized with the snapshot. + @[JSON::Field(key: "priority", emit_null: false)] + property priority : SnapshotPriority? + + # Optional SHA256 checksum to verify snapshot integrity before recovery. + @[JSON::Field(key: "checksum", emit_null: false)] + property checksum : String? + + # Optional API key used when fetching the snapshot from a remote URL. + @[JSON::Field(key: "api_key", emit_null: false)] + property api_key : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@location : String, @priority : SnapshotPriority? = nil, @checksum : String? = nil, @api_key : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(location, priority, checksum, api_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_config.cr new file mode 100644 index 000000000000..6635e365fd77 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_config.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Configuration for sparse inverted index. + class SparseIndexConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "index_type", emit_null: false)] + property index_type : SparseIndexType + + # Optional properties + # We prefer a full scan search upto (excluding) this number of vectors. Note: this is number of vectors, not KiloBytes. + @[JSON::Field(key: "full_scan_threshold", emit_null: false)] + property full_scan_threshold : Int32? + + # Datatype used to store weights in the index. + @[JSON::Field(key: "datatype", emit_null: false)] + property datatype : VectorStorageDatatype? + + validates(full_scan_threshold, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@index_type : SparseIndexType, @full_scan_threshold : Int32? = nil, @datatype : VectorStorageDatatype? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = full_scan_threshold_validation_error(@full_scan_threshold)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(full_scan_threshold, index_type, datatype) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_params.cr new file mode 100644 index 000000000000..7ba2414c8146 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_params.cr @@ -0,0 +1,56 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Configuration for sparse inverted index. + class SparseIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # We prefer a full scan search upto (excluding) this number of vectors. Note: this is number of vectors, not KiloBytes. + @[JSON::Field(key: "full_scan_threshold", emit_null: false)] + property full_scan_threshold : Int32? + + # Store index on disk. If set to false, the index will be stored in RAM. Default: false + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + # Defines which datatype should be used for the index. Choosing different datatypes allows to optimize memory usage and performance vs accuracy. - For `float32` datatype - vectors are stored as single-precision floating point numbers, 4 bytes. - For `float16` datatype - vectors are stored as half-precision floating point numbers, 2 bytes. - For `uint8` datatype - vectors are quantized to unsigned 8-bit integers, 1 byte. Quantization to fit byte range `[0, 255]` happens during indexing automatically, so the actual vector data does not need to conform to this range. + @[JSON::Field(key: "datatype", emit_null: false)] + property datatype : Datatype? + + validates(full_scan_threshold, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@full_scan_threshold : Int32? = nil, @on_disk : Bool? = nil, @datatype : Datatype? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = full_scan_threshold_validation_error(@full_scan_threshold)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(full_scan_threshold, on_disk, datatype) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_type.cr new file mode 100644 index 000000000000..35c7bdea71f9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # SparseIndexType (OpenAPI enum). Allowed values: "MutableRam", "ImmutableRam", "Mmap". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias SparseIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector.cr new file mode 100644 index 000000000000..84f87571d3e9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector.cr @@ -0,0 +1,48 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Sparse vector structure + class SparseVector + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Indices must be unique + @[JSON::Field(key: "indices", emit_null: false)] + property indices : Array(Int32) + + # Values and indices must be the same length + @[JSON::Field(key: "values", emit_null: false)] + property values : Array(Float32) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@indices : Array(Int32), @values : Array(Float32)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(indices, values) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_data_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_data_config.cr new file mode 100644 index 000000000000..48b3df9cb4df --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_data_config.cr @@ -0,0 +1,43 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Config of single sparse vector data storage + class SparseVectorDataConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "index", emit_null: false)] + property index : SparseIndexConfig + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@index : SparseIndexConfig) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(index) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_params.cr new file mode 100644 index 000000000000..e684b6b9dddf --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/sparse_vector_params.cr @@ -0,0 +1,48 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Params of single sparse vector data storage + class SparseVectorParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Custom params for index. If none - values from collection configuration are used. + @[JSON::Field(key: "index", emit_null: false)] + property index : SparseIndexParams? + + # Configures addition value modifications for sparse vectors. Default: none + @[JSON::Field(key: "modifier", emit_null: false)] + property modifier : Modifier? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@index : SparseIndexParams? = nil, @modifier : Modifier? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(index, modifier) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/start_from.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/start_from.cr new file mode 100644 index 000000000000..180502c39458 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/start_from.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # StartFrom (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class StartFrom + getter value + + def initialize(@value : Float64) + end + def initialize(@value : Int64) + end + def initialize(@value : Time) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Float64, Int64, Time + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Float64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Time.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in StartFrom (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Float64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Time.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in StartFrom (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/state_role.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/state_role.cr new file mode 100644 index 000000000000..7759350391c9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/state_role.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # StateRole (OpenAPI enum). Allowed values: "Follower", "Candidate", "Leader", "PreCandidate". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias StateRole = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry200_response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry200_response.cr new file mode 100644 index 000000000000..b309c968f507 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry200_response.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class Telemetry200Response + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Time spent to process this request + @[JSON::Field(key: "time", emit_null: false)] + property time : Float32? + + @[JSON::Field(key: "status", emit_null: false)] + property status : String? + + @[JSON::Field(key: "result", emit_null: false)] + property result : TelemetryData? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@time : Float32? = nil, @status : String? = nil, @result : TelemetryData? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(time, status, result) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry_data.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry_data.cr new file mode 100644 index 000000000000..f3e55694dd67 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/telemetry_data.cr @@ -0,0 +1,54 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class TelemetryData + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "id", emit_null: false)] + property id : String + + @[JSON::Field(key: "app", emit_null: false)] + property app : AppBuildTelemetry + + @[JSON::Field(key: "collections", emit_null: false)] + property collections : CollectionsTelemetry + + @[JSON::Field(key: "cluster", emit_null: false)] + property cluster : ClusterTelemetry + + @[JSON::Field(key: "requests", emit_null: false)] + property requests : RequestsTelemetry + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@id : String, @app : AppBuildTelemetry, @collections : CollectionsTelemetry, @cluster : ClusterTelemetry, @requests : RequestsTelemetry) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(id, app, collections, cluster, requests) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_params.cr new file mode 100644 index 000000000000..aee46d62186e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_params.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class TextIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : TextIndexType + + # Optional properties + @[JSON::Field(key: "tokenizer", emit_null: false)] + property tokenizer : TokenizerType? + + # Minimum characters to be tokenized. + @[JSON::Field(key: "min_token_len", emit_null: false)] + property min_token_len : Int32? + + # Maximum characters to be tokenized. + @[JSON::Field(key: "max_token_len", emit_null: false)] + property max_token_len : Int32? + + # If true, lowercase all tokens. Default: true. + @[JSON::Field(key: "lowercase", emit_null: false)] + property lowercase : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + validates(min_token_len, Int32, true, minimum: 0) + validates(max_token_len, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : TextIndexType, @tokenizer : TokenizerType? = nil, @min_token_len : Int32? = nil, @max_token_len : Int32? = nil, @lowercase : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = min_token_len_validation_error(@min_token_len)) + invalid_properties.push(msg) + end + if (msg = max_token_len_validation_error(@max_token_len)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, tokenizer, min_token_len, max_token_len, lowercase, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_type.cr new file mode 100644 index 000000000000..c97de2a20a0c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/text_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # TextIndexType (OpenAPI enum). Allowed values: "text". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias TextIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/tokenizer_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tokenizer_type.cr new file mode 100644 index 000000000000..a31361479db7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tokenizer_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # TokenizerType (OpenAPI enum). Allowed values: "prefix", "whitespace", "word", "multilingual". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias TokenizerType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status.cr new file mode 100644 index 000000000000..2604b8883f3b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status.cr @@ -0,0 +1,90 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Represents the current state of the optimizer being tracked + # TrackerStatus (OpenAPI oneOf): a value matching exactly one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order (the first + # that parses wins), so it transparently handles scalar, array and object members. It does NOT + # include JSON/YAML::Serializable (which would generate a field-based constructor that can't + # build a union); it defines its own (de)serialisation hooks instead. + class TrackerStatus + getter value + + def initialize(@value : OptimizersStatusOneOf) + end + def initialize(@value : String) + end + def initialize(@value : TrackerStatusOneOf) + end + + # List of classes defined in oneOf (OpenAPI v3) + def self.openapi_one_of + [ + OptimizersStatusOneOf, String, TrackerStatusOneOf + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(OptimizersStatusOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(TrackerStatusOneOf.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in TrackerStatus (oneOf)", 0, 0) + end + + # Backwards-compatible builder: returns a wrapped instance or nil if nothing matched. + def self.build(data) : self? + from_json_any(data.is_a?(JSON::Any) ? data : JSON.parse(data.to_json)) + rescue JSON::ParseException + nil + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(OptimizersStatusOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(TrackerStatusOneOf.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in TrackerStatus (oneOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status_one_of.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status_one_of.cr new file mode 100644 index 000000000000..74532ca3e6e6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_status_one_of.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class TrackerStatusOneOf + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "cancelled", emit_null: false)] + property cancelled : String + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@cancelled : String) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(cancelled) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_telemetry.cr new file mode 100644 index 000000000000..906d674a4d23 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/tracker_telemetry.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Tracker object used in telemetry + class TrackerTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Name of the optimizer + @[JSON::Field(key: "name", emit_null: false)] + property name : String + + # Segment IDs being optimized + @[JSON::Field(key: "segment_ids", emit_null: false)] + property segment_ids : Array(Int32) + + @[JSON::Field(key: "status", emit_null: false)] + property status : TrackerStatus + + # Start time of the optimizer + @[JSON::Field(key: "start_at", emit_null: false)] + property start_at : Time + + # Optional properties + # End time of the optimizer + @[JSON::Field(key: "end_at", emit_null: false)] + property end_at : Time? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@name : String, @segment_ids : Array(Int32), @status : TrackerStatus, @start_at : Time, @end_at : Time? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(name, segment_ids, status, start_at, end_at) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_collection.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_collection.cr new file mode 100644 index 000000000000..1d4c5edb4208 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_collection.cr @@ -0,0 +1,64 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Operation for updating parameters of the existing collection + class UpdateCollection + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Map of vector data parameters to update for each named vector. To update parameters in a collection having a single unnamed vector, use an empty string as name. + @[JSON::Field(key: "vectors", emit_null: false)] + property vectors : Hash(String, VectorParamsDiff)? + + # Custom params for Optimizers. If none - it is left unchanged. This operation is blocking, it will only proceed once all current optimizations are complete + @[JSON::Field(key: "optimizers_config", emit_null: false)] + property optimizers_config : OptimizersConfigDiff? + + # Collection base params. If none - it is left unchanged. + @[JSON::Field(key: "params", emit_null: false)] + property params : CollectionParamsDiff? + + # HNSW parameters to update for the collection index. If none - it is left unchanged. + @[JSON::Field(key: "hnsw_config", emit_null: false)] + property hnsw_config : HnswConfigDiff? + + # Quantization parameters to update. If none - it is left unchanged. + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfigDiff? + + # Map of sparse vector data parameters to update for each sparse vector. + @[JSON::Field(key: "sparse_vectors", emit_null: false)] + property sparse_vectors : Hash(String, SparseVectorParams)? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@vectors : Hash(String, VectorParamsDiff)? = nil, @optimizers_config : OptimizersConfigDiff? = nil, @params : CollectionParamsDiff? = nil, @hnsw_config : HnswConfigDiff? = nil, @quantization_config : QuantizationConfigDiff? = nil, @sparse_vectors : Hash(String, SparseVectorParams)? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(vectors, optimizers_config, params, hnsw_config, quantization_config, sparse_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operation.cr new file mode 100644 index 000000000000..f7b985a98707 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operation.cr @@ -0,0 +1,130 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # UpdateOperation (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class UpdateOperation + getter value + + def initialize(@value : ClearPayloadOperation) + end + def initialize(@value : DeleteOperation) + end + def initialize(@value : DeletePayloadOperation) + end + def initialize(@value : DeleteVectorsOperation) + end + def initialize(@value : OverwritePayloadOperation) + end + def initialize(@value : SetPayloadOperation) + end + def initialize(@value : UpdateVectorsOperation) + end + def initialize(@value : UpsertOperation) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + ClearPayloadOperation, DeleteOperation, DeletePayloadOperation, DeleteVectorsOperation, OverwritePayloadOperation, SetPayloadOperation, UpdateVectorsOperation, UpsertOperation + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(ClearPayloadOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeletePayloadOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteVectorsOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(OverwritePayloadOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(SetPayloadOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(UpdateVectorsOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(UpsertOperation.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in UpdateOperation (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(ClearPayloadOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeletePayloadOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(DeleteVectorsOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(OverwritePayloadOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(SetPayloadOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(UpdateVectorsOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(UpsertOperation.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in UpdateOperation (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operations.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operations.cr new file mode 100644 index 000000000000..7509bab83ca9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_operations.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UpdateOperations + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "operations", emit_null: false)] + property operations : Array(UpdateOperation) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@operations : Array(UpdateOperation)) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(operations) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_result.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_result.cr new file mode 100644 index 000000000000..46c58781e44a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_result.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UpdateResult + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "status", emit_null: false)] + property status : UpdateStatus + + # Optional properties + # Sequential number of the operation + @[JSON::Field(key: "operation_id", emit_null: false)] + property operation_id : Int32? + + validates(operation_id, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@status : UpdateStatus, @operation_id : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = operation_id_validation_error(@operation_id)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(operation_id, status) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_status.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_status.cr new file mode 100644 index 000000000000..e0fece6e4ae7 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_status.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # UpdateStatus (OpenAPI enum). Allowed values: "acknowledged", "completed". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias UpdateStatus = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors.cr new file mode 100644 index 000000000000..cfda1eccb7f0 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors.cr @@ -0,0 +1,47 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UpdateVectors + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Points with named vectors + @[JSON::Field(key: "points", emit_null: false)] + property points : Array(PointVectors) + + # Optional properties + @[JSON::Field(key: "shard_key", emit_null: false)] + property shard_key : ShardKeySelector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@points : Array(PointVectors), @shard_key : ShardKeySelector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(points, shard_key) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors_operation.cr new file mode 100644 index 000000000000..505719a0f9e9 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/update_vectors_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UpdateVectorsOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "update_vectors", emit_null: false)] + property update_vectors : UpdateVectors + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@update_vectors : UpdateVectors) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(update_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/upsert_operation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/upsert_operation.cr new file mode 100644 index 000000000000..4945d2690670 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/upsert_operation.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UpsertOperation + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "upsert", emit_null: false)] + property upsert : PointInsertOperations + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@upsert : PointInsertOperations) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(upsert) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_params.cr new file mode 100644 index 000000000000..501f122e7236 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_params.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class UuidIndexParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "type", emit_null: false)] + property _type : UuidIndexType + + # Optional properties + # If true - used for tenant optimization. + @[JSON::Field(key: "is_tenant", emit_null: false)] + property is_tenant : Bool? + + # If true, store the index on disk. Default: false. + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@_type : UuidIndexType, @is_tenant : Bool? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(_type, is_tenant, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_type.cr new file mode 100644 index 000000000000..aa0a15a634ce --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/uuid_index_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # UuidIndexType (OpenAPI enum). Allowed values: "uuid". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias UuidIndexType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/value_variants.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/value_variants.cr new file mode 100644 index 000000000000..f63ed4086d61 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/value_variants.cr @@ -0,0 +1,80 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # ValueVariants (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class ValueVariants + getter value + + def initialize(@value : Bool) + end + def initialize(@value : Int64) + end + def initialize(@value : String) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Bool, Int64, String + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Bool.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in ValueVariants (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Bool.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Int64.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in ValueVariants (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/values_count.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/values_count.cr new file mode 100644 index 000000000000..09cea923466d --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/values_count.cr @@ -0,0 +1,72 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Values count filter request + class ValuesCount + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # point.key.length() < values_count.lt + @[JSON::Field(key: "lt", emit_null: false)] + property lt : Int32? + + # point.key.length() > values_count.gt + @[JSON::Field(key: "gt", emit_null: false)] + property gt : Int32? + + # point.key.length() >= values_count.gte + @[JSON::Field(key: "gte", emit_null: false)] + property gte : Int32? + + # point.key.length() <= values_count.lte + @[JSON::Field(key: "lte", emit_null: false)] + property lte : Int32? + + validates(lt, Int32, true, minimum: 0) + validates(gt, Int32, true, minimum: 0) + validates(gte, Int32, true, minimum: 0) + validates(lte, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@lt : Int32? = nil, @gt : Int32? = nil, @gte : Int32? = nil, @lte : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = lt_validation_error(@lt)) + invalid_properties.push(msg) + end + if (msg = gt_validation_error(@gt)) + invalid_properties.push(msg) + end + if (msg = gte_validation_error(@gte)) + invalid_properties.push(msg) + end + if (msg = lte_validation_error(@lte)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(lt, gt, gte, lte) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector.cr new file mode 100644 index 000000000000..cc1b17a1b886 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector.cr @@ -0,0 +1,90 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Vector (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class Vector + getter value + + def initialize(@value : Array(Array(Float32))) + end + def initialize(@value : Array(Float32)) + end + def initialize(@value : Document) + end + def initialize(@value : SparseVector) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Array(Float32)), Array(Float32), Document, SparseVector + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Array(Float32)).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in Vector (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Array(Float32)).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in Vector (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_config.cr new file mode 100644 index 000000000000..ec747528359a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_config.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Config of single vector data storage + class VectorDataConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Size/dimensionality of the vectors used + @[JSON::Field(key: "size", emit_null: false)] + property size : Int32 + + @[JSON::Field(key: "distance", emit_null: false)] + property distance : Distance + + @[JSON::Field(key: "storage_type", emit_null: false)] + property storage_type : VectorStorageType + + @[JSON::Field(key: "index", emit_null: false)] + property index : Indexes + + # Optional properties + # Vector specific quantization config that overrides collection config + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfig? + + # Vector specific configuration to enable multiple vectors per point + @[JSON::Field(key: "multivector_config", emit_null: false)] + property multivector_config : MultiVectorConfig? + + # Vector specific configuration to set specific storage element type + @[JSON::Field(key: "datatype", emit_null: false)] + property datatype : VectorStorageDatatype? + + validates(size, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@size : Int32, @distance : Distance, @storage_type : VectorStorageType, @index : Indexes, @quantization_config : QuantizationConfig? = nil, @multivector_config : MultiVectorConfig? = nil, @datatype : VectorStorageDatatype? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = size_validation_error(@size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(size, distance, storage_type, index, quantization_config, multivector_config, datatype) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_info.cr new file mode 100644 index 000000000000..429ef1b9d902 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_data_info.cr @@ -0,0 +1,60 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class VectorDataInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "num_vectors", emit_null: false)] + property num_vectors : Int32 + + @[JSON::Field(key: "num_indexed_vectors", emit_null: false)] + property num_indexed_vectors : Int32 + + @[JSON::Field(key: "num_deleted_vectors", emit_null: false)] + property num_deleted_vectors : Int32 + + validates(num_vectors, Int32, false, minimum: 0) + validates(num_indexed_vectors, Int32, false, minimum: 0) + validates(num_deleted_vectors, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@num_vectors : Int32, @num_indexed_vectors : Int32, @num_deleted_vectors : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = num_vectors_validation_error(@num_vectors)) + invalid_properties.push(msg) + end + if (msg = num_indexed_vectors_validation_error(@num_indexed_vectors)) + invalid_properties.push(msg) + end + if (msg = num_deleted_vectors_validation_error(@num_deleted_vectors)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(num_vectors, num_indexed_vectors, num_deleted_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_index_searches_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_index_searches_telemetry.cr new file mode 100644 index 000000000000..5f4a1b72fb84 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_index_searches_telemetry.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class VectorIndexSearchesTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "unfiltered_plain", emit_null: false)] + property unfiltered_plain : OperationDurationStatistics + + @[JSON::Field(key: "unfiltered_hnsw", emit_null: false)] + property unfiltered_hnsw : OperationDurationStatistics + + @[JSON::Field(key: "unfiltered_sparse", emit_null: false)] + property unfiltered_sparse : OperationDurationStatistics + + @[JSON::Field(key: "filtered_plain", emit_null: false)] + property filtered_plain : OperationDurationStatistics + + @[JSON::Field(key: "filtered_small_cardinality", emit_null: false)] + property filtered_small_cardinality : OperationDurationStatistics + + @[JSON::Field(key: "filtered_large_cardinality", emit_null: false)] + property filtered_large_cardinality : OperationDurationStatistics + + @[JSON::Field(key: "filtered_exact", emit_null: false)] + property filtered_exact : OperationDurationStatistics + + @[JSON::Field(key: "filtered_sparse", emit_null: false)] + property filtered_sparse : OperationDurationStatistics + + @[JSON::Field(key: "unfiltered_exact", emit_null: false)] + property unfiltered_exact : OperationDurationStatistics + + # Optional properties + @[JSON::Field(key: "index_name", emit_null: false)] + property index_name : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@unfiltered_plain : OperationDurationStatistics, @unfiltered_hnsw : OperationDurationStatistics, @unfiltered_sparse : OperationDurationStatistics, @filtered_plain : OperationDurationStatistics, @filtered_small_cardinality : OperationDurationStatistics, @filtered_large_cardinality : OperationDurationStatistics, @filtered_exact : OperationDurationStatistics, @filtered_sparse : OperationDurationStatistics, @unfiltered_exact : OperationDurationStatistics, @index_name : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(index_name, unfiltered_plain, unfiltered_hnsw, unfiltered_sparse, filtered_plain, filtered_small_cardinality, filtered_large_cardinality, filtered_exact, filtered_sparse, unfiltered_exact) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_input.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_input.cr new file mode 100644 index 000000000000..06239db1dee4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_input.cr @@ -0,0 +1,100 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # VectorInput (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class VectorInput + getter value + + def initialize(@value : Array(Array(Float32))) + end + def initialize(@value : Array(Float32)) + end + def initialize(@value : Document) + end + def initialize(@value : ExtendedPointId) + end + def initialize(@value : SparseVector) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Array(Float32)), Array(Float32), Document, ExtendedPointId, SparseVector + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Array(Float32)).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(ExtendedPointId.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in VectorInput (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Array(Float32)).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(ExtendedPointId.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(SparseVector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in VectorInput (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params.cr new file mode 100644 index 000000000000..4758e153639b --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Params of single vector data storage + class VectorParams + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Size of a vectors used + @[JSON::Field(key: "size", emit_null: false)] + property size : Int32 + + @[JSON::Field(key: "distance", emit_null: false)] + property distance : Distance + + # Optional properties + # Custom params for HNSW index. If none - values from collection configuration are used. + @[JSON::Field(key: "hnsw_config", emit_null: false)] + property hnsw_config : HnswConfigDiff? + + # Custom params for quantization. If none - values from collection configuration are used. + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfig? + + # If true, vectors are served from disk, improving RAM usage at the cost of latency Default: false + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + # Defines which datatype should be used to represent vectors in the storage. Choosing different datatypes allows to optimize memory usage and performance vs accuracy. - For `float32` datatype - vectors are stored as single-precision floating point numbers, 4 bytes. - For `float16` datatype - vectors are stored as half-precision floating point numbers, 2 bytes. - For `uint8` datatype - vectors are stored as unsigned 8-bit integers, 1 byte. It expects vector elements to be in range `[0, 255]`. + @[JSON::Field(key: "datatype", emit_null: false)] + property datatype : Datatype? + + @[JSON::Field(key: "multivector_config", emit_null: false)] + property multivector_config : MultiVectorConfig? + + validates(size, Int32, false, minimum: 1) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@size : Int32, @distance : Distance, @hnsw_config : HnswConfigDiff? = nil, @quantization_config : QuantizationConfig? = nil, @on_disk : Bool? = nil, @datatype : Datatype? = nil, @multivector_config : MultiVectorConfig? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = size_validation_error(@size)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(size, distance, hnsw_config, quantization_config, on_disk, datatype, multivector_config) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params_diff.cr new file mode 100644 index 000000000000..f5d29eb333d5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_params_diff.cr @@ -0,0 +1,51 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class VectorParamsDiff + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Update params for HNSW index. If empty object - it will be unset. + @[JSON::Field(key: "hnsw_config", emit_null: false)] + property hnsw_config : HnswConfigDiff? + + # Update params for quantization. If none - it is left unchanged. + @[JSON::Field(key: "quantization_config", emit_null: false)] + property quantization_config : QuantizationConfigDiff? + + # If true, vectors are served from disk, improving RAM usage at the cost of latency + @[JSON::Field(key: "on_disk", emit_null: false)] + property on_disk : Bool? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@hnsw_config : HnswConfigDiff? = nil, @quantization_config : QuantizationConfigDiff? = nil, @on_disk : Bool? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(hnsw_config, quantization_config, on_disk) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_datatype.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_datatype.cr new file mode 100644 index 000000000000..b5afa1d3a52f --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_datatype.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # VectorStorageDatatype (OpenAPI enum). Allowed values: "float32", "float16", "uint8". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias VectorStorageDatatype = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_type.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_type.cr new file mode 100644 index 000000000000..9550dee65b64 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_storage_type.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # VectorStorageType (OpenAPI enum). Allowed values: "Memory", "Mmap", "ChunkedMmap", "InRamChunkedMmap". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias VectorStorageType = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_struct.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_struct.cr new file mode 100644 index 000000000000..8620c4c6fec8 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vector_struct.cr @@ -0,0 +1,91 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Full vector data per point separator with single and multiple vector modes + # VectorStruct (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class VectorStruct + getter value + + def initialize(@value : Array(Array(Float32))) + end + def initialize(@value : Array(Float32)) + end + def initialize(@value : Document) + end + def initialize(@value : Hash(String, Vector)) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(Array(Float32)), Array(Float32), Document, Hash(String, Vector) + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(Array(Float32)).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Hash(String, Vector).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in VectorStruct (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(Array(Float32)).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Array(Float32).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Document.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Hash(String, Vector).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in VectorStruct (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/vectors_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vectors_config.cr new file mode 100644 index 000000000000..fb20de641d21 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/vectors_config.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Vector params separator for single and multiple vector modes Single mode: { \"size\": 128, \"distance\": \"Cosine\" } or multiple mode: { \"default\": { \"size\": 128, \"distance\": \"Cosine\" } } + # VectorsConfig (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class VectorsConfig + getter value + + def initialize(@value : Hash(String, VectorParams)) + end + def initialize(@value : VectorParams) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Hash(String, VectorParams), VectorParams + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Hash(String, VectorParams).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(VectorParams.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in VectorsConfig (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Hash(String, VectorParams).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(VectorParams.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in VectorsConfig (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/version_info.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/version_info.cr new file mode 100644 index 000000000000..de99142c02a4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/version_info.cr @@ -0,0 +1,49 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class VersionInfo + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "title", emit_null: false)] + property title : String + + @[JSON::Field(key: "version", emit_null: false)] + property version : String + + # Optional properties + @[JSON::Field(key: "commit", emit_null: false)] + property commit : String? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@title : String, @version : String, @commit : String? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(title, version, commit) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config.cr new file mode 100644 index 000000000000..f83550be398c --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class WalConfig + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Size of a single WAL segment in MB + @[JSON::Field(key: "wal_capacity_mb", emit_null: false)] + property wal_capacity_mb : Int32 + + # Number of WAL segments to create ahead of actually used ones + @[JSON::Field(key: "wal_segments_ahead", emit_null: false)] + property wal_segments_ahead : Int32 + + validates(wal_capacity_mb, Int32, false, minimum: 1) + validates(wal_segments_ahead, Int32, false, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@wal_capacity_mb : Int32, @wal_segments_ahead : Int32) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = wal_capacity_mb_validation_error(@wal_capacity_mb)) + invalid_properties.push(msg) + end + if (msg = wal_segments_ahead_validation_error(@wal_segments_ahead)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(wal_capacity_mb, wal_segments_ahead) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config_diff.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config_diff.cr new file mode 100644 index 000000000000..8cd6c55581e5 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/wal_config_diff.cr @@ -0,0 +1,55 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class WalConfigDiff + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Optional properties + # Size of a single WAL segment in MB + @[JSON::Field(key: "wal_capacity_mb", emit_null: false)] + property wal_capacity_mb : Int32? + + # Number of WAL segments to create ahead of actually used ones + @[JSON::Field(key: "wal_segments_ahead", emit_null: false)] + property wal_segments_ahead : Int32? + + validates(wal_capacity_mb, Int32, true, minimum: 1) + validates(wal_segments_ahead, Int32, true, minimum: 0) + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@wal_capacity_mb : Int32? = nil, @wal_segments_ahead : Int32? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + if (msg = wal_capacity_mb_validation_error(@wal_capacity_mb)) + invalid_properties.push(msg) + end + if (msg = wal_segments_ahead_validation_error(@wal_segments_ahead)) + invalid_properties.push(msg) + end + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(wal_capacity_mb, wal_segments_ahead) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/web_api_telemetry.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/web_api_telemetry.cr new file mode 100644 index 000000000000..366dbd38541a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/web_api_telemetry.cr @@ -0,0 +1,42 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class WebApiTelemetry + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + @[JSON::Field(key: "responses", emit_null: false)] + property responses : Hash(String, Hash(String, OperationDurationStatistics)) + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@responses : Hash(String, Hash(String, OperationDurationStatistics))) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(responses) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup.cr new file mode 100644 index 000000000000..fe1128fc7675 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup.cr @@ -0,0 +1,52 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + class WithLookup + include JSON::Serializable + include YAML::Serializable + include Qdrant::Api::Serializable + include Qdrant::Api::Validation + + # Required properties + # Name of the collection to use for points lookup + @[JSON::Field(key: "collection", emit_null: false)] + property collection : String + + # Optional properties + # Options for specifying which payload to include (or not) + @[JSON::Field(key: "with_payload", emit_null: false)] + property with_payload : WithPayloadInterface? + + # Options for specifying which vectors to include (or not) + @[JSON::Field(key: "with_vectors", emit_null: false)] + property with_vectors : WithVector? + + + # Initializes the object + # @param [Hash] attributes Model attributes in the form of hash + def initialize(@collection : String, @with_payload : WithPayloadInterface? = nil, @with_vectors : WithVector? = nil) + end + + # Show invalid properties with the reasons. Usually used together with valid? + # @return Array for valid properties with the reasons + def list_invalid_properties + invalid_properties = Array(String).new + invalid_properties + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + def valid? + list_invalid_properties.empty? + end + + def_equals_and_hash(collection, with_payload, with_vectors) + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup_interface.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup_interface.cr new file mode 100644 index 000000000000..830570d52a7a --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_lookup_interface.cr @@ -0,0 +1,70 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # WithLookupInterface (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class WithLookupInterface + getter value + + def initialize(@value : String) + end + def initialize(@value : WithLookup) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + String, WithLookup + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(String.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(WithLookup.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in WithLookupInterface (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(String.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(WithLookup.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in WithLookupInterface (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_payload_interface.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_payload_interface.cr new file mode 100644 index 000000000000..3eb6e870ffee --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_payload_interface.cr @@ -0,0 +1,81 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Options for specifying which payload to include or not + # WithPayloadInterface (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class WithPayloadInterface + getter value + + def initialize(@value : Array(String)) + end + def initialize(@value : Bool) + end + def initialize(@value : PayloadSelector) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(String), Bool, PayloadSelector + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(String).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Bool.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSelector.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in WithPayloadInterface (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(String).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Bool.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(PayloadSelector.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in WithPayloadInterface (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_vector.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_vector.cr new file mode 100644 index 000000000000..3c6cfa6aecf4 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/with_vector.cr @@ -0,0 +1,71 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # Options for specifying which vector to include + # WithVector (OpenAPI anyOf): a value matching at least one of the listed schemas. + # Implemented as a thin wrapper that (de)serialises by trying each member in order + # (the first that parses wins), so it transparently handles scalar, array and object members. + class WithVector + getter value + + def initialize(@value : Array(String)) + end + def initialize(@value : Bool) + end + + # List of classes defined in anyOf (OpenAPI v3) + def self.openapi_any_of + [ + Array(String), Bool + ] + end + + def self.from_json(string_or_io) : self + from_json_any(JSON.parse(string_or_io)) + end + + def self.new(pull : JSON::PullParser) + from_json_any(JSON::Any.new(pull)) + end + + def self.from_json_any(data : JSON::Any) : self + json = data.to_json + begin + return new(Array(String).from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + begin + return new(Bool.from_json(json)) + rescue JSON::ParseException | ArgumentError | TypeCastError + end + raise JSON::ParseException.new("`#{json}` doesn't match any schema listed in WithVector (anyOf)", 0, 0) + end + + def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) + begin + return new(Array(String).new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + begin + return new(Bool.new(ctx, node)) + rescue YAML::ParseException | ArgumentError | TypeCastError + end + raise YAML::ParseException.new("doesn't match any schema listed in WithVector (anyOf)", 0, 0) + end + + def to_json(builder : JSON::Builder) + @value.to_json(builder) + end + + def to_yaml(builder : YAML::Nodes::Builder) + @value.to_yaml(builder) + end + end + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/models/write_ordering.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/models/write_ordering.cr new file mode 100644 index 000000000000..2be832a9dcce --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/models/write_ordering.cr @@ -0,0 +1,15 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# + +module Qdrant::Api + # WriteOrdering (OpenAPI enum). Allowed values: "weak", "medium", "strong". + # Represented as `String` so it (de)serialises transparently to/from JSON and YAML, + # consistent with how inline enums are handled (see the `validates(..., enum: [...])` macro). + alias WriteOrdering = String + +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/response.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/response.cr new file mode 100644 index 000000000000..16cfb0d24381 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/response.cr @@ -0,0 +1,13 @@ +module Qdrant::Api + struct Response(T) + getter value : T + getter status : Int32 + getter headers : HTTP::Headers + + def initialize(@value : T, @status : Int32, @headers : HTTP::Headers); end + + def success? : Bool + 200 <= @status < 300 + end + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/serializable.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/serializable.cr new file mode 100644 index 000000000000..dec6bcc397e6 --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/serializable.cr @@ -0,0 +1,33 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# +require "json" + +module Qdrant::Api + # Shared serialization helpers mixed into every generated model. + module Serializable + # Returns the string representation of the object + def to_s(io : IO) : Nil + io << to_json + end + + # to_body is an alias to to_h (backward compatibility) + def to_body : Hash(String, JSON::Any) + to_h + end + + # Returns the object in the form of hash + def to_h : Hash(String, JSON::Any) + JSON.parse(to_json).as_h + end + + # @see the `==` method + def eql?(other) + self == other + end + end +end diff --git a/samples/client/others/crystal-qdrant/src/qdrant-api/validation.cr b/samples/client/others/crystal-qdrant/src/qdrant-api/validation.cr new file mode 100644 index 000000000000..a52c43827a5e --- /dev/null +++ b/samples/client/others/crystal-qdrant/src/qdrant-api/validation.cr @@ -0,0 +1,37 @@ +# #Qdrant API +# +#The version of the OpenAPI document: master +#Contact: andrey@vasnetsov.com +#Generated by: https://openapi-generator.tech +#Generator version: 7.24.0-SNAPSHOT +# +module Qdrant::Api + # Shared macro for declarative property validation. Include it in a model and + # declare `validates(name, Type, nilable, **rules)` per validated property. + # Supported rule keys: enum, max_length, min_length, maximum, exclusive_maximum, + # minimum, exclusive_minimum, pattern, max_items, min_items. + module Validation + macro validates(name, klass, nilable, **rules) + {% if rules[:enum] %}{{name.id.upcase}}_ALLOWED = {{rules[:enum]}}{% end %} + + def {{name.id}}=(value : {{klass}}{% if nilable %}?{% end %}) + if (msg = {{name.id}}_validation_error(value)) + raise ArgumentError.new(msg) + end + @{{name.id}} = value + end + + def {{name.id}}_validation_error(value) : String? + {% if rules[:enum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be one of #{ {{name.id.upcase}}_ALLOWED }" unless value.nil? || {{name.id.upcase}}_ALLOWED.includes?(value) + {% end %}{% if rules[:max_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be smaller than or equal to {{rules[:max_length]}}." if value.try &.to_s.try &.size.try &.> {{rules[:max_length]}} + {% end %}{% if rules[:min_length] %}return "invalid value for \"#{ {{name.stringify}} }\", the character length must be greater than or equal to {{rules[:min_length]}}." if value.try &.to_s.try &.size.try &.< {{rules[:min_length]}} + {% end %}{% if rules[:maximum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be smaller than{% if rules[:exclusive_maximum] %}{% else %} or equal to{% end %} {{rules[:maximum]}}." if value.try &.>{% if rules[:exclusive_maximum] %}={% end %} {{rules[:maximum]}} + {% end %}{% if rules[:minimum] %}return "invalid value for \"#{ {{name.stringify}} }\", must be greater than{% if rules[:exclusive_minimum] %}{% else %} or equal to{% end %} {{rules[:minimum]}}." if value.try &.<{% if rules[:exclusive_minimum] %}={% end %} {{rules[:minimum]}} + {% end %}{% if rules[:pattern] %}return "invalid value for \"#{ {{name.stringify}} }\", must conform to the pattern {{rules[:pattern]}}." if value.try &.!~ {{rules[:pattern]}} + {% end %}{% if rules[:max_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be less than or equal to {{rules[:max_items]}}." if value.try &.size.try &.> {{rules[:max_items]}} + {% end %}{% if rules[:min_items] %}return "invalid value for \"#{ {{name.stringify}} }\", number of items must be greater than or equal to {{rules[:min_items]}}." if value.try &.size.try &.< {{rules[:min_items]}} + {% end %}nil + end + end + end +end

d)s+h+fwak_;> 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≥%>f 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