From a08ca36d327254039c82df04c1c757a68648fe22 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 15:35:48 +0100 Subject: [PATCH 1/5] Updated models and APIs 202603121535-d0aba7b2e02d70a35a4cda7bce9c086da3e19058 --- .../kotlin/com/icure/cardinal/sdk/model/data/ByteArray.kt | 1 + .../com/icure/cardinal/sdk/model/data/LabelledOccurence.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/ByteArray.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/ByteArray.kt index 939437cd5..630ea577b 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/ByteArray.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/ByteArray.kt @@ -18,5 +18,6 @@ data class ByteArray( public val `data`: kotlin.ByteArray, ) { // region ByteArray-ByteArray + // endregion } diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/LabelledOccurence.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/LabelledOccurence.kt index 55353c41a..5d97ef67d 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/LabelledOccurence.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/data/LabelledOccurence.kt @@ -23,5 +23,6 @@ data class LabelledOccurence( public val occurence: Long, ) { // region LabelledOccurence-LabelledOccurence + // endregion } From 6d261e8ab672e1939b7393c7949cba1e9777e03b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 12 Mar 2026 17:30:53 +0100 Subject: [PATCH 2/5] Updated models and APIs 202603121730-d91cc05988119bf6fa8c32bd7d80db52650140ad --- .../icure/cardinal/sdk/model/Tarification.kt | 5 ++++ .../cardinal/sdk/model/embed/PricingDomain.kt | 25 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/embed/PricingDomain.kt diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/Tarification.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/Tarification.kt index b60707811..b1d6e7bb3 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/Tarification.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/Tarification.kt @@ -10,6 +10,7 @@ import com.icure.cardinal.sdk.model.base.StoredDocument import com.icure.cardinal.sdk.model.embed.DecryptedValorisation import com.icure.cardinal.sdk.model.embed.LetterValue import com.icure.cardinal.sdk.model.embed.Periodicity +import com.icure.cardinal.sdk.model.embed.PricingDomain import com.icure.cardinal.sdk.utils.DefaultValue import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @@ -63,6 +64,10 @@ data class Tarification( * The version of the tarification. Must be lexicographically searchable. */ override val version: String? = null, + /** + * The pricing domain for this tarification (ambulatory, hospital, or both). + */ + public val domain: PricingDomain? = null, /** * The author of the tarification. */ diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/embed/PricingDomain.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/embed/PricingDomain.kt new file mode 100644 index 000000000..76023cd7a --- /dev/null +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/model/embed/PricingDomain.kt @@ -0,0 +1,25 @@ +// WARNING: This file is auto-generated. If you change it manually, your changes will be lost. +// If you want to change the way this class is generated, see [this repo](https://github.com/icure/sdk-codegen). +package com.icure.cardinal.sdk.model.embed + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlin.String + +/** + * + * Enumerates the pricing domains for tarifications. + */ +@Serializable +enum class PricingDomain( + internal val dtoSerialName: String, +) { + @SerialName("ambulatory") + Ambulatory("ambulatory"), + + @SerialName("hospital") + Hospital("hospital"), + + @SerialName("both") + Both("both"), +} From 0aa5486f1fcbbe630baadcfa4b271548a6903048 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 13 Mar 2026 10:04:00 +0100 Subject: [PATCH 3/5] Updated models and APIs 202603131003-0de17b9d3752166f2cb2bc05e875ffaadb11fa79 --- .../kotlin/com/icure/cardinal/sdk/api/raw/RawFormApi.kt | 3 +++ .../com/icure/cardinal/sdk/api/raw/impl/RawFormApiImpl.kt | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/RawFormApi.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/RawFormApi.kt index c449a2a87..4ed13c51b 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/RawFormApi.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/RawFormApi.kt @@ -216,6 +216,7 @@ public interface RawFormApi { groupId: String, userId: String, loadLayout: Boolean? = null, + raw: Boolean? = null, ): HttpResponse> suspend fun createFormTemplateInGroup( @@ -280,11 +281,13 @@ public interface RawFormApi { suspend fun getFormTemplatesInGroup( groupId: String, formTemplateIds: ListOfIds, + raw: Boolean? = null, ): HttpResponse> suspend fun getFormTemplateInGroup( groupId: String, formTemplateId: String, + raw: Boolean? = null, ): HttpResponse suspend fun matchFormTemplatesInGroupBy( diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/impl/RawFormApiImpl.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/impl/RawFormApiImpl.kt index 0f1095ff5..0df2ae0b4 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/impl/RawFormApiImpl.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/api/raw/impl/RawFormApiImpl.kt @@ -706,12 +706,14 @@ class RawFormApiImpl( groupId: String, userId: String, loadLayout: Boolean?, + raw: Boolean?, ): HttpResponse> = get(authProvider, groupId) { url { takeFrom(apiUrl) appendPathSegments("rest", "v2", "form", "template", "inGroup", groupId, "byUser", userId) parameter("loadLayout", loadLayout) + parameter("raw", raw) parameter("ts", GMTDate().timestamp) } accept(Application.Json) @@ -884,11 +886,13 @@ class RawFormApiImpl( override suspend fun getFormTemplatesInGroup( groupId: String, formTemplateIds: ListOfIds, + raw: Boolean?, ): HttpResponse> = post(authProvider, groupId) { url { takeFrom(apiUrl) appendPathSegments("rest", "v2", "form", "template", "inGroup", groupId, "byIds") + parameter("raw", raw) } contentType(Application.Json) accept(Application.Json) @@ -898,11 +902,13 @@ class RawFormApiImpl( override suspend fun getFormTemplateInGroup( groupId: String, formTemplateId: String, + raw: Boolean?, ): HttpResponse = get(authProvider, groupId) { url { takeFrom(apiUrl) appendPathSegments("rest", "v2", "form", "template", "inGroup", groupId, formTemplateId) + parameter("raw", raw) parameter("ts", GMTDate().timestamp) } accept(Application.Json) From 59b1f22cb3a849b23abf5c71654d5b32c14f8ee1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antoine=20Duch=C3=A2teau?= Date: Mon, 16 Mar 2026 14:45:33 +0100 Subject: [PATCH 4/5] Authentication using external jwt for cockpit (#521) * Expose doNotUseProjectIdForGroupSelection in various locations to allow for google authentication from cockpit * Better constructor for ConfiguredExternalAuthenticationDetails and SecretProviderAuthenticationOptions.ExternalAuthenticationToken * Fix kt side constructor of ConfiguredExternalAuthenticationDetailsJs * Better constructor for ExternalAuthenticationToken * Fix the KDoc --------- Co-authored-by: Luca Tremamunno --- CLAUDE.md | 4 +- .../cardinal/sdk/auth/AuthSecretDetails.kt | 4 +- .../icure/cardinal/sdk/auth/Credentials.kt | 4 +- .../sdk/options/AuthenticationMethod.kt | 4 +- .../sdk/js/options/AuthenticationMethod.kt | 26 +++++++--- .../options/external/AuthSecretDetailsJs.kt | 5 +- ...derAuthenticationOptionsInitialSecretJs.kt | 1 + .../options/AuthenticationMethod.mts | 52 ++++++++++++++----- 8 files changed, 72 insertions(+), 28 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 46b15eb49..0e8b53ffa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -113,6 +113,8 @@ Many files are auto-generated (marked with `// WARNING: This file is auto-genera - Filter classes in `filters/` - Wrapper code in `ts-wrapper/`, `python-wrapper/`, `dart-wrapper/` +The code generation is a two steps process: JSON files that describe the syntax and semantics of the entities and APIs are maintained in `build/generated/ksp/jvm/jvmMain/resources/.../Class.json` and then the `sdk-codegen` tool generates the actual Kotlin/JS/Python/Dart code. + **Do not manually edit auto-generated files.** Generation is done by the external `sdk-codegen` tool. ### Key Annotations @@ -134,4 +136,4 @@ Many files are auto-generated (marked with `// WARNING: This file is auto-genera - Max line length: 140 - Trailing commas: enabled - Wildcard imports: allowed -- Style: ktlint_official \ No newline at end of file +- Style: ktlint_official diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/AuthSecretDetails.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/AuthSecretDetails.kt index aa68c1b4c..f64cbbfae 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/AuthSecretDetails.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/AuthSecretDetails.kt @@ -53,8 +53,8 @@ sealed interface AuthSecretDetails { * @param secret the token or another secret that will be used for authentication. * @param minimumAuthenticationClass only consider configurations that can provide at least this authentication class. The actual * authentication class obtained for the token may be higher. - * @param doNotUseProjectIdForGroupSelection only use the project id specified in the initialize method to choose the configuration of - * the external token, but not the group where to log in. + * @param doNotUseProjectIdForGroupSelection (INTERNAL USE ONLY) only use the project id specified in the initialize method to choose the configuration of + * the external token, but not the group where to log in. This is probably not the option you are looking for. */ data class ConfiguredExternalAuthenticationDetails( val configId: String, diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/Credentials.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/Credentials.kt index 33bd246ff..a9f608c1a 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/Credentials.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/auth/Credentials.kt @@ -54,8 +54,8 @@ data class ExternalAuthenticationToken( */ val minimumAuthenticationClass: AuthenticationClass = AuthenticationClass.ExternalAuthentication, /** - * If set to true, the project id specified in the initialize method will be used to find the external configuration for the external - * token but not to restrict the group where to log in. + * (INTERNAL USE ONLY) only use the project id specified in the initialize method to choose the configuration of + * the external token, but not the group where to log in. This is probably not the option you are looking for. */ val doNotUseProjectIdForGroupSelection: Boolean = false ) : Credentials diff --git a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/options/AuthenticationMethod.kt b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/options/AuthenticationMethod.kt index 372f82c1c..828637d3b 100644 --- a/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/options/AuthenticationMethod.kt +++ b/cardinal-sdk/src/commonMain/kotlin/com/icure/cardinal/sdk/options/AuthenticationMethod.kt @@ -119,7 +119,7 @@ sealed interface AuthenticationMethod { @Serializable data class LongLivedToken(val token: String) : InitialSecret @Serializable - data class ExternalAuthenticationToken(val token: String, val configId: String) : InitialSecret + data class ExternalAuthenticationToken(val token: String, val configId: String, val doNotUseProjectIdForGroupSelection: Boolean?) : InitialSecret } } } @@ -175,7 +175,7 @@ suspend fun AuthenticationMethod.getAuthProvider( is AuthenticationMethod.UsingSecretProvider.InitialSecret.LongLivedToken -> AuthSecretDetails.LongLivedTokenDetails(initialSecret.token) is AuthenticationMethod.UsingSecretProvider.InitialSecret.ExternalAuthenticationToken -> - AuthSecretDetails.ConfiguredExternalAuthenticationDetails(initialSecret.configId, initialSecret.token) + AuthSecretDetails.ConfiguredExternalAuthenticationDetails(initialSecret.configId, initialSecret.token, AuthenticationClass.ExternalAuthentication, initialSecret.doNotUseProjectIdForGroupSelection ?: false) is AuthenticationMethod.UsingSecretProvider.InitialSecret.Password -> AuthSecretDetails.PasswordDetails(initialSecret.password) null -> null diff --git a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/AuthenticationMethod.kt b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/AuthenticationMethod.kt index dda301875..354040b6d 100644 --- a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/AuthenticationMethod.kt +++ b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/AuthenticationMethod.kt @@ -41,6 +41,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.await import kotlinx.coroutines.promise import kotlin.js.Promise +import kotlin.js.json @OptIn(InternalIcureApi::class) @@ -85,7 +86,8 @@ private fun InitialSecretJs.toKt(): AuthenticationMethod.UsingSecretProvider.Ini is ExternalAuthenticationTokenJs -> AuthenticationMethod.UsingSecretProvider.InitialSecret.ExternalAuthenticationToken( token = token, - configId = configId + configId = configId, + doNotUseProjectIdForGroupSelection = doNotUseProjectIdForGroupSelection ) is InitialSecretLongLivedTokenJs -> AuthenticationMethod.UsingSecretProvider.InitialSecret.LongLivedToken(token) @@ -125,20 +127,28 @@ private fun AuthSecretDetailsJs.toKt(): AuthSecretDetails = when (this) { else -> throw IllegalArgumentException("Unrecognised auth secret details: ${this::class.simpleName}") } private fun AuthSecretDetails.toJs(): AuthSecretDetailsJs = when (this) { - is AuthSecretDetails.ConfiguredExternalAuthenticationDetails -> + is AuthSecretDetails.ConfiguredExternalAuthenticationDetails -> { ConfiguredExternalAuthenticationDetailsJs( secret = secret, configId = configId, - minimumAuthenticationClass = minimumAuthenticationClass.name + props = json( + "minimumAuthenticationClass" to minimumAuthenticationClass.name, + "doNotUseProjectIdForGroupSelection" to doNotUseProjectIdForGroupSelection + ) ) - is AuthSecretDetails.LongLivedTokenDetails -> + } + is AuthSecretDetails.LongLivedTokenDetails -> { LongLivedTokenDetailsJs(secret = secret) - is AuthSecretDetails.PasswordDetails -> + } + is AuthSecretDetails.PasswordDetails -> { PasswordDetailsJs(secret = secret) - is AuthSecretDetails.ShortLivedTokenDetails -> + } + is AuthSecretDetails.ShortLivedTokenDetails -> { ShortLivedTokenDetailsJs(secret = secret, authenticationProcessInfo = authenticationProcessInfo.toJs()) - is AuthSecretDetails.TwoFactorAuthTokenDetails -> + } + is AuthSecretDetails.TwoFactorAuthTokenDetails -> { TwoFactorAuthTokenDetailsJs(secret = secret) + } } @OptIn(InternalIcureApi::class) private fun AuthenticationProcessRequest.toJs(): AuthenticationProcessRequestJs = AuthenticationProcessRequestJs( @@ -181,4 +191,4 @@ internal fun AuthenticationProcessTemplateParametersJs.toKt() = AuthenticationProcessTemplateParameters( firstName = this.firstName, lastName = this.lastName - ) \ No newline at end of file + ) diff --git a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/AuthSecretDetailsJs.kt b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/AuthSecretDetailsJs.kt index d27dade87..f6e322263 100644 --- a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/AuthSecretDetailsJs.kt +++ b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/AuthSecretDetailsJs.kt @@ -35,9 +35,12 @@ external class LongLivedTokenDetailsJs( external class ConfiguredExternalAuthenticationDetailsJs( configId: String, secret: String, - minimumAuthenticationClass: String?, + // minimumAuthenticationClass: String?, + // doNotUseProjectIdForGroupSelection: Boolean?, + props: dynamic ) : AuthSecretDetailsJs { val configId: String val secret: String val minimumAuthenticationClass: String? + val doNotUseProjectIdForGroupSelection: Boolean? } diff --git a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/SecretProviderAuthenticationOptionsInitialSecretJs.kt b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/SecretProviderAuthenticationOptionsInitialSecretJs.kt index c7da5a04e..252767a2e 100644 --- a/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/SecretProviderAuthenticationOptionsInitialSecretJs.kt +++ b/ts-wrapper/src/jsMain/kotlin/com/icure/cardinal/sdk/js/options/external/SecretProviderAuthenticationOptionsInitialSecretJs.kt @@ -15,4 +15,5 @@ external class InitialSecretLongLivedTokenJs : InitialSecretJs { external class ExternalAuthenticationTokenJs : InitialSecretJs { val token: String val configId: String + val doNotUseProjectIdForGroupSelection: Boolean? } diff --git a/ts-wrapper/src/jsMain/typescript/options/AuthenticationMethod.mts b/ts-wrapper/src/jsMain/typescript/options/AuthenticationMethod.mts index c5f887433..544454e95 100644 --- a/ts-wrapper/src/jsMain/typescript/options/AuthenticationMethod.mts +++ b/ts-wrapper/src/jsMain/typescript/options/AuthenticationMethod.mts @@ -51,6 +51,17 @@ export namespace AuthenticationMethod { } export class ExternalAuthenticationToken { + + /** + * During login consider only configurations that can provide at least this authentication class + */ + readonly minimumAuthenticationClass: AuthenticationClass | undefined + /** + * (INTERNAL USE ONLY) only use the project id specified in the initialize method to choose the configuration of + * the external token, but not the group where to log in. This is probably not the option you are looking for. + */ + readonly doNotUseProjectIdForGroupSelection: boolean | undefined + constructor( /** * The id of the configuration that specifies how the token should be validated and how it should be used to find @@ -63,11 +74,14 @@ export namespace AuthenticationMethod { * A token used to perform the external authentication */ readonly token: string, - /** - * During login consider only configurations that can provide at least this authentication class - */ - readonly minimumAuthenticationClass?: AuthenticationClass, - ) {} + props: { + minimumAuthenticationClass?: AuthenticationClass, + doNotUseProjectIdForGroupSelection?: boolean + } = {}, + ) { + this.minimumAuthenticationClass = props.minimumAuthenticationClass + this.doNotUseProjectIdForGroupSelection = props.doNotUseProjectIdForGroupSelection + } } export class JwtCredentials { @@ -154,7 +168,13 @@ export namespace SecretProviderAuthenticationOptions { export namespace InitialSecret { export class Password { constructor(readonly password: string) {} } export class LongLivedToken { constructor(readonly token: string) {} } - export class ExternalAuthenticationToken { constructor(readonly token: string, readonly configId: string) {} } + export class ExternalAuthenticationToken { + readonly doNotUseProjectIdForGroupSelection: boolean | undefined + + constructor(readonly token: string, readonly configId: string, props: { doNotUseProjectIdForGroupSelection?: boolean } = {}) { + this.doNotUseProjectIdForGroupSelection = props.doNotUseProjectIdForGroupSelection + } + } } export type InitialSecret = InitialSecret.Password | InitialSecret.LongLivedToken | InitialSecret.ExternalAuthenticationToken @@ -212,7 +232,7 @@ export namespace AuthSecretDetails { */ constructor (readonly secret: String) {} } - + export class TwoFactorAuthTokenDetails { /** * @param secret the current two-factor authentication token of the user. @@ -227,15 +247,17 @@ export namespace AuthSecretDetails { */ constructor(readonly secret: String, readonly authenticationProcessInfo: AuthenticationProcessRequest) {} } - + export class LongLivedTokenDetails { /** * @param secret a long-lived token of the user. */ constructor (readonly secret: String) {} } - + export class ConfiguredExternalAuthenticationDetails { + readonly minimumAuthenticationClass: AuthenticationClass | undefined + readonly doNotUseProjectIdForGroupSelection: boolean | undefined /** * Login using a token or other secret provided by another authentication service configured for your project. * @@ -245,10 +267,16 @@ export namespace AuthSecretDetails { * * @param configId id of the configuration to use for authentication. * @param secret the token or another secret that will be used for authentication. - * @param minimumAuthenticationClass only consider configurations that can provide at least this authentication class. The actual + * @param props + * - minimumAuthenticationClass only consider configurations that can provide at least this authentication class. The actual * authentication class obtained for the token may be higher. + * - doNotUseProjectIdForGroupSelection (INTERNAL USE ONLY) only use the project id specified in the initialize method to choose the configuration of + * the external token, but not the group where to log in. This is probably not the option you are looking for. */ - constructor (readonly configId: string, readonly secret: string, readonly minimumAuthenticationClass?: AuthenticationClass) {} + constructor (readonly configId: string, readonly secret: string, props: { minimumAuthenticationClass?: AuthenticationClass, doNotUseProjectIdForGroupSelection?: boolean } = {}) { + this.minimumAuthenticationClass = props.minimumAuthenticationClass + this.doNotUseProjectIdForGroupSelection = props.doNotUseProjectIdForGroupSelection + } } } export type AuthSecretDetails = @@ -312,4 +340,4 @@ export class AuthenticationProcessRequest { readonly specId: String, readonly requestId: String ) {} -} \ No newline at end of file +} From b3c708babf756660bacb67c990cb43dbac3f50e1 Mon Sep 17 00:00:00 2001 From: Luca Tremamunno Date: Mon, 16 Mar 2026 14:51:02 +0100 Subject: [PATCH 5/5] Bump version --- cardinal-sdk/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cardinal-sdk/build.gradle.kts b/cardinal-sdk/build.gradle.kts index fdc3a1152..e12d57d33 100644 --- a/cardinal-sdk/build.gradle.kts +++ b/cardinal-sdk/build.gradle.kts @@ -18,7 +18,7 @@ val mavenReleasesRepository: String by project group = "com.icure" -val version = "2.1.2" +val version = "2.1.3" project.version = version val generateSdkVersion by tasks.registering {