Skip to content

Commit 4579300

Browse files
algolia-bote-krebsshortcutsmillotp
committed
feat(specs): rename composition to composition-full (private) and add composition (public) (generated)
algolia/api-clients-automation#4357 Co-authored-by: algolia-bot <[email protected]> Co-authored-by: Emmanuel Krebs <[email protected]> Co-authored-by: shortcuts <[email protected]> Co-authored-by: Pierre Millot <[email protected]>
1 parent de68bf3 commit 4579300

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+2001
-0
lines changed
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.api
3+
4+
import com.algolia.client.configuration.*
5+
import com.algolia.client.exception.*
6+
import com.algolia.client.extensions.internal.*
7+
import com.algolia.client.model.composition.*
8+
import com.algolia.client.model.composition.RequestBody
9+
import com.algolia.client.transport.*
10+
import com.algolia.client.transport.internal.*
11+
import kotlinx.serialization.json.*
12+
import kotlin.time.Duration.Companion.milliseconds
13+
14+
public class CompositionClient(
15+
override val appId: String,
16+
override var apiKey: String,
17+
override val options: ClientOptions = ClientOptions(),
18+
) : ApiClient {
19+
20+
init {
21+
require(appId.isNotBlank()) { "`appId` is missing." }
22+
require(apiKey.isNotBlank()) { "`apiKey` is missing." }
23+
}
24+
25+
override val requester: Requester = requesterOf(clientName = "Composition", appId = appId, apiKey = apiKey, connectTimeout = 2000.milliseconds, readTimeout = 5000.milliseconds, writeTimeout = 30000.milliseconds, options = options) {
26+
listOf(
27+
Host("$appId-dsn.algolia.net", CallType.Read),
28+
Host("$appId.algolia.net", CallType.Write),
29+
) + mutableListOf(
30+
Host("$appId-1.algolianet.com"),
31+
Host("$appId-2.algolianet.com"),
32+
Host("$appId-3.algolianet.com"),
33+
).apply { shuffle() }
34+
}
35+
36+
/**
37+
* Runs a query on a single composition and returns matching results.
38+
*
39+
* Required API Key ACLs:
40+
* - search
41+
* @param compositionID Unique Composition ObjectID.
42+
* @param requestBody
43+
* @param requestOptions additional request configuration.
44+
*/
45+
public suspend fun search(compositionID: String, requestBody: RequestBody, requestOptions: RequestOptions? = null): SearchResponse {
46+
require(compositionID.isNotBlank()) { "Parameter `compositionID` is required when calling `search`." }
47+
val requestConfig = RequestConfig(
48+
method = RequestMethod.POST,
49+
path = listOf("1", "compositions", "$compositionID", "run"),
50+
isRead = true,
51+
body = requestBody,
52+
)
53+
return requester.execute(
54+
requestConfig = requestConfig,
55+
requestOptions = requestOptions,
56+
)
57+
}
58+
59+
/**
60+
* Searches for values of a specified facet attribute on the composition's main source's index. - By default, facet values are sorted by decreasing count. You can adjust this with the `sortFacetValueBy` parameter. - Searching for facet values doesn't work if you have **more than 65 searchable facets and searchable attributes combined**.
61+
*
62+
* Required API Key ACLs:
63+
* - search
64+
* @param compositionID Unique Composition ObjectID.
65+
* @param facetName Facet attribute in which to search for values. This attribute must be included in the `attributesForFaceting` index setting with the `searchable()` modifier.
66+
* @param searchForFacetValuesRequest
67+
* @param requestOptions additional request configuration.
68+
*/
69+
public suspend fun searchForFacetValues(compositionID: String, facetName: String, searchForFacetValuesRequest: SearchForFacetValuesRequest? = null, requestOptions: RequestOptions? = null): SearchForFacetValuesResponse {
70+
require(compositionID.isNotBlank()) { "Parameter `compositionID` is required when calling `searchForFacetValues`." }
71+
require(facetName.isNotBlank()) { "Parameter `facetName` is required when calling `searchForFacetValues`." }
72+
val requestConfig = RequestConfig(
73+
method = RequestMethod.POST,
74+
path = listOf("1", "compositions", "$compositionID", "facets", "$facetName", "query"),
75+
isRead = true,
76+
body = searchForFacetValuesRequest,
77+
)
78+
return requester.execute(
79+
requestConfig = requestConfig,
80+
requestOptions = requestOptions,
81+
)
82+
}
83+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import com.algolia.client.exception.AlgoliaClientException
5+
import com.algolia.client.extensions.internal.*
6+
import kotlinx.serialization.*
7+
import kotlinx.serialization.builtins.*
8+
import kotlinx.serialization.descriptors.*
9+
import kotlinx.serialization.encoding.*
10+
import kotlinx.serialization.json.*
11+
import kotlin.jvm.JvmInline
12+
13+
/**
14+
* Precision of a coordinate-based search in meters to group results with similar distances. The Geo ranking criterion considers all matches within the same range of distances to be equal.
15+
*
16+
* Implementations:
17+
* - [Int] - *[AroundPrecision.of]*
18+
* - [List<Range>] - *[AroundPrecision.of]*
19+
*/
20+
@Serializable(AroundPrecisionSerializer::class)
21+
public sealed interface AroundPrecision {
22+
@Serializable
23+
@JvmInline
24+
public value class IntValue(public val value: Int) : AroundPrecision
25+
26+
@Serializable
27+
@JvmInline
28+
public value class ListOfRangeValue(public val value: List<Range>) : AroundPrecision
29+
30+
public companion object {
31+
32+
public fun of(value: Int): AroundPrecision = IntValue(value)
33+
34+
public fun of(value: List<Range>): AroundPrecision = ListOfRangeValue(value)
35+
}
36+
}
37+
38+
internal class AroundPrecisionSerializer : JsonContentPolymorphicSerializer<AroundPrecision>(AroundPrecision::class) {
39+
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<AroundPrecision> = when {
40+
element.isInt -> AroundPrecision.IntValue.serializer()
41+
element is JsonArray -> AroundPrecision.ListOfRangeValue.serializer()
42+
else -> throw AlgoliaClientException("Failed to deserialize json element: $element")
43+
}
44+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import com.algolia.client.exception.AlgoliaClientException
5+
import com.algolia.client.extensions.internal.*
6+
import kotlinx.serialization.*
7+
import kotlinx.serialization.builtins.*
8+
import kotlinx.serialization.descriptors.*
9+
import kotlinx.serialization.encoding.*
10+
import kotlinx.serialization.json.*
11+
import kotlin.jvm.JvmInline
12+
13+
/**
14+
* Maximum radius for a search around a central location. This parameter works in combination with the `aroundLatLng` and `aroundLatLngViaIP` parameters. By default, the search radius is determined automatically from the density of hits around the central location. The search radius is small if there are many hits close to the central coordinates.
15+
*
16+
* Implementations:
17+
* - [AroundRadiusAll]
18+
* - [Int] - *[AroundRadius.of]*
19+
*/
20+
@Serializable(AroundRadiusSerializer::class)
21+
public sealed interface AroundRadius {
22+
@Serializable
23+
@JvmInline
24+
public value class IntValue(public val value: Int) : AroundRadius
25+
26+
@Serializable
27+
@JvmInline
28+
public value class AroundRadiusAllValue(public val value: AroundRadiusAll) : AroundRadius
29+
30+
public companion object {
31+
32+
public fun of(value: Int): AroundRadius = IntValue(value)
33+
34+
public fun of(value: AroundRadiusAll): AroundRadius = AroundRadiusAllValue(value)
35+
}
36+
}
37+
38+
internal class AroundRadiusSerializer : JsonContentPolymorphicSerializer<AroundRadius>(AroundRadius::class) {
39+
override fun selectDeserializer(element: JsonElement): DeserializationStrategy<AroundRadius> = when {
40+
element.isInt -> AroundRadius.IntValue.serializer()
41+
element.isString -> AroundRadiusAll.serializer()
42+
else -> throw AlgoliaClientException("Failed to deserialize json element: $element")
43+
}
44+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
6+
/**
7+
* Return all records with a valid `_geoloc` attribute. Don't filter by distance.
8+
*/
9+
@Serializable
10+
public enum class AroundRadiusAll(public val value: kotlin.String) : AroundRadius {
11+
12+
@SerialName(value = "all")
13+
All("all");
14+
15+
override fun toString(): kotlin.String = value
16+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* Banner with image and link to redirect users.
9+
*
10+
* @param image
11+
* @param link
12+
*/
13+
@Serializable
14+
public data class Banner(
15+
16+
@SerialName(value = "image") val image: BannerImage? = null,
17+
18+
@SerialName(value = "link") val link: BannerLink? = null,
19+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* Image to show inside a banner.
9+
*
10+
* @param urls
11+
* @param title
12+
*/
13+
@Serializable
14+
public data class BannerImage(
15+
16+
@SerialName(value = "urls") val urls: List<BannerImageUrl>? = null,
17+
18+
@SerialName(value = "title") val title: String? = null,
19+
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* URL for an image to show inside a banner.
9+
*
10+
* @param url
11+
*/
12+
@Serializable
13+
public data class BannerImageUrl(
14+
15+
@SerialName(value = "url") val url: String? = null,
16+
)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* Link for a banner defined in the Merchandising Studio.
9+
*
10+
* @param url
11+
*/
12+
@Serializable
13+
public data class BannerLink(
14+
15+
@SerialName(value = "url") val url: String? = null,
16+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* CompositionIdRankingInfo
9+
*
10+
* @param index
11+
* @param injectedItemKey
12+
*/
13+
@Serializable
14+
public data class CompositionIdRankingInfo(
15+
16+
@SerialName(value = "index") val index: String,
17+
18+
@SerialName(value = "injectedItemKey") val injectedItemKey: String,
19+
)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import kotlinx.serialization.*
5+
import kotlinx.serialization.json.*
6+
7+
/**
8+
* CompositionRunAppliedRules
9+
*
10+
* @param objectID Unique record identifier.
11+
*/
12+
@Serializable
13+
public data class CompositionRunAppliedRules(
14+
15+
/** Unique record identifier. */
16+
@SerialName(value = "objectID") val objectID: String,
17+
)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/** Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT. */
2+
package com.algolia.client.model.composition
3+
4+
import com.algolia.client.extensions.internal.*
5+
import kotlinx.serialization.*
6+
import kotlinx.serialization.descriptors.*
7+
import kotlinx.serialization.encoding.*
8+
import kotlinx.serialization.json.*
9+
10+
/**
11+
* CompositionRunSearchResponse
12+
*
13+
* @param objectID Unique record identifier.
14+
* @param appliedRules
15+
*/
16+
@Serializable(CompositionRunSearchResponseSerializer::class)
17+
public data class CompositionRunSearchResponse(
18+
19+
/** Unique record identifier. */
20+
val objectID: String,
21+
22+
val appliedRules: List<CompositionRunAppliedRules>? = null,
23+
24+
val additionalProperties: Map<String, JsonElement>? = null,
25+
)
26+
27+
internal object CompositionRunSearchResponseSerializer : KSerializer<CompositionRunSearchResponse> {
28+
29+
override val descriptor: SerialDescriptor = buildClassSerialDescriptor("CompositionRunSearchResponse") {
30+
element<String>("objectID")
31+
element<List<CompositionRunAppliedRules>>("appliedRules", isOptional = true)
32+
}
33+
34+
override fun deserialize(decoder: Decoder): CompositionRunSearchResponse {
35+
val input = decoder.asJsonDecoder()
36+
val tree = input.decodeJsonObject()
37+
return CompositionRunSearchResponse(
38+
objectID = tree.getValue("objectID").let { input.json.decodeFromJsonElement(it) },
39+
appliedRules = tree["appliedRules"]?.let { input.json.decodeFromJsonElement(it) },
40+
additionalProperties = tree.filterKeys { it !in descriptor.elementNames },
41+
)
42+
}
43+
44+
override fun serialize(encoder: Encoder, value: CompositionRunSearchResponse) {
45+
val output = encoder.asJsonEncoder()
46+
val json = buildJsonObject {
47+
put("objectID", output.json.encodeToJsonElement(value.objectID))
48+
value.appliedRules?.let { put("appliedRules", output.json.encodeToJsonElement(it)) }
49+
value.additionalProperties?.onEach { (key, element) -> put(key, element) }
50+
}
51+
(encoder as JsonEncoder).encodeJsonElement(json)
52+
}
53+
}

0 commit comments

Comments
 (0)