From f2ff341b370942e9de0d779c0773c6a584e58dd9 Mon Sep 17 00:00:00 2001 From: algolia-bot Date: Wed, 21 Aug 2024 15:21:13 +0000 Subject: [PATCH] fix(clients): highlight and snippet results e2e (generated) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/algolia/api-clients-automation/pull/3567 Co-authored-by: algolia-bot Co-authored-by: Clément Vannicatte Co-authored-by: Pierre Millot --- .../client/extensions/internal/Json.kt | 4 +- .../algolia/client/model/abtesting/ABTest.kt | 30 +++++++------- .../model/abtesting/AddABTestsVariant.kt | 2 +- .../algolia/client/model/abtesting/Variant.kt | 40 +++++++++---------- .../client/model/ingestion/AuthInput.kt | 8 ++-- .../model/ingestion/AuthInputPartial.kt | 8 ++-- .../client/model/ingestion/SourceInput.kt | 10 ++--- .../model/ingestion/SourceUpdateInput.kt | 6 +-- .../model/ingestion/TaskCreateTrigger.kt | 2 +- .../client/model/ingestion/TaskInput.kt | 4 +- .../client/model/insights/EventsItems.kt | 14 +++---- .../client/model/recommend/HighlightResult.kt | 2 +- .../client/model/recommend/SnippetResult.kt | 2 +- .../client/model/search/BrowseParams.kt | 2 +- .../client/model/search/HighlightResult.kt | 2 +- .../algolia/client/model/search/Promote.kt | 4 +- .../client/model/search/SearchParams.kt | 2 +- .../client/model/search/SnippetResult.kt | 2 +- 18 files changed, 72 insertions(+), 72 deletions(-) diff --git a/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt b/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt index bfd1379df..ca8ff7a4b 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/extensions/internal/Json.kt @@ -59,10 +59,10 @@ internal val JsonElement.isString: Boolean * Returns true if [JsonElement] is a [JsonArray] of primitives, false otherwise. */ internal val JsonElement.isJsonArrayOfPrimitives: Boolean - get() = this is JsonArray && first() is JsonPrimitive + get() = this is JsonArray && (isEmpty() || first() is JsonPrimitive) /** * Returns true if [JsonElement] is a [JsonArray] of objects, false otherwise. */ internal val JsonElement.isJsonArrayOfObjects: Boolean - get() = this is JsonArray && first() is JsonObject + get() = this is JsonArray && (isEmpty() || first() is JsonObject) diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/ABTest.kt b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/ABTest.kt index b0f0b7169..734346033 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/ABTest.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/ABTest.kt @@ -8,17 +8,17 @@ import kotlinx.serialization.json.* * ABTest * * @param abTestID Unique A/B test identifier. - * @param clickSignificance - * @param conversionSignificance - * @param addToCartSignificance - * @param purchaseSignificance - * @param revenueSignificance * @param updatedAt Date and time when the A/B test was last updated, in RFC 3339 format. * @param createdAt Date and time when the A/B test was created, in RFC 3339 format. * @param endAt End date and time of the A/B test, in RFC 3339 format. * @param name A/B test name. * @param status * @param variants A/B test variants. The first variant is your _control_ index, typically your production index. The second variant is an index with changed settings that you want to test against the control. + * @param clickSignificance + * @param conversionSignificance + * @param addToCartSignificance + * @param purchaseSignificance + * @param revenueSignificance * @param configuration */ @Serializable @@ -27,16 +27,6 @@ public data class ABTest( /** Unique A/B test identifier. */ @SerialName(value = "abTestID") val abTestID: Int, - @SerialName(value = "clickSignificance") val clickSignificance: Double, - - @SerialName(value = "conversionSignificance") val conversionSignificance: Double, - - @SerialName(value = "addToCartSignificance") val addToCartSignificance: Double, - - @SerialName(value = "purchaseSignificance") val purchaseSignificance: Double, - - @SerialName(value = "revenueSignificance") val revenueSignificance: Map, - /** Date and time when the A/B test was last updated, in RFC 3339 format. */ @SerialName(value = "updatedAt") val updatedAt: String, @@ -54,5 +44,15 @@ public data class ABTest( /** A/B test variants. The first variant is your _control_ index, typically your production index. The second variant is an index with changed settings that you want to test against the control. */ @SerialName(value = "variants") val variants: List, + @SerialName(value = "clickSignificance") val clickSignificance: Double? = null, + + @SerialName(value = "conversionSignificance") val conversionSignificance: Double? = null, + + @SerialName(value = "addToCartSignificance") val addToCartSignificance: Double? = null, + + @SerialName(value = "purchaseSignificance") val purchaseSignificance: Double? = null, + + @SerialName(value = "revenueSignificance") val revenueSignificance: Map? = null, + @SerialName(value = "configuration") val configuration: ABTestConfiguration? = null, ) diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/AddABTestsVariant.kt b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/AddABTestsVariant.kt index 45ba4025c..8fe408888 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/AddABTestsVariant.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/AddABTestsVariant.kt @@ -26,8 +26,8 @@ public sealed interface AddABTestsVariant { internal class AddABTestsVariantSerializer : JsonContentPolymorphicSerializer(AddABTestsVariant::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("customSearchParameters") -> AbTestsVariantSearchParams.serializer() element is JsonObject -> AbTestsVariant.serializer() - element is JsonObject -> AbTestsVariantSearchParams.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") } } diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/Variant.kt b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/Variant.kt index dc07603e9..35b896026 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/Variant.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/abtesting/Variant.kt @@ -8,24 +8,24 @@ import kotlinx.serialization.json.* * Variant * * @param addToCartCount Number of add-to-cart events for this variant. - * @param addToCartRate [Add-to-cart rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#add-to-cart-rate) for this variant. - * @param averageClickPosition [Average click position](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-position) for this variant. * @param clickCount Number of click events for this variant. - * @param clickThroughRate [Click-through rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-through-rate) for this variant. * @param conversionCount Number of click events for this variant. - * @param conversionRate [Conversion rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#conversion-rate) for this variant. * @param description Description for this variant. * @param index Index name of the A/B test variant (case-sensitive). * @param noResultCount Number of [searches without results](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#searches-without-results) for this variant. * @param purchaseCount Number of purchase events for this variant. - * @param purchaseRate [Purchase rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#purchase-rate) for this variant. * @param searchCount Number of searches for this variant. * @param trafficPercentage Percentage of search requests each variant receives. * @param userCount Number of users that made searches to this variant. * @param trackedUserCount Number of users that made tracked searches to this variant. + * @param addToCartRate [Add-to-cart rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#add-to-cart-rate) for this variant. + * @param averageClickPosition [Average click position](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-position) for this variant. + * @param clickThroughRate [Click-through rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-through-rate) for this variant. + * @param conversionRate [Conversion rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#conversion-rate) for this variant. * @param currencies A/B test currencies. * @param estimatedSampleSize Estimated number of searches required to achieve the desired statistical significance. The A/B test configuration must include a `mininmumDetectableEffect` setting for this number to be included in the response. * @param filterEffects + * @param purchaseRate [Purchase rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#purchase-rate) for this variant. * @param trackedSearchCount Number of tracked searches. Tracked searches are search requests where the `clickAnalytics` parameter is true. */ @Serializable @@ -34,24 +34,12 @@ public data class Variant( /** Number of add-to-cart events for this variant. */ @SerialName(value = "addToCartCount") val addToCartCount: Int, - /** [Add-to-cart rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#add-to-cart-rate) for this variant. */ - @SerialName(value = "addToCartRate") val addToCartRate: Double, - - /** [Average click position](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-position) for this variant. */ - @SerialName(value = "averageClickPosition") val averageClickPosition: Int, - /** Number of click events for this variant. */ @SerialName(value = "clickCount") val clickCount: Int, - /** [Click-through rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-through-rate) for this variant. */ - @SerialName(value = "clickThroughRate") val clickThroughRate: Double, - /** Number of click events for this variant. */ @SerialName(value = "conversionCount") val conversionCount: Int, - /** [Conversion rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#conversion-rate) for this variant. */ - @SerialName(value = "conversionRate") val conversionRate: Double, - /** Description for this variant. */ @SerialName(value = "description") val description: String, @@ -64,9 +52,6 @@ public data class Variant( /** Number of purchase events for this variant. */ @SerialName(value = "purchaseCount") val purchaseCount: Int, - /** [Purchase rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#purchase-rate) for this variant. */ - @SerialName(value = "purchaseRate") val purchaseRate: Double, - /** Number of searches for this variant. */ @SerialName(value = "searchCount") val searchCount: Int, @@ -79,6 +64,18 @@ public data class Variant( /** Number of users that made tracked searches to this variant. */ @SerialName(value = "trackedUserCount") val trackedUserCount: Int, + /** [Add-to-cart rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#add-to-cart-rate) for this variant. */ + @SerialName(value = "addToCartRate") val addToCartRate: Double? = null, + + /** [Average click position](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-position) for this variant. */ + @SerialName(value = "averageClickPosition") val averageClickPosition: Int? = null, + + /** [Click-through rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#click-through-rate) for this variant. */ + @SerialName(value = "clickThroughRate") val clickThroughRate: Double? = null, + + /** [Conversion rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#conversion-rate) for this variant. */ + @SerialName(value = "conversionRate") val conversionRate: Double? = null, + /** A/B test currencies. */ @SerialName(value = "currencies") val currencies: Map? = null, @@ -87,6 +84,9 @@ public data class Variant( @SerialName(value = "filterEffects") val filterEffects: FilterEffects? = null, + /** [Purchase rate](https://www.algolia.com/doc/guides/search-analytics/concepts/metrics/#purchase-rate) for this variant. */ + @SerialName(value = "purchaseRate") val purchaseRate: Double? = null, + /** Number of tracked searches. Tracked searches are search requests where the `clickAnalytics` parameter is true. */ @SerialName(value = "trackedSearchCount") val trackedSearchCount: Int? = null, ) diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInput.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInput.kt index 055d66c8a..92e8a7da2 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInput.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInput.kt @@ -30,10 +30,10 @@ public sealed interface AuthInput { internal class AuthInputSerializer : JsonContentPolymorphicSerializer(AuthInput::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject -> AuthGoogleServiceAccount.serializer() - element is JsonObject -> AuthBasic.serializer() - element is JsonObject -> AuthAPIKey.serializer() - element is JsonObject -> AuthOAuth.serializer() + element is JsonObject && element.containsKey("url") && element.containsKey("client_id") && element.containsKey("client_secret") -> AuthOAuth.serializer() + element is JsonObject && element.containsKey("clientEmail") && element.containsKey("privateKey") -> AuthGoogleServiceAccount.serializer() + element is JsonObject && element.containsKey("username") && element.containsKey("password") -> AuthBasic.serializer() + element is JsonObject && element.containsKey("key") -> AuthAPIKey.serializer() element is JsonObject -> AuthAlgolia.serializer() element is JsonObject -> AuthAlgoliaInsights.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInputPartial.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInputPartial.kt index d0ebe1cb7..9f1f0a82f 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInputPartial.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/AuthInputPartial.kt @@ -30,10 +30,10 @@ public sealed interface AuthInputPartial { internal class AuthInputPartialSerializer : JsonContentPolymorphicSerializer(AuthInputPartial::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject -> AuthGoogleServiceAccountPartial.serializer() - element is JsonObject -> AuthBasicPartial.serializer() - element is JsonObject -> AuthAPIKeyPartial.serializer() - element is JsonObject -> AuthOAuthPartial.serializer() + element is JsonObject && element.containsKey("clientEmail") -> AuthGoogleServiceAccountPartial.serializer() + element is JsonObject && element.containsKey("username") -> AuthBasicPartial.serializer() + element is JsonObject && element.containsKey("key") -> AuthAPIKeyPartial.serializer() + element is JsonObject && element.containsKey("url") -> AuthOAuthPartial.serializer() element is JsonObject -> AuthAlgoliaPartial.serializer() element is JsonObject -> AuthAlgoliaInsightsPartial.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceInput.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceInput.kt index ea30811e4..4ba88c437 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceInput.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceInput.kt @@ -13,12 +13,12 @@ import kotlinx.serialization.json.* * SourceInput * * Implementations: - * - [SourceGA4BigQueryExport] * - [SourceBigCommerce] * - [SourceBigQuery] - * - [SourceCommercetools] * - [SourceCSV] + * - [SourceCommercetools] * - [SourceDocker] + * - [SourceGA4BigQueryExport] * - [SourceJSON] * - [SourceShopify] */ @@ -32,14 +32,14 @@ public sealed interface SourceInput { internal class SourceInputSerializer : JsonContentPolymorphicSerializer(SourceInput::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("registry") && element.containsKey("image") && element.containsKey("imageType") && element.containsKey("configuration") -> SourceDocker.serializer() + element is JsonObject && element.containsKey("projectID") && element.containsKey("datasetID") && element.containsKey("tablePrefix") -> SourceGA4BigQueryExport.serializer() element is JsonObject && element.containsKey("projectKey") -> SourceCommercetools.serializer() element is JsonObject && element.containsKey("storeHash") -> SourceBigCommerce.serializer() element is JsonObject && element.containsKey("projectID") -> SourceBigQuery.serializer() - element is JsonObject && element.containsKey("projectID") && element.containsKey("datasetID") && element.containsKey("tablePrefix") -> SourceGA4BigQueryExport.serializer() + element is JsonObject && element.containsKey("shopURL") -> SourceShopify.serializer() element is JsonObject -> SourceJSON.serializer() element is JsonObject -> SourceCSV.serializer() - element is JsonObject -> SourceDocker.serializer() - element is JsonObject -> SourceShopify.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") } } diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceUpdateInput.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceUpdateInput.kt index 5998ae969..07b3253b3 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceUpdateInput.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/SourceUpdateInput.kt @@ -13,9 +13,9 @@ import kotlinx.serialization.json.* * SourceUpdateInput * * Implementations: - * - [SourceGA4BigQueryExport] * - [SourceBigQuery] * - [SourceCSV] + * - [SourceGA4BigQueryExport] * - [SourceJSON] * - [SourceUpdateCommercetools] * - [SourceUpdateDocker] @@ -31,12 +31,12 @@ public sealed interface SourceUpdateInput { internal class SourceUpdateInputSerializer : JsonContentPolymorphicSerializer(SourceUpdateInput::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject && element.containsKey("projectID") -> SourceBigQuery.serializer() element is JsonObject && element.containsKey("projectID") && element.containsKey("datasetID") && element.containsKey("tablePrefix") -> SourceGA4BigQueryExport.serializer() + element is JsonObject && element.containsKey("projectID") -> SourceBigQuery.serializer() + element is JsonObject && element.containsKey("configuration") -> SourceUpdateDocker.serializer() element is JsonObject -> SourceUpdateCommercetools.serializer() element is JsonObject -> SourceJSON.serializer() element is JsonObject -> SourceCSV.serializer() - element is JsonObject -> SourceUpdateDocker.serializer() element is JsonObject -> SourceUpdateShopify.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") } diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskCreateTrigger.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskCreateTrigger.kt index dbbbda103..e75c927a4 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskCreateTrigger.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskCreateTrigger.kt @@ -28,8 +28,8 @@ public sealed interface TaskCreateTrigger { internal class TaskCreateTriggerSerializer : JsonContentPolymorphicSerializer(TaskCreateTrigger::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("cron") -> ScheduleTriggerInput.serializer() element is JsonObject -> OnDemandTriggerInput.serializer() - element is JsonObject -> ScheduleTriggerInput.serializer() element is JsonObject -> SubscriptionTrigger.serializer() element is JsonObject -> StreamingTrigger.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskInput.kt b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskInput.kt index 1177a49fc..a68c77955 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskInput.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/ingestion/TaskInput.kt @@ -27,8 +27,8 @@ public sealed interface TaskInput { internal class TaskInputSerializer : JsonContentPolymorphicSerializer(TaskInput::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject -> StreamingInput.serializer() - element is JsonObject -> DockerStreamsInput.serializer() + element is JsonObject && element.containsKey("mapping") -> StreamingInput.serializer() + element is JsonObject && element.containsKey("streams") -> DockerStreamsInput.serializer() element is JsonObject -> ShopifyInput.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") } diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/insights/EventsItems.kt b/client/src/commonMain/kotlin/com/algolia/client/model/insights/EventsItems.kt index 0ef5e7b87..25bf1c8af 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/insights/EventsItems.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/insights/EventsItems.kt @@ -13,16 +13,16 @@ import kotlinx.serialization.json.* * EventsItems * * Implementations: - * - [AddedToCartObjectIDsAfterSearch] - * - [PurchasedObjectIDsAfterSearch] * - [AddedToCartObjectIDs] - * - [ClickedObjectIDsAfterSearch] - * - [PurchasedObjectIDs] + * - [AddedToCartObjectIDsAfterSearch] * - [ClickedFilters] * - [ClickedObjectIDs] + * - [ClickedObjectIDsAfterSearch] * - [ConvertedFilters] * - [ConvertedObjectIDs] * - [ConvertedObjectIDsAfterSearch] + * - [PurchasedObjectIDs] + * - [PurchasedObjectIDsAfterSearch] * - [ViewedFilters] * - [ViewedObjectIDs] */ @@ -36,13 +36,13 @@ public sealed interface EventsItems { internal class EventsItemsSerializer : JsonContentPolymorphicSerializer(EventsItems::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject && element.containsKey("positions") && element.containsKey("queryID") && element.containsKey("eventType") -> ClickedObjectIDsAfterSearch.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("eventSubtype") && element.containsKey("queryID") && element.containsKey("objectIDs") -> AddedToCartObjectIDsAfterSearch.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("eventSubtype") && element.containsKey("objectIDs") && element.containsKey("objectData") -> PurchasedObjectIDsAfterSearch.serializer() - element is JsonObject && element.containsKey("queryID") && element.containsKey("eventType") -> ConvertedObjectIDsAfterSearch.serializer() - element is JsonObject && element.containsKey("eventType") && element.containsKey("objectIDs") -> ClickedObjectIDs.serializer() + element is JsonObject && element.containsKey("positions") && element.containsKey("queryID") && element.containsKey("eventType") -> ClickedObjectIDsAfterSearch.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("eventSubtype") && element.containsKey("objectIDs") -> PurchasedObjectIDs.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("eventSubtype") && element.containsKey("objectIDs") -> AddedToCartObjectIDs.serializer() + element is JsonObject && element.containsKey("queryID") && element.containsKey("eventType") -> ConvertedObjectIDsAfterSearch.serializer() + element is JsonObject && element.containsKey("eventType") && element.containsKey("objectIDs") -> ClickedObjectIDs.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("objectIDs") -> ConvertedObjectIDs.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("filters") -> ClickedFilters.serializer() element is JsonObject && element.containsKey("eventType") && element.containsKey("filters") -> ConvertedFilters.serializer() diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/recommend/HighlightResult.kt b/client/src/commonMain/kotlin/com/algolia/client/model/recommend/HighlightResult.kt index 273208b3b..e29bd30a1 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/recommend/HighlightResult.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/recommend/HighlightResult.kt @@ -50,8 +50,8 @@ public sealed interface HighlightResult { internal class HighlightResultSerializer : JsonContentPolymorphicSerializer(HighlightResult::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("matchLevel") && element.containsKey("matchedWords") -> HighlightResultOption.serializer() element is JsonObject -> HighlightResult.MapOfkotlinStringHighlightResultValue.serializer() - element is JsonObject -> HighlightResultOption.serializer() element is JsonObject -> HighlightResult.MapOfkotlinStringHighlightResultOptionValue.serializer() element.isJsonArrayOfObjects -> HighlightResult.ListOfHighlightResultOptionValue.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/recommend/SnippetResult.kt b/client/src/commonMain/kotlin/com/algolia/client/model/recommend/SnippetResult.kt index 51682b03c..f0ca2744e 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/recommend/SnippetResult.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/recommend/SnippetResult.kt @@ -50,8 +50,8 @@ public sealed interface SnippetResult { internal class SnippetResultSerializer : JsonContentPolymorphicSerializer(SnippetResult::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("matchLevel") -> SnippetResultOption.serializer() element is JsonObject -> SnippetResult.MapOfkotlinStringSnippetResultValue.serializer() - element is JsonObject -> SnippetResultOption.serializer() element is JsonObject -> SnippetResult.MapOfkotlinStringSnippetResultOptionValue.serializer() element.isJsonArrayOfObjects -> SnippetResult.ListOfSnippetResultOptionValue.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/search/BrowseParams.kt b/client/src/commonMain/kotlin/com/algolia/client/model/search/BrowseParams.kt index f56001c43..381bcabcf 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/search/BrowseParams.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/search/BrowseParams.kt @@ -13,8 +13,8 @@ import kotlinx.serialization.json.* * BrowseParams * * Implementations: - * - [SearchParamsString] * - [BrowseParamsObject] + * - [SearchParamsString] */ @Serializable(BrowseParamsSerializer::class) public sealed interface BrowseParams { diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/search/HighlightResult.kt b/client/src/commonMain/kotlin/com/algolia/client/model/search/HighlightResult.kt index 28f689493..5248d59e4 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/search/HighlightResult.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/search/HighlightResult.kt @@ -50,8 +50,8 @@ public sealed interface HighlightResult { internal class HighlightResultSerializer : JsonContentPolymorphicSerializer(HighlightResult::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("matchLevel") && element.containsKey("matchedWords") -> HighlightResultOption.serializer() element is JsonObject -> HighlightResult.MapOfkotlinStringHighlightResultValue.serializer() - element is JsonObject -> HighlightResultOption.serializer() element is JsonObject -> HighlightResult.MapOfkotlinStringHighlightResultOptionValue.serializer() element.isJsonArrayOfObjects -> HighlightResult.ListOfHighlightResultOptionValue.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/search/Promote.kt b/client/src/commonMain/kotlin/com/algolia/client/model/search/Promote.kt index 817cc977b..b94bb2a82 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/search/Promote.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/search/Promote.kt @@ -26,8 +26,8 @@ public sealed interface Promote { internal class PromoteSerializer : JsonContentPolymorphicSerializer(Promote::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { - element is JsonObject -> PromoteObjectIDs.serializer() - element is JsonObject -> PromoteObjectID.serializer() + element is JsonObject && element.containsKey("objectIDs") -> PromoteObjectIDs.serializer() + element is JsonObject && element.containsKey("objectID") -> PromoteObjectID.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element") } } diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/search/SearchParams.kt b/client/src/commonMain/kotlin/com/algolia/client/model/search/SearchParams.kt index c3527cac2..6c04f2de3 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/search/SearchParams.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/search/SearchParams.kt @@ -13,8 +13,8 @@ import kotlinx.serialization.json.* * SearchParams * * Implementations: - * - [SearchParamsString] * - [SearchParamsObject] + * - [SearchParamsString] */ @Serializable(SearchParamsSerializer::class) public sealed interface SearchParams { diff --git a/client/src/commonMain/kotlin/com/algolia/client/model/search/SnippetResult.kt b/client/src/commonMain/kotlin/com/algolia/client/model/search/SnippetResult.kt index 5d654f9c3..bb729d4f7 100644 --- a/client/src/commonMain/kotlin/com/algolia/client/model/search/SnippetResult.kt +++ b/client/src/commonMain/kotlin/com/algolia/client/model/search/SnippetResult.kt @@ -50,8 +50,8 @@ public sealed interface SnippetResult { internal class SnippetResultSerializer : JsonContentPolymorphicSerializer(SnippetResult::class) { override fun selectDeserializer(element: JsonElement): DeserializationStrategy { return when { + element is JsonObject && element.containsKey("matchLevel") -> SnippetResultOption.serializer() element is JsonObject -> SnippetResult.MapOfkotlinStringSnippetResultValue.serializer() - element is JsonObject -> SnippetResultOption.serializer() element is JsonObject -> SnippetResult.MapOfkotlinStringSnippetResultOptionValue.serializer() element.isJsonArrayOfObjects -> SnippetResult.ListOfSnippetResultOptionValue.serializer() else -> throw AlgoliaClientException("Failed to deserialize json element: $element")