# Watch integration - API for communication between MPA and Watch #### Basic information Channel allows only to one-way communication without response. There is no response definition. Treat Response as new request without any response. Communication is based on JSON format. Request object must contains request *type* and *requestId.* Other fields are determined by request type. #### Request structure
typeStringRequest type. Use API method name
appVersionStringCurrent application version. Used to support backward compatibility
sdkVersionStringCurrently used Wearable SDK version
requestIdStringUnique Id of request for matching request with response
chunkMessageChunk**Optional.**Allows to split the request into multiple parts to avoid 1kb limit.
Json structure:
`{`
`    ``type: ``"EVENT_TYPE"``,`
`    ``appVersion: ``"2.0.0"``,`
`    ``requestId: ``"d516d558-f476-4e7f-b3c0-300261d37d46"`
`    ``//other fields reserved for type`
`}`
#### Common models Token
idStringPayment Instrument Id
tokenType StringEnum with value: MC
tokenExpiry StringToken expiration date in format MM/YY
tokenLastFourDigitsStringToken last four digits
paymentInstrumentExpirationDateStringPayment instrument expiration date in format MM/YY
paymentInstrumentLastFourDigitsStringPayment instrument last four digits
tokenStatusStringPayment token status. One of \[ACTIVE, SUSPENDED, DELETED\]
descriptionStringToken description
tokenVisualStringOptional, visualId from DC
PaymentInstrumentStatus
paymentInstrumentIdStringPayment Instrument Id
status StringPayment token status. One of \[ACTIVE, SUSPENDED, DELETED\]
credentialsCountIntTransaction credentials count
MessageChunk
currentIntCurrent chunk. Starts with 1.
totalIntNumber of all chunks.
dataStringPart of the full message.
#### API for communication to Watch
Method for creating secure session to transfer data betwen MPA and Watch. Duriing this porcess SDK on Phone creates unique keys for communication then Watch creates data encryption keys. Method should be used before evey AddTokenData and AddTokenCredentials methods CreateSecureSesssion( type:String, appVersion:String, requestId: String, secureSessionData:String) CreateSecureSessionResult( type:String, appVersion:String, sdkVersion:String, requestId: String, secureSessionData:String) CreateSecureSessionResult( appVersion:String, sdkVersion:String, type:String, requestId:String, erorr:Error) Errors:
Method for synchronize tokens status in version 1.0 and initialize synchronization from Watch to MPA SyncStatus( type:String, appVersion:String, requestId: String) SyncStatusResult( type:String, appVersion:String, sdkVersion:String, requestId:String, pairDeviceData:String, watchPinType:Enum<APP\_PIN, WATCH\_PIN, NONE>, Deprecated("Not used in v1.1") paymentInstrumentIds : List<String>) SyncStatusResult( appVersion :String, sdkVersion:String, type:String, requestId:String, erorr:Error) Errors:
Method for synchronize tokens status between MPA and Watch. Used for update transaction credentials SyncStatusExtended( type:String, appVersion:String, requestId: String) SyncStatusExtendedResult( type:String, appVersion:String, sdkVersion:String, requestId:String, chunk: MessageChunk - ChunkedBase64 data (single json to split between next messages): { "paymentInstrumentStatuses":List<PaymentInstrumentStatus> "usedCredentialsInfo":String) } SyncStatusExtendedResult( appVersion :String, sdkVersion:String, type:String, requestId:String, erorr:Error) Errors: CHUNKED\_DATA\_PARSE\_ERROR
Method for initialize of add new Token on Watch. Method allows to add Token details only, use AddTokenData for add token data. AddTokenInit( type:String, appVersion::String, requestId: String, token:Token) AddTokenInitResult( type:String, appVersion:String, sdkVersion:String, requestId:String) AddTokenInitResult( appVersion:String, sdkVersion:String, type:String, requestId:String, error:Error) Errors: PAYMENT\_INSTRUMENT\_ALREADY\_EXIST, TOKEN\_ADD\_ERROR
Method for processing of new Token Data When finished MPA should proceed AddTokenCreedntialsInit AddTokenData( type:String, appVersion::String, requestId: String, paymentInstrumentId:String, chunk:MessageChunk) Chunked Base64 data (single json to split between next messages): { a:String,//paymentInstrumentId b:String //encryptedTokenData } AddTokenDataResult( type:String, appVersion:String, sdkVersion:String, requestId:String) AddTokenDataResult( appVersion:String, sdkVersion:String, type:String, requestId:String, error:Error) Errors: PAYMENT\_INSTRUMENT\_ALREADY\_EXIST, PAYMENT\_INSTRUMENT\_NOT\_FOUND, CHUNKED\_DATA\_PARSE\_ERROR, TOKEN\_ADD\_ERROR
Method for initialize of add Token Credentials on Watch.AddTokenCredentialsInit( type:String, appVersion::String, requestId: String, paymentInstrumentId:String) AddTokenCredentialsInitResult( type:String, appVersion::String, sdkVersion:String, requestId: String) AddTokenCredentialsInitResult( type:String, appVersion:String, sdkVersion:String, requestId:String, error:Error) Errors: PAYMENT\_INSTRUMENT\_NOT\_FOUND
Method for processing of add Token Credentials on Watch.AddTokenCredentialsData( type:String, appVersion::String, requestId: String, chunk:MessageChunk) Chunked Base64 data (single json to split between next messages): { a:String,//paymentInstrumentId b:String //encryptedCredentialsData } AddTokenCredentialsInitResult( type:String, appVersion:String, sdkVersion:String, requestId: String) AddTokenCredentialsInitResult( type:String, appVersion:String, sdkVersion:String, requestId:String, error:Error) Errors: PAYMENT\_INSTRUMENT\_NOT\_FOUND, CHUNKED\_DATA\_PARSE\_ERROR, CREDENTIALS\_ADD\_ERROR
Method for update Token status on WatchUpdateToken( type:String, requestId:String, paymentInstrumentId:String, status: TokenStatus(DELETED, SUSPENDED, ACTIVE) ) UpdateTokenResult( type:String, appVersion:String, sdkVersion:String, requestId:String) UpdateTokenResult( type:String, appVersion:String, sdkVersion:String, requestId:String, error:Error) Errors: PAYMENT\_INSTRUMENT\_NOT\_FOUND, TOKEN\_UPDATE\_ERROR
Method for displaying a list of logs on WatchShowLogs( type:String, requestId:String ) (no response)(no response)
Method for collecting logs from WatchDumpLogs( type:String, requestId:String ) DumpLogsResult( type:String, requestId:String, appVersion:String, sdkVersion:String, logs:List<{ time:String, message:String }> ) DumpLogsResult( type:String, requestId:String, appVersion:String, sdkVersion:String, error:Error ) Errors:
#### Sample
`//request`
`{`
`  ``"type"``: ``"AddTokenInit"``,`
`  ``"appVersion"` `: ``"2.0.0"``,`
`  ``"requestId"``: ``"d27978a0-5e06-4a05-aef6-b809dcffe53d"``,`
`  ``"token"``: {Token}`
`}`
`//error`
`{`
`  ``"type"``: ``"AddTokenInit"``,`
`  ``"appVersion"` `: ``"3.0.0"``,`
`  ``"requestId: "``d27978a0-5e06-4a05-aef6-b809dcffe53d",`
`  ``"error"``: ``"PAYMENT_INSTRUMENT_ALREADY_EXIST"`
`}`