Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
## 0.25.0

* Add options locale, and useTeeOperator when using `setVerificationOptions` method.
* Add option to use Reclaim's TEE+MPC Protocol for HTTP request claim verification & attestation.
* Mention locale in headers for requests sent to reclaim sdk backend.
* Add support for app links & deep links launch using `Reclaim.setAllowedAppLinks` API. This API can be used by provider user scripts.
* Share the exact error message from backend on errors in `ReclaimSessionExpiredException`.
* Add `Reclaim.updateUserAgent(userAgent:string)` API for updating user agent from provider user script.

## 0.24.0

* Fix use of capability access token
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2025, Reclaim Protocol. Use of this source code is governed by a license that can be found in the LICENSE file.
// Autogenerated from Pigeon (v26.0.1), do not edit directly.
// Autogenerated from Pigeon (v26.1.4), do not edit directly.
// See also: https://pub.dev/packages/pigeon
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")

Expand Down Expand Up @@ -61,7 +61,7 @@ private object MessagesPigeonUtils {
}
if (a is Map<*, *> && b is Map<*, *>) {
return a.size == b.size && a.all {
(b as Map<Any?, Any?>).containsKey(it.key) &&
(b as Map<Any?, Any?>).contains(it.key) &&
deepEquals(it.value, b[it.key])
}
}
Expand Down Expand Up @@ -287,37 +287,64 @@ data class ClientProviderInformationOverride (
data class ClientFeatureOverrides (
val cookiePersist: Boolean? = null,
val singleReclaimRequest: Boolean? = null,
val attestorBrowserRpcUrl: String? = null,
val idleTimeThresholdForManualVerificationTrigger: Long? = null,
val sessionTimeoutForManualVerificationTrigger: Long? = null,
val attestorBrowserRpcUrl: String? = null,
val isAIFlowEnabled: Boolean? = null,
val manualReviewMessage: String? = null,
val loginPromptMessage: String? = null
val loginPromptMessage: String? = null,
val useTEE: Boolean? = null,
val interceptorOptions: String? = null,
val claimCreationTimeoutDurationInMins: Long? = null,
val sessionNoActivityTimeoutDurationInMins: Long? = null,
val aiProviderNoActivityTimeoutDurationInSecs: Long? = null,
val pageLoadedCompletedDebounceTimeoutMs: Long? = null,
val potentialLoginTimeoutS: Long? = null,
val screenshotCaptureIntervalSeconds: Long? = null,
val teeUrls: String? = null
)
{
companion object {
fun fromList(pigeonVar_list: List<Any?>): ClientFeatureOverrides {
val cookiePersist = pigeonVar_list[0] as Boolean?
val singleReclaimRequest = pigeonVar_list[1] as Boolean?
val idleTimeThresholdForManualVerificationTrigger = pigeonVar_list[2] as Long?
val sessionTimeoutForManualVerificationTrigger = pigeonVar_list[3] as Long?
val attestorBrowserRpcUrl = pigeonVar_list[4] as String?
val attestorBrowserRpcUrl = pigeonVar_list[2] as String?
val idleTimeThresholdForManualVerificationTrigger = pigeonVar_list[3] as Long?
val sessionTimeoutForManualVerificationTrigger = pigeonVar_list[4] as Long?
val isAIFlowEnabled = pigeonVar_list[5] as Boolean?
val manualReviewMessage = pigeonVar_list[6] as String?
val loginPromptMessage = pigeonVar_list[7] as String?
return ClientFeatureOverrides(cookiePersist, singleReclaimRequest, idleTimeThresholdForManualVerificationTrigger, sessionTimeoutForManualVerificationTrigger, attestorBrowserRpcUrl, isAIFlowEnabled, manualReviewMessage, loginPromptMessage)
val useTEE = pigeonVar_list[8] as Boolean?
val interceptorOptions = pigeonVar_list[9] as String?
val claimCreationTimeoutDurationInMins = pigeonVar_list[10] as Long?
val sessionNoActivityTimeoutDurationInMins = pigeonVar_list[11] as Long?
val aiProviderNoActivityTimeoutDurationInSecs = pigeonVar_list[12] as Long?
val pageLoadedCompletedDebounceTimeoutMs = pigeonVar_list[13] as Long?
val potentialLoginTimeoutS = pigeonVar_list[14] as Long?
val screenshotCaptureIntervalSeconds = pigeonVar_list[15] as Long?
val teeUrls = pigeonVar_list[16] as String?
return ClientFeatureOverrides(cookiePersist, singleReclaimRequest, attestorBrowserRpcUrl, idleTimeThresholdForManualVerificationTrigger, sessionTimeoutForManualVerificationTrigger, isAIFlowEnabled, manualReviewMessage, loginPromptMessage, useTEE, interceptorOptions, claimCreationTimeoutDurationInMins, sessionNoActivityTimeoutDurationInMins, aiProviderNoActivityTimeoutDurationInSecs, pageLoadedCompletedDebounceTimeoutMs, potentialLoginTimeoutS, screenshotCaptureIntervalSeconds, teeUrls)
}
}
fun toList(): List<Any?> {
return listOf(
cookiePersist,
singleReclaimRequest,
attestorBrowserRpcUrl,
idleTimeThresholdForManualVerificationTrigger,
sessionTimeoutForManualVerificationTrigger,
attestorBrowserRpcUrl,
isAIFlowEnabled,
manualReviewMessage,
loginPromptMessage,
useTEE,
interceptorOptions,
claimCreationTimeoutDurationInMins,
sessionNoActivityTimeoutDurationInMins,
aiProviderNoActivityTimeoutDurationInSecs,
pageLoadedCompletedDebounceTimeoutMs,
potentialLoginTimeoutS,
screenshotCaptureIntervalSeconds,
teeUrls,
)
}
override fun equals(other: Any?): Boolean {
Expand Down Expand Up @@ -492,7 +519,22 @@ data class ReclaimApiVerificationOptions (
* Whether the close button is visible.
* Defaults to true.
*/
val isCloseButtonVisible: Boolean
val isCloseButtonVisible: Boolean,
/** A language code & Country code for localization that should be enforced in the verification flow. */
val locale: String? = null,
/**
* Enables use of Reclaim's TEE+MPC protocol for HTTP Request claim verification and
* attestation.
*
* When set to `true`, the verification will use Trusted Execution Environment
* (TEE) with Multi-Party Computation (MPC) for enhanced security.
*
* When set to `false`, the standard Reclaim's proxy attestor verification flow is used.
*
* When `null` (default), the backend decides whether to use TEE based on
* a feature flag (currently in staged rollout).
*/
val useTeeOperator: Boolean? = null
)
{
companion object {
Expand All @@ -502,7 +544,9 @@ data class ReclaimApiVerificationOptions (
val claimCreationType = pigeonVar_list[2] as ClaimCreationTypeApi
val canAutoSubmit = pigeonVar_list[3] as Boolean
val isCloseButtonVisible = pigeonVar_list[4] as Boolean
return ReclaimApiVerificationOptions(canDeleteCookiesBeforeVerificationStarts, canUseAttestorAuthenticationRequest, claimCreationType, canAutoSubmit, isCloseButtonVisible)
val locale = pigeonVar_list[5] as String?
val useTeeOperator = pigeonVar_list[6] as Boolean?
return ReclaimApiVerificationOptions(canDeleteCookiesBeforeVerificationStarts, canUseAttestorAuthenticationRequest, claimCreationType, canAutoSubmit, isCloseButtonVisible, locale, useTeeOperator)
}
}
fun toList(): List<Any?> {
Expand All @@ -512,6 +556,8 @@ data class ReclaimApiVerificationOptions (
claimCreationType,
canAutoSubmit,
isCloseButtonVisible,
locale,
useTeeOperator,
)
}
override fun equals(other: Any?): Boolean {
Expand Down Expand Up @@ -723,15 +769,15 @@ private open class MessagesPigeonCodec : StandardMessageCodec() {
when (value) {
is ReclaimApiVerificationExceptionType -> {
stream.write(129)
writeValue(stream, value.raw)
writeValue(stream, value.raw.toLong())
}
is ReclaimSessionStatus -> {
stream.write(130)
writeValue(stream, value.raw)
writeValue(stream, value.raw.toLong())
}
is ClaimCreationTypeApi -> {
stream.write(131)
writeValue(stream, value.raw)
writeValue(stream, value.raw.toLong())
}
is ReclaimApiVerificationRequest -> {
stream.write(132)
Expand Down
43 changes: 38 additions & 5 deletions generated/ios/Sources/ReclaimInAppSdk/Messages.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
// Copyright 2025, Reclaim Protocol. Use of this source code is governed by a license that can be found in the LICENSE file.
// Autogenerated from Pigeon (v26.0.1), do not edit directly.
// Autogenerated from Pigeon (v26.1.4), do not edit directly.
// See also: https://pub.dev/packages/pigeon

#import <Foundation/Foundation.h>
Expand Down Expand Up @@ -130,20 +130,38 @@ typedef NS_ENUM(NSUInteger, ClaimCreationTypeApi) {
@interface ClientFeatureOverrides : NSObject
+ (instancetype)makeWithCookiePersist:(nullable NSNumber *)cookiePersist
singleReclaimRequest:(nullable NSNumber *)singleReclaimRequest
attestorBrowserRpcUrl:(nullable NSString *)attestorBrowserRpcUrl
idleTimeThresholdForManualVerificationTrigger:(nullable NSNumber *)idleTimeThresholdForManualVerificationTrigger
sessionTimeoutForManualVerificationTrigger:(nullable NSNumber *)sessionTimeoutForManualVerificationTrigger
attestorBrowserRpcUrl:(nullable NSString *)attestorBrowserRpcUrl
isAIFlowEnabled:(nullable NSNumber *)isAIFlowEnabled
manualReviewMessage:(nullable NSString *)manualReviewMessage
loginPromptMessage:(nullable NSString *)loginPromptMessage;
loginPromptMessage:(nullable NSString *)loginPromptMessage
useTEE:(nullable NSNumber *)useTEE
interceptorOptions:(nullable NSString *)interceptorOptions
claimCreationTimeoutDurationInMins:(nullable NSNumber *)claimCreationTimeoutDurationInMins
sessionNoActivityTimeoutDurationInMins:(nullable NSNumber *)sessionNoActivityTimeoutDurationInMins
aiProviderNoActivityTimeoutDurationInSecs:(nullable NSNumber *)aiProviderNoActivityTimeoutDurationInSecs
pageLoadedCompletedDebounceTimeoutMs:(nullable NSNumber *)pageLoadedCompletedDebounceTimeoutMs
potentialLoginTimeoutS:(nullable NSNumber *)potentialLoginTimeoutS
screenshotCaptureIntervalSeconds:(nullable NSNumber *)screenshotCaptureIntervalSeconds
teeUrls:(nullable NSString *)teeUrls;
@property(nonatomic, strong, nullable) NSNumber * cookiePersist;
@property(nonatomic, strong, nullable) NSNumber * singleReclaimRequest;
@property(nonatomic, copy, nullable) NSString * attestorBrowserRpcUrl;
@property(nonatomic, strong, nullable) NSNumber * idleTimeThresholdForManualVerificationTrigger;
@property(nonatomic, strong, nullable) NSNumber * sessionTimeoutForManualVerificationTrigger;
@property(nonatomic, copy, nullable) NSString * attestorBrowserRpcUrl;
@property(nonatomic, strong, nullable) NSNumber * isAIFlowEnabled;
@property(nonatomic, copy, nullable) NSString * manualReviewMessage;
@property(nonatomic, copy, nullable) NSString * loginPromptMessage;
@property(nonatomic, strong, nullable) NSNumber * useTEE;
@property(nonatomic, copy, nullable) NSString * interceptorOptions;
@property(nonatomic, strong, nullable) NSNumber * claimCreationTimeoutDurationInMins;
@property(nonatomic, strong, nullable) NSNumber * sessionNoActivityTimeoutDurationInMins;
@property(nonatomic, strong, nullable) NSNumber * aiProviderNoActivityTimeoutDurationInSecs;
@property(nonatomic, strong, nullable) NSNumber * pageLoadedCompletedDebounceTimeoutMs;
@property(nonatomic, strong, nullable) NSNumber * potentialLoginTimeoutS;
@property(nonatomic, strong, nullable) NSNumber * screenshotCaptureIntervalSeconds;
@property(nonatomic, copy, nullable) NSString * teeUrls;
@end

@interface ClientLogConsumerOverride : NSObject
Expand Down Expand Up @@ -197,7 +215,9 @@ typedef NS_ENUM(NSUInteger, ClaimCreationTypeApi) {
canUseAttestorAuthenticationRequest:(BOOL )canUseAttestorAuthenticationRequest
claimCreationType:(ClaimCreationTypeApi)claimCreationType
canAutoSubmit:(BOOL )canAutoSubmit
isCloseButtonVisible:(BOOL )isCloseButtonVisible;
isCloseButtonVisible:(BOOL )isCloseButtonVisible
locale:(nullable NSString *)locale
useTeeOperator:(nullable NSNumber *)useTeeOperator;
/// Whether to delete cookies before user journey starts in the client web view.
/// Defaults to true.
@property(nonatomic, assign) BOOL canDeleteCookiesBeforeVerificationStarts;
Expand All @@ -212,6 +232,19 @@ typedef NS_ENUM(NSUInteger, ClaimCreationTypeApi) {
/// Whether the close button is visible.
/// Defaults to true.
@property(nonatomic, assign) BOOL isCloseButtonVisible;
/// A language code & Country code for localization that should be enforced in the verification flow.
@property(nonatomic, copy, nullable) NSString * locale;
/// Enables use of Reclaim's TEE+MPC protocol for HTTP Request claim verification and
/// attestation.
///
/// When set to `true`, the verification will use Trusted Execution Environment
/// (TEE) with Multi-Party Computation (MPC) for enhanced security.
///
/// When set to `false`, the standard Reclaim's proxy attestor verification flow is used.
///
/// When `null` (default), the backend decides whether to use TEE based on
/// a feature flag (currently in staged rollout).
@property(nonatomic, strong, nullable) NSNumber * useTeeOperator;
@end

@interface ProviderVersionApi : NSObject
Expand Down
Loading