Notification Service
notification service purpose and scope the notification service enables partners to send messages to users who have registered a wallet card issued by that partner notifications are template-driven and may be used for both service and marketing purposes, subject to template approval and content policy checks partners can create templates via the partner portal or programmatically, then use approved templates to deliver encrypted, jwt-wrapped notification payloads that target specific card instances delivery metrics impressions, clicks are recorded and exposed in the samsung wallet partners portal for campaign evaluation notification workflow deliver personalized push messages to samsung wallet users, linked to their wallet cards samsung wallet enables authorized partners to send targeted push notifications using pre-approved message templates this feature supports marketing, transactional, and engagement-driven use cases only partners with administrative approval can access and use the notifications feature the notifications tab is hidden for unauthorized accounts step 1 create notification template partners can create push message templates through the partner portal or notification api templates define the structure and content of the notification type only merchant push is supported message category choose from marketing or other variables use dynamic placeholders with {{ }} syntax e g , hello {{name}}, your pass for {{event}} is ready if your wallet card supports multiple languages, a message template must be provided for each language variant after drafting the message run harmfulness check to detect prohibited content results pass or fail even if failed, templates can still be submitted but may be rejected in the next step step 2 request template approval once the template is complete click the request approval button in the portal an administrator will review the content if rejected the reason is provided via system email partners can revise and resubmit the template for approval if approved the approved date will appear in the portal the template becomes eligible for use in the notification api step 3 push notification with template once a template is approved, partners can push notifications to users linked to their wallet cards using a secure post api request required parameters template id – issued after template approval reference id – a unique identifier tied to the user’s wallet card created during the add to wallet process only pre-approved templates can be used in push requests step 4 monitor impressions and clicks after the push is delivered, partners can track impressions – number of users who viewed the notification clicks – number of interactions with the push these metrics can be accessed through the partner portal dashboard, enabling performance evaluation of each campaign geofence notification geofence notification enables samsung wallet to provide a location-triggered notification for a wallet card that has already been added by the user this capability uses the locations field in wallet card data cdata and evaluates the user's device location against a configured geofence policy when the configured condition is met, samsung wallet may display a notification to the user this feature is based on card data registered through add to wallet, but the notification behavior itself is performed after card enrollment for this reason, geofence notification is described as a specialized notification scenario rather than as part of the core add to wallet flow at a high level, the partner provides location information and a geofencetype in the card data samsung wallet uses the provided location data and service configuration to evaluate whether a location-triggered notification should be displayed on the device prerequisites the wallet card must already be added to samsung wallet the partner must provide valid locations data in the wallet card data cdata the partner must provide a geofencetype for each location intended for geofence notification the user must allow location access on the device for location-triggered behavior availability of geofence notification may depend on service policy or feature enablement partner input example { "locations" "[{\ \"lat\" 37 12345,\ \"lng\" 127 12345,\ \"name\" \"store 1\",\ \"address\" \"110 example-ro\",\ \"geofencetype\" \"100\",\ \"message\" \"welcome to store 1 check your available benefits in samsung wallet \"\ }]" } the locations field is represented as a stringified json array in wallet card data cdata each location object may contain basic place information such as latitude, longitude, place name, and address for geofence notification, the partner additionally provides geofencetype as a string value and may provide a notification message geofence notification configuration for geofence notification, the partner provides geofencetype as a string value in each applicable location entry supported values are "100", "200", "300", "400", and "500" these values indicate the geofence radius in meters, such as 100 m, 200 m, 300 m, 400 m, and 500 m samsung wallet uses the provided value together with service-side configuration to apply the geofence notification scenario to the card each value must be provided as a string in the locations entry supported geofencetype values "100" 100 m radius "200" 200 m radius "300" 300 m radius "400" 400 m radius "500" 500 m radius geofence notification flow step 1 prepare card data the partner prepares wallet card data cdata and includes locations entries for the relevant places for geofence notification, each target location entry includes geofencetype and message step 2 register the card through add to wallet the partner submits the card through the add to wallet flow using the appropriate card template and wallet card data step 3 resolve geofence policy samsung wallet applies the geofence notification scenario associated with each geofencetype and prepares the card for location-triggered behavior on the device step 4 add the card and grant location access the user adds the card to samsung wallet to support location-triggered behavior, location access must be enabled on the device step 5 detect geofence events the device evaluates the user's location against the configured geofence conditions, such as entry, radius, and active time range step 6 display notification when the configured condition is satisfied, samsung wallet displays the notification associated with the location entry notification service apis send notification this api sends notifications to end users who have added the wallet card [request] type value description method post url /{cc2}/wltex/cards/{cardid}/notifications/{templateid}/send header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws for more details x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cc2string 2 required country code cc2 from send card state send card event cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal payload ndatastring required notification object json * this field needs to be encrypted * refer to card data token cdata for more details * the value of "cty" must be set to "notification" notification object refidsarray of string 100 required unique content identifier defined by the content provider dataobject required name-value pair for use in notification template example post /wltex/cards/12584806754/notifications/12353465344/send /* [headers] */ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "ndata" <jwt_serialized> } /*[notification object]*/ { "refids" [ "ref-20230304-0003", "ref-20230304-0004" ], "data" { "name" "logan", "place" "samsung wallet" } } [response] type value description http status 200 ok payload n/a [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 unauthorized authorization token is invalid or expired 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request create targeted notification job this api creates a targeted notification job for users who match the specified filter conditions [request] type value description method post url /wltex/cards/{cardid}/notifications/{templateid}/jobs header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal payload filterobject required targeting condition object the supported filter key is eventid dataobject optional name-value pair for use in notification template example post /wltex/cards/12584806754/notifications/12353465344/jobs /* [headers] */ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "filter" { "eventid" "event-003" }, "data" { "name" "logan", "place" "samsung wallet" } } [response] type value description http status 200 ok payload idstring targeted notification job identifier statusstring targeted notification job status the initial status is ready example 200 ok { "resultcode" "0", "resultmessage" "success", "id" "targeting-job-id", "status" "ready" } [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed due to a client error 401 unauthorized authorization token is invalid or expired 404 not found targeted notification job does not exist or does not belong to the requested card 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request get targeted notification job this api retrieves the status and timestamps of a targeted notification job [request] type value description method get url /wltex/cards/{cardid}/notifications/{templateid}/jobs/{jobid} header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier randomly generated uuid string path parameters cardidstring 32 required wallet card identifier granted from samsung wallet partners portal template idstring 32 required approved notification template identifier from samsung wallet partners portal jobidstring 36 required targeted notification job identifier returned when creating the job example get /wltex/cards/12584806754/notifications/12353465344/jobs/targeting-job-id /*[headers]*/ authorization bearer <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140004 [response] type value description http status 200 ok payload jobobject targeted notification job object job idstring targeted notification job identifier job statusstring targeted notification job status job createdatstring date and time when the targeted notification job was created job endedatstring date and time when the targeted notification job ended the value can be null while processing example 200 ok { "resultcode" "0", "resultmessage" "success", "job" { "id" "targeting-job-id", "status" "ready", "createdat" "2026-03-16t00 00 00z", "endedat" null } } [result] http status code description 200 ok success 400 bad request requests cannot or will not be processed due to a client error 401 unauthorized authorization token is invalid or expired 404 not found targeted notification job does not exist or does not belong to the requested card 500 internal server error the server encountered an unexpected condition that prevented it from fulfilling the request adding notification templates in general, card notification creation is possible through the samsung wallet partners portal however, a server api is provided for cases where it is necessary to create a large number of card notifications card notifications created through api can also be checked and managed in the same way on the samsung wallet partners portal [request] type value description method post url /partner/v1/card/template/{cardid}/notification header authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the samsung wallet partners portal * the identifier is needed when updating a specific card template body parameters ntemplateobject required actual payload data in basic json format to establish the communication between partners and samsung wallet this must be in the secure jwt json web token format * see the chapter card data token cdata for more details payload object typestring 20 required notification type m merchant push, g geo push messagetypestring 20 required purpose of notification s service, m marketing messagedetails[]array of object required container of notification message messagedetails[] languagecodestring 20 required default notification language code,e g en, ko messagedetails[] messagestring 500 required notification message forcesaveynstring 10 optional sets whether to save when harmfulness is detected this must be set to either 'y' or 'n' * default 'n' example notification template object { "type" "m", "messagetype" "s", "messagedetails" [ { "languagecode" "en", "message" "it’s notification message " }] } example post /partner/v1/card/template/3hdpejr6qi380/notification /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 /* [payload] */ { "ntemplate" "<jwt_serialized>" } [response] type value description http status 200 ok payload harmfulresult harmfulness check result responded as “pass” or “fail” harmfullabels reason for harmfulness detection responded only when harmfulresult is “fail” save indicates whether the forcesaveyn option has been set when set to “y”, it is responded as “force” 200 ok { "resultcode" "0", "resultmessage" "success", "harmfulresult" "pass" } 200 ok { "resultcode" "0", "resultmessage" "success", "harmfulresult" "fail", "harmfullabels" "hate,violence" } 200 ok { "resultcode" "0", "resultmessage" "success", "save" "force", "harmfulresult" "fail", "harmfullabels" "violence" } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable get notification templates [request] type value description method get url /partner/v1/card/template/{cardid}/notification headers authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the partner portal * the identifier is needed when updating a specific card template example get /partner/v1/card/template/3hdpejr6qi380/notification /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 [response] type value description http status 200 ok example 200 ok { "resultcode" "0", "resultmessage" "success", "templates" [ { "id" "4091356465432138240", "type" "m", "messagetype" "s", "approval" "approved", "messagedetails" [ { "languagecode" "en", "message" "hi! {{name}}, this is merchant push " } ] }, { "id" "4092425423713135680", "type" "m", "messagetype" "s", "approval" "none", "messagedetails" [ { "languagecode" "en", "message" " hi! {{name}}, this is merchant push" } ] }, ] } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable get notification statistics [request] type value description method get url /partner/v1/card/template/{cardid}/stats/notifications headers authorizationstring 1024 required credential token the token can have prefix "bearer" as an authorization type i e , bearer <credentials>* see rest api authorization token jwt / jws x-smcs-partner-idstring 32 required partner id x-request-idstring 32 required request identifier random generated uuid string path parameters cardidstring 32 required the wallet card identifier granted through the partner portal * the identifier is needed when updating a specific card template query parameters notificationidstring 32 optional if specified, statistics are returned only for the specified notification if not specified, aggregated statistics for all notifications of the card are returned starttimetamp ms required start date unix timestamp in milliseconds endtimestamp ms required end date unix timestamp in milliseconds metricstring 32 required metric impression/click example get /partner/v1/card/template/3hdpejr6qi380/stats/notifications?notificationid=123456789&start=1764514800000&end=1765465200000&metric=impression /* [headers] */ authorization <jwt_serialized> x-smcs-partner-id partner-id-0001 x-request-id req-202303140003 [response] type value description http status 200 ok example 200 ok { "resultcode" "0", "resultmessage" "success", "statistics" [ [ 1764820800000, 1 ], [ 1764896400000, 2 ], [ 1764900000000, 1 ], [ 1764903600000, 0 ], [ 1764907200000, 1 ], [ 1765134000000, 0 ] ] } [result] http status code description 200 200 ok 400 400 bad request requests cannot or will not be processed the request due to something that is perceived to be a client error 401 401 unauthorized authorization token is invalid or expired 500 500 internal server error 503 503 service unavailable