From d03a8f9755324d9876009659b79e1024439855d6 Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Tue, 1 Oct 2024 02:10:05 +0530 Subject: [PATCH 1/7] Updated adobe-journey-optimizer-decisioning sdk docs with new public APIs for UpdatePropositions with completion callback --- .../api-reference.md | 45 +++++- .../tabs/api-reference.md | 141 ++++++++++++++++++ .../base/mobile-core/tabs/api-reference.md | 15 +- 3 files changed, 195 insertions(+), 6 deletions(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md index 42dbcdbf0f..1b0ee1769b 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md @@ -104,13 +104,33 @@ iOS +## updatePropositions + +This API dispatches an Event for the Edge network extension to fetch decision propositions, for the provided decision scopes array, from the decisioning services enabled in the Experience Edge. The returned decision propositions are cached in-memory in the Optimize SDK extension and can be retrieved using `getPropositions` API. + + + +Completion callback passed to `updatePropositions` supports network timeout and fatal errors returned by edge network along with fetched propositions data. SDK's internal retry mechanism handles the recoverable HTTP errors therefore recoverable HTTP errors are not returned through this callback. + + + + +Android + + + +iOS + + + ## Public classes -| Type | Android | (AEP 5.x) Swift | (AEP 5.x) Objective-C | -| :--- | :--- | :--- | :--- | -| class | `DecisionScope` | `DecisionScope` | `AEPDecisionScope` | -| class | `Proposition` | `OptimizeProposition` | `AEPOptimizeProposition` | -| class | `Offer` | `Offer` | `AEPOffer` | +| Type | Android | (AEP 5.x) Swift | (AEP 5.x) Objective-C | +| :--- |:-------------------| :--- | :--- | +| class | `DecisionScope` | `DecisionScope` | `AEPDecisionScope` | +| class | `Proposition` | `OptimizeProposition` | `AEPOptimizeProposition` | +| class | `Offer` | `Offer` | `AEPOffer` | +| class | `AEPOptimizeError` | `AEPOptimizeError` | `AEPOptimizeError` | ### DecisionScope @@ -171,3 +191,18 @@ Android iOS + + +### AEPOptimizeError + +This class represents the error details returned by the Edge Network while fetching propositions. + + + +Android + + + +iOS + + diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index ae1b06b186..de464bad92 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -336,6 +336,58 @@ Optimize.updatePropositions(decisionScopes, }); ``` + + +#### Java + +#### Syntax + +```java +public static void updatePropositions(final List decisionScopes, + final Map xdm, + final Map data, + final AdobeCallback> callback) +``` + +* _decisionScopes_ is a list of decision scopes for which propositions need updating. +* _xdm_ is a map containing additional xdm formatted data to be attached to the Experience Event. +* _data_ is a map containing additional freeform data to be attached to the Experience Event. +* _callback_ is a optional completion handler invoked at the completion of the edge request with map of successful decision scopes to propositions and errors, if any. + +#### Example + +```java +final DecisionScope decisionScope1 = DecisionScope("xcore:offer-activity:1111111111111111", "xcore:offer-placement:1111111111111111", 2); +final DecisionScope decisionScope2 = new DecisionScope("myScope"); + +final List decisionScopes = new ArrayList<>(); +decisionScopes.add(decisionScope1); +decisionScopes.add(decisionScope2); + +Optimize.updatePropositions(decisionScopes, + new HashMap() { + { + put("xdmKey", "xdmValue"); + } + }, + new HashMap() { + { + put("dataKey", "dataValue"); + } + }, + new AdobeCallbackWithOptimizeError>() { + @Override + public void fail(AEPOptimizeError optimizeError) { + responseError = optimizeError; + } + + @Override + public void call(Map propositionsMap) { + responseMap = propositionsMap; + } + }); +``` + #### Swift @@ -392,6 +444,41 @@ AEPDecisionScope* decisionScope2 = [[AEPDecisionScope alloc] initWithName: @"myS andData: @{@"dataKey": @"dataValue"}]; ``` + + +#### Swift + +#### Syntax + +```swift +static func updatePropositions(for decisionScopes: [DecisionScope], + withXdm xdm: [String: Any]?, + andData data: [String: Any]? = nil, + _completion: (([DecisionScope: OptimizeProposition]?, Error?) -> Void)? = nil) +``` + +* _decisionScopes_ is an array of decision scopes for which propositions need updating. +* _xdm_ is a dictionary containing additional xdm formatted data to be attached to the Experience Event. +* _data_ is a dictionary containing additional freeform data to be attached to the Experience Event. +* _completion_ is a optional completion handler invoked at the completion of the edge request with map of successful decision scopes to propositions and errors, if any. + +#### Example + +```swift +let decisionScope1 = DecisionScope(activityId: "xcore:offer-activity:1111111111111111", + placementId: "xcore:offer-placement:1111111111111111" + itemCount: 2) +let decisionScope2 = DecisionScope(name: "myScope") + +Optimize.updatePropositions(for: [decisionScope1, decisionScope2] + withXdm: ["xdmKey": "xdmValue"] + andData: ["dataKey": "dataValue"]) { data, error in + if let error = error as? AEPOptimizeError { + // handle error + } + } +``` + ##### Java @@ -880,3 +967,57 @@ public enum OfferType: Int, Codable { init(from format: String) {...} } ``` + + + +#### Swift + +Error details received from Edge response along with [AEPError](../../../home/base/mobile-core/tabs/api-reference/#aeperror) object returned with values: +* AEPError.callbackTimeout - returned when request timeout without any response +* AEPError.serverErrors - returned for HTTP Status 500 +* AEPError.invalidRequest - returned for HTTP Status 400 - 499 (except 408 and 429) + +```swift + +@objc(AEPOptimizeError) +public class AEPOptimizeError: NSObject, Error { + // This is a URI reference (RFC3986) that identifies the problem type + public let type: String? + + // This is the HTTP status code generated by the server for this occurrence of the problem. + public let status: Int? + + // This is a short, human-readable summary of the problem type. + public let title: String? + + // This is human-readable description of the problem type. + public let detail: String? + + // This is a map of additional properties that aid in debugging such as the request ID or the org ID. In some cases, it might contain data specific to the error at hand, such as a list of validation errors. + public let report: [String: Any]? + + // This ia a mandatory AEPError representing the high level error status + public var aepError = AEPError.unexpected + + // Initializer for AEPOptimizeError based based on the Error details returned by Edge respose + public init(type: String?, status: Int?, title: String?, detail: String?, aepError: AEPError? = nil) {...} +} +``` + + + +#### Kotlin + +Error details received from Edge response along with [AdobeError](../../../home/base/mobile-core/tabs/api-reference/#adobeerror) object returned with values: +* AdobeError.CALLBACK_TIMEOUT - returned when request timeout without any response +* AdobeError.SERVER_ERROR - returned for HTTP Status 500 +* AdobeError.INVALID_REQUEST - returned for HTTP Status 400 - 499 (except 408 and 429) + +```kotlin +class AEPOptimizeError(val type: String? = "", + val status: Int? = 0, + val title: String? = "", + val detail: String? = "", + var report: Map?, + var adobeError: AdobeError?) {...} +``` diff --git a/src/pages/home/base/mobile-core/tabs/api-reference.md b/src/pages/home/base/mobile-core/tabs/api-reference.md index 6ec14c5d9b..26b0f9da55 100644 --- a/src/pages/home/base/mobile-core/tabs/api-reference.md +++ b/src/pages/home/base/mobile-core/tabs/api-reference.md @@ -1398,7 +1398,8 @@ public interface AdobeCallback { The `AdobeCallbackWithError` class provides the interface to receive results or an error when the asynchronous APIs perform the requested action. -When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding `AdobeError`. +When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding ` +`. ```java public interface AdobeCallbackWithError extends AdobeCallback { @@ -1414,6 +1415,10 @@ The `AdobeError` class shows the errors that can be passed to an `AdobeCallbackW * `CALLBACK_TIMEOUT` - The timeout was met. * `CALLBACK_NULL` - The provided callback function is null. * `EXTENSION_NOT_INITIALIZED` - The extension is not initialized. +* `SERVER_ERROR` - There was a server error. +* `NETWORK_ERROR` - There was a network error. +* `INVALID_REQUEST` - There was an invalid request. +* `INVALID_RESPONSE` - There was an invalid response. **Example** @@ -1429,6 +1434,14 @@ MobileCore.getPrivacyStatus(new AdobeCallbackWithError() { // handle null callback error } else if (error == AdobeError.EXTENSION_NOT_INITIALIZED) { // handle extension not initialized error + } else if (error == AdobeError.SERVER_ERROR) { + // handle server error + } else if (error == AdobeError.NETWORK_ERROR) { + // handle network error + } else if (error == AdobeError.INVALID_REQUEST) { + // handle invalid request error + } else if (error == AdobeError.INVALID_RESPONSE) { + // handle invalid response error } } From 806c0486e0a2dba0f5914c2b2f4ba954fcdec3cc Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Tue, 1 Oct 2024 20:01:26 +0530 Subject: [PATCH 2/7] Lint fixes --- .../tabs/api-reference.md | 12 ++++++------ .../home/base/mobile-core/tabs/api-reference.md | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index de464bad92..211d0e8afe 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -973,9 +973,9 @@ public enum OfferType: Int, Codable { #### Swift Error details received from Edge response along with [AEPError](../../../home/base/mobile-core/tabs/api-reference/#aeperror) object returned with values: -* AEPError.callbackTimeout - returned when request timeout without any response -* AEPError.serverErrors - returned for HTTP Status 500 -* AEPError.invalidRequest - returned for HTTP Status 400 - 499 (except 408 and 429) +* _AEPError.callbackTimeout_ is returned when request timeout without any response. +* _AEPError.serverErrors_ is returned for HTTP Status 500. +* _AEPError.invalidRequest_ is returned for HTTP Status 400 - 499 (except 408 and 429). ```swift @@ -1009,9 +1009,9 @@ public class AEPOptimizeError: NSObject, Error { #### Kotlin Error details received from Edge response along with [AdobeError](../../../home/base/mobile-core/tabs/api-reference/#adobeerror) object returned with values: -* AdobeError.CALLBACK_TIMEOUT - returned when request timeout without any response -* AdobeError.SERVER_ERROR - returned for HTTP Status 500 -* AdobeError.INVALID_REQUEST - returned for HTTP Status 400 - 499 (except 408 and 429) +* _AdobeError.CALLBACK_TIMEOUT_ is returned when request timeout without any response. +* _AdobeError.SERVER_ERROR_ is returned for HTTP Status 500. +* _AdobeError.INVALID_REQUEST_ is returned for HTTP Status 400 - 499 (except 408 and 429). ```kotlin class AEPOptimizeError(val type: String? = "", diff --git a/src/pages/home/base/mobile-core/tabs/api-reference.md b/src/pages/home/base/mobile-core/tabs/api-reference.md index 26b0f9da55..629ba4fba9 100644 --- a/src/pages/home/base/mobile-core/tabs/api-reference.md +++ b/src/pages/home/base/mobile-core/tabs/api-reference.md @@ -1398,7 +1398,7 @@ public interface AdobeCallback { The `AdobeCallbackWithError` class provides the interface to receive results or an error when the asynchronous APIs perform the requested action. -When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding ` +When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding` `. ```java From 5e748da162e19e20524f79bcb2337e79a84aa835 Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Tue, 1 Oct 2024 23:39:05 +0530 Subject: [PATCH 3/7] Updated review comments and lint error --- .../edge/adobe-journey-optimizer-decisioning/api-reference.md | 4 +--- .../adobe-journey-optimizer-decisioning/tabs/api-reference.md | 3 ++- src/pages/home/base/mobile-core/tabs/api-reference.md | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md index 1b0ee1769b..145160e293 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md @@ -104,7 +104,7 @@ iOS -## updatePropositions +## updatePropositionsWithCompletionHandler This API dispatches an Event for the Edge network extension to fetch decision propositions, for the provided decision scopes array, from the decisioning services enabled in the Experience Edge. The returned decision propositions are cached in-memory in the Optimize SDK extension and can be retrieved using `getPropositions` API. @@ -114,7 +114,6 @@ Completion callback passed to `updatePropositions` supports network timeout and - Android @@ -192,7 +191,6 @@ iOS - ### AEPOptimizeError This class represents the error details returned by the Edge Network while fetching propositions. diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index 211d0e8afe..bad55c465b 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -973,12 +973,12 @@ public enum OfferType: Int, Codable { #### Swift Error details received from Edge response along with [AEPError](../../../home/base/mobile-core/tabs/api-reference/#aeperror) object returned with values: + * _AEPError.callbackTimeout_ is returned when request timeout without any response. * _AEPError.serverErrors_ is returned for HTTP Status 500. * _AEPError.invalidRequest_ is returned for HTTP Status 400 - 499 (except 408 and 429). ```swift - @objc(AEPOptimizeError) public class AEPOptimizeError: NSObject, Error { // This is a URI reference (RFC3986) that identifies the problem type @@ -1009,6 +1009,7 @@ public class AEPOptimizeError: NSObject, Error { #### Kotlin Error details received from Edge response along with [AdobeError](../../../home/base/mobile-core/tabs/api-reference/#adobeerror) object returned with values: + * _AdobeError.CALLBACK_TIMEOUT_ is returned when request timeout without any response. * _AdobeError.SERVER_ERROR_ is returned for HTTP Status 500. * _AdobeError.INVALID_REQUEST_ is returned for HTTP Status 400 - 499 (except 408 and 429). diff --git a/src/pages/home/base/mobile-core/tabs/api-reference.md b/src/pages/home/base/mobile-core/tabs/api-reference.md index 629ba4fba9..0a42528e47 100644 --- a/src/pages/home/base/mobile-core/tabs/api-reference.md +++ b/src/pages/home/base/mobile-core/tabs/api-reference.md @@ -1398,8 +1398,7 @@ public interface AdobeCallback { The `AdobeCallbackWithError` class provides the interface to receive results or an error when the asynchronous APIs perform the requested action. -When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding` -`. +When using this class, if the request cannot be completed within the default timeout or an unexpected error occurs, the request is stopped and the fail method is called with the corresponding `AdobeError`. ```java public interface AdobeCallbackWithError extends AdobeCallback { From f4ff4070de825e9016cccf3ee48cbbaf548ae9c4 Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Wed, 2 Oct 2024 18:48:52 +0530 Subject: [PATCH 4/7] Updated review comments --- .../edge/adobe-journey-optimizer-decisioning/api-reference.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md index 145160e293..3ade098fdd 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md @@ -106,11 +106,11 @@ iOS ## updatePropositionsWithCompletionHandler -This API dispatches an Event for the Edge network extension to fetch decision propositions, for the provided decision scopes array, from the decisioning services enabled in the Experience Edge. The returned decision propositions are cached in-memory in the Optimize SDK extension and can be retrieved using `getPropositions` API. +This API dispatches an event for the Edge network extension to fetch decision propositions, for the provided decision scopes array, from the decisioning services enabled in the Experience Edge. The returned decision propositions are cached in-memory in the Optimize SDK extension and can be retrieved using `getPropositions` API. -Completion callback passed to `updatePropositions` supports network timeout and fatal errors returned by edge network along with fetched propositions data. SDK's internal retry mechanism handles the recoverable HTTP errors therefore recoverable HTTP errors are not returned through this callback. +Completion callback passed to `updatePropositions` supports network timeout and fatal errors returned by edge network along with fetched propositions data. The SDK's internal retry mechanism handles the recoverable HTTP errors. As a result, recoverable HTTP errors are not returned through this callback. From dbbb2d4c9ab19ea294f925de07e716ddc529b0a2 Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Thu, 3 Oct 2024 23:19:26 +0530 Subject: [PATCH 5/7] updated obj C implementation for updatePropositions and removing Android defination --- .../api-reference.md | 16 +++---- .../tabs/api-reference.md | 43 ++++++++++++++++++- 2 files changed, 50 insertions(+), 9 deletions(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md index 3ade098fdd..1627360884 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/api-reference.md @@ -116,7 +116,7 @@ Completion callback passed to `updatePropositions` supports network timeout and Android - +Coming Soon iOS @@ -124,12 +124,12 @@ iOS ## Public classes -| Type | Android | (AEP 5.x) Swift | (AEP 5.x) Objective-C | -| :--- |:-------------------| :--- | :--- | -| class | `DecisionScope` | `DecisionScope` | `AEPDecisionScope` | -| class | `Proposition` | `OptimizeProposition` | `AEPOptimizeProposition` | -| class | `Offer` | `Offer` | `AEPOffer` | -| class | `AEPOptimizeError` | `AEPOptimizeError` | `AEPOptimizeError` | +| Type | Android | (AEP 5.x) Swift | (AEP 5.x) Objective-C | +| :--- |:----------------| :--- | :--- | +| class | `DecisionScope` | `DecisionScope` | `AEPDecisionScope` | +| class | `Proposition` | `OptimizeProposition` | `AEPOptimizeProposition` | +| class | `Offer` | `Offer` | `AEPOffer` | +| class | Coming Soon | `AEPOptimizeError` | `AEPOptimizeError` | ### DecisionScope @@ -199,7 +199,7 @@ This class represents the error details returned by the Edge Network while fetch Android - +**Coming Soon** iOS diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index bad55c465b..4297966e15 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -444,7 +444,7 @@ AEPDecisionScope* decisionScope2 = [[AEPDecisionScope alloc] initWithName: @"myS andData: @{@"dataKey": @"dataValue"}]; ``` - + #### Swift @@ -479,6 +479,47 @@ Optimize.updatePropositions(for: [decisionScope1, decisionScope2] } ``` +#### Objective-C + +#### Syntax + +```objc ++ (void) updatePropositions: (NSArray* _Nonnull) decisionScopes + withXdm: (NSDictionary* _Nullable) xdm + andData: (NSDictionary* _Nullable) data + completion: (void (^ _Nonnull)(NSDictionary* _Nullable propositionsDict, NSError* _Nullable error)) completion; +``` +* _decisionScopes_ is an array of decision scopes for which propositions are requested. +* _xdm_ is a dictionary containing additional xdm formatted data to be attached to the Experience Event. +* _data_ is a dictionary containing additional freeform data to be attached to the Experience Event. +* _completion_ is invoked with propositions dictionary of type `NSDictionary`. An `NSError` is returned if SDK fails to retrieve the propositions. + +#### Example + +```objc + +AEPDecisionScope* decisionScope1 = [[AEPDecisionScope alloc] initWithActivityId: @"xcore:offer-activity:1111111111111111" + placementId: @"xcore:offer-placement:1111111111111111" + itemCount: 2]; +AEPDecisionScope* decisionScope2 = [[AEPDecisionScope alloc] initWithName: @"myScope"]; + +[AEPMobileOptimize updatePropositions: @[decisionScope1, decisionScope2] + withXdm: @{@"xdmKey": @"xdmValue"} + andData: @{@"dataKey": @"dataValue"}] + completion: ^(NSDictionary* propositionsDict, NSError* error) { + if (error != nil) { + // handle error + return; + } + + AEPOptimizeProposition* proposition1 = propositionsDict[decisionScope1]; + // read proposition1 offers + + AEPOptimizeProposition* proposition2 = propositionsDict[decisionScope2]; + // read proposition2 offers +}]; +``` + ##### Java From 775ba052e297f2e50b7a5bc7b0945260c77ec814 Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Thu, 3 Oct 2024 23:19:26 +0530 Subject: [PATCH 6/7] updated obj C implementation for updatePropositions and removing Android defination --- .../adobe-journey-optimizer-decisioning/tabs/api-reference.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index 4297966e15..efffc95d92 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -489,6 +489,7 @@ Optimize.updatePropositions(for: [decisionScope1, decisionScope2] andData: (NSDictionary* _Nullable) data completion: (void (^ _Nonnull)(NSDictionary* _Nullable propositionsDict, NSError* _Nullable error)) completion; ``` + * _decisionScopes_ is an array of decision scopes for which propositions are requested. * _xdm_ is a dictionary containing additional xdm formatted data to be attached to the Experience Event. * _data_ is a dictionary containing additional freeform data to be attached to the Experience Event. From b937639d9d88c9cbb17d1ed014ddd6a07b774ecf Mon Sep 17 00:00:00 2001 From: Ashu Malik Date: Fri, 4 Oct 2024 00:33:16 +0530 Subject: [PATCH 7/7] Update Offer.score to double --- .../adobe-journey-optimizer-decisioning/tabs/api-reference.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md index efffc95d92..ecf206e4cd 100644 --- a/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md +++ b/src/pages/edge/adobe-journey-optimizer-decisioning/tabs/api-reference.md @@ -906,7 +906,7 @@ public class Offer: NSObject, Codable { @objc public let etag: String /// Offer priority score - @objc public let score: Int + @objc public let score: Double /// Offer schema string @objc public let schema: String