Commit a46988c0ef0647243e17a60f5c91eca24c68f79d

Authored by Matti Virkkunen
0 parents

Moved things over from purple-line

README.md 0 → 100644
  1 +++ a/README.md
  1 +LINE instant messenger protocol
  2 +===============================
  3 +
  4 +I moved this to its own repository for clarity.
  5 +
  6 +Files:
  7 +
  8 +* *line.thrift* - a hopefully complete Apache Thrift interface file for the protocol
  9 +* *line-protocol.md* - the rest of the implementation details and notes that should be sufficient to implement a client
... ...
line-protocol.md 0 → 100644
  1 +++ a/line-protocol.md
  1 +LINE instant messenger protocol
  2 +===============================
  3 +
  4 +Matti Virkkunen <[email protected]>
  5 +
  6 +Document is accurate as of 2014-05-04.
  7 +
  8 +This unofficial document describes the LINE (by LINE Corporation/Naver) instant messenger protocol.
  9 +The information is based mostly on reverse engineering and therefore accuracy is not guaranteed.
  10 +
  11 +Also, this document is unfinished. I'm expanding it as I go.
  12 +
  13 +Overview
  14 +--------
  15 +
  16 +LINE as a whole consists of a number of web services because of their multitude of apps and
  17 +subsystems, but the only service that's needed for replicating their desktop IM client's
  18 +functionality is the TalkService.
  19 +
  20 +The protocol is based on a request-response architecture over HTTP(S), with a long poll return
  21 +channel. Apache Thrift is used for serialization of message data.
  22 +
  23 +Wire protocol
  24 +-------------
  25 +
  26 +File: line.thrift (a presumably complete Thrift interface file obtained via reverse engineering)
  27 +
  28 +The protocol is Apache Thrift TCompactProtocol via HTTPS to gd2.line.naver.jp:443. The HTTP request
  29 +path is /S4 for most requests. Some specific requests use a different path, specified where
  30 +relevant.
  31 +
  32 +Unencrypted HTTP also seems to work for the moment, but using it is a really bad idea security-wise.
  33 +Naver itself seems to be currently transitioning to 100% HTTPS.
  34 +
  35 +If using a keep-alive connection, headers from the first request can be persisted. Headers in
  36 +following requests can temporarily override the persisted value. An HTTP header called X-LS is also
  37 +involved. If you want to persist headers, you must remember the X-LS header value the server gives
  38 +you and send it back in the next request. The values seem to be integers. The name could be short
  39 +for "Line Server", and it's probably used so that load-balancers can direct the following responses
  40 +back to the same server that knows the headers.
  41 +
  42 +By using persistent headers it's possible to send each request with just two headers - X-LS and
  43 +Content-Length.
  44 +
  45 +The official protocol seems to be to first make one request to get an authentication key, and then
  46 +open a new connection so that the authentication key can be persisted along with the rest of the
  47 +headers for the following requests.
  48 +
  49 +Types and concepts
  50 +------------------
  51 +
  52 +Friends, chats and groups are identified by 32-digit hex GUIDs prefixed with one character for the
  53 +type.
  54 +
  55 +Internally any user is referred to as a Contact. Contacts are identified by a "mid" and the prefix
  56 +is "u" (presumably for "user")
  57 +
  58 +Chats are called Rooms and are identified by a "mid" which is prefixed by "r" (for "room"). Groups
  59 +are called Groups internally as well and are identified by an "id" which is prefixed with a "c"
  60 +(presumably for "chat").
  61 +
  62 +Any message is represented by a Message object. Message IDs are numeric but they are stored as
  63 +strings.
  64 +
  65 +Timestamps are millisecond precision UNIX time represented as 64-bit integers (TODO: check the
  66 +timezone just in case)
  67 +
  68 +Message authentication
  69 +----------------------
  70 +
  71 +The following HTTP headers are required for a successful request:
  72 +
  73 + X-Line-Application: DESKTOPWIN\t3.2.1.83\tWINDOWS\t5.1.2600-XP-x64
  74 + X-Line-Access: authToken
  75 +
  76 +The \t escape sequence represents a tab character. Other X-Line-Application names exist, but this is
  77 +one that works currently. An invalid application name results in an error. The authToken is
  78 +obtained via the login procedure.
  79 +
  80 +Object storage server
  81 +---------------------
  82 +
  83 +Media files are stored on a separate server at http://os.line.naver.jp/ which is internally referred
  84 +to as the "object storage server". Some files (such as message attachments) seem to require
  85 +authentication with the same protocol as above, but some files (such as buddy icons) don't seem to
  86 +require authentication.
  87 +
  88 +It serves files over both HTTP and HTTPS with the same authentication protocol as above.
  89 +
  90 +Login procedure
  91 +---------------
  92 +
  93 +This Thrift method issues a new authToken for an e-mail address and password combination:
  94 +
  95 + loginWithIdentityCredentialForCertificate(
  96 + IdentityProvider.LINE, // identityProvider
  97 + "[email protected]", // identifier (e-mail address)
  98 + "password", // password (in plain text)
  99 + true, // keepLoggedIn
  100 + "127.0.0.1", // accesslocation (presumably local IP?)
  101 + "hostname", // systemName (will show up in "Devices")
  102 + "") // certificate
  103 +
  104 +For the login request, the X-Line-Access header must be specified but the value can be anything. The
  105 +result structure is as follows:
  106 +
  107 + struct LoginResult {
  108 + 1: string authToken;
  109 + 2: certificate;
  110 + 3: verifier;
  111 + 4: pinCode;
  112 + 5: i32 type;
  113 + }
  114 +
  115 +After a successful login, the type is equal to 1 and the authToken field contains the X-Line-Access
  116 +value to use in subsequent requests.
  117 +
  118 +The official desktop client sends an encrypted e-mail/password involving RSA and no X-Line-Access
  119 +header, but it works just as fine in plain text. (TODO: Include description of RSA login procedure)
  120 +
  121 +Login verification procedure
  122 +----------------------------
  123 +
  124 +In current versions, LINE now requires you to verify your identity using a PIN code when logging in
  125 +to a desktop client for the first time from a "new location" based on geo-IP. This is obviously also
  126 +required when logging in with the desktop client for the very first time.
  127 +
  128 +When PIN verification is required, the login method returns a type of 3 instead of 1. The pinCode
  129 +field contains a PIN code to display to the user and the verifier field is set to a random token
  130 +that is used to identify this verification session. The token stays the same for the whole process.
  131 +
  132 +The client then issues an empty request to the HTTP path /Q with the X-Line-Access header set to the
  133 +verifier token. This request blocks until the user enters the correct PIN code on their mobile
  134 +device.
  135 +
  136 +There doesn't seem to be a limit for incorrect PIN entries on the mobile device, but there is
  137 +currently a three minute time limit. After this the token expires. The client keeps track of the
  138 +time limit locally and aborts the request when it's over.
  139 +
  140 +A success response from /Q is JSON containing the following:
  141 +
  142 + {
  143 + "timestamp": "946684800000",
  144 + "result": {
  145 + "verifier": "the_verifier_token",
  146 + "authPhase": "QRCODE_VERIFIED"
  147 + }
  148 + }
  149 +
  150 +After this response is received the client issues a loginWithVerifierForCertificate() call with the
  151 +verifier token as the parameter. The server then returns a normal LoginReply message with the usual
  152 +authToken.
  153 +
  154 +If the token has already expired the response from /Q looks like the following:
  155 +
  156 + {
  157 + "timestamp": "946684800000",
  158 + "errorCode": "404",
  159 + "errorMessage": "key+is+not+found%3A+the_verifier_token+NOT_FOUND"
  160 + }
  161 +
  162 +Initial sync
  163 +------------
  164 +
  165 +After logging in the client sends out a sequence of requests to synchronize with the server. It
  166 +seems some messages are not always sent - the client could be storing data locally somewhere and
  167 +comparing with the revision ID from getLastOpRevision()
  168 +
  169 +(TODO: Update list for current client)
  170 +
  171 + getLastOpRevision()
  172 +
  173 +Gets the revision ID to use for the long poll return channel later. It's fetched first to ensure
  174 +nothing is missed even if something happens during the sync procedure.
  175 +
  176 + getProfile()
  177 +
  178 +Gets the currently logged in user's profile, which includes their display name and status message
  179 +and so forth.
  180 +
  181 + getBlockedContactIds()
  182 +
  183 +List of blocked user IDs.
  184 +
  185 + getRecommendationIds()
  186 +
  187 +List of suggested friend IDs.
  188 +
  189 + getBlockedRecommendationIds()
  190 +
  191 +List of suggested friend IDs that have been dismissed (why can't the previous method just not
  192 +return these...?)
  193 +
  194 + getAllContactIds()
  195 +
  196 +Gets all contact IDs added as friends.
  197 +
  198 + getContacts(contactIds) - with IDs from the previous methods
  199 +
  200 +Gets details for the users.
  201 +
  202 + getGroupIdsJoined()
  203 +
  204 +Gets all groups current user is a member of.
  205 +
  206 + getGroups(groupIds) - with IDs from the previous method
  207 +
  208 +Gets details for the groups. This included member lists.
  209 +
  210 +Managing the contact list
  211 +-------------------------
  212 +
  213 +Contacts have multiple statuses.
  214 +
  215 +FRIEND = appears on friend list, unless hidden.
  216 +
  217 +RECOMMEND = appears on "recommended contacts" list.
  218 +
  219 +DELETE = used in notifications only AFAIK, to notify that a friend has been completely deleted.
  220 +
  221 +Each state also has a _BLOCKED version where the current user will not receive messages from the
  222 +user. Friends also have a "hidden" status, that is set via the CONTACT_SETTING_CONTACT_HIDE setting
  223 +flag. Blocking is done via blockContact/unblockContact.
  224 +
  225 +There is no separate function to delete a contact for some reason, instead it's done by setting the
  226 +CONTACT_SETTING_DELETE setting. Even though it's a setting, this is equivalent to really deleting
  227 +the friend - they won't appear on getallContactIds() anymore. (FIXME: actually test this...)
  228 +
  229 +Sending messages
  230 +----------------
  231 +
  232 +Messages are sent using the sendMessage() function.
  233 +
  234 + sendMessage(seq, msg)
  235 +
  236 +The seq parameter doesn't seem to be matter, and can be sent as zero. The msg parameter is the
  237 +Message object to send.
  238 +
  239 +The only required fields for a text message are "to", which can be the ID for any valid message
  240 +recipient (user, chat or group), and the "text" field which is the text content to send. Other
  241 +message types involve the contentMetadata fields and possibly uploading files to a separate server.
  242 +
  243 +The return value from sendMessage is a partial Message object that only contains the fields "id",
  244 +"createdTime" and "from". The ID is a numeric string that can be used to refer to that message
  245 +later.
  246 +
  247 +Message types
  248 +-------------
  249 +
  250 +LINE supports various types of messages from simple text messages to pictures and video. Each
  251 +message has a contentType field that specifies the type of content, and some messages include
  252 +attached files from various locations.
  253 +
  254 +Messages can contain extra attributes in the contentMetadata map. One globally used attribute is
  255 +"BOT_CHECK" which is included with a value of "1" for automatic messages I've received from
  256 +"official accounts" - this could be an auto-reply indicator.
  257 +
  258 +### NONE (0) (actually text)
  259 +
  260 +The first contentType is called NONE internally but is actually text. It's the simplest content
  261 +type. The text field contains the message content encoded in UTF-8.
  262 +
  263 +The only thing to watch out for is emoji which are sent as Unicode private use area codepoints.
  264 +
  265 +TODO: make a list of emoji
  266 +
  267 +### IMAGE (1)
  268 +
  269 +Image message content can be delivered in one of two ways.
  270 +
  271 +For normal image messages, a preview image is included as a plain JPEG in the contentPreview field.
  272 +However, for some reason the official desktop client seems to ignore it and rather downloads
  273 +everything from the object storage server.
  274 +
  275 +The preview image URLs are http://os.line.naver.jp/os/m/MSGID/preview and the full-size image URL
  276 +are http://os.line.naver.jp/os/m/MSGID where MSGID is the message's id field.
  277 +
  278 +"Official accounts" broadcast messages to many clients at once, so their image message data is
  279 +stored on publicly accessible servers (currently seems to be Akamai CDN). For those messages no
  280 +embedded preview is included and the image URLs are stored in the contentMetadata map with the
  281 +following keys:
  282 +
  283 +* PREVIEW_URL = absolute URL for preview image
  284 +* DOWNLOAD_URL = absolute URL for full-size image
  285 +* PUBLIC = "TRUE" (haven't seen other values)
  286 +
  287 +As an example of a publicly available image message, have a Pikachu:
  288 +
  289 +http://dl-obs.official.line.naver.jp/r/talk/o/u3ae3691f73c7a396fb6e5243a8718915-1379585871
  290 +
  291 +Return channel
  292 +--------------
  293 +
  294 + fetchOperations(localRev, count)
  295 +
  296 +For incoming events, fetchOperations() calls to the HTTP path /P4 is used. Using the /P4 path
  297 +enables long polling, where the responses block until something happens or a timeout expires. An
  298 +HTTP 410 Gone response signals a timed out poll, in which case a new request should be issued.
  299 +
  300 +When new data arrives, a list of Operation objects is returned. Each Operation (except the end
  301 +marker) comes with a version number, and the next localRev should be the highest revision number
  302 +received.
  303 +
  304 +The official client uses a count parameter of 50.
  305 +
  306 +Operation data is contained either as a Message object in the message field, or in the string fields
  307 +param1-param3.
  308 +
  309 +In general NOTIFIED_* messages notify the current user about other users' actions, while their
  310 +non-NOTIFIED counterparts notify the current user about their own actions, in order to sync them
  311 +across devices.
  312 +
  313 +For many operations the official client doesn't seem to care about the fact that the param1-param3
  314 +fields contain the details of the operation and will rather re-fetch data with a get method instead.
  315 +For instance, many group member list changes will cause the client to do a getGroup(). This may be
  316 +either just lazy coding or a sign of the param parameters being phased out.
  317 +
  318 +The following is a list of operation types.
  319 +
  320 +### END_OF_OPERATION (0)
  321 +
  322 +Signifies the end of the list. This presumably means all operations were returned and none were left
  323 +out due to the count param. This message contains no data, not even a revision number, so don't
  324 +accidentally set your localRev to zero.
  325 +
  326 +### UPDATE_PROFILE (1)
  327 +
  328 +The current user updated their profile. Refresh using getProfile().
  329 +
  330 +* param1 = UpdateProfileAttributeAttr, which property was changed (possibly bitfield)
  331 +
  332 +### NOTIFIED_UPDATE_PROFILE (2)
  333 +
  334 +Another user updated their profile. Refresh using getContact[s]().
  335 +
  336 +* param1 = the user ID
  337 +* param2 = UpdateProfileAttributeAttr, which property was changed (possibly bitfield)
  338 +
  339 +### REGISTER_USERID (3)
  340 +
  341 +(Mystery)
  342 +
  343 +### ADD_CONTACT (4)
  344 +
  345 +The current user has added a contact as a friend.
  346 +
  347 +* param1 = ID of the user that was added
  348 +* param2 = (mystery - seen "0")
  349 +
  350 +### NOTIFIED_ADD_CONTACT (5)
  351 +
  352 +Another user has added the current user as a friend.
  353 +
  354 +* param1 = ID of the user that added the current user
  355 +
  356 +### BLOCK_CONTACT (6)
  357 +
  358 +The current user has blocked a contact.
  359 +
  360 +* param1 = ID of the user that was blocked
  361 +* param2 = (mystery, seen "NORMAL")
  362 +
  363 +### UNBLOCK_CONTACT (7)
  364 +
  365 +The current user has unblocked a contact.
  366 +
  367 +* param1 = ID of the user that was unblocked
  368 +* param2 = (mystery, seen "NORMAL")
  369 +
  370 +### CREATE_GROUP (9)
  371 +
  372 +The current user has created a group. The official client immediately fetches group details with
  373 +getGroup().
  374 +
  375 +* param1 = ID of the group.
  376 +
  377 +### UPDATE_GROUP (10)
  378 +
  379 +The current user has updated a group.
  380 +
  381 +* param1 = ID of the group
  382 +* param2 = (Maybe a bitfield of properties? 1 = name, 2 = picture)
  383 +
  384 +### NOTIFIED_UPDATE_GROUP (11)
  385 +
  386 +Another user has updated group the current user is a member of.
  387 +
  388 +* param1 = ID of the group
  389 +* param2 = ID of the user who updated the group
  390 +* param3 = (Maybe a bitfield of properties?)
  391 +
  392 +### INVITE_INTO_GROUP (12)
  393 +
  394 +The current user has invited somebody to join a group.
  395 +
  396 +* param1 = ID of the group
  397 +* param2 = ID of the user that has been invited
  398 +
  399 +### NOTIFIED_INVITE_INTO_GROUP (13)
  400 +
  401 +The current user has been invited to join a group.
  402 +
  403 +* param1 = ID of the group
  404 +* param2 = ID of the user who invited the current user
  405 +* param3 = ID of the current user
  406 +
  407 +### LEAVE_GROUP (14)
  408 +
  409 +The current user has left a group.
  410 +
  411 +* param1 = ID of the group
  412 +
  413 +### NOTIFIED_LEAVE_GROUP (15)
  414 +
  415 +Another user has left a group the current user is a member of.
  416 +
  417 +* param1 = ID of the group
  418 +* param2 = ID of the user that left the group
  419 +
  420 +### ACCEPT_GROUP_INVITATION (16)
  421 +
  422 +The current user has accepted a group invitation.
  423 +
  424 +* param1 = ID of the group
  425 +
  426 +### NOTIFIED_ACCEPT_GROUP_INVITATION (17)
  427 +
  428 +Another user has joined a group the current user is a member of.
  429 +
  430 +* param1 = ID of the group
  431 +* param2 = ID of the user that joined the group
  432 +
  433 +### KICKOUT_FROM_GROUP (18)
  434 +
  435 +The current user has removed somebody from a group.
  436 +
  437 +* param1 = ID of the group
  438 +* param2 = ID of the user that was removed
  439 +
  440 +### NOTIFIED_KICKOUT_FROM_GROUP (19)
  441 +
  442 +Another user has removed a user from a group. The removed user can also be the current user.
  443 +
  444 +* param1 = ID of the group
  445 +* param2 = ID of the user that removed the current user
  446 +* param3 = ID of the user that was removed
  447 +
  448 +### CREATE_ROOM (20)
  449 +
  450 +The current user has created a room.
  451 +
  452 +* param1 = ID of the room
  453 +
  454 +### INVITE_INTO_ROOM (21)
  455 +
  456 +The current user has invited users into a room.
  457 +
  458 +* param1 = ID of the room
  459 +* param2 = IDs of the users, multiple IDs are separated by U+001E INFORMATION SEPARATOR TWO
  460 +
  461 +### NOTIFIED_INVITE_INTO_ROOM (22)
  462 +
  463 +The current user has been invited into a room. Invitations to rooms to others are not actually sent
  464 +until a message is sent to the room.
  465 +
  466 +* param1 = ID of the room
  467 +* param2 = ID of the user that invited the current user
  468 +* param3 = IDs of the users in the room, multiple IDs are separated by U+001E INFORMATION SEPARATOR
  469 + TWO. The user ID in param2 is not included in this list.
  470 +
  471 +### LEAVE_ROOM (23)
  472 +
  473 +The current user has left a room. Seems to be immediately followed by SEND_CHAT_REMOVED (41).
  474 +
  475 +* param1 = ID of the room
  476 +
  477 +### NOTIFIED_LEAVE_ROOM (24)
  478 +
  479 +Another user has left a room.
  480 +
  481 +* param1 = ID of the room
  482 +* param2 = ID of the user that left
  483 +
  484 +### SEND_MESSAGE (25)
  485 +
  486 +Informs about a message that the current user sent. This is returned to all connected devices,
  487 +including the one that sent the message.
  488 +
  489 +* message = sent message
  490 +
  491 +### RECEIVE_MESSAGE (26)
  492 +
  493 +Informs about a received message that another user sent either to the current user or to a chat. The
  494 +message field contains the message.
  495 +
  496 +The desktop client doesn't seem to care about the included message data, but instead immediately
  497 +re-requests it using getNextMessages().
  498 +
  499 +* message = received message
  500 +
  501 +### RECEIVE_MESSAGE_RECEIPT (28)
  502 +
  503 +Informs that another user has read (seen) messages sent by the current user.
  504 +
  505 +* param1 = ID of the user that read the message
  506 +* param2 = IDs of the messages, multiple IDs are separated by U+001E INFORMATION SEPARATOR TWO
  507 +
  508 +### CANCEL_INVITATION_GROUP (31)
  509 +
  510 +The current user has canceled a group invitation.
  511 +
  512 +* param1 = ID of the group
  513 +* param2 = ID of the user whose invitation was canceled
  514 +
  515 +### NOTIFIED_CANCEL_INVITATION_GROUP (32)
  516 +
  517 +Another user has canceled a group invitation. The canceled invitation can also be that of the
  518 +current user.
  519 +
  520 +* param1 = ID of the group
  521 +* param2 = ID of the user that canceled the request (or invited them in the first place?)
  522 +* param3 = ID of the user whose invitation was canceled
  523 +
  524 +### REJECT_GROUP_INVITATION (34)
  525 +
  526 +The current user has rejected a group infication.
  527 +
  528 +* param1 = ID of the group
  529 +
  530 +### NOTIFIED_REJECT_GROUP_INVITATION (35)
  531 +
  532 +Presumably means another user has rejected a group invitation. However this message doesn't seem to
  533 +get sent.
  534 +
  535 +### UPDATE_SETTINGS (36)
  536 +
  537 +User settings have changed. Refresh with getSettingsAttributes() or getSettings()
  538 +
  539 +* param1 = probably bitfield of changed properties
  540 +* param2 = probably new value of property (seem things like "bF"/"bT" for a boolean attribute)
  541 +
  542 +### SEND_CHAT_CHECKED (40)
  543 +
  544 +### SEND_CHAT_REMOVED (41)
  545 +
  546 +The current user has cleared the history of a chat.
  547 +
  548 +* param1 = user ID or group ID or room ID
  549 +* param2 = seen "990915482402" - maybe an ID, it's similar to IDs
  550 +
  551 +### UPDATE_CONTACT (49)
  552 +
  553 +The current user's settings (e.g. hidden status) for a contact has changed. Refresh with
  554 +getContact[s]().
  555 +
  556 +* param1 = ID of the user that changed
  557 +* param2 = probably bitfield of changed properties
  558 +
  559 +### (Mystery) 60
  560 +
  561 +Meaning unknown. Has appeared after NOTIFIED_ACCEPT_GROUP_INVITATION and NOTIFIED_INVITE_INTO_ROOM.
  562 +
  563 +Seen the following parameters:
  564 +
  565 +* param1 = a group ID
  566 +* param2 = another user's ID
  567 +
  568 +### (Mystery) 61
  569 +
  570 +Meaning unknown. Has appeared after NOTIFIED_LEAVE_GROUP, KICKOUT_FROM_GROUP and
  571 +NOTIFIED_KICKOUT_FROM_GROUP and NOTIFIED_LEAVE_ROOM.
  572 +
  573 +Seen the following parameters:
  574 +
  575 +* param1 = a group ID
  576 +* param2 = another user's ID
  577 +* param3 = "0"
... ...
line.thrift 0 → 100644
  1 +++ a/line.thrift
  1 +// Auto-generated file
  2 +
  3 +enum ApplicationType {
  4 + IOS = 16;
  5 + IOS_RC = 17;
  6 + IOS_BETA = 18;
  7 + IOS_ALPHA = 19;
  8 + ANDROID = 32;
  9 + ANDROID_RC = 33;
  10 + ANDROID_BETA = 34;
  11 + ANDROID_ALPHA = 35;
  12 + WAP = 48;
  13 + WAP_RC = 49;
  14 + WAP_BETA = 50;
  15 + WAP_ALPHA = 51;
  16 + BOT = 64;
  17 + BOT_RC = 65;
  18 + BOT_BETA = 66;
  19 + BOT_ALPHA = 67;
  20 + WEB = 80;
  21 + WEB_RC = 81;
  22 + WEB_BETA = 82;
  23 + WEB_ALPHA = 83;
  24 + DESKTOPWIN = 96;
  25 + DESKTOPWIN_RC = 97;
  26 + DESKTOPWIN_BETA = 98;
  27 + DESKTOPWIN_ALPHA = 99;
  28 + DESKTOPMAC = 112;
  29 + DESKTOPMAC_RC = 113;
  30 + DESKTOPMAC_BETA = 114;
  31 + DESKTOPMAC_ALPHA = 115;
  32 + CHANNELGW = 128;
  33 + CHANNELGW_RC = 129;
  34 + CHANNELGW_BETA = 130;
  35 + CHANNELGW_ALPHA = 131;
  36 + CHANNELCP = 144;
  37 + CHANNELCP_RC = 145;
  38 + CHANNELCP_BETA = 146;
  39 + CHANNELCP_ALPHA = 147;
  40 + WINPHONE = 160;
  41 + WINPHONE_RC = 161;
  42 + WINPHONE_BETA = 162;
  43 + WINPHONE_ALPHA = 163;
  44 + BLACKBERRY = 176;
  45 + BLACKBERRY_RC = 177;
  46 + BLACKBERRY_BETA = 178;
  47 + BLACKBERRY_ALPHA = 179;
  48 + WINMETRO = 192;
  49 + WINMETRO_RC = 193;
  50 + WINMETRO_BETA = 194;
  51 + WINMETRO_ALPHA = 195;
  52 + S40 = 208;
  53 + S40_RC = 209;
  54 + S40_BETA = 210;
  55 + S40_ALPHA = 211;
  56 + CHRONO = 224;
  57 + CHRONO_RC = 225;
  58 + CHRONO_BETA = 226;
  59 + CHRONO_ALPHA = 227;
  60 + TIZEN = 256;
  61 + TIZEN_RC = 257;
  62 + TIZEN_BETA = 258;
  63 + TIZEN_ALPHA = 259;
  64 + VIRTUAL = 272;
  65 +}
  66 +
  67 +enum BuddyBannerLinkType {
  68 + BUDDY_BANNER_LINK_HIDDEN = 0;
  69 + BUDDY_BANNER_LINK_MID = 1;
  70 + BUDDY_BANNER_LINK_URL = 2;
  71 +}
  72 +
  73 +enum BuddyOnAirType {
  74 + NORMAL = 0;
  75 + LIVE = 1;
  76 + VOIP = 2;
  77 +}
  78 +
  79 +enum BuddyResultState {
  80 + ACCEPTED = 1;
  81 + SUCCEEDED = 2;
  82 + FAILED = 3;
  83 + CANCELLED = 4;
  84 + NOTIFY_FAILED = 5;
  85 + STORING = 11;
  86 + UPLOADING = 21;
  87 + NOTIFYING = 31;
  88 +}
  89 +
  90 +enum BuddySearchRequestSource {
  91 + NA = 0;
  92 + FRIEND_VIEW = 1;
  93 + OFFICIAL_ACCOUNT_VIEW = 2;
  94 +}
  95 +
  96 +enum CarrierCode {
  97 + NOT_SPECIFIED = 0;
  98 + JP_DOCOMO = 1;
  99 + JP_AU = 2;
  100 + JP_SOFTBANK = 3;
  101 + KR_SKT = 17;
  102 + KR_KT = 18;
  103 + KR_LGT = 19;
  104 +}
  105 +
  106 +enum ChannelConfiguration {
  107 + MESSAGE = 0;
  108 + MESSAGE_NOTIFICATION = 1;
  109 + NOTIFICATION_CENTER = 2;
  110 +}
  111 +
  112 +enum ChannelErrorCode {
  113 + ILLEGAL_ARGUMENT = 0;
  114 + INTERNAL_ERROR = 1;
  115 + CONNECTION_ERROR = 2;
  116 + AUTHENTICATIONI_FAILED = 3;
  117 + NEED_PERMISSION_APPROVAL = 4;
  118 + COIN_NOT_USABLE = 5;
  119 +}
  120 +
  121 +enum ChannelSyncType {
  122 + SYNC = 0;
  123 + REMOVE = 1;
  124 +}
  125 +
  126 +enum ContactAttribute {
  127 + CONTACT_ATTRIBUTE_CAPABLE_VOICE_CALL = 1;
  128 + CONTACT_ATTRIBUTE_CAPABLE_VIDEO_CALL = 2;
  129 + CONTACT_ATTRIBUTE_CAPABLE_MY_HOME = 16;
  130 + CONTACT_ATTRIBUTE_CAPABLE_BUDDY = 32;
  131 +}
  132 +
  133 +enum ContactCategory {
  134 + NORMAL = 0;
  135 + RECOMMEND = 1;
  136 +}
  137 +
  138 +enum ContactRelation {
  139 + ONEWAY = 0;
  140 + BOTH = 1;
  141 + NOT_REGISTERED = 2;
  142 +}
  143 +
  144 +enum ContactSetting {
  145 + CONTACT_SETTING_NOTIFICATION_DISABLE = 1;
  146 + CONTACT_SETTING_DISPLAY_NAME_OVERRIDE = 2;
  147 + CONTACT_SETTING_CONTACT_HIDE = 4;
  148 + CONTACT_SETTING_FAVORITE = 8;
  149 + CONTACT_SETTING_DELETE = 16;
  150 +}
  151 +
  152 +enum ContactStatus {
  153 + UNSPECIFIED = 0;
  154 + FRIEND = 1;
  155 + FRIEND_BLOCKED = 2;
  156 + RECOMMEND = 3;
  157 + RECOMMEND_BLOCKED = 4;
  158 + DELETED = 5;
  159 + DELETED_BLOCKED = 6;
  160 +}
  161 +
  162 +enum ContactType {
  163 + MID = 0;
  164 + PHONE = 1;
  165 + EMAIL = 2;
  166 + USERID = 3;
  167 + PROXIMITY = 4;
  168 + GROUP = 5;
  169 + USER = 6;
  170 + QRCODE = 7;
  171 + PROMOTION_BOT = 8;
  172 + REPAIR = 128;
  173 + FACEBOOK = 2305;
  174 + SINA = 2306;
  175 + RENREN = 2307;
  176 + FEIXIN = 2308;
  177 +}
  178 +
  179 +enum ContentType {
  180 + NONE = 0;
  181 + IMAGE = 1;
  182 + VIDEO = 2;
  183 + AUDIO = 3;
  184 + HTML = 4;
  185 + PDF = 5;
  186 + CALL = 6;
  187 + STICKER = 7;
  188 + PRESENCE = 8;
  189 + GIFT = 9;
  190 + GROUPBOARD = 10;
  191 + APPLINK = 11;
  192 + LINK = 12;
  193 + CONTACT = 13;
  194 + FILE = 14;
  195 + LOCATION = 15;
  196 + POSTNOTIFICATION = 16;
  197 + RICH = 17;
  198 + CHATEVENT = 18;
  199 +}
  200 +
  201 +enum CustomMode {
  202 + PROMOTION_FRIENDS_INVITE = 1;
  203 + CAPABILITY_SERVER_SIDE_SMS = 2;
  204 + LINE_CLIENT_ANALYTICS_CONFIGURATION = 3;
  205 +}
  206 +
  207 +enum EmailConfirmationStatus {
  208 + NOT_SPECIFIED = 0;
  209 + NOT_YET = 1;
  210 + DONE = 3;
  211 +}
  212 +
  213 +enum EmailConfirmationType {
  214 + SERVER_SIDE_EMAIL = 0;
  215 + CLIENT_SIDE_EMAIL = 1;
  216 +}
  217 +
  218 +enum ErrorCode {
  219 + ILLEGAL_ARGUMENT = 0;
  220 + AUTHENTICATION_FAILED = 1;
  221 + DB_FAILED = 2;
  222 + INVALID_STATE = 3;
  223 + EXCESSIVE_ACCESS = 4;
  224 + NOT_FOUND = 5;
  225 + INVALID_LENGTH = 6;
  226 + NOT_AVAILABLE_USER = 7;
  227 + NOT_AUTHORIZED_DEVICE = 8;
  228 + INVALID_MID = 9;
  229 + NOT_A_MEMBER = 10;
  230 + INCOMPATIBLE_APP_VERSION = 11;
  231 + NOT_READY = 12;
  232 + NOT_AVAILABLE_SESSION = 13;
  233 + NOT_AUTHORIZED_SESSION = 14;
  234 + SYSTEM_ERROR = 15;
  235 + NO_AVAILABLE_VERIFICATION_METHOD = 16;
  236 + NOT_AUTHENTICATED = 17;
  237 + INVALID_IDENTITY_CREDENTIAL = 18;
  238 + NOT_AVAILABLE_IDENTITY_IDENTIFIER = 19;
  239 + INTERNAL_ERROR = 20;
  240 + NO_SUCH_IDENTITY_IDENFIER = 21;
  241 + DEACTIVATED_ACCOUNT_BOUND_TO_THIS_IDENTITY = 22;
  242 + ILLEGAL_IDENTITY_CREDENTIAL = 23;
  243 + UNKNOWN_CHANNEL = 24;
  244 + NO_SUCH_MESSAGE_BOX = 25;
  245 + NOT_AVAILABLE_MESSAGE_BOX = 26;
  246 + CHANNEL_DOES_NOT_MATCH = 27;
  247 + NOT_YOUR_MESSAGE = 28;
  248 + MESSAGE_DEFINED_ERROR = 29;
  249 + USER_CANNOT_ACCEPT_PRESENTS = 30;
  250 + USER_NOT_STICKER_OWNER = 32;
  251 + MAINTENANCE_ERROR = 33;
  252 + ACCOUNT_NOT_MATCHED = 34;
  253 + ABUSE_BLOCK = 35;
  254 + NOT_FRIEND = 36;
  255 + NOT_ALLOWED_CALL = 37;
  256 + BLOCK_FRIEND = 38;
  257 + INCOMPATIBLE_VOIP_VERSION = 39;
  258 + INVALID_SNS_ACCESS_TOKEN = 40;
  259 + EXTERNAL_SERVICE_NOT_AVAILABLE = 41;
  260 + NOT_ALLOWED_ADD_CONTACT = 42;
  261 + NOT_CERTIFICATED = 43;
  262 + NOT_ALLOWED_SECONDARY_DEVICE = 44;
  263 + INVALID_PIN_CODE = 45;
  264 + NOT_FOUND_IDENTITY_CREDENTIAL = 46;
  265 + EXCEED_FILE_MAX_SIZE = 47;
  266 + EXCEED_DAILY_QUOTA = 48;
  267 + NOT_SUPPORT_SEND_FILE = 49;
  268 + MUST_UPGRADE = 50;
  269 + NOT_AVAILABLE_PIN_CODE_SESSION = 51;
  270 +}
  271 +
  272 +enum FeatureType {
  273 + OBJECT_STORAGE = 1;
  274 +}
  275 +
  276 +enum GroupAttribute {
  277 + NAME = 1;
  278 + PICTURE_STATUS = 2;
  279 + ALL = 255;
  280 +}
  281 +
  282 +enum IdentityProvider {
  283 + UNKNOWN = 0;
  284 + LINE = 1;
  285 + NAVER_KR = 2;
  286 +}
  287 +
  288 +enum LoginResultType {
  289 + SUCCESS = 1;
  290 + REQUIRE_QRCODE = 2;
  291 + REQUIRE_DEVICE_CONFIRM = 3;
  292 +}
  293 +
  294 +enum MessageOperationType {
  295 + SEND_MESSAGE = 1;
  296 + RECEIVE_MESSAGE = 2;
  297 + READ_MESSAGE = 3;
  298 + NOTIFIED_READ_MESSAGE = 4;
  299 + NOTIFIED_JOIN_CHAT = 5;
  300 + FAILED_SEND_MESSAGE = 6;
  301 + SEND_CONTENT = 7;
  302 + SEND_CONTENT_RECEIPT = 8;
  303 + SEND_CHAT_REMOVED = 9;
  304 + REMOVE_ALL_MESSAGES = 10;
  305 +}
  306 +
  307 +enum MIDType {
  308 + USER = 0;
  309 + ROOM = 1;
  310 + GROUP = 2;
  311 +}
  312 +
  313 +enum ModificationType {
  314 + ADD = 0;
  315 + REMOVE = 1;
  316 + MODIFY = 2;
  317 +}
  318 +
  319 +enum NotificationItemFetchMode {
  320 + ALL = 0;
  321 + APPEND = 1;
  322 +}
  323 +
  324 +enum NotificationQueueType {
  325 + GLOBAL = 1;
  326 + MESSAGE = 2;
  327 + PRIMARY = 3;
  328 +}
  329 +
  330 +enum NotificationStatus {
  331 + NOTIFICATION_ITEM_EXIST = 1;
  332 + TIMELINE_ITEM_EXIST = 2;
  333 + NOTE_GROUP_NEW_ITEM_EXIST = 4;
  334 + TIMELINE_BUDDYGROUP_CHANGED = 8;
  335 + NOTE_ONE_TO_ONE_NEW_ITEM_EXIST = 16;
  336 + ALBUM_ITEM_EXIST = 32;
  337 + TIMELINE_ITEM_DELETED = 64;
  338 +}
  339 +
  340 +enum NotificationType {
  341 + APPLE_APNS = 1;
  342 + GOOGLE_C2DM = 2;
  343 + NHN_NNI = 3;
  344 + SKT_AOM = 4;
  345 + MS_MPNS = 5;
  346 + RIM_BIS = 6;
  347 + GOOGLE_GCM = 7;
  348 + NOKIA_NNAPI = 8;
  349 + TIZEN = 9;
  350 + LINE_BOT = 17;
  351 + LINE_WAP = 18;
  352 +}
  353 +
  354 +enum OpStatus {
  355 + NORMAL = 0;
  356 + ALERT_DISABLED = 1;
  357 +}
  358 +
  359 +enum OpType {
  360 + END_OF_OPERATION = 0;
  361 + UPDATE_PROFILE = 1;
  362 + NOTIFIED_UPDATE_PROFILE = 2;
  363 + REGISTER_USERID = 3;
  364 + ADD_CONTACT = 4;
  365 + NOTIFIED_ADD_CONTACT = 5;
  366 + BLOCK_CONTACT = 6;
  367 + UNBLOCK_CONTACT = 7;
  368 + NOTIFIED_RECOMMEND_CONTACT = 8;
  369 + CREATE_GROUP = 9;
  370 + UPDATE_GROUP = 10;
  371 + NOTIFIED_UPDATE_GROUP = 11;
  372 + INVITE_INTO_GROUP = 12;
  373 + NOTIFIED_INVITE_INTO_GROUP = 13;
  374 + LEAVE_GROUP = 14;
  375 + NOTIFIED_LEAVE_GROUP = 15;
  376 + ACCEPT_GROUP_INVITATION = 16;
  377 + NOTIFIED_ACCEPT_GROUP_INVITATION = 17;
  378 + KICKOUT_FROM_GROUP = 18;
  379 + NOTIFIED_KICKOUT_FROM_GROUP = 19;
  380 + CREATE_ROOM = 20;
  381 + INVITE_INTO_ROOM = 21;
  382 + NOTIFIED_INVITE_INTO_ROOM = 22;
  383 + LEAVE_ROOM = 23;
  384 + NOTIFIED_LEAVE_ROOM = 24;
  385 + SEND_MESSAGE = 25;
  386 + RECEIVE_MESSAGE = 26;
  387 + SEND_MESSAGE_RECEIPT = 27;
  388 + RECEIVE_MESSAGE_RECEIPT = 28;
  389 + SEND_CONTENT_RECEIPT = 29;
  390 + RECEIVE_ANNOUNCEMENT = 30;
  391 + CANCEL_INVITATION_GROUP = 31;
  392 + NOTIFIED_CANCEL_INVITATION_GROUP = 32;
  393 + NOTIFIED_UNREGISTER_USER = 33;
  394 + REJECT_GROUP_INVITATION = 34;
  395 + NOTIFIED_REJECT_GROUP_INVITATION = 35;
  396 + UPDATE_SETTINGS = 36;
  397 + NOTIFIED_REGISTER_USER = 37;
  398 + INVITE_VIA_EMAIL = 38;
  399 + NOTIFIED_REQUEST_RECOVERY = 39;
  400 + SEND_CHAT_CHECKED = 40;
  401 + SEND_CHAT_REMOVED = 41;
  402 + NOTIFIED_FORCE_SYNC = 42;
  403 + SEND_CONTENT = 43;
  404 + SEND_MESSAGE_MYHOME = 44;
  405 + NOTIFIED_UPDATE_CONTENT_PREVIEW = 45;
  406 + REMOVE_ALL_MESSAGES = 46;
  407 + NOTIFIED_UPDATE_PURCHASES = 47;
  408 + DUMMY = 48;
  409 + UPDATE_CONTACT = 49;
  410 + NOTIFIED_RECEIVED_CALL = 50;
  411 + CANCEL_CALL = 51;
  412 + NOTIFIED_REDIRECT = 52;
  413 + NOTIFIED_CHANNEL_SYNC = 53;
  414 + FAILED_SEND_MESSAGE = 54;
  415 + NOTIFIED_READ_MESSAGE = 55;
  416 + FAILED_EMAIL_CONFIRMATION = 56;
  417 + NOTIFIED_CHAT_CONTENT = 58;
  418 + NOTIFIED_PUSH_NOTICENTER_ITEM = 59;
  419 +}
  420 +
  421 +enum PayloadType {
  422 + PAYLOAD_BUY = 101;
  423 + PAYLOAD_CS = 111;
  424 + PAYLOAD_BONUS = 121;
  425 + PAYLOAD_EVENT = 131;
  426 +}
  427 +
  428 +enum PaymentPgType {
  429 + PAYMENT_PG_NONE = 0;
  430 + PAYMENT_PG_AU = 1;
  431 + PAYMENT_PG_AL = 2;
  432 +}
  433 +
  434 +enum PaymentType {
  435 + PAYMENT_APPLE = 1;
  436 + PAYMENT_GOOGLE = 2;
  437 +}
  438 +
  439 +enum ProductBannerLinkType {
  440 + BANNER_LINK_NONE = 0;
  441 + BANNER_LINK_ITEM = 1;
  442 + BANNER_LINK_URL = 2;
  443 + BANNER_LINK_CATEGORY = 3;
  444 +}
  445 +
  446 +enum ProductEventType {
  447 + NO_EVENT = 0;
  448 + CARRIER_ANY = 65537;
  449 + BUDDY_ANY = 131073;
  450 + INSTALL_IOS = 196609;
  451 + INSTALL_ANDROID = 196610;
  452 + MISSION_ANY = 262145;
  453 + MUSTBUY_ANY = 327681;
  454 +}
  455 +
  456 +enum ProfileAttribute {
  457 + EMAIL = 1;
  458 + DISPLAY_NAME = 2;
  459 + PHONETIC_NAME = 4;
  460 + PICTURE = 8;
  461 + STATUS_MESSAGE = 16;
  462 + ALLOW_SEARCH_BY_USERID = 32;
  463 + ALLOW_SEARCH_BY_EMAIL = 64;
  464 + BUDDY_STATUS = 128;
  465 + ALL = 255;
  466 +}
  467 +
  468 +enum PublicType {
  469 + HIDDEN = 0;
  470 + PUBLIC = 1000;
  471 +}
  472 +
  473 +enum RedirectType {
  474 + NONE = 0;
  475 + EXPIRE_SECOND = 1;
  476 +}
  477 +
  478 +enum RegistrationType {
  479 + PHONE = 0;
  480 + EMAIL_WAP = 1;
  481 + FACEBOOK = 2305;
  482 + SINA = 2306;
  483 + RENREN = 2307;
  484 + FEIXIN = 2308;
  485 +}
  486 +
  487 +enum SettingsAttribute {
  488 + NOTIFICATION_ENABLE = 1;
  489 + NOTIFICATION_MUTE_EXPIRATION = 2;
  490 + NOTIFICATION_NEW_MESSAGE = 4;
  491 + NOTIFICATION_GROUP_INVITATION = 8;
  492 + NOTIFICATION_SHOW_MESSAGE = 16;
  493 + NOTIFICATION_INCOMING_CALL = 32;
  494 + PRIVACY_SYNC_CONTACTS = 64;
  495 + PRIVACY_SEARCH_BY_PHONE_NUMBER = 128;
  496 + NOTIFICATION_SOUND_MESSAGE = 256;
  497 + NOTIFICATION_SOUND_GROUP = 512;
  498 + CONTACT_MY_TICKET = 1024;
  499 + IDENTITY_PROVIDER = 2048;
  500 + IDENTITY_IDENTIFIER = 4096;
  501 + PRIVACY_SEARCH_BY_USERID = 8192;
  502 + PRIVACY_SEARCH_BY_EMAIL = 16384;
  503 + PREFERENCE_LOCALE = 32768;
  504 + NOTIFICATION_DISABLED_WITH_SUB = 65536;
  505 + SNS_ACCOUNT = 524288;
  506 + PHONE_REGISTRATION = 1048576;
  507 + PRIVACY_ALLOW_SECONDARY_DEVICE_LOGIN = 2097152;
  508 + CUSTOM_MODE = 4194304;
  509 + PRIVACY_PROFILE_IMAGE_POST_TO_MYHOME = 8388608;
  510 + EMAIL_CONFIRMATION_STATUS = 16777216;
  511 + PRIVACY_RECV_MESSAGES_FROM_NOT_FRIEND = 33554432;
  512 + ALL = 2147483647;
  513 +}
  514 +
  515 +enum SnsIdType {
  516 + FACEBOOK = 1;
  517 + SINA = 2;
  518 + RENREN = 3;
  519 + FEIXIN = 4;
  520 +}
  521 +
  522 +enum SpammerReason {
  523 + OTHER = 0;
  524 + ADVERTISING = 1;
  525 + GENDER_HARASSMENT = 2;
  526 + HARASSMENT = 3;
  527 +}
  528 +
  529 +enum SyncActionType {
  530 + SYNC = 0;
  531 + REPORT = 1;
  532 +}
  533 +
  534 +enum SyncCategory {
  535 + PROFILE = 0;
  536 + SETTINGS = 1;
  537 + OPS = 2;
  538 + CONTACT = 3;
  539 + RECOMMEND = 4;
  540 + BLOCK = 5;
  541 + GROUP = 6;
  542 + ROOM = 7;
  543 + NOTIFICATION = 8;
  544 +}
  545 +
  546 +enum TMessageBoxStatus {
  547 + ACTIVATED = 1;
  548 + UNREAD = 2;
  549 +}
  550 +
  551 +enum UniversalNotificationServiceErrorCode {
  552 + INTERNAL_ERROR = 0;
  553 + INVALID_KEY = 1;
  554 + ILLEGAL_ARGUMENT = 2;
  555 + TOO_MANY_REQUEST = 3;
  556 + AUTHENTICATION_FAILED = 4;
  557 + NO_WRITE_PERMISSION = 5;
  558 +}
  559 +
  560 +enum UnregistrationReason {
  561 + UNREGISTRATION_REASON_UNREGISTER_USER = 1;
  562 + UNREGISTRATION_REASON_UNBIND_DEVICE = 2;
  563 +}
  564 +
  565 +enum UserAgeType {
  566 + OVER = 1;
  567 + UNDER = 2;
  568 + UNDEFINED = 3;
  569 +}
  570 +
  571 +enum VerificationMethod {
  572 + NO_AVAILABLE = 0;
  573 + PIN_VIA_SMS = 1;
  574 + CALLERID_INDIGO = 2;
  575 + PIN_VIA_TTS = 4;
  576 + SKIP = 10;
  577 +}
  578 +
  579 +enum VerificationResult {
  580 + FAILED = 0;
  581 + OK_NOT_REGISTERED_YET = 1;
  582 + OK_REGISTERED_WITH_SAME_DEVICE = 2;
  583 + OK_REGISTERED_WITH_ANOTHER_DEVICE = 3;
  584 +}
  585 +
  586 +enum WapInvitationType {
  587 + REGISTRATION = 1;
  588 + CHAT = 2;
  589 +}
  590 +
  591 +struct AgeCheckDocomoResult {
  592 + 1: string authUrl;
  593 + 2: UserAgeType userAgeType;
  594 +}
  595 +
  596 +struct AgeCheckRequestResult {
  597 + 1: string authUrl;
  598 + 2: string sessionId;
  599 +}
  600 +
  601 +struct Announcement {
  602 + 1: i32 index;
  603 + 10: bool forceUpdate;
  604 + 11: string title;
  605 + 12: string text;
  606 + 13: i64 createdTime;
  607 + 14: string pictureUrl;
  608 + 15: string thumbnailUrl;
  609 +}
  610 +
  611 +struct ChannelProvider {
  612 + 1: string name;
  613 +}
  614 +
  615 +struct ChannelInfo {
  616 + 1: string channelId;
  617 + 3: string name;
  618 + 4: string entryPageUrl;
  619 + 5: string descriptionText;
  620 + 6: ChannelProvider provider;
  621 + 7: PublicType publicType;
  622 + 8: string iconImage;
  623 + 9: list<string> permissions;
  624 + 11: string iconThumbnailImage;
  625 + 12: list<ChannelConfiguration> channelConfigurations;
  626 +}
  627 +
  628 +struct ApprovedChannelInfo {
  629 + 1: ChannelInfo channelInfo;
  630 + 2: i64 approvedAt;
  631 +}
  632 +
  633 +struct ApprovedChannelInfos {
  634 + 1: list<ApprovedChannelInfo> approvedChannelInfos;
  635 + 2: i64 revision;
  636 +}
  637 +
  638 +struct AuthQrcode {
  639 + 1: string qrcode;
  640 + 2: string verifier;
  641 +}
  642 +
  643 +struct BuddyBanner {
  644 + 1: BuddyBannerLinkType buddyBannerLinkType;
  645 + 2: string buddyBannerLink;
  646 + 3: string buddyBannerImageUrl;
  647 +}
  648 +
  649 +struct BuddyDetail {
  650 + 1: string mid;
  651 + 2: i64 memberCount;
  652 + 3: bool onAir;
  653 + 4: bool businessAccount;
  654 + 5: bool addable;
  655 + 6: set<ContentType> acceptableContentTypes;
  656 + 7: bool capableMyhome;
  657 +}
  658 +
  659 +struct Contact {
  660 + 1: string mid;
  661 + 2: i64 createdTime;
  662 + 10: ContactType type;
  663 + 11: ContactStatus status;
  664 + 21: ContactRelation relation;
  665 + 22: string displayName;
  666 + 23: string phoneticName;
  667 + 24: string pictureStatus;
  668 + 25: string thumbnailUrl;
  669 + 26: string statusMessage;
  670 + 27: string displayNameOverridden;
  671 + 28: i64 favoriteTime;
  672 + 31: bool capableVoiceCall;
  673 + 32: bool capableVideoCall;
  674 + 33: bool capableMyhome;
  675 + 34: bool capableBuddy;
  676 + 35: i32 attributes;
  677 + 36: i64 settings;
  678 + 37: string picturePath;
  679 +}
  680 +
  681 +struct BuddyList {
  682 + 1: string classification;
  683 + 2: string displayName;
  684 + 3: i32 totalBuddyCount;
  685 + 4: list<Contact> popularContacts;
  686 +}
  687 +
  688 +struct Location {
  689 + 1: string title;
  690 + 2: string address;
  691 + 3: double latitude;
  692 + 4: double longitude;
  693 + 5: string phone;
  694 +}
  695 +
  696 +struct BuddyMessageRequest {
  697 + 1: ContentType contentType;
  698 + 2: string text;
  699 + 3: Location location;
  700 + 4: binary content;
  701 + 5: map<string, string> contentMetadata;
  702 +}
  703 +
  704 +struct BuddyOnAirUrls {
  705 + 1: map<string, string> hls;
  706 + 2: map<string, string> smoothStreaming;
  707 +}
  708 +
  709 +struct BuddyOnAir {
  710 + 1: string mid;
  711 + 3: i64 freshnessLifetime;
  712 + 4: string onAirId;
  713 + 5: bool onAir;
  714 + 11: string text;
  715 + 12: i64 viewerCount;
  716 + 13: i64 targetCount;
  717 + 31: BuddyOnAirType onAirType;
  718 + 32: BuddyOnAirUrls onAirUrls;
  719 +}
  720 +
  721 +struct BuddyProfile {
  722 + 1: string buddyId;
  723 + 2: string mid;
  724 + 3: string searchId;
  725 + 4: string displayName;
  726 + 5: string statusMessage;
  727 + 11: i64 contactCount;
  728 +}
  729 +
  730 +struct BuddySearchResult {
  731 + 1: string mid;
  732 + 2: string displayName;
  733 + 3: string pictureStatus;
  734 + 4: string picturePath;
  735 + 5: string statusMessage;
  736 + 6: bool businessAccount;
  737 +}
  738 +
  739 +struct ChannelDomain {
  740 + 1: string host;
  741 + 2: bool removed;
  742 +}
  743 +
  744 +struct ChannelDomains {
  745 + 1: list<ChannelDomain> channelDomains;
  746 + 2: i64 revision;
  747 +}
  748 +
  749 +exception ChannelException {
  750 + 1: ChannelErrorCode code;
  751 + 2: string reason;
  752 + 3: map<string, string> parameterMap;
  753 +}
  754 +
  755 +struct ChannelInfos {
  756 + 1: list<ChannelInfo> channelInfos;
  757 + 2: i64 revision;
  758 +}
  759 +
  760 +struct ChannelNotificationSetting {
  761 + 1: string channelId;
  762 + 2: string name;
  763 + 3: bool notificationReceivable;
  764 + 4: bool messageReceivable;
  765 + 5: bool showDefault;
  766 +}
  767 +
  768 +struct ChannelSyncDatas {
  769 + 1: list<ChannelInfo> channelInfos;
  770 + 2: list<ChannelDomain> channelDomains;
  771 + 3: i64 revision;
  772 + 4: i64 expires;
  773 +}
  774 +
  775 +struct ChannelToken {
  776 + 1: string token;
  777 + 2: string obsToken;
  778 + 3: i64 expiration;
  779 + 4: string refreshToken;
  780 + 5: string channelAccessToken;
  781 +}
  782 +
  783 +struct Coin {
  784 + 1: i32 freeCoinBalance;
  785 + 2: i32 payedCoinBalance;
  786 + 3: i32 totalCoinBalance;
  787 + 4: i32 rewardCoinBalance;
  788 +}
  789 +
  790 +struct CoinPayLoad {
  791 + 1: i32 payCoin;
  792 + 2: i32 freeCoin;
  793 + 3: PayloadType type;
  794 + 4: i32 rewardCoin;
  795 +}
  796 +
  797 +struct CoinHistory {
  798 + 1: i64 payDate;
  799 + 2: i32 coinBalance;
  800 + 3: i32 coin;
  801 + 4: string price;
  802 + 5: string title;
  803 + 6: bool refund;
  804 + 7: string paySeq;
  805 + 8: string currency;
  806 + 9: string currencySign;
  807 + 10: string displayPrice;
  808 + 11: CoinPayLoad payload;
  809 + 12: string channelId;
  810 +}
  811 +
  812 +struct CoinHistoryCondition {
  813 + 1: i64 start;
  814 + 2: i32 size;
  815 + 3: string language;
  816 + 4: string eddt;
  817 + 5: PaymentType appStoreCode;
  818 +}
  819 +
  820 +struct CoinHistoryResult {
  821 + 1: list<CoinHistory> historys;
  822 + 2: Coin balance;
  823 + 3: bool hasNext;
  824 +}
  825 +
  826 +struct CoinProductItem {
  827 + 1: string itemId;
  828 + 2: i32 coin;
  829 + 3: i32 freeCoin;
  830 + 5: string currency;
  831 + 6: string price;
  832 + 7: string displayPrice;
  833 + 8: string name;
  834 + 9: string desc;
  835 +}
  836 +
  837 +struct CoinPurchaseConfirm {
  838 + 1: string orderId;
  839 + 2: PaymentType appStoreCode;
  840 + 3: string receipt;
  841 + 4: string signature;
  842 + 5: string seller;
  843 + 6: string requestType;
  844 + 7: bool ignoreReceipt;
  845 +}
  846 +
  847 +struct CoinPurchaseReservation {
  848 + 1: string productId;
  849 + 2: string country;
  850 + 3: string currency;
  851 + 4: string price;
  852 + 5: PaymentType appStoreCode;
  853 + 6: string language;
  854 + 7: PaymentPgType pgCode;
  855 + 8: string redirectUrl;
  856 +}
  857 +
  858 +struct CoinUseReservationItem {
  859 + 1: string itemId;
  860 + 2: string itemName;
  861 + 3: i32 amount;
  862 +}
  863 +
  864 +struct CoinUseReservation {
  865 + 1: string channelId;
  866 + 2: string shopOrderId;
  867 + 3: PaymentType appStoreCode;
  868 + 4: list<CoinUseReservationItem> items;
  869 + 5: string country;
  870 +}
  871 +
  872 +struct CompactContact {
  873 + 1: string mid;
  874 + 2: i64 createdTime;
  875 + 3: i64 modifiedTime;
  876 + 4: ContactStatus status;
  877 + 5: i64 settings;
  878 + 6: string displayNameOverridden;
  879 +}
  880 +
  881 +struct ContactModification {
  882 + 1: ModificationType type;
  883 + 2: string luid;
  884 + 11: list<string> phones;
  885 + 12: list<string> emails;
  886 + 13: list<string> userids;
  887 +}
  888 +
  889 +struct ContactRegistration {
  890 + 1: Contact contact;
  891 + 10: string luid;
  892 + 11: ContactType contactType;
  893 + 12: string contactKey;
  894 +}
  895 +
  896 +struct ContactReport {
  897 + 1: string mid;
  898 + 2: bool exists;
  899 + 3: Contact contact;
  900 +}
  901 +
  902 +struct ContactReportResult {
  903 + 1: string mid;
  904 + 2: bool exists;
  905 +}
  906 +
  907 +struct DeviceInfo {
  908 + 1: string deviceName;
  909 + 2: string systemName;
  910 + 3: string systemVersion;
  911 + 4: string model;
  912 + 10: CarrierCode carrierCode;
  913 + 11: string carrierName;
  914 + 20: ApplicationType applicationType;
  915 +}
  916 +
  917 +struct EmailConfirmation {
  918 + 1: bool usePasswordSet;
  919 + 2: string email;
  920 + 3: string password;
  921 + 4: bool ignoreDuplication;
  922 +}
  923 +
  924 +struct EmailConfirmationSession {
  925 + 1: EmailConfirmationType emailConfirmationType;
  926 + 2: string verifier;
  927 + 3: string targetEmail;
  928 +}
  929 +
  930 +struct FriendChannelMatrix {
  931 + 1: string channelId;
  932 + 2: string representMid;
  933 + 3: i32 count;
  934 +}
  935 +
  936 +struct FriendChannelMatricesResponse {
  937 + 1: i64 expires;
  938 + 2: list<FriendChannelMatrix> matrices;
  939 +}
  940 +
  941 +struct Geolocation {
  942 + 1: double longitude;
  943 + 2: double latitude;
  944 +}
  945 +
  946 +struct NotificationTarget {
  947 + 1: string applicationType;
  948 + 2: string applicationVersion;
  949 + 3: string region;
  950 +}
  951 +
  952 +struct GlobalEvent {
  953 + 1: string key;
  954 + 2: list<NotificationTarget> targets;
  955 + 3: i64 createdTime;
  956 + 4: i64 data;
  957 + 5: i32 maxDelay;
  958 +}
  959 +
  960 +struct Group {
  961 + 1: string id;
  962 + 2: i64 createdTime;
  963 + 10: string name;
  964 + 11: string pictureStatus;
  965 + 20: list<Contact> members;
  966 + 21: Contact creator;
  967 + 22: list<Contact> invitee;
  968 + 31: bool notificationDisabled;
  969 +}
  970 +
  971 +struct IdentityCredential {
  972 + 1: IdentityProvider provider;
  973 + 2: string identifier;
  974 + 3: string password;
  975 +}
  976 +
  977 +struct LastReadMessageId {
  978 + 1: string mid;
  979 + 2: string lastReadMessageId;
  980 +}
  981 +
  982 +struct LastReadMessageIds {
  983 + 1: string chatId;
  984 + 2: list<LastReadMessageId> lastReadMessageIds;
  985 +}
  986 +
  987 +struct LoginResult {
  988 + 1: string authToken;
  989 + 2: string certificate;
  990 + 3: string verifier;
  991 + 4: string pinCode;
  992 + 5: LoginResultType type;
  993 +}
  994 +
  995 +struct LoginSession {
  996 + 1: string tokenKey;
  997 + 3: i64 expirationTime;
  998 + 11: ApplicationType applicationType;
  999 + 12: string systemName;
  1000 + 22: string accessLocation;
  1001 +}
  1002 +
  1003 +struct Message {
  1004 + 1: string from;
  1005 + 2: string to;
  1006 + 3: MIDType toType;
  1007 + 4: string id;
  1008 + 5: i64 createdTime;
  1009 + 6: i64 deliveredTime;
  1010 + 10: string text;
  1011 + 11: Location location;
  1012 + 14: bool hasContent;
  1013 + 15: ContentType contentType;
  1014 + 17: binary contentPreview;
  1015 + 18: map<string, string> contentMetadata;
  1016 +}
  1017 +
  1018 +struct MessageOperation {
  1019 + 1: i64 revision;
  1020 + 2: i64 createdTime;
  1021 + 3: MessageOperationType type;
  1022 + 4: i32 reqSeq;
  1023 + 5: OpStatus status;
  1024 + 10: string param1;
  1025 + 11: string param2;
  1026 + 12: string param3;
  1027 + 20: Message message;
  1028 +}
  1029 +
  1030 +struct MessageOperations {
  1031 + 1: list<MessageOperation> operations;
  1032 + 2: bool endFlag;
  1033 +}
  1034 +
  1035 +struct MetaProfile {
  1036 + 1: i64 createTime;
  1037 + 2: string regionCode;
  1038 + 3: map<RegistrationType, string> identities;
  1039 +}
  1040 +
  1041 +struct NotificationItem {
  1042 + 1: string id;
  1043 + 2: string from;
  1044 + 3: string to;
  1045 + 4: string fromChannel;
  1046 + 5: string toChannel;
  1047 + 7: i64 revision;
  1048 + 8: i64 createdTime;
  1049 + 9: map<string, string> content;
  1050 +}
  1051 +
  1052 +struct NotificationFetchResult {
  1053 + 1: NotificationItemFetchMode fetchMode;
  1054 + 2: list<NotificationItem> itemList;
  1055 +}
  1056 +
  1057 +struct Operation {
  1058 + 1: i64 revision;
  1059 + 2: i64 createdTime;
  1060 + 3: OpType type;
  1061 + 4: i32 reqSeq;
  1062 + 5: string checksum;
  1063 + 7: OpStatus status;
  1064 + 10: string param1;
  1065 + 11: string param2;
  1066 + 12: string param3;
  1067 + 20: Message message;
  1068 +}
  1069 +
  1070 +struct PaymentReservation {
  1071 + 1: string receiverMid;
  1072 + 2: string productId;
  1073 + 3: string language;
  1074 + 4: string location;
  1075 + 5: string currency;
  1076 + 6: string price;
  1077 + 7: PaymentType appStoreCode;
  1078 + 8: string messageText;
  1079 + 9: i32 messageTemplate;
  1080 + 10: i64 packageId;
  1081 +}
  1082 +
  1083 +struct PaymentReservationResult {
  1084 + 1: string orderId;
  1085 + 2: string confirmUrl;
  1086 + 3: map<string, string> extras;
  1087 +}
  1088 +
  1089 +struct Product {
  1090 + 1: string productId;
  1091 + 2: i64 packageId;
  1092 + 3: i32 version;
  1093 + 4: string authorName;
  1094 + 5: bool onSale;
  1095 + 6: i32 validDays;
  1096 + 7: i32 saleType;
  1097 + 8: string copyright;
  1098 + 9: string title;
  1099 + 10: string descriptionText;
  1100 + 11: i64 shopOrderId;
  1101 + 12: string fromMid;
  1102 + 13: string toMid;
  1103 + 14: i64 validUntil;
  1104 + 15: i32 priceTier;
  1105 + 16: string price;
  1106 + 17: string currency;
  1107 + 18: string currencySymbol;
  1108 + 19: PaymentType paymentType;
  1109 + 20: i64 createDate;
  1110 + 21: bool ownFlag;
  1111 + 22: ProductEventType eventType;
  1112 + 23: string urlSchema;
  1113 + 24: string downloadUrl;
  1114 + 25: string buddyMid;
  1115 + 26: i64 publishSince;
  1116 + 27: bool newFlag;
  1117 + 28: bool missionFlag;
  1118 +}
  1119 +
  1120 +struct ProductList {
  1121 + 1: bool hasNext;
  1122 + 4: i64 bannerSequence;
  1123 + 5: ProductBannerLinkType bannerTargetType;
  1124 + 6: string bannerTargetPath;
  1125 + 7: list<Product> productList;
  1126 + 8: string bannerLang;
  1127 +}
  1128 +
  1129 +struct ProductSimple {
  1130 + 1: string productId;
  1131 + 2: i64 packageId;
  1132 + 3: i32 version;
  1133 + 4: bool onSale;
  1134 + 5: i64 validUntil;
  1135 +}
  1136 +
  1137 +struct ProductSimpleList {
  1138 + 1: bool hasNext;
  1139 + 2: i32 reinvokeHour;
  1140 + 3: i64 lastVersionSeq;
  1141 + 4: list<ProductSimple> productList;
  1142 + 5: i64 recentNewReleaseDate;
  1143 + 6: i64 recentEventReleaseDate;
  1144 +}
  1145 +
  1146 +struct Profile {
  1147 + 1: string mid;
  1148 + 3: string userid;
  1149 + 10: string phone;
  1150 + 11: string email;
  1151 + 12: string regionCode;
  1152 + 20: string displayName;
  1153 + 21: string phoneticName;
  1154 + 22: string pictureStatus;
  1155 + 23: string thumbnailUrl;
  1156 + 24: string statusMessage;
  1157 + 31: bool allowSearchByUserid;
  1158 + 32: bool allowSearchByEmail;
  1159 + 33: string picturePath;
  1160 +}
  1161 +
  1162 +struct ProximityMatchCandidateResult {
  1163 + 1: list<Contact> users;
  1164 + 2: list<Contact> buddies;
  1165 +}
  1166 +
  1167 +struct RegisterWithSnsIdResult {
  1168 + 1: string authToken;
  1169 + 2: bool userCreated;
  1170 +}
  1171 +
  1172 +struct RequestTokenResponse {
  1173 + 1: string requestToken;
  1174 + 2: string returnUrl;
  1175 +}
  1176 +
  1177 +struct Room {
  1178 + 1: string mid;
  1179 + 2: i64 createdTime;
  1180 + 10: list<Contact> contacts;
  1181 + 31: bool notificationDisabled;
  1182 +}
  1183 +
  1184 +struct RSAKey {
  1185 + 1: string keynm;
  1186 + 2: string nvalue;
  1187 + 3: string evalue;
  1188 + 4: string sessionKey;
  1189 +}
  1190 +
  1191 +struct SendBuddyMessageResult {
  1192 + 1: string requestId;
  1193 + 2: BuddyResultState state;
  1194 + 3: string messageId;
  1195 + 4: i32 eventNo;
  1196 + 11: i64 receiverCount;
  1197 + 12: i64 successCount;
  1198 + 13: i64 failCount;
  1199 + 14: i64 cancelCount;
  1200 + 15: i64 blockCount;
  1201 + 16: i64 unregisterCount;
  1202 + 21: i64 timestamp;
  1203 + 22: string message;
  1204 +}
  1205 +
  1206 +struct SetBuddyOnAirResult {
  1207 + 1: string requestId;
  1208 + 2: BuddyResultState state;
  1209 + 3: i32 eventNo;
  1210 + 11: i64 receiverCount;
  1211 + 12: i64 successCount;
  1212 + 13: i64 failCount;
  1213 + 14: i64 cancelCount;
  1214 + 15: i64 unregisterCount;
  1215 + 21: i64 timestamp;
  1216 + 22: string message;
  1217 +}
  1218 +
  1219 +struct Settings {
  1220 + 10: bool notificationEnable;
  1221 + 11: i64 notificationMuteExpiration;
  1222 + 12: bool notificationNewMessage;
  1223 + 13: bool notificationGroupInvitation;
  1224 + 14: bool notificationShowMessage;
  1225 + 15: bool notificationIncomingCall;
  1226 + 16: string notificationSoundMessage;
  1227 + 17: string notificationSoundGroup;
  1228 + 18: bool notificationDisabledWithSub;
  1229 + 20: bool privacySyncContacts;
  1230 + 21: bool privacySearchByPhoneNumber;
  1231 + 22: bool privacySearchByUserid;
  1232 + 23: bool privacySearchByEmail;
  1233 + 24: bool privacyAllowSecondaryDeviceLogin;
  1234 + 25: bool privacyProfileImagePostToMyhome;
  1235 + 26: bool privacyReceiveMessagesFromNotFriend;
  1236 + 30: string contactMyTicket;
  1237 + 40: IdentityProvider identityProvider;
  1238 + 41: string identityIdentifier;
  1239 + 42: map<SnsIdType, string> snsAccounts;
  1240 + 43: bool phoneRegistration;
  1241 + 44: EmailConfirmationStatus emailConfirmationStatus;
  1242 + 50: string preferenceLocale;
  1243 + 60: map<CustomMode, string> customModes;
  1244 +}
  1245 +
  1246 +struct SimpleChannelClient {
  1247 + 1: string applicationType;
  1248 + 2: string applicationVersion;
  1249 + 3: string locale;
  1250 +}
  1251 +
  1252 +struct SimpleChannelContact {
  1253 + 1: string mid;
  1254 + 2: string displayName;
  1255 + 3: string pictureStatus;
  1256 + 4: string picturePath;
  1257 + 5: string statusMessage;
  1258 +}
  1259 +
  1260 +struct SnsFriend {
  1261 + 1: string snsUserId;
  1262 + 2: string snsUserName;
  1263 + 3: SnsIdType snsIdType;
  1264 +}
  1265 +
  1266 +struct SnsFriendContactRegistration {
  1267 + 1: Contact contact;
  1268 + 2: SnsIdType snsIdType;
  1269 + 3: string snsUserId;
  1270 +}
  1271 +
  1272 +struct SnsFriendModification {
  1273 + 1: ModificationType type;
  1274 + 2: SnsFriend snsFriend;
  1275 +}
  1276 +
  1277 +struct SnsFriends {
  1278 + 1: list<SnsFriend> snsFriends;
  1279 + 2: bool hasMore;
  1280 +}
  1281 +
  1282 +struct SnsIdUserStatus {
  1283 + 1: bool userExisting;
  1284 + 2: bool phoneNumberRegistered;
  1285 + 3: bool sameDevice;
  1286 +}
  1287 +
  1288 +struct SnsProfile {
  1289 + 1: string snsUserId;
  1290 + 2: string snsUserName;
  1291 + 3: string email;
  1292 + 4: string thumbnailUrl;
  1293 +}
  1294 +
  1295 +struct SystemConfiguration {
  1296 + 1: string endpoint;
  1297 + 2: string endpointSsl;
  1298 + 3: string updateUrl;
  1299 + 11: string c2dmAccount;
  1300 + 12: string nniServer;
  1301 +}
  1302 +
  1303 +exception TalkException {
  1304 + 1: ErrorCode code;
  1305 + 2: string reason;
  1306 + 3: map<string, string> parameterMap;
  1307 +}
  1308 +
  1309 +struct Ticket {
  1310 + 1: string id;
  1311 + 10: i64 expirationTime;
  1312 + 21: i32 maxUseCount;
  1313 +}
  1314 +
  1315 +struct TMessageBox {
  1316 + 1: string id;
  1317 + 2: string channelId;
  1318 + 5: i64 lastSeq;
  1319 + 6: i64 unreadCount;
  1320 + 7: i64 lastModifiedTime;
  1321 + 8: i32 status;
  1322 + 9: MIDType midType;
  1323 + 10: list<Message> lastMessages;
  1324 +}
  1325 +
  1326 +struct TMessageBoxWrapUp {
  1327 + 1: TMessageBox messageBox;
  1328 + 2: string name;
  1329 + 3: list<Contact> contacts;
  1330 + 4: string pictureRevision;
  1331 +}
  1332 +
  1333 +struct TMessageBoxWrapUpResponse {
  1334 + 1: list<TMessageBoxWrapUp> messageBoxWrapUpList;
  1335 + 2: i32 totalSize;
  1336 +}
  1337 +
  1338 +exception UniversalNotificationServiceException {
  1339 + 1: UniversalNotificationServiceErrorCode code;
  1340 + 2: string reason;
  1341 + 3: map<string, string> parameterMap;
  1342 +}
  1343 +
  1344 +struct UpdateBuddyProfileResult {
  1345 + 1: string requestId;
  1346 + 2: BuddyResultState state;
  1347 + 3: i32 eventNo;
  1348 + 11: i64 receiverCount;
  1349 + 12: i64 successCount;
  1350 + 13: i64 failCount;
  1351 + 14: i64 cancelCount;
  1352 + 15: i64 unregisterCount;
  1353 + 21: i64 timestamp;
  1354 + 22: string message;
  1355 +}
  1356 +
  1357 +struct UserAuthStatus {
  1358 + 1: bool phoneNumberRegistered;
  1359 + 2: list<SnsIdType> registeredSnsIdTypes;
  1360 +}
  1361 +
  1362 +struct VerificationSessionData {
  1363 + 1: string sessionId;
  1364 + 2: VerificationMethod method;
  1365 + 3: string callback;
  1366 + 4: string normalizedPhone;
  1367 + 5: string countryCode;
  1368 + 6: string nationalSignificantNumber;
  1369 + 7: list<VerificationMethod> availableVerificationMethods;
  1370 +}
  1371 +
  1372 +struct WapInvitation {
  1373 + 1: WapInvitationType type;
  1374 + 10: string inviteeEmail;
  1375 + 11: string inviterMid;
  1376 + 12: string roomMid;
  1377 +}
  1378 +
  1379 +service AccountSupervisorService {
  1380 + RSAKey getRSAKey() throws(1: TalkException e);
  1381 +
  1382 + void notifyEmailConfirmationResult(
  1383 + 2: map<string, string> parameterMap) throws(1: TalkException e);
  1384 +
  1385 + string registerVirtualAccount(
  1386 + 2: string locale,
  1387 + 3: string encryptedVirtualUserId,
  1388 + 4: string encryptedPassword) throws(1: TalkException e);
  1389 +
  1390 + void requestVirtualAccountPasswordChange(
  1391 + 2: string virtualMid,
  1392 + 3: string encryptedVirtualUserId,
  1393 + 4: string encryptedOldPassword,
  1394 + 5: string encryptedNewPassword) throws(1: TalkException e);
  1395 +
  1396 + void requestVirtualAccountPasswordSet(
  1397 + 2: string virtualMid,
  1398 + 3: string encryptedVirtualUserId,
  1399 + 4: string encryptedNewPassword) throws(1: TalkException e);
  1400 +
  1401 + void unregisterVirtualAccount(
  1402 + 2: string virtualMid) throws(1: TalkException e);
  1403 +}
  1404 +
  1405 +service AgeCheckService {
  1406 + UserAgeType checkUserAge(
  1407 + 2: CarrierCode carrier,
  1408 + 3: string sessionId,
  1409 + 4: string verifier,
  1410 + 5: i32 standardAge) throws(1: TalkException e);
  1411 +
  1412 + AgeCheckDocomoResult checkUserAgeWithDocomo(
  1413 + 2: string openIdRedirectUrl,
  1414 + 3: i32 standardAge,
  1415 + 4: string verifier) throws(1: TalkException e);
  1416 +
  1417 + string retrieveOpenIdAuthUrlWithDocomo() throws(1: TalkException e);
  1418 +
  1419 + AgeCheckRequestResult retrieveRequestToken(
  1420 + 2: CarrierCode carrier) throws(1: TalkException e);
  1421 +}
  1422 +
  1423 +service BuddyManagementService {
  1424 + void addBuddyMember(
  1425 + 1: string requestId,
  1426 + 2: string userMid) throws(1: TalkException e);
  1427 +
  1428 + void addBuddyMembers(
  1429 + 1: string requestId,
  1430 + 2: list<string> userMids) throws(1: TalkException e);
  1431 +
  1432 + void blockBuddyMember(
  1433 + 1: string requestId,
  1434 + 2: string mid) throws(1: TalkException e);
  1435 +
  1436 + list<SendBuddyMessageResult> commitSendMessagesToAll(
  1437 + 1: list<string> requestIdList) throws(1: TalkException e);
  1438 +
  1439 + list<SendBuddyMessageResult> commitSendMessagesToMids(
  1440 + 1: list<string> requestIdList,
  1441 + 2: list<string> mids) throws(1: TalkException e);
  1442 +
  1443 + bool containsBuddyMember(
  1444 + 1: string requestId,
  1445 + 2: string userMid) throws(1: TalkException e);
  1446 +
  1447 + binary downloadMessageContent(
  1448 + 1: string requestId,
  1449 + 2: string messageId) throws(1: TalkException e);
  1450 +
  1451 + binary downloadMessageContentPreview(
  1452 + 1: string requestId,
  1453 + 2: string messageId) throws(1: TalkException e);
  1454 +
  1455 + binary downloadProfileImage(
  1456 + 1: string requestId) throws(1: TalkException e);
  1457 +
  1458 + binary downloadProfileImagePreview(
  1459 + 1: string requestId) throws(1: TalkException e);
  1460 +
  1461 + i64 getActiveMemberCountByBuddyMid(
  1462 + 2: string buddyMid) throws(1: TalkException e);
  1463 +
  1464 + list<string> getActiveMemberMidsByBuddyMid(
  1465 + 2: string buddyMid) throws(1: TalkException e);
  1466 +
  1467 + list<string> getAllBuddyMembers() throws(1: TalkException e);
  1468 +
  1469 + list<string> getBlockedBuddyMembers() throws(1: TalkException e);
  1470 +
  1471 + i64 getBlockerCountByBuddyMid(
  1472 + 2: string buddyMid) throws(1: TalkException e);
  1473 +
  1474 + BuddyDetail getBuddyDetailByMid(
  1475 + 2: string buddyMid) throws(1: TalkException e);
  1476 +
  1477 + BuddyProfile getBuddyProfile() throws(1: TalkException e);
  1478 +
  1479 + Ticket getContactTicket() throws(1: TalkException e);
  1480 +
  1481 + i64 getMemberCountByBuddyMid(
  1482 + 2: string buddyMid) throws(1: TalkException e);
  1483 +
  1484 + SendBuddyMessageResult getSendBuddyMessageResult(
  1485 + 1: string sendBuddyMessageRequestId) throws(1: TalkException e);
  1486 +
  1487 + SetBuddyOnAirResult getSetBuddyOnAirResult(
  1488 + 1: string setBuddyOnAirRequestId) throws(1: TalkException e);
  1489 +
  1490 + UpdateBuddyProfileResult getUpdateBuddyProfileResult(
  1491 + 1: string updateBuddyProfileRequestId) throws(1: TalkException e);
  1492 +
  1493 + bool isBuddyOnAirByMid(
  1494 + 2: string buddyMid) throws(1: TalkException e);
  1495 +
  1496 + string linkAndSendBuddyContentMessageToAllAsync(
  1497 + 1: string requestId,
  1498 + 2: Message msg,
  1499 + 3: string sourceContentId) throws(1: TalkException e);
  1500 +
  1501 + SendBuddyMessageResult linkAndSendBuddyContentMessageToMids(
  1502 + 1: string requestId,
  1503 + 2: Message msg,
  1504 + 3: string sourceContentId,
  1505 + 4: list<string> mids) throws(1: TalkException e);
  1506 +
  1507 + void notifyBuddyBlocked(
  1508 + 1: string buddyMid,
  1509 + 2: string blockerMid) throws(1: TalkException e);
  1510 +
  1511 + void notifyBuddyUnblocked(
  1512 + 1: string buddyMid,
  1513 + 2: string blockerMid) throws(1: TalkException e);
  1514 +
  1515 + string registerBuddy(
  1516 + 2: string buddyId,
  1517 + 3: string searchId,
  1518 + 4: string displayName,
  1519 + 5: string statusMeessage,
  1520 + 6: binary picture,
  1521 + 7: map<string, string> settings) throws(1: TalkException e);
  1522 +
  1523 + string registerBuddyAdmin(
  1524 + 2: string buddyId,
  1525 + 3: string searchId,
  1526 + 4: string displayName,
  1527 + 5: string statusMessage,
  1528 + 6: binary picture) throws(1: TalkException e);
  1529 +
  1530 + string reissueContactTicket(
  1531 + 3: i64 expirationTime,
  1532 + 4: i32 maxUseCount) throws(1: TalkException e);
  1533 +
  1534 + void removeBuddyMember(
  1535 + 1: string requestId,
  1536 + 2: string userMid) throws(1: TalkException e);
  1537 +
  1538 + void removeBuddyMembers(
  1539 + 1: string requestId,
  1540 + 2: list<string> userMids) throws(1: TalkException e);
  1541 +
  1542 + SendBuddyMessageResult sendBuddyContentMessageToAll(
  1543 + 1: string requestId,
  1544 + 2: Message msg,
  1545 + 3: binary content) throws(1: TalkException e);
  1546 +
  1547 + string sendBuddyContentMessageToAllAsync(
  1548 + 1: string requestId,
  1549 + 2: Message msg,
  1550 + 3: binary content) throws(1: TalkException e);
  1551 +
  1552 + SendBuddyMessageResult sendBuddyContentMessageToMids(
  1553 + 1: string requestId,
  1554 + 2: Message msg,
  1555 + 3: binary content,
  1556 + 4: list<string> mids) throws(1: TalkException e);
  1557 +
  1558 + string sendBuddyContentMessageToMidsAsync(
  1559 + 1: string requestId,
  1560 + 2: Message msg,
  1561 + 3: binary content,
  1562 + 4: list<string> mids) throws(1: TalkException e);
  1563 +
  1564 + SendBuddyMessageResult sendBuddyMessageToAll(
  1565 + 1: string requestId,
  1566 + 2: Message msg) throws(1: TalkException e);
  1567 +
  1568 + string sendBuddyMessageToAllAsync(
  1569 + 1: string requestId,
  1570 + 2: Message msg) throws(1: TalkException e);
  1571 +
  1572 + SendBuddyMessageResult sendBuddyMessageToMids(
  1573 + 1: string requestId,
  1574 + 2: Message msg,
  1575 + 3: list<string> mids) throws(1: TalkException e);
  1576 +
  1577 + string sendBuddyMessageToMidsAsync(
  1578 + 1: string requestId,
  1579 + 2: Message msg,
  1580 + 3: list<string> mids) throws(1: TalkException e);
  1581 +
  1582 + void sendIndividualEventToAllAsync(
  1583 + 1: string requestId,
  1584 + 2: string buddyMid,
  1585 + 3: NotificationStatus notificationStatus) throws(1: TalkException e);
  1586 +
  1587 + SetBuddyOnAirResult setBuddyOnAir(
  1588 + 1: string requestId,
  1589 + 2: bool onAir) throws(1: TalkException e);
  1590 +
  1591 + string setBuddyOnAirAsync(
  1592 + 1: string requestId,
  1593 + 2: bool onAir) throws(1: TalkException e);
  1594 +
  1595 + SendBuddyMessageResult storeMessage(
  1596 + 1: string requestId,
  1597 + 2: BuddyMessageRequest messageRequest) throws(1: TalkException e);
  1598 +
  1599 + void unblockBuddyMember(
  1600 + 1: string requestId,
  1601 + 2: string mid) throws(1: TalkException e);
  1602 +
  1603 + void unregisterBuddy(
  1604 + 1: string requestId) throws(1: TalkException e);
  1605 +
  1606 + void unregisterBuddyAdmin(
  1607 + 1: string requestId) throws(1: TalkException e);
  1608 +
  1609 + void updateBuddyAdminProfileAttribute(
  1610 + 1: string requestId,
  1611 + 2: map<string, string> attributes) throws(1: TalkException e);
  1612 +
  1613 + void updateBuddyAdminProfileImage(
  1614 + 1: string requestId,
  1615 + 2: binary picture) throws(1: TalkException e);
  1616 +
  1617 + UpdateBuddyProfileResult updateBuddyProfileAttributes(
  1618 + 1: string requestId,
  1619 + 2: map<string, string> attributes) throws(1: TalkException e);
  1620 +
  1621 + string updateBuddyProfileAttributesAsync(
  1622 + 1: string requestId,
  1623 + 2: map<string, string> attributes) throws(1: TalkException e);
  1624 +
  1625 + UpdateBuddyProfileResult updateBuddyProfileImage(
  1626 + 1: string requestId,
  1627 + 2: binary image) throws(1: TalkException e);
  1628 +
  1629 + string updateBuddyProfileImageAsync(
  1630 + 1: string requestId,
  1631 + 2: binary image) throws(1: TalkException e);
  1632 +
  1633 + void updateBuddySearchId(
  1634 + 1: string requestId,
  1635 + 2: string searchId) throws(1: TalkException e);
  1636 +
  1637 + void updateBuddySettings(
  1638 + 2: map<string, string> settings) throws(1: TalkException e);
  1639 +
  1640 + string uploadBuddyContent(
  1641 + 2: ContentType contentType,
  1642 + 3: binary content) throws(1: TalkException e);
  1643 +}
  1644 +
  1645 +service BuddyService {
  1646 + list<BuddySearchResult> findBuddyContactsByQuery(
  1647 + 2: string language,
  1648 + 3: string country,
  1649 + 4: string query,
  1650 + 5: i32 fromIndex,
  1651 + 6: i32 count,
  1652 + 7: BuddySearchRequestSource requestSource) throws(1: TalkException e);
  1653 +
  1654 + list<Contact> getBuddyContacts(
  1655 + 2: string language,
  1656 + 3: string country,
  1657 + 4: string classification,
  1658 + 5: i32 fromIndex,
  1659 + 6: i32 count) throws(1: TalkException e);
  1660 +
  1661 + BuddyDetail getBuddyDetail(
  1662 + 4: string buddyMid) throws(1: TalkException e);
  1663 +
  1664 + BuddyOnAir getBuddyOnAir(
  1665 + 4: string buddyMid) throws(1: TalkException e);
  1666 +
  1667 + list<string> getCountriesHavingBuddy() throws(1: TalkException e);
  1668 +
  1669 + map<string, i64> getNewlyReleasedBuddyIds(
  1670 + 3: string country) throws(1: TalkException e);
  1671 +
  1672 + BuddyBanner getPopularBuddyBanner(
  1673 + 2: string language,
  1674 + 3: string country,
  1675 + 4: ApplicationType applicationType,
  1676 + 5: string resourceSpecification) throws(1: TalkException e);
  1677 +
  1678 + list<BuddyList> getPopularBuddyLists(
  1679 + 2: string language,
  1680 + 3: string country) throws(1: TalkException e);
  1681 +
  1682 + list<Contact> getPromotedBuddyContacts(
  1683 + 2: string language,
  1684 + 3: string country) throws(1: TalkException e);
  1685 +}
  1686 +
  1687 +service ChannelApplicationProvidedService {
  1688 + i64 activeBuddySubscriberCount() throws(1: TalkException e);
  1689 +
  1690 + void addOperationForChannel(
  1691 + 1: OpType opType,
  1692 + 2: string param1,
  1693 + 3: string param2,
  1694 + 4: string param3) throws(1: TalkException e);
  1695 +
  1696 + i64 displayBuddySubscriberCount() throws(1: TalkException e);
  1697 +
  1698 + Contact findContactByUseridWithoutAbuseBlockForChannel(
  1699 + 2: string userid) throws(1: TalkException e);
  1700 +
  1701 + list<string> getAllContactIdsForChannel() throws(1: TalkException e);
  1702 +
  1703 + list<CompactContact> getCompactContacts(
  1704 + 2: i64 lastModifiedTimestamp) throws(1: TalkException e);
  1705 +
  1706 + list<Contact> getContactsForChannel(
  1707 + 2: list<string> ids) throws(1: TalkException e);
  1708 +
  1709 + string getDisplayName(
  1710 + 2: string mid) throws(1: TalkException e);
  1711 +
  1712 + list<string> getFavoriteMidsForChannel() throws(1: TalkException e);
  1713 +
  1714 + list<string> getFriendMids() throws(1: TalkException e);
  1715 +
  1716 + list<string> getGroupMemberMids(
  1717 + 1: string groupId) throws(1: TalkException e);
  1718 +
  1719 + list<Group> getGroupsForChannel(
  1720 + 1: list<string> groupIds) throws(1: TalkException e);
  1721 +
  1722 + IdentityCredential getIdentityCredential() throws(1: TalkException e);
  1723 +
  1724 + list<string> getJoinedGroupIdsForChannel() throws(1: TalkException e);
  1725 +
  1726 + MetaProfile getMetaProfile() throws(1: TalkException e);
  1727 +
  1728 + string getMid() throws(1: TalkException e);
  1729 +
  1730 + SimpleChannelClient getPrimaryClientForChannel() throws(1: TalkException e);
  1731 +
  1732 + Profile getProfileForChannel() throws(1: TalkException e);
  1733 +
  1734 + list<SimpleChannelContact> getSimpleChannelContacts(
  1735 + 1: list<string> ids) throws(1: TalkException e);
  1736 +
  1737 + string getUserCountryForBilling(
  1738 + 2: string country,
  1739 + 3: string remoteIp) throws(1: TalkException e);
  1740 +
  1741 + i64 getUserCreateTime() throws(1: TalkException e);
  1742 +
  1743 + map<RegistrationType, string> getUserIdentities() throws(1: TalkException e);
  1744 +
  1745 + string getUserLanguage() throws(1: TalkException e);
  1746 +
  1747 + list<string> getUserMidsWhoAddedMe() throws(1: TalkException e);
  1748 +
  1749 + bool isGroupMember(
  1750 + 1: string groupId) throws(1: TalkException e);
  1751 +
  1752 + bool isInContact(
  1753 + 2: string mid) throws(1: TalkException e);
  1754 +
  1755 + string registerChannelCP(
  1756 + 2: string cpId,
  1757 + 3: string registerPassword) throws(1: TalkException e);
  1758 +
  1759 + void removeNotificationStatus(
  1760 + 2: NotificationStatus notificationStatus) throws(1: TalkException e);
  1761 +
  1762 + Message sendMessageForChannel(
  1763 + 2: Message message) throws(1: TalkException e);
  1764 +
  1765 + void sendPinCodeOperation(
  1766 + 1: string verifier) throws(1: TalkException e);
  1767 +
  1768 + void updateProfileAttributeForChannel(
  1769 + 2: ProfileAttribute profileAttribute,
  1770 + 3: string value) throws(1: TalkException e);
  1771 +}
  1772 +
  1773 +service ChannelService {
  1774 + ChannelToken approveChannelAndIssueChannelToken(
  1775 + 1: string channelId) throws(1: ChannelException e);
  1776 +
  1777 + string approveChannelAndIssueRequestToken(
  1778 + 1: string channelId,
  1779 + 2: string otpId) throws(1: ChannelException e);
  1780 +
  1781 + NotificationFetchResult fetchNotificationItems(
  1782 + 2: i64 localRev) throws(1: ChannelException e);
  1783 +
  1784 + ApprovedChannelInfos getApprovedChannels(
  1785 + 2: i64 lastSynced,
  1786 + 3: string locale) throws(1: ChannelException e);
  1787 +
  1788 + ChannelInfo getChannelInfo(
  1789 + 2: string channelId,
  1790 + 3: string locale) throws(1: ChannelException e);
  1791 +
  1792 + ChannelNotificationSetting getChannelNotificationSetting(
  1793 + 1: string channelId,
  1794 + 2: string locale) throws(1: ChannelException e);
  1795 +
  1796 + list<ChannelNotificationSetting> getChannelNotificationSettings(
  1797 + 1: string locale) throws(1: ChannelException e);
  1798 +
  1799 + ChannelInfos getChannels(
  1800 + 2: i64 lastSynced,
  1801 + 3: string locale) throws(1: ChannelException e);
  1802 +
  1803 + ChannelDomains getDomains(
  1804 + 2: i64 lastSynced) throws(1: ChannelException e);
  1805 +
  1806 + FriendChannelMatricesResponse getFriendChannelMatrices(
  1807 + 1: list<string> channelIds) throws(1: ChannelException e);
  1808 +
  1809 + i32 getNotificationBadgeCount(
  1810 + 2: i64 localRev) throws(1: ChannelException e);
  1811 +
  1812 + ChannelToken issueChannelToken(
  1813 + 1: string channelId) throws(1: ChannelException e);
  1814 +
  1815 + string issueRequestToken(
  1816 + 1: string channelId,
  1817 + 2: string otpId) throws(1: ChannelException e);
  1818 +
  1819 + RequestTokenResponse issueRequestTokenWithAuthScheme(
  1820 + 1: string channelId,
  1821 + 2: string otpId,
  1822 + 3: list<string> authScheme,
  1823 + 4: string returnUrl) throws(1: ChannelException e);
  1824 +
  1825 + string reserveCoinUse(
  1826 + 2: CoinUseReservation request,
  1827 + 3: string locale) throws(1: ChannelException e);
  1828 +
  1829 + void revokeChannel(
  1830 + 1: string channelId) throws(1: ChannelException e);
  1831 +
  1832 + ChannelSyncDatas syncChannelData(
  1833 + 2: i64 lastSynced,
  1834 + 3: string locale) throws(1: ChannelException e);
  1835 +
  1836 + void updateChannelNotificationSetting(
  1837 + 1: list<ChannelNotificationSetting> setting) throws(1: ChannelException e);
  1838 +}
  1839 +
  1840 +service MessageService {
  1841 + MessageOperations fetchMessageOperations(
  1842 + 2: i64 localRevision,
  1843 + 3: i64 lastOpTimestamp,
  1844 + 4: i32 count) throws(1: TalkException e);
  1845 +
  1846 + LastReadMessageIds getLastReadMessageIds(
  1847 + 2: string chatId) throws(1: TalkException e);
  1848 +
  1849 + list<LastReadMessageIds> multiGetLastReadMessageIds(
  1850 + 2: list<string> chatIds) throws(1: TalkException e);
  1851 +}
  1852 +
  1853 +service ShopService {
  1854 + void buyCoinProduct(
  1855 + 2: PaymentReservation paymentReservation) throws(1: TalkException e);
  1856 +
  1857 + void buyFreeProduct(
  1858 + 2: string receiverMid,
  1859 + 3: string productId,
  1860 + 4: i32 messageTemplate,
  1861 + 5: string language,
  1862 + 6: string country,
  1863 + 7: i64 packageId) throws(1: TalkException e);
  1864 +
  1865 + void buyMustbuyProduct(
  1866 + 2: string receiverMid,
  1867 + 3: string productId,
  1868 + 4: i32 messageTemplate,
  1869 + 5: string language,
  1870 + 6: string country,
  1871 + 7: i64 packageId,
  1872 + 8: string serialNumber) throws(1: TalkException e);
  1873 +
  1874 + void checkCanReceivePresent(
  1875 + 2: string recipientMid,
  1876 + 3: i64 packageId,
  1877 + 4: string language,
  1878 + 5: string country) throws(1: TalkException e);
  1879 +
  1880 + ProductList getActivePurchases(
  1881 + 2: i64 start,
  1882 + 3: i32 size,
  1883 + 4: string language,
  1884 + 5: string country) throws(1: TalkException e);
  1885 +
  1886 + ProductSimpleList getActivePurchaseVersions(
  1887 + 2: i64 start,
  1888 + 3: i32 size,
  1889 + 4: string language,
  1890 + 5: string country) throws(1: TalkException e);
  1891 +
  1892 + list<CoinProductItem> getCoinProducts(
  1893 + 2: PaymentType appStoreCode,
  1894 + 3: string country,
  1895 + 4: string language) throws(1: TalkException e);
  1896 +
  1897 + list<CoinProductItem> getCoinProductsByPgCode(
  1898 + 2: PaymentType appStoreCode,
  1899 + 3: PaymentPgType pgCode,
  1900 + 4: string country,
  1901 + 5: string language) throws(1: TalkException e);
  1902 +
  1903 + CoinHistoryResult getCoinPurchaseHistory(
  1904 + 2: CoinHistoryCondition request) throws(1: TalkException e);
  1905 +
  1906 + CoinHistoryResult getCoinUseAndRefundHistory(
  1907 + 2: CoinHistoryCondition request) throws(1: TalkException e);
  1908 +
  1909 + ProductList getDownloads(
  1910 + 2: i64 start,
  1911 + 3: i32 size,
  1912 + 4: string language,
  1913 + 5: string country) throws(1: TalkException e);
  1914 +
  1915 + ProductList getEventPackages(
  1916 + 2: i64 start,
  1917 + 3: i32 size,
  1918 + 4: string language,
  1919 + 5: string country) throws(1: TalkException e);
  1920 +
  1921 + ProductList getNewlyReleasedPackages(
  1922 + 2: i64 start,
  1923 + 3: i32 size,
  1924 + 4: string language,
  1925 + 5: string country) throws(1: TalkException e);
  1926 +
  1927 + ProductList getPopularPackages(
  1928 + 2: i64 start,
  1929 + 3: i32 size,
  1930 + 4: string language,
  1931 + 5: string country) throws(1: TalkException e);
  1932 +
  1933 + ProductList getPresentsReceived(
  1934 + 2: i64 start,
  1935 + 3: i32 size,
  1936 + 4: string language,
  1937 + 5: string country) throws(1: TalkException e);
  1938 +
  1939 + ProductList getPresentsSent(
  1940 + 2: i64 start,
  1941 + 3: i32 size,
  1942 + 4: string language,
  1943 + 5: string country) throws(1: TalkException e);
  1944 +
  1945 + Product getProduct(
  1946 + 2: i64 packageID,
  1947 + 3: string language,
  1948 + 4: string country) throws(1: TalkException e);
  1949 +
  1950 + ProductList getProductList(
  1951 + 2: list<string> productIdList,
  1952 + 3: string language,
  1953 + 4: string country) throws(1: TalkException e);
  1954 +
  1955 + ProductList getProductListWithCarrier(
  1956 + 2: list<string> productIdList,
  1957 + 3: string language,
  1958 + 4: string country,
  1959 + 5: string carrierCode) throws(1: TalkException e);
  1960 +
  1961 + Product getProductWithCarrier(
  1962 + 2: i64 packageID,
  1963 + 3: string language,
  1964 + 4: string country,
  1965 + 5: string carrierCode) throws(1: TalkException e);
  1966 +
  1967 + ProductList getPurchaseHistory(
  1968 + 2: i64 start,
  1969 + 3: i32 size,
  1970 + 4: string language,
  1971 + 5: string country) throws(1: TalkException e);
  1972 +
  1973 + Coin getTotalBalance(
  1974 + 2: PaymentType appStoreCode) throws(1: TalkException e);
  1975 +
  1976 + i64 notifyDownloaded(
  1977 + 2: i64 packageId,
  1978 + 3: string language) throws(1: TalkException e);
  1979 +
  1980 + PaymentReservationResult reserveCoinPurchase(
  1981 + 2: CoinPurchaseReservation request) throws(1: TalkException e);
  1982 +
  1983 + PaymentReservationResult reservePayment(
  1984 + 2: PaymentReservation paymentReservation) throws(1: TalkException e);
  1985 +}
  1986 +
  1987 +service SnsAdaptorService {
  1988 + SnsFriends getSnsFriends(
  1989 + 2: SnsIdType snsIdType,
  1990 + 3: string snsAccessToken,
  1991 + 4: i32 startIdx,
  1992 + 5: i32 limit) throws(1: TalkException e);
  1993 +
  1994 + SnsProfile getSnsMyProfile(
  1995 + 2: SnsIdType snsIdType,
  1996 + 3: string snsAccessToken) throws(1: TalkException e);
  1997 +
  1998 + void postSnsInvitationMessage(
  1999 + 2: SnsIdType snsIdType,
  2000 + 3: string snsAccessToken,
  2001 + 4: string toSnsUserId) throws(1: TalkException e);
  2002 +}
  2003 +
  2004 +service TalkService {
  2005 + void acceptGroupInvitation(
  2006 + 1: i32 reqSeq,
  2007 + 2: string groupId) throws(1: TalkException e);
  2008 +
  2009 + void acceptProximityMatches(
  2010 + 2: string sessionId,
  2011 + 3: set<string> ids) throws(1: TalkException e);
  2012 +
  2013 + list<string> acquireCallRoute(
  2014 + 2: string to) throws(1: TalkException e);
  2015 +
  2016 + string acquireCallTicket(
  2017 + 2: string to) throws(1: TalkException e);
  2018 +
  2019 + string acquireEncryptedAccessToken(
  2020 + 2: FeatureType featureType) throws(1: TalkException e);
  2021 +
  2022 + string addSnsId(
  2023 + 2: SnsIdType snsIdType,
  2024 + 3: string snsAccessToken) throws(1: TalkException e);
  2025 +
  2026 + void blockContact(
  2027 + 1: i32 reqSeq,
  2028 + 2: string id) throws(1: TalkException e);
  2029 +
  2030 + void blockRecommendation(
  2031 + 1: i32 reqSeq,
  2032 + 2: string id) throws(1: TalkException e);
  2033 +
  2034 + void cancelGroupInvitation(
  2035 + 1: i32 reqSeq,
  2036 + 2: string groupId,
  2037 + 3: list<string> contactIds) throws(1: TalkException e);
  2038 +
  2039 + VerificationSessionData changeVerificationMethod(
  2040 + 2: string sessionId,
  2041 + 3: VerificationMethod method) throws(1: TalkException e);
  2042 +
  2043 + void clearIdentityCredential() throws(1: TalkException e);
  2044 +
  2045 + void clearMessageBox(
  2046 + 2: string channelId,
  2047 + 3: string messageBoxId) throws(1: TalkException e);
  2048 +
  2049 + void closeProximityMatch(
  2050 + 2: string sessionId) throws(1: TalkException e);
  2051 +
  2052 + map<string, string> commitSendMessage(
  2053 + 1: i32 seq,
  2054 + 2: string messageId,
  2055 + 3: list<string> receiverMids) throws(1: TalkException e);
  2056 +
  2057 + map<string, string> commitSendMessages(
  2058 + 1: i32 seq,
  2059 + 2: list<string> messageIds,
  2060 + 3: list<string> receiverMids) throws(1: TalkException e);
  2061 +
  2062 + map<string, string> commitUpdateProfile(
  2063 + 1: i32 seq,
  2064 + 2: list<ProfileAttribute> attrs,
  2065 + 3: list<string> receiverMids) throws(1: TalkException e);
  2066 +
  2067 + void confirmEmail(
  2068 + 2: string verifier,
  2069 + 3: string pinCode) throws(1: TalkException e);
  2070 +
  2071 + Group createGroup(
  2072 + 1: i32 seq,
  2073 + 2: string name,
  2074 + 3: list<string> contactIds) throws(1: TalkException e);
  2075 +
  2076 + string createQrcodeBase64Image(
  2077 + 2: string url,
  2078 + 3: string characterSet,
  2079 + 4: i32 imageSize,
  2080 + 5: i32 x,
  2081 + 6: i32 y,
  2082 + 7: i32 width,
  2083 + 8: i32 height) throws(1: TalkException e);
  2084 +
  2085 + Room createRoom(
  2086 + 1: i32 reqSeq,
  2087 + 2: list<string> contactIds) throws(1: TalkException e);
  2088 +
  2089 + string createSession() throws(1: TalkException e);
  2090 +
  2091 + list<Announcement> fetchAnnouncements(
  2092 + 2: i32 lastFetchedIndex) throws(1: TalkException e);
  2093 +
  2094 + list<Message> fetchMessages(
  2095 + 2: i64 localTs,
  2096 + 3: i32 count) throws(1: TalkException e);
  2097 +
  2098 + list<Operation> fetchOperations(
  2099 + 2: i64 localRev,
  2100 + 3: i32 count) throws(1: TalkException e);
  2101 +
  2102 + list<Operation> fetchOps(
  2103 + 2: i64 localRev,
  2104 + 3: i32 count,
  2105 + 4: i64 globalRev,
  2106 + 5: i64 individualRev) throws(1: TalkException e);
  2107 +
  2108 + map<string, Contact> findAndAddContactsByEmail(
  2109 + 1: i32 reqSeq,
  2110 + 2: set<string> emails) throws(1: TalkException e);
  2111 +
  2112 + map<string, Contact> findAndAddContactsByMid(
  2113 + 1: i32 reqSeq,
  2114 + 2: string mid) throws(1: TalkException e);
  2115 +
  2116 + map<string, Contact> findAndAddContactsByPhone(
  2117 + 1: i32 reqSeq,
  2118 + 2: set<string> phones) throws(1: TalkException e);
  2119 +
  2120 + map<string, Contact> findAndAddContactsByUserid(
  2121 + 1: i32 reqSeq,
  2122 + 2: string userid) throws(1: TalkException e);
  2123 +
  2124 + Contact findContactByUserid(
  2125 + 2: string userid) throws(1: TalkException e);
  2126 +
  2127 + Contact findContactByUserTicket(
  2128 + 2: string ticketId) throws(1: TalkException e);
  2129 +
  2130 + map<string, Contact> findContactsByEmail(
  2131 + 2: set<string> emails) throws(1: TalkException e);
  2132 +
  2133 + map<string, Contact> findContactsByPhone(
  2134 + 2: set<string> phones) throws(1: TalkException e);
  2135 +
  2136 + SnsIdUserStatus findSnsIdUserStatus(
  2137 + 2: SnsIdType snsIdType,
  2138 + 3: string snsAccessToken,
  2139 + 4: string udidHash) throws(1: TalkException e);
  2140 +
  2141 + void finishUpdateVerification(
  2142 + 2: string sessionId) throws(1: TalkException e);
  2143 +
  2144 + Ticket generateUserTicket(
  2145 + 3: i64 expirationTime,
  2146 + 4: i32 maxUseCount) throws(1: TalkException e);
  2147 +
  2148 + set<string> getAcceptedProximityMatches(
  2149 + 2: string sessionId) throws(1: TalkException e);
  2150 +
  2151 + list<string> getActiveBuddySubscriberIds() throws(1: TalkException e);
  2152 +
  2153 + list<string> getAllContactIds() throws(1: TalkException e);
  2154 +
  2155 + AuthQrcode getAuthQrcode(
  2156 + 2: bool keepLoggedIn,
  2157 + 3: string systemName) throws(1: TalkException e);
  2158 +
  2159 + list<string> getBlockedContactIds() throws(1: TalkException e);
  2160 +
  2161 + list<string> getBlockedContactIdsByRange(
  2162 + 2: i32 start,
  2163 + 3: i32 count) throws(1: TalkException e);
  2164 +
  2165 + list<string> getBlockedRecommendationIds() throws(1: TalkException e);
  2166 +
  2167 + list<string> getBuddyBlockerIds() throws(1: TalkException e);
  2168 +
  2169 + Geolocation getBuddyLocation(
  2170 + 2: string mid,
  2171 + 3: i32 index) throws(1: TalkException e);
  2172 +
  2173 + list<CompactContact> getCompactContactsModifiedSince(
  2174 + 2: i64 timestamp) throws(1: TalkException e);
  2175 +
  2176 + Group getCompactGroup(
  2177 + 2: string groupId) throws(1: TalkException e);
  2178 +
  2179 + Room getCompactRoom(
  2180 + 2: string roomId) throws(1: TalkException e);
  2181 +
  2182 + Contact getContact(
  2183 + 2: string id) throws(1: TalkException e);
  2184 +
  2185 + list<Contact> getContacts(
  2186 + 2: list<string> ids) throws(1: TalkException e);
  2187 +
  2188 + string getCountryWithRequestIp() throws(1: TalkException e);
  2189 +
  2190 + list<string> getFavoriteMids() throws(1: TalkException e);
  2191 +
  2192 + Group getGroup(
  2193 + 2: string groupId) throws(1: TalkException e);
  2194 +
  2195 + list<string> getGroupIdsInvited() throws(1: TalkException e);
  2196 +
  2197 + list<string> getGroupIdsJoined() throws(1: TalkException e);
  2198 +
  2199 + list<Group> getGroups(
  2200 + 2: list<string> groupIds) throws(1: TalkException e);
  2201 +
  2202 + list<string> getHiddenContactMids() throws(1: TalkException e);
  2203 +
  2204 + string getIdentityIdentifier() throws(1: TalkException e);
  2205 +
  2206 + i32 getLastAnnouncementIndex() throws(1: TalkException e);
  2207 +
  2208 + i64 getLastOpRevision() throws(1: TalkException e);
  2209 +
  2210 + TMessageBox getMessageBox(
  2211 + 2: string channelId,
  2212 + 3: string messageBoxId,
  2213 + 4: i32 lastMessagesCount) throws(1: TalkException e);
  2214 +
  2215 + TMessageBoxWrapUp getMessageBoxCompactWrapUp(
  2216 + 2: string mid) throws(1: TalkException e);
  2217 +
  2218 + TMessageBoxWrapUpResponse getMessageBoxCompactWrapUpList(
  2219 + 2: i32 start,
  2220 + 3: i32 messageBoxCount) throws(1: TalkException e);
  2221 +
  2222 + list<TMessageBox> getMessageBoxList(
  2223 + 2: string channelId,
  2224 + 3: i32 lastMessagesCount) throws(1: TalkException e);
  2225 +
  2226 + list<TMessageBox> getMessageBoxListByStatus(
  2227 + 2: string channelId,
  2228 + 3: i32 lastMessagesCount,
  2229 + 4: i32 status) throws(1: TalkException e);
  2230 +
  2231 + TMessageBoxWrapUp getMessageBoxWrapUp(
  2232 + 2: string mid) throws(1: TalkException e);
  2233 +
  2234 + TMessageBoxWrapUpResponse getMessageBoxWrapUpList(
  2235 + 2: i32 start,
  2236 + 3: i32 messageBoxCount) throws(1: TalkException e);
  2237 +
  2238 + list<Message> getMessagesBySequenceNumber(
  2239 + 2: string channelId,
  2240 + 3: string messageBoxId,
  2241 + 4: i64 startSeq,
  2242 + 5: i64 endSeq) throws(1: TalkException e);
  2243 +
  2244 + list<Message> getNextMessages(
  2245 + 2: string messageBoxId,
  2246 + 3: i64 startSeq,
  2247 + 4: i32 messagesCount) throws(1: TalkException e);
  2248 +
  2249 + list<NotificationType> getNotificationPolicy(
  2250 + 2: CarrierCode carrier) throws(1: TalkException e);
  2251 +
  2252 + list<Message> getPreviousMessages(
  2253 + 2: string messageBoxId,
  2254 + 3: i64 endSeq,
  2255 + 4: i32 messagesCount) throws(1: TalkException e);
  2256 +
  2257 + Profile getProfile() throws(1: TalkException e);
  2258 +
  2259 + ProximityMatchCandidateResult getProximityMatchCandidateList(
  2260 + 2: string sessionId) throws(1: TalkException e);
  2261 +
  2262 + set<Contact> getProximityMatchCandidates(
  2263 + 2: string sessionId) throws(1: TalkException e);
  2264 +
  2265 + list<Message> getRecentMessages(
  2266 + 2: string messageBoxId,
  2267 + 3: i32 messagesCount) throws(1: TalkException e);
  2268 +
  2269 + list<string> getRecommendationIds() throws(1: TalkException e);
  2270 +
  2271 + Room getRoom(
  2272 + 2: string roomId) throws(1: TalkException e);
  2273 +
  2274 + RSAKey getRSAKeyInfo(
  2275 + 2: IdentityProvider provider) throws(1: TalkException e);
  2276 +
  2277 + i64 getServerTime() throws(1: TalkException e);
  2278 +
  2279 + list<LoginSession> getSessions() throws(1: TalkException e);
  2280 +
  2281 + Settings getSettings() throws(1: TalkException e);
  2282 +
  2283 + Settings getSettingsAttributes(
  2284 + 2: i32 attrBitset) throws(1: TalkException e);
  2285 +
  2286 + SystemConfiguration getSystemConfiguration() throws(1: TalkException e);
  2287 +
  2288 + Ticket getUserTicket() throws(1: TalkException e);
  2289 +
  2290 + WapInvitation getWapInvitation(
  2291 + 2: string invitationHash) throws(1: TalkException e);
  2292 +
  2293 + void invalidateUserTicket() throws(1: TalkException e);
  2294 +
  2295 + void inviteFriendsBySms(
  2296 + 2: list<string> phoneNumberList) throws(1: TalkException e);
  2297 +
  2298 + void inviteIntoGroup(
  2299 + 1: i32 reqSeq,
  2300 + 2: string groupId,
  2301 + 3: list<string> contactIds) throws(1: TalkException e);
  2302 +
  2303 + void inviteIntoRoom(
  2304 + 1: i32 reqSeq,
  2305 + 2: string roomId,
  2306 + 3: list<string> contactIds) throws(1: TalkException e);
  2307 +
  2308 + void inviteViaEmail(
  2309 + 1: i32 reqSeq,
  2310 + 2: string email,
  2311 + 3: string name) throws(1: TalkException e);
  2312 +
  2313 + bool isIdentityIdentifierAvailable(
  2314 + 3: IdentityProvider provider,
  2315 + 2: string identifier) throws(1: TalkException e);
  2316 +
  2317 + bool isUseridAvailable(
  2318 + 2: string userid) throws(1: TalkException e);
  2319 +
  2320 + void kickoutFromGroup(
  2321 + 1: i32 reqSeq,
  2322 + 2: string groupId,
  2323 + 3: list<string> contactIds) throws(1: TalkException e);
  2324 +
  2325 + void leaveGroup(
  2326 + 1: i32 reqSeq,
  2327 + 2: string groupId) throws(1: TalkException e);
  2328 +
  2329 + void leaveRoom(
  2330 + 1: i32 reqSeq,
  2331 + 2: string roomId) throws(1: TalkException e);
  2332 +
  2333 + string loginWithIdentityCredential(
  2334 + 8: IdentityProvider identityProvider,
  2335 + 3: string identifier,
  2336 + 4: string password,
  2337 + 5: bool keepLoggedIn,
  2338 + 6: string accessLocation,
  2339 + 7: string systemName,
  2340 + 9: string certificate) throws(1: TalkException e);
  2341 +
  2342 + LoginResult loginWithIdentityCredentialForCertificate(
  2343 + 8: IdentityProvider identityProvider,
  2344 + 3: string identifier,
  2345 + 4: string password,
  2346 + 5: bool keepLoggedIn,
  2347 + 6: string accessLocation,
  2348 + 7: string systemName,
  2349 + 9: string certificate) throws(1: TalkException e);
  2350 +
  2351 + string loginWithVerifier(
  2352 + 3: string verifier) throws(1: TalkException e);
  2353 +
  2354 + LoginResult loginWithVerifierForCerificate(
  2355 + 3: string verifier) throws(1: TalkException e);
  2356 +
  2357 + LoginResult loginWithVerifierForCertificate(
  2358 + 3: string verifier) throws(1: TalkException e);
  2359 +
  2360 + void logout() throws(1: TalkException e);
  2361 +
  2362 + void logoutSession(
  2363 + 2: string tokenKey) throws(1: TalkException e);
  2364 +
  2365 + void noop() throws(1: TalkException e);
  2366 +
  2367 + void notifiedRedirect(
  2368 + 2: map<string, string> paramMap) throws(1: TalkException e);
  2369 +
  2370 + map<string, string> notifyBuddyOnAir(
  2371 + 1: i32 seq,
  2372 + 2: list<string> receiverMids) throws(1: TalkException e);
  2373 +
  2374 + void notifyIndividualEvent(
  2375 + 2: NotificationStatus notificationStatus,
  2376 + 3: list<string> receiverMids) throws(1: TalkException e);
  2377 +
  2378 + void notifyInstalled(
  2379 + 2: string udidHash,
  2380 + 3: string applicationTypeWithExtensions);
  2381 +
  2382 + void notifyRegistrationComplete(
  2383 + 2: string udidHash,
  2384 + 3: string applicationTypeWithExtensions);
  2385 +
  2386 + void notifySleep(
  2387 + 2: i64 lastRev,
  2388 + 3: i32 badge) throws(1: TalkException e);
  2389 +
  2390 + void notifyUpdated(
  2391 + 2: i64 lastRev,
  2392 + 3: DeviceInfo deviceInfo) throws(1: TalkException e);
  2393 +
  2394 + string openProximityMatch(
  2395 + 2: Location location) throws(1: TalkException e);
  2396 +
  2397 + string registerBuddyUser(
  2398 + 2: string buddyId,
  2399 + 3: string registrarPassword) throws(1: TalkException e);
  2400 +
  2401 + void registerBuddyUserid(
  2402 + 2: i32 seq,
  2403 + 3: string userid) throws(1: TalkException e);
  2404 +
  2405 + string registerDevice(
  2406 + 2: string sessionId) throws(1: TalkException e);
  2407 +
  2408 + string registerDeviceWithIdentityCredential(
  2409 + 2: string sessionId,
  2410 + 5: IdentityProvider provider,
  2411 + 3: string identifier,
  2412 + 4: string verifier) throws(1: TalkException e);
  2413 +
  2414 + string registerDeviceWithoutPhoneNumber(
  2415 + 2: string region,
  2416 + 3: string udidHash,
  2417 + 4: DeviceInfo deviceInfo) throws(1: TalkException e);
  2418 +
  2419 + string registerDeviceWithoutPhoneNumberWithIdentityCredential(
  2420 + 2: string region,
  2421 + 3: string udidHash,
  2422 + 4: DeviceInfo deviceInfo,
  2423 + 5: IdentityProvider provider,
  2424 + 6: string identifier,
  2425 + 7: string verifier,
  2426 + 8: string mid) throws(1: TalkException e);
  2427 +
  2428 + bool registerUserid(
  2429 + 1: i32 reqSeq,
  2430 + 2: string userid) throws(1: TalkException e);
  2431 +
  2432 + string registerWapDevice(
  2433 + 2: string invitationHash,
  2434 + 3: string guidHash,
  2435 + 4: string email,
  2436 + 5: DeviceInfo deviceInfo) throws(1: TalkException e);
  2437 +
  2438 + string registerWithExistingSnsIdAndIdentityCredential(
  2439 + 2: IdentityCredential identityCredential,
  2440 + 3: string region,
  2441 + 4: string udidHash,
  2442 + 5: DeviceInfo deviceInfo) throws(1: TalkException e);
  2443 +
  2444 + RegisterWithSnsIdResult registerWithSnsId(
  2445 + 2: SnsIdType snsIdType,
  2446 + 3: string snsAccessToken,
  2447 + 4: string region,
  2448 + 5: string udidHash,
  2449 + 6: DeviceInfo deviceInfo,
  2450 + 7: string mid) throws(1: TalkException e);
  2451 +
  2452 + string registerWithSnsIdAndIdentityCredential(
  2453 + 2: SnsIdType snsIdType,
  2454 + 3: string snsAccessToken,
  2455 + 4: IdentityCredential identityCredential,
  2456 + 5: string region,
  2457 + 6: string udidHash,
  2458 + 7: DeviceInfo deviceInfo) throws(1: TalkException e);
  2459 +
  2460 + string reissueDeviceCredential() throws(1: TalkException e);
  2461 +
  2462 + string reissueUserTicket(
  2463 + 3: i64 expirationTime,
  2464 + 4: i32 maxUseCount) throws(1: TalkException e);
  2465 +
  2466 + void rejectGroupInvitation(
  2467 + 1: i32 reqSeq,
  2468 + 2: string groupId) throws(1: TalkException e);
  2469 +
  2470 + void releaseSession() throws(1: TalkException e);
  2471 +
  2472 + void removeAllMessages(
  2473 + 1: i32 seq,
  2474 + 2: string lastMessageId) throws(1: TalkException e);
  2475 +
  2476 + void removeBuddyLocation(
  2477 + 2: string mid,
  2478 + 3: i32 index) throws(1: TalkException e);
  2479 +
  2480 + bool removeMessage(
  2481 + 2: string messageId) throws(1: TalkException e);
  2482 +
  2483 + bool removeMessageFromMyHome(
  2484 + 2: string messageId) throws(1: TalkException e);
  2485 +
  2486 + string removeSnsId(
  2487 + 2: SnsIdType snsIdType) throws(1: TalkException e);
  2488 +
  2489 + void report(
  2490 + 2: i64 syncOpRevision,
  2491 + 3: SyncCategory category,
  2492 + 4: string report) throws(1: TalkException e);
  2493 +
  2494 + list<ContactReportResult> reportContacts(
  2495 + 2: i64 syncOpRevision,
  2496 + 3: SyncCategory category,
  2497 + 4: list<ContactReport> contactReports,
  2498 + 5: SyncActionType actionType) throws(1: TalkException e);
  2499 +
  2500 + void reportGroups(
  2501 + 2: i64 syncOpRevision,
  2502 + 3: list<Group> groups) throws(1: TalkException e);
  2503 +
  2504 + void reportProfile(
  2505 + 2: i64 syncOpRevision,
  2506 + 3: Profile profile) throws(1: TalkException e);
  2507 +
  2508 + void reportRooms(
  2509 + 2: i64 syncOpRevision,
  2510 + 3: list<Room> rooms) throws(1: TalkException e);
  2511 +
  2512 + void reportSettings(
  2513 + 2: i64 syncOpRevision,
  2514 + 3: Settings settings) throws(1: TalkException e);
  2515 +
  2516 + void reportSpammer(
  2517 + 2: string spammerMid,
  2518 + 3: list<SpammerReason> spammerReasons,
  2519 + 4: list<string> spamMessageIds) throws(1: TalkException e);
  2520 +
  2521 + void requestAccountPasswordReset(
  2522 + 4: IdentityProvider provider,
  2523 + 2: string identifier,
  2524 + 5: string locale) throws(1: TalkException e);
  2525 +
  2526 + EmailConfirmationSession requestEmailConfirmation(
  2527 + 2: EmailConfirmation emailConfirmation) throws(1: TalkException e);
  2528 +
  2529 + void requestIdentityUnbind(
  2530 + 4: IdentityProvider provider,
  2531 + 2: string identifier) throws(1: TalkException e);
  2532 +
  2533 + EmailConfirmationSession resendEmailConfirmation(
  2534 + 2: string verifier) throws(1: TalkException e);
  2535 +
  2536 + void resendPinCode(
  2537 + 2: string sessionId) throws(1: TalkException e);
  2538 +
  2539 + void resendPinCodeBySMS(
  2540 + 2: string sessionId) throws(1: TalkException e);
  2541 +
  2542 + void sendChatChecked(
  2543 + 1: i32 seq,
  2544 + 2: string consumer,
  2545 + 3: string lastMessageId) throws(1: TalkException e);
  2546 +
  2547 + void sendChatRemoved(
  2548 + 1: i32 seq,
  2549 + 2: string consumer,
  2550 + 3: string lastMessageId) throws(1: TalkException e);
  2551 +
  2552 + map<string, string> sendContentPreviewUpdated(
  2553 + 1: i32 esq,
  2554 + 2: string messageId,
  2555 + 3: list<string> receiverMids) throws(1: TalkException e);
  2556 +
  2557 + void sendContentReceipt(
  2558 + 1: i32 seq,
  2559 + 2: string consumer,
  2560 + 3: string messageId) throws(1: TalkException e);
  2561 +
  2562 + void sendDummyPush() throws(1: TalkException e);
  2563 +
  2564 + Message sendEvent(
  2565 + 1: i32 seq,
  2566 + 2: Message message) throws(1: TalkException e);
  2567 +
  2568 + Message sendMessage(
  2569 + 1: i32 seq,
  2570 + 2: Message message) throws(1: TalkException e);
  2571 +
  2572 + void sendMessageIgnored(
  2573 + 1: i32 seq,
  2574 + 2: string consumer,
  2575 + 3: list<string> messageIds) throws(1: TalkException e);
  2576 +
  2577 + void sendMessageReceipt(
  2578 + 1: i32 seq,
  2579 + 2: string consumer,
  2580 + 3: list<string> messageIds) throws(1: TalkException e);
  2581 +
  2582 + Message sendMessageToMyHome(
  2583 + 1: i32 seq,
  2584 + 2: Message message) throws(1: TalkException e);
  2585 +
  2586 + void setBuddyLocation(
  2587 + 2: string mid,
  2588 + 3: i32 index,
  2589 + 4: Geolocation location) throws(1: TalkException e);
  2590 +
  2591 + void setIdentityCredential(
  2592 + 4: IdentityProvider provider,
  2593 + 2: string identifier,
  2594 + 3: string verifier) throws(1: TalkException e);
  2595 +
  2596 + void setNotificationsEnabled(
  2597 + 1: i32 reqSeq,
  2598 + 2: MIDType type,
  2599 + 3: string target,
  2600 + 4: bool enablement) throws(1: TalkException e);
  2601 +
  2602 + VerificationSessionData startUpdateVerification(
  2603 + 2: string region,
  2604 + 3: CarrierCode carrier,
  2605 + 4: string phone,
  2606 + 5: string udidHash,
  2607 + 6: DeviceInfo deviceInfo,
  2608 + 7: string networkCode,
  2609 + 8: string locale) throws(1: TalkException e);
  2610 +
  2611 + VerificationSessionData startVerification(
  2612 + 2: string region,
  2613 + 3: CarrierCode carrier,
  2614 + 4: string phone,
  2615 + 5: string udidHash,
  2616 + 6: DeviceInfo deviceInfo,
  2617 + 7: string networkCode,
  2618 + 8: string mid,
  2619 + 9: string locale) throws(1: TalkException e);
  2620 +
  2621 + void storeUpdateProfileAttribute(
  2622 + 1: i32 seq,
  2623 + 2: ProfileAttribute profileAttribute,
  2624 + 3: string value) throws(1: TalkException e);
  2625 +
  2626 + list<SnsFriendContactRegistration> syncContactBySnsIds(
  2627 + 1: i32 reqSeq,
  2628 + 2: list<SnsFriendModification> modifications) throws(1: TalkException e);
  2629 +
  2630 + map<string, ContactRegistration> syncContacts(
  2631 + 1: i32 reqSeq,
  2632 + 2: list<ContactModification> localContacts) throws(1: TalkException e);
  2633 +
  2634 + Message trySendMessage(
  2635 + 1: i32 seq,
  2636 + 2: Message message) throws(1: TalkException e);
  2637 +
  2638 + void unblockContact(
  2639 + 1: i32 reqSeq,
  2640 + 2: string id) throws(1: TalkException e);
  2641 +
  2642 + void unblockRecommendation(
  2643 + 1: i32 reqSeq,
  2644 + 2: string id) throws(1: TalkException e);
  2645 +
  2646 + string unregisterUserAndDevice() throws(1: TalkException e);
  2647 +
  2648 + void updateApnsDeviceToken(
  2649 + 2: binary apnsDeviceToken) throws(1: TalkException e);
  2650 +
  2651 + void updateBuddySetting(
  2652 + 2: string key,
  2653 + 3: string value) throws(1: TalkException e);
  2654 +
  2655 + void updateC2DMRegistrationId(
  2656 + 2: string registrationId) throws(1: TalkException e);
  2657 +
  2658 + void updateContactSetting(
  2659 + 1: i32 reqSeq,
  2660 + 2: string mid,
  2661 + 3: ContactSetting flag,
  2662 + 4: string value) throws(1: TalkException e);
  2663 +
  2664 + void updateCustomModeSettings(
  2665 + 2: CustomMode customMode,
  2666 + 3: map<string, string> paramMap) throws(1: TalkException e);
  2667 +
  2668 + void updateDeviceInfo(
  2669 + 2: string deviceUid,
  2670 + 3: DeviceInfo deviceInfo) throws(1: TalkException e);
  2671 +
  2672 + void updateGroup(
  2673 + 1: i32 reqSeq,
  2674 + 2: Group group) throws(1: TalkException e);
  2675 +
  2676 + void updateNotificationToken(
  2677 + 3: NotificationType type,
  2678 + 2: string token) throws(1: TalkException e);
  2679 +
  2680 + void updateNotificationTokenWithBytes(
  2681 + 3: NotificationType type,
  2682 + 2: binary token) throws(1: TalkException e);
  2683 +
  2684 + void updateProfile(
  2685 + 1: i32 reqSeq,
  2686 + 2: Profile profile) throws(1: TalkException e);
  2687 +
  2688 + void updateProfileAttribute(
  2689 + 1: i32 reqSeq,
  2690 + 2: ProfileAttribute attr,
  2691 + 3: string value) throws(1: TalkException e);
  2692 +
  2693 + void updateRegion(
  2694 + 2: string region) throws(1: TalkException e);
  2695 +
  2696 + void updateSettings(
  2697 + 1: i32 reqSeq,
  2698 + 2: Settings settings) throws(1: TalkException e);
  2699 +
  2700 + i32 updateSettings2(
  2701 + 1: i32 reqSeq,
  2702 + 2: Settings settings) throws(1: TalkException e);
  2703 +
  2704 + void updateSettingsAttribute(
  2705 + 1: i32 reqSeq,
  2706 + 2: SettingsAttribute attr,
  2707 + 3: string value) throws(1: TalkException e);
  2708 +
  2709 + i32 updateSettingsAttributes(
  2710 + 1: i32 reqSeq,
  2711 + 2: i32 attrBitset,
  2712 + 3: Settings settings) throws(1: TalkException e);
  2713 +
  2714 + void verifyIdentityCredential(
  2715 + 8: IdentityProvider identityProvider,
  2716 + 3: string identifier,
  2717 + 4: string password) throws(1: TalkException e);
  2718 +
  2719 + UserAuthStatus verifyIdentityCredentialWithResult(
  2720 + 2: IdentityCredential identityCredential) throws(1: TalkException e);
  2721 +
  2722 + VerificationResult verifyPhone(
  2723 + 2: string sessionId,
  2724 + 3: string pinCode,
  2725 + 4: string udidHash) throws(1: TalkException e);
  2726 +
  2727 + string verifyQrcode(
  2728 + 2: string verifier,
  2729 + 3: string pinCode) throws(1: TalkException e);
  2730 +}
  2731 +
  2732 +service UniversalNotificationService {
  2733 + void notify(
  2734 + 2: GlobalEvent event) throws(1: UniversalNotificationServiceException e);
  2735 +}
0 2736 \ No newline at end of file
... ...