telegram-crawler/data/core.telegram.org/api/layers.html
2021-09-03 15:50:55 +00:00

1446 lines
221 KiB
HTML

<!DOCTYPE html>
<html class="">
<head>
<meta charset="utf-8">
<title>Layers</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta property="description" content="Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.
Layer…">
<meta property="og:title" content="Layers">
<meta property="og:image" content="">
<meta property="og:description" content="Below you will find information on scheme changes. For more details on the use of layers, see Invoking API methods.
Layer…">
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
<link href="/css/telegram.css?212" rel="stylesheet" media="screen">
<style>
</style>
</head>
<body class="preload">
<div class="dev_page_wrap">
<div class="dev_page_head navbar navbar-static-top navbar-tg">
<div class="navbar-inner">
<div class="container clearfix">
<ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
<ul class="nav navbar-nav">
<li><a href="//telegram.org/">Home</a></li>
<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
<li class="active"><a href="/api">API</a></li>
<li class=""><a href="/mtproto">Protocol</a></li>
<li class=""><a href="/schema">Schema</a></li>
</ul>
</div>
</div>
</div>
<div class="container clearfix">
<div class="dev_page">
<div id="dev_page_content_wrap" class=" ">
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/api/layers" >Layers</a></li></ul></div>
<h1 id="dev_page_title">Layers</h1>
<div id="dev_page_content"><!-- scroll_nav -->
<p>Below you will find information on scheme changes. For more details on the use of layers, see <a href="/api/invoking#layers">Invoking API methods</a>.</p>
<h3><a class="anchor" href="#layer-121" id="layer-121" name="layer-121"><i class="anchor-icon"></i></a><a href="/schema?layer=121">Layer 121</a></h3>
<p>Added <a href="/api/files#vector-thumbnails">SVG path previews</a> for animated stickers.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/photoPathSize">photoPathSize</a> - Messages with animated stickers can have a compressed svg (&lt; 300 bytes) to show the outline of the sticker before fetching the actual lottie animation.</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/photoPathSize">photoPathSize</a>#d8214d41 type:<a href="/type/string">string</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/PhotoSize">PhotoSize</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-120" id="layer-120" name="layer-120"><i class="anchor-icon"></i></a><a href="/schema?layer=120">Layer 120</a></h3>
<p>Added <a href="/api/stats">message statistics</a>, and a method to unpin all pinned messages in a chat.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a> - Obtains a list of messages, indicating to which other public channels was a channel message forwarded. </li>
<li>Added <a href="/method/stats.getMessageStats">stats.getMessageStats</a> - Get <a href="/api/stats">message statistics</a></li>
<li>Added <a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a> - <a href="/api/pin">Unpin</a> all pinned messages</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Changed type of <strong>from_id</strong> from <strong>flags.0?InputUser</strong> to <strong>flags.0?InputPeer</strong> in <a href="/method/messages.search">messages.search</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/inputMessageCallbackQuery">inputMessageCallbackQuery</a> - Used by bots for fetching information about the message that originated a callback query</li>
<li>Added <a href="/constructor/channelParticipantLeft">channelParticipantLeft</a> - A participant that left the channel/supergroup</li>
<li>Added <a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a> - This filter is used when looking for supergroup members to mention. </li>
<li>Added <a href="/constructor/updatePinnedMessages">updatePinnedMessages</a> - Some messages were pinned in a chat</li>
<li>Added <a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a> - Messages were pinned/unpinned in a <a href="/api/channel">channel/supergroup</a></li>
<li>Added <a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a> - Fetch only pinned messages</li>
<li>Added <a href="/constructor/stats.messageStats">stats.messageStats</a> - Message statistics</li>
<li>Added <a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a> - A user of the chat is now in proximity of another user</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>flags</strong>, <strong>accuracy_radius</strong> parameters in <a href="/constructor/inputGeoPoint">inputGeoPoint</a></li>
<li>Added <strong>flags</strong>, <strong>accuracy_radius</strong> parameters in <a href="/constructor/geoPoint">geoPoint</a></li>
<li>Added <strong>offset_id_offset</strong> parameter in <a href="/constructor/messages.messagesSlice">messages.messagesSlice</a></li>
<li>Added <strong>offset_id_offset</strong> parameter in <a href="/constructor/messages.channelMessages">messages.channelMessages</a></li>
<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters, changed type of <strong>period</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/constructor/inputBotInlineMessageMediaGeo">inputBotInlineMessageMediaGeo</a></li>
<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters, changed type of <strong>period</strong> from <strong>int</strong> to <strong>flags.1?int</strong> in <a href="/constructor/botInlineMessageMediaGeo">botInlineMessageMediaGeo</a></li>
<li>Added <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters in <a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a></li>
<li>Added <strong>flags</strong>, <strong>heading</strong>, <strong>proximity_notification_radius</strong> parameters in <a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a></li>
</ul>
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
<ul>
<li>Removed updateChannelPinnedMessage</li>
<li>Removed updateUserPinnedMessage</li>
<li>Removed updateChatPinnedMessage</li>
</ul>
<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
<ul>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_PLAYLIST</a> - <code>{1} sent you {2} music files</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_DOCS</a> - <code>{1} sent you {2} files</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PLAYLIST</a> - <code>{1} sent {3} music files to the group {2}</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_DOCS</a> - <code>{1} sent {3} files to the group {2}</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PLAYLIST</a> - <code>{1} posted {2} music files</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_DOCS</a> - <code>{1} posted {2} files</code></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/inputGeoPoint">inputGeoPoint</a>#48222faf flags:<a href="/type/%23">#</a> lat:<a href="/type/double">double</a> long:<a href="/type/double">double</a> accuracy_radius:flags.0?<a href="/type/int">int</a> = <a href="/type/InputGeoPoint">InputGeoPoint</a>;<br>
<a href="/constructor/geoPoint">geoPoint</a>#b2a2f663 flags:<a href="/type/%23">#</a> long:<a href="/type/double">double</a> lat:<a href="/type/double">double</a> access_hash:<a href="/type/long">long</a> accuracy_radius:flags.0?<a href="/type/int">int</a> = <a href="/type/GeoPoint">GeoPoint</a>;<br>
<a href="/constructor/messages.messagesSlice">messages.messagesSlice</a>#3a54685e flags:<a href="/type/%23">#</a> inexact:flags.1?<a href="/constructor/true">true</a> count:<a href="/type/int">int</a> next_rate:flags.0?<a href="/type/int">int</a> offset_id_offset:flags.2?<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.Messages">messages.Messages</a>;
<a href="/constructor/messages.channelMessages">messages.channelMessages</a>#64479808 flags:<a href="/type/%23">#</a> inexact:flags.1?<a href="/constructor/true">true</a> pts:<a href="/type/int">int</a> count:<a href="/type/int">int</a> offset_id_offset:flags.2?<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.Messages">messages.Messages</a>;<br>
<a href="/constructor/inputBotInlineMessageMediaGeo">inputBotInlineMessageMediaGeo</a>#96929a85 flags:<a href="/type/%23">#</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/InputBotInlineMessage">InputBotInlineMessage</a>;<br>
<a href="/constructor/botInlineMessageMediaGeo">botInlineMessageMediaGeo</a>#051846fd flags:<a href="/type/%23">#</a> geo:<a href="/type/GeoPoint">GeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> reply_markup:flags.2?<a href="/type/ReplyMarkup">ReplyMarkup</a> = <a href="/type/BotInlineMessage">BotInlineMessage</a>;<br>
<a href="/constructor/inputMediaGeoLive">inputMediaGeoLive</a>#971fa843 flags:<a href="/type/%23">#</a> stopped:flags.0?<a href="/constructor/true">true</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> heading:flags.2?<a href="/type/int">int</a> period:flags.1?<a href="/type/int">int</a> proximity_notification_radius:flags.3?<a href="/type/int">int</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/messageMediaGeoLive">messageMediaGeoLive</a>#b940c666 flags:<a href="/type/%23">#</a> geo:<a href="/type/GeoPoint">GeoPoint</a> heading:flags.0?<a href="/type/int">int</a> period:<a href="/type/int">int</a> proximity_notification_radius:flags.1?<a href="/type/int">int</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
<a href="/constructor/inputMessageCallbackQuery">inputMessageCallbackQuery</a>#acfa1a7e id:<a href="/type/int">int</a> query_id:<a href="/type/long">long</a> = <a href="/type/InputMessage">InputMessage</a>;<br>
<a href="/constructor/channelParticipantLeft">channelParticipantLeft</a>#c3c6796b user_id:<a href="/type/int">int</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;
<a href="/constructor/channelParticipantsMentions">channelParticipantsMentions</a>#e04b5ceb flags:<a href="/type/%23">#</a> q:flags.0?<a href="/type/string">string</a> top_msg_id:flags.1?<a href="/type/int">int</a> = <a href="/type/ChannelParticipantsFilter">ChannelParticipantsFilter</a>;<br>
<a href="/constructor/updatePinnedMessages">updatePinnedMessages</a>#ed85eab5 flags:<a href="/type/%23">#</a> pinned:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/Peer">Peer</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
<a href="/constructor/updatePinnedChannelMessages">updatePinnedChannelMessages</a>#8588878b flags:<a href="/type/%23">#</a> pinned:flags.0?<a href="/constructor/true">true</a> channel_id:<a href="/type/int">int</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/inputMessagesFilterPinned">inputMessagesFilterPinned</a>#1bb00451 = <a href="/type/MessagesFilter">MessagesFilter</a>;<br>
<a href="/constructor/stats.messageStats">stats.messageStats</a>#8999f295 views_graph:<a href="/type/StatsGraph">StatsGraph</a> = <a href="/type/stats.MessageStats">stats.MessageStats</a>;<br>
<a href="/constructor/messageActionGeoProximityReached">messageActionGeoProximityReached</a>#98e0d697 from_id:<a href="/type/Peer">Peer</a> to_id:<a href="/type/Peer">Peer</a> distance:<a href="/type/int">int</a> = <a href="/type/MessageAction">MessageAction</a>;<br>
---functions---<br>
<a href="/method/messages.search">messages.search</a>#0c352eec flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> q:<a href="/type/string">string</a> from_id:flags.0?<a href="/type/InputPeer">InputPeer</a> top_msg_id:flags.1?<a href="/type/int">int</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br>
<a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a>#5630281b channel:<a href="/type/InputChannel">InputChannel</a> msg_id:<a href="/type/int">int</a> offset_rate:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
<a href="/method/stats.getMessageStats">stats.getMessageStats</a>#b6e0a3f5 flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> msg_id:<a href="/type/int">int</a> = <a href="/type/stats.MessageStats">stats.MessageStats</a>;<br>
<a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a>#f025bc8b peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/messages.AffectedHistory">messages.AffectedHistory</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-119" id="layer-119" name="layer-119"><i class="anchor-icon"></i></a><a href="/schema?layer=119">Layer 119</a></h3>
<p>Added <a href="/api/threads">message threads</a> and <a href="/api/discussion">comment sections in channel posts</a>.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/messages.getReplies">messages.getReplies</a> - Get messages in a reply thread</li>
<li>Added <a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a> - Get <a href="/api/threads">discussion message</a> from the <a href="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</li>
<li>Added <a href="/method/messages.readDiscussion">messages.readDiscussion</a> - Mark a <a href="/api/threads">thread</a> as read</li>
<li>Added <a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a> - Stop getting notifications about <a href="/api/threads">thread replies</a> of a certain user in <code>@replies</code></li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Changed type of <strong>id</strong> from <strong>InputUser</strong> to <strong>InputPeer</strong> in <a href="/method/contacts.block">contacts.block</a></li>
<li>Changed type of <strong>id</strong> from <strong>InputUser</strong> to <strong>InputPeer</strong> in <a href="/method/contacts.unblock">contacts.unblock</a></li>
<li>Added <strong>top_msg_id</strong> parameter in <a href="/method/messages.search">messages.search</a></li>
<li>Added <strong>flags</strong>, <strong>top_msg_id</strong> parameters in <a href="/method/messages.setTyping">messages.setTyping</a></li>
<li>Changed type of <a href="/method/messages.getMessagesViews">messages.getMessagesViews</a> from <strong>Vector&lt;int&gt;</strong> to <strong>messages.MessageViews</strong></li>
<li>Added <strong>filter</strong>, <strong>min_date</strong>, <strong>max_date</strong> parameters in <a href="/method/messages.searchGlobal">messages.searchGlobal</a></li>
<li>Added <strong>flags</strong>, <strong>thread</strong> parameters, changed type of <strong>grouped</strong> from <strong>Bool</strong> to <strong>flags.0?true</strong> in <a href="/method/channels.exportMessageLink">channels.exportMessageLink</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/messageViews">messageViews</a> - View, forward counter + info about replies of a specific message</li>
<li>Added <a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a> - The forward counter of a message in a channel has changed</li>
<li>Added <a href="/constructor/photoSizeProgressive">photoSizeProgressive</a> - Progressively encoded photosize</li>
<li>Added <a href="/constructor/messages.messageViews">messages.messageViews</a> - View, forward counter + info about replies</li>
<li>Added <a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a> - Incoming comments in a <a href="/api/threads">discussion thread</a> were marked as read</li>
<li>Added <a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a> - Outgoing comments in a <a href="/api/threads">discussion thread</a> were marked as read</li>
<li>Added <a href="/constructor/messages.discussionMessage">messages.discussionMessage</a> - Information about a <a href="/api/threads">message thread</a></li>
<li>Added <a href="/constructor/messageReplyHeader">messageReplyHeader</a> - Message replies and <a href="/api/threads">thread</a> information</li>
<li>Added <a href="/constructor/messageReplies">messageReplies</a> - Info about <a href="/api/threads">the comment section of a channel post, or a simple message thread</a></li>
<li>Added <a href="/constructor/updatePeerBlocked">updatePeerBlocked</a> - A peer was blocked</li>
<li>Added <a href="/constructor/peerBlocked">peerBlocked</a> - Information about a blocked peer</li>
<li>Added <a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a> - A user is typing in a <a href="/api/channel">supergroup, channel</a> or <a href="/api/threads">message thread</a></li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>pinned</strong>, <strong>peer_id</strong>, <strong>reply_to</strong>, <strong>forwards</strong>, <strong>replies</strong> parameters, removed <strong>to_id</strong>, <strong>reply_to_msg_id</strong> parameters, changed type of <strong>from_id</strong> from <strong>flags.8?int</strong> to <strong>flags.8?Peer</strong> in <a href="/constructor/message">message</a></li>
<li>Added <strong>peer_id</strong>, <strong>reply_to</strong> parameters, removed <strong>to_id</strong>, <strong>reply_to_msg_id</strong> parameters, changed type of <strong>from_id</strong> from <strong>flags.8?int</strong> to <strong>flags.8?Peer</strong> in <a href="/constructor/messageService">messageService</a></li>
<li>Added <strong>chats</strong> parameter, changed type of <strong>blocked</strong> from <strong>Vector&lt;ContactBlocked&gt;</strong> to <strong>Vector&lt;PeerBlocked&gt;</strong> in <a href="/constructor/contacts.blocked">contacts.blocked</a></li>
<li>Added <strong>chats</strong> parameter, changed type of <strong>blocked</strong> from <strong>Vector&lt;ContactBlocked&gt;</strong> to <strong>Vector&lt;PeerBlocked&gt;</strong> in <a href="/constructor/contacts.blockedSlice">contacts.blockedSlice</a></li>
<li>Added <strong>reply_to</strong> parameter, removed <strong>reply_to_msg_id</strong> parameter in <a href="/constructor/updateShortMessage">updateShortMessage</a></li>
<li>Added <strong>reply_to</strong> parameter, removed <strong>reply_to_msg_id</strong> parameter in <a href="/constructor/updateShortChatMessage">updateShortChatMessage</a></li>
<li>Added <strong>admin_rights</strong> parameter in <a href="/constructor/channelParticipantCreator">channelParticipantCreator</a></li>
<li>Removed <strong>channel_id</strong> parameter, changed type of <strong>from_id</strong> from <strong>flags.0?int</strong> to <strong>flags.0?Peer</strong> in <a href="/constructor/messageFwdHeader">messageFwdHeader</a></li>
</ul>
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
<ul>
<li>Removed contactBlocked</li>
<li>Removed updateUserBlocked</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/message">message</a>#58ae39c9 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> from_scheduled:flags.18?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> edit_hide:flags.21?<a href="/constructor/true">true</a> pinned:flags.24?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> message:<a href="/type/string">string</a> media:flags.9?<a href="/type/MessageMedia">MessageMedia</a> reply_markup:flags.6?<a href="/type/ReplyMarkup">ReplyMarkup</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; views:flags.10?<a href="/type/int">int</a> forwards:flags.10?<a href="/type/int">int</a> replies:flags.23?<a href="/type/MessageReplies">MessageReplies</a> edit_date:flags.15?<a href="/type/int">int</a> post_author:flags.16?<a href="/type/string">string</a> grouped_id:flags.17?<a href="/type/long">long</a> restriction_reason:flags.22?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/RestrictionReason">RestrictionReason</a>&gt; = <a href="/type/Message">Message</a>;
<a href="/constructor/messageService">messageService</a>#286fa604 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> post:flags.14?<a href="/constructor/true">true</a> legacy:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:flags.8?<a href="/type/Peer">Peer</a> peer_id:<a href="/type/Peer">Peer</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> date:<a href="/type/int">int</a> action:<a href="/type/MessageAction">MessageAction</a> = <a href="/type/Message">Message</a>;<br>
<a href="/constructor/contacts.blocked">contacts.blocked</a>#0ade1591 blocked:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PeerBlocked">PeerBlocked</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/contacts.Blocked">contacts.Blocked</a>;
<a href="/constructor/contacts.blockedSlice">contacts.blockedSlice</a>#e1664194 count:<a href="/type/int">int</a> blocked:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PeerBlocked">PeerBlocked</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/contacts.Blocked">contacts.Blocked</a>;<br>
<a href="/constructor/updateShortMessage">updateShortMessage</a>#2296d2c8 flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/Updates">Updates</a>;
<a href="/constructor/updateShortChatMessage">updateShortChatMessage</a>#402d5dbb flags:<a href="/type/%23">#</a> out:flags.1?<a href="/constructor/true">true</a> mentioned:flags.4?<a href="/constructor/true">true</a> media_unread:flags.5?<a href="/constructor/true">true</a> silent:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> from_id:<a href="/type/int">int</a> chat_id:<a href="/type/int">int</a> message:<a href="/type/string">string</a> pts:<a href="/type/int">int</a> pts_count:<a href="/type/int">int</a> date:<a href="/type/int">int</a> fwd_from:flags.2?<a href="/type/MessageFwdHeader">MessageFwdHeader</a> via_bot_id:flags.11?<a href="/type/int">int</a> reply_to:flags.3?<a href="/type/MessageReplyHeader">MessageReplyHeader</a> entities:flags.7?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/Updates">Updates</a>;<br>
<a href="/constructor/channelParticipantCreator">channelParticipantCreator</a>#447dca4b flags:<a href="/type/%23">#</a> user_id:<a href="/type/int">int</a> admin_rights:<a href="/type/ChatAdminRights">ChatAdminRights</a> rank:flags.0?<a href="/type/string">string</a> = <a href="/type/ChannelParticipant">ChannelParticipant</a>;<br>
<a href="/constructor/messageFwdHeader">messageFwdHeader</a>#5f777dce flags:<a href="/type/%23">#</a> from_id:flags.0?<a href="/type/Peer">Peer</a> from_name:flags.5?<a href="/type/string">string</a> date:<a href="/type/int">int</a> channel_post:flags.2?<a href="/type/int">int</a> post_author:flags.3?<a href="/type/string">string</a> saved_from_peer:flags.4?<a href="/type/Peer">Peer</a> saved_from_msg_id:flags.4?<a href="/type/int">int</a> psa_type:flags.6?<a href="/type/string">string</a> = <a href="/type/MessageFwdHeader">MessageFwdHeader</a>;
<a href="/constructor/messageViews">messageViews</a>#455b853d flags:<a href="/type/%23">#</a> views:flags.0?<a href="/type/int">int</a> forwards:flags.1?<a href="/type/int">int</a> replies:flags.2?<a href="/type/MessageReplies">MessageReplies</a> = <a href="/type/MessageViews">MessageViews</a>;<br>
<a href="/constructor/updateChannelMessageForwards">updateChannelMessageForwards</a>#6e8a84df channel_id:<a href="/type/int">int</a> id:<a href="/type/int">int</a> forwards:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/photoSizeProgressive">photoSizeProgressive</a>#5aa86a51 type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> sizes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PhotoSize">PhotoSize</a>;<br>
<a href="/constructor/messages.messageViews">messages.messageViews</a>#b6c4f543 views:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageViews">MessageViews</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.MessageViews">messages.MessageViews</a>;<br>
<a href="/constructor/updateReadChannelDiscussionInbox">updateReadChannelDiscussionInbox</a>#1cc7de54 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> broadcast_id:flags.0?<a href="/type/int">int</a> broadcast_post:flags.0?<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
<a href="/constructor/updateReadChannelDiscussionOutbox">updateReadChannelDiscussionOutbox</a>#4638a26c channel_id:<a href="/type/int">int</a> top_msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/messages.discussionMessage">messages.discussionMessage</a>#f5dd8f9d flags:<a href="/type/%23">#</a> messages:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Message">Message</a>&gt; max_id:flags.0?<a href="/type/int">int</a> read_inbox_max_id:flags.1?<a href="/type/int">int</a> read_outbox_max_id:flags.2?<a href="/type/int">int</a> chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.DiscussionMessage">messages.DiscussionMessage</a>;
<a href="/constructor/messageReplyHeader">messageReplyHeader</a>#a6d57763 flags:<a href="/type/%23">#</a> reply_to_msg_id:<a href="/type/int">int</a> reply_to_peer_id:flags.0?<a href="/type/Peer">Peer</a> reply_to_top_id:flags.1?<a href="/type/int">int</a> = <a href="/type/MessageReplyHeader">MessageReplyHeader</a>;
<a href="/constructor/messageReplies">messageReplies</a>#4128faac flags:<a href="/type/%23">#</a> comments:flags.0?<a href="/constructor/true">true</a> replies:<a href="/type/int">int</a> replies_pts:<a href="/type/int">int</a> recent_repliers:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Peer">Peer</a>&gt; channel_id:flags.0?<a href="/type/int">int</a> max_id:flags.2?<a href="/type/int">int</a> read_max_id:flags.3?<a href="/type/int">int</a> = <a href="/type/MessageReplies">MessageReplies</a>;<br>
<a href="/constructor/updatePeerBlocked">updatePeerBlocked</a>#246a4b22 peer_id:<a href="/type/Peer">Peer</a> blocked:<a href="/type/Bool">Bool</a> = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/peerBlocked">peerBlocked</a>#e8fd8014 peer_id:<a href="/type/Peer">Peer</a> date:<a href="/type/int">int</a> = <a href="/type/PeerBlocked">PeerBlocked</a>;<br>
<a href="/constructor/updateChannelUserTyping">updateChannelUserTyping</a>#ff2abe9f flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> top_msg_id:flags.0?<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Update">Update</a>;<br>
---functions---<br>
<a href="/method/contacts.block">contacts.block</a>#68cc1411 id:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;
<a href="/method/contacts.unblock">contacts.unblock</a>#bea65d50 id:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;<br>
<a href="/method/messages.search">messages.search</a>#4e17810b flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> q:<a href="/type/string">string</a> from_id:flags.0?<a href="/type/InputUser">InputUser</a> top_msg_id:flags.1?<a href="/type/int">int</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
<a href="/method/messages.setTyping">messages.setTyping</a>#58943ee2 flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> top_msg_id:flags.0?<a href="/type/int">int</a> action:<a href="/type/SendMessageAction">SendMessageAction</a> = <a href="/type/Bool">Bool</a>;
<a href="/method/messages.getMessagesViews">messages.getMessagesViews</a>#5784d3e1 peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; increment:<a href="/type/Bool">Bool</a> = <a href="/type/messages.MessageViews">messages.MessageViews</a>;
<a href="/method/messages.searchGlobal">messages.searchGlobal</a>#4bc6589a flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> q:<a href="/type/string">string</a> filter:<a href="/type/MessagesFilter">MessagesFilter</a> min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> offset_rate:<a href="/type/int">int</a> offset_peer:<a href="/type/InputPeer">InputPeer</a> offset_id:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;<br>
<a href="/method/channels.exportMessageLink">channels.exportMessageLink</a>#e63fadeb flags:<a href="/type/%23">#</a> grouped:flags.0?<a href="/constructor/true">true</a> thread:flags.1?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> id:<a href="/type/int">int</a> = <a href="/type/ExportedMessageLink">ExportedMessageLink</a>;<br>
<a href="/method/messages.getReplies">messages.getReplies</a>#24b581ba peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> offset_id:<a href="/type/int">int</a> offset_date:<a href="/type/int">int</a> add_offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> max_id:<a href="/type/int">int</a> min_id:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.Messages">messages.Messages</a>;
<a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a>#446972fd peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/messages.DiscussionMessage">messages.DiscussionMessage</a>;
<a href="/method/messages.readDiscussion">messages.readDiscussion</a>#f731a9f4 peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> read_max_id:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br>
<a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a>#29a8962c flags:<a href="/type/%23">#</a> delete_message:flags.0?<a href="/constructor/true">true</a> delete_history:flags.1?<a href="/constructor/true">true</a> report_spam:flags.2?<a href="/constructor/true">true</a> msg_id:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-118" id="layer-118" name="layer-118"><i class="anchor-icon"></i></a><a href="/schema?layer=118">Layer 118</a></h3>
<p>Added method for fetching country names and phone patterns.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/help.getCountriesList">help.getCountriesList</a> - Get name, ISO code, localized name and phone codes/patterns of all available countries</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Added <strong>flags</strong>, <strong>silent</strong> parameters in <a href="/method/messages.sendEncrypted">messages.sendEncrypted</a></li>
<li>Added <strong>flags</strong>, <strong>silent</strong> parameters in <a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a></li>
<li>Added <strong>password</strong> parameter in <a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/help.countryCode">help.countryCode</a> - Country code and phone number pattern of a specific country</li>
<li>Added <a href="/constructor/help.country">help.country</a> - Name, ISO code, localized name and phone codes/patterns of a specific country</li>
<li>Added <a href="/constructor/help.countriesListNotModified">help.countriesListNotModified</a> - The country list has not changed</li>
<li>Added <a href="/constructor/help.countriesList">help.countriesList</a> - Name, ISO code, localized name and phone codes/patterns of all available countries</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>flags</strong>, <strong>requires_password</strong> parameters in <a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/keyboardButtonCallback">keyboardButtonCallback</a>#35bbdb6b flags:<a href="/type/%23">#</a> requires_password:flags.0?<a href="/constructor/true">true</a> text:<a href="/type/string">string</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/KeyboardButton">KeyboardButton</a>;<br>
<a href="/constructor/help.countryCode">help.countryCode</a>#4203c5ef flags:<a href="/type/%23">#</a> country_code:<a href="/type/string">string</a> prefixes:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; patterns:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; = <a href="/type/help.CountryCode">help.CountryCode</a>;
<a href="/constructor/help.country">help.country</a>#c3878e23 flags:<a href="/type/%23">#</a> hidden:flags.0?<a href="/constructor/true">true</a> iso2:<a href="/type/string">string</a> default_name:<a href="/type/string">string</a> name:flags.1?<a href="/type/string">string</a> country_codes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/help.CountryCode">help.CountryCode</a>&gt; = <a href="/type/help.Country">help.Country</a>;
<a href="/constructor/help.countriesListNotModified">help.countriesListNotModified</a>#93cc1f32 = <a href="/type/help.CountriesList">help.CountriesList</a>;
<a href="/constructor/help.countriesList">help.countriesList</a>#87d0759e countries:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/help.Country">help.Country</a>&gt; hash:<a href="/type/int">int</a> = <a href="/type/help.CountriesList">help.CountriesList</a>;<br>
---functions---<br>
<a href="/method/messages.sendEncrypted">messages.sendEncrypted</a>#44fa7a15 flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputEncryptedChat">InputEncryptedChat</a> random_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/messages.SentEncryptedMessage">messages.SentEncryptedMessage</a>;
<a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a>#5559481d flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> peer:<a href="/type/InputEncryptedChat">InputEncryptedChat</a> random_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> file:<a href="/type/InputEncryptedFile">InputEncryptedFile</a> = <a href="/type/messages.SentEncryptedMessage">messages.SentEncryptedMessage</a>;
<a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a>#9342ca07 flags:<a href="/type/%23">#</a> game:flags.1?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> msg_id:<a href="/type/int">int</a> data:flags.0?<a href="/type/bytes">bytes</a> password:flags.2?<a href="/type/InputCheckPasswordSRP">InputCheckPasswordSRP</a> = <a href="/type/messages.BotCallbackAnswer">messages.BotCallbackAnswer</a>;<br>
<a href="/method/help.getCountriesList">help.getCountriesList</a>#735787a8 lang_code:<a href="/type/string">string</a> hash:<a href="/type/int">int</a> = <a href="/type/help.CountriesList">help.CountriesList</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-117" id="layer-117" name="layer-117"><i class="anchor-icon"></i></a><a href="/schema?layer=117">Layer 117</a></h3>
<p>Added WebRTC endpoint constructors.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/phoneConnectionWebrtc">phoneConnectionWebrtc</a> - WebRTC connection parameters</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/phoneConnectionWebrtc">phoneConnectionWebrtc</a>#635fe375 flags:<a href="/type/%23">#</a> turn:flags.0?<a href="/constructor/true">true</a> stun:flags.1?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> ip:<a href="/type/string">string</a> ipv6:<a href="/type/string">string</a> port:<a href="/type/int">int</a> username:<a href="/type/string">string</a> password:<a href="/type/string">string</a> = <a href="/type/PhoneConnection">PhoneConnection</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-116" id="layer-116" name="layer-116"><i class="anchor-icon"></i></a><a href="/schema?layer=116">Layer 116</a></h3>
<p>Added <a href="/api/stats">supergroup statistics</a> and global privacy settings.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a> - Get <a href="/api/stats">supergroup statistics</a></li>
<li>Added <a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a> - Get global privacy settings</li>
<li>Added <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a> - Set global privacy settings</li>
<li>Added <a href="/method/help.dismissSuggestion">help.dismissSuggestion</a> - Dismiss a suggestion</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Changed type of <a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a> from <strong>UserProfilePhoto</strong> to <strong>photos.Photo</strong></li>
<li>Added <strong>flags</strong>, <strong>video</strong>, <strong>video_start_ts</strong> parameters, changed type of <strong>file</strong> from <strong>InputFile</strong> to <strong>flags.0?InputFile</strong> in <a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a> - Information about an active user in a supergroup</li>
<li>Added <a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a> - Information about an active admin in a supergroup</li>
<li>Added <a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a> - Information about an active supergroup inviter</li>
<li>Added <a href="/constructor/stats.megagroupStats">stats.megagroupStats</a> - Supergroup <a href="/api/stats">statistics</a></li>
<li>Added <a href="/constructor/globalPrivacySettings">globalPrivacySettings</a> - Global privacy settings</li>
<li>Added <a href="/constructor/updateChannelParticipant">updateChannelParticipant</a> - A participant has left, joined, was banned or admined in a <a href="/api/channel">channel or supergroup</a>.</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>flags</strong>, <strong>video</strong>, <strong>video_start_ts</strong> parameters, changed type of <strong>file</strong> from <strong>InputFile</strong> to <strong>flags.0?InputFile</strong> in <a href="/constructor/inputChatUploadedPhoto">inputChatUploadedPhoto</a></li>
<li>Added <strong>flags</strong>, <strong>has_video</strong> parameters in <a href="/constructor/userProfilePhoto">userProfilePhoto</a></li>
<li>Added <strong>flags</strong>, <strong>has_video</strong> parameters in <a href="/constructor/chatPhoto">chatPhoto</a></li>
<li>Added <strong>video_sizes</strong> parameter in <a href="/constructor/photo">photo</a></li>
<li>Added <strong>autoarchived</strong>, <strong>geo_distance</strong> parameters in <a href="/constructor/peerSettings">peerSettings</a></li>
<li>Added <strong>flags</strong>, <strong>folder_id</strong> parameters in <a href="/constructor/encryptedChatRequested">encryptedChatRequested</a></li>
<li>Added <strong>flags</strong>, <strong>video_start_ts</strong> parameters in <a href="/constructor/videoSize">videoSize</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/inputChatUploadedPhoto">inputChatUploadedPhoto</a>#c642724e flags:<a href="/type/%23">#</a> file:flags.0?<a href="/type/InputFile">InputFile</a> video:flags.1?<a href="/type/InputFile">InputFile</a> video_start_ts:flags.2?<a href="/type/double">double</a> = <a href="/type/InputChatPhoto">InputChatPhoto</a>;<br>
<a href="/constructor/userProfilePhoto">userProfilePhoto</a>#69d3ab26 flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_id:<a href="/type/long">long</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> dc_id:<a href="/type/int">int</a> = <a href="/type/UserProfilePhoto">UserProfilePhoto</a>;<br>
<a href="/constructor/chatPhoto">chatPhoto</a>#d20b9f3c flags:<a href="/type/%23">#</a> has_video:flags.0?<a href="/constructor/true">true</a> photo_small:<a href="/type/FileLocation">FileLocation</a> photo_big:<a href="/type/FileLocation">FileLocation</a> dc_id:<a href="/type/int">int</a> = <a href="/type/ChatPhoto">ChatPhoto</a>;<br>
<a href="/constructor/photo">photo</a>#fb197a65 flags:<a href="/type/%23">#</a> has_stickers:flags.0?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> sizes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhotoSize">PhotoSize</a>&gt; video_sizes:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/VideoSize">VideoSize</a>&gt; dc_id:<a href="/type/int">int</a> = <a href="/type/Photo">Photo</a>;
<a href="/constructor/peerSettings">peerSettings</a>#733f2961 flags:<a href="/type/%23">#</a> report_spam:flags.0?<a href="/constructor/true">true</a> add_contact:flags.1?<a href="/constructor/true">true</a> block_contact:flags.2?<a href="/constructor/true">true</a> share_contact:flags.3?<a href="/constructor/true">true</a> need_contacts_exception:flags.4?<a href="/constructor/true">true</a> report_geo:flags.5?<a href="/constructor/true">true</a> autoarchived:flags.7?<a href="/constructor/true">true</a> geo_distance:flags.6?<a href="/type/int">int</a> = <a href="/type/PeerSettings">PeerSettings</a>;<br>
<a href="/constructor/encryptedChatRequested">encryptedChatRequested</a>#62718a82 flags:<a href="/type/%23">#</a> folder_id:flags.0?<a href="/type/int">int</a> id:<a href="/type/int">int</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a:<a href="/type/bytes">bytes</a> = <a href="/type/EncryptedChat">EncryptedChat</a>;<br>
<a href="/constructor/videoSize">videoSize</a>#e831c556 flags:<a href="/type/%23">#</a> type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> video_start_ts:flags.0?<a href="/type/double">double</a> = <a href="/type/VideoSize">VideoSize</a>;<br>
<a href="/constructor/statsGroupTopPoster">statsGroupTopPoster</a>#18f3d0f7 user_id:<a href="/type/int">int</a> messages:<a href="/type/int">int</a> avg_chars:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>;
<a href="/constructor/statsGroupTopAdmin">statsGroupTopAdmin</a>#6014f412 user_id:<a href="/type/int">int</a> deleted:<a href="/type/int">int</a> kicked:<a href="/type/int">int</a> banned:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>;
<a href="/constructor/statsGroupTopInviter">statsGroupTopInviter</a>#31962a4c user_id:<a href="/type/int">int</a> invitations:<a href="/type/int">int</a> = <a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>;
<a href="/constructor/stats.megagroupStats">stats.megagroupStats</a>#ef7ff916 period:<a href="/type/StatsDateRangeDays">StatsDateRangeDays</a> members:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> messages:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> viewers:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> posters:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> growth_graph:<a href="/type/StatsGraph">StatsGraph</a> members_graph:<a href="/type/StatsGraph">StatsGraph</a> new_members_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> languages_graph:<a href="/type/StatsGraph">StatsGraph</a> messages_graph:<a href="/type/StatsGraph">StatsGraph</a> actions_graph:<a href="/type/StatsGraph">StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph">StatsGraph</a> weekdays_graph:<a href="/type/StatsGraph">StatsGraph</a> top_posters:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopPoster">StatsGroupTopPoster</a>&gt; top_admins:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopAdmin">StatsGroupTopAdmin</a>&gt; top_inviters:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StatsGroupTopInviter">StatsGroupTopInviter</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/stats.MegagroupStats">stats.MegagroupStats</a>;<br>
<a href="/constructor/globalPrivacySettings">globalPrivacySettings</a>#bea2f424 flags:<a href="/type/%23">#</a> archive_and_mute_new_noncontact_peers:flags.0?<a href="/type/Bool">Bool</a> = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;<br>
<a href="/constructor/updateChannelParticipant">updateChannelParticipant</a>#65d2b464 flags:<a href="/type/%23">#</a> channel_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> user_id:<a href="/type/int">int</a> prev_participant:flags.0?<a href="/type/ChannelParticipant">ChannelParticipant</a> new_participant:flags.1?<a href="/type/ChannelParticipant">ChannelParticipant</a> qts:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;<br>
---functions---<br>
<a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a>#72d4742c id:<a href="/type/InputPhoto">InputPhoto</a> = <a href="/type/photos.Photo">photos.Photo</a>;
<a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a>#89f30f69 flags:<a href="/type/%23">#</a> file:flags.0?<a href="/type/InputFile">InputFile</a> video:flags.1?<a href="/type/InputFile">InputFile</a> video_start_ts:flags.2?<a href="/type/double">double</a> = <a href="/type/photos.Photo">photos.Photo</a>;<br>
<a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a>#dcdf8607 flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/stats.MegagroupStats">stats.MegagroupStats</a>;<br>
<a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a>#eb2b4cf6 = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;
<a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>#1edaaac2 settings:<a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a> = <a href="/type/GlobalPrivacySettings">GlobalPrivacySettings</a>;<br>
<a href="/method/help.dismissSuggestion">help.dismissSuggestion</a>#077fa99f suggestion:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-115" id="layer-115" name="layer-115"><i class="anchor-icon"></i></a><a href="/schema?layer=115">Layer 115</a></h3>
<p>Added a chat invitation that also allows peeking into the group to read messages without joining it.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/chatInvitePeek">chatInvitePeek</a> - A chat invitation that also allows peeking into the group to read messages without joining it.</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/chatInvitePeek">chatInvitePeek</a>#61695cb0 chat:<a href="/type/Chat">Chat</a> expires:<a href="/type/int">int</a> = <a href="/type/ChatInvite">ChatInvite</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-114" id="layer-114" name="layer-114"><i class="anchor-icon"></i></a><a href="/schema?layer=114">Layer 114</a></h3>
<p>Added WebRTC signaling methods.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/phone.sendSignalingData">phone.sendSignalingData</a> - Send VoIP signaling data</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Removed <strong>grouped</strong> parameter in <a href="/method/messages.forwardMessages">messages.forwardMessages</a></li>
<li>Added <strong>unpin</strong>, <strong>pm_oneside</strong> parameters in <a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a></li>
</ul>
<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
<ul>
<li>Removed messages.searchGifs</li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/videoSize">videoSize</a> - <a href="/api/files#animated-profile-pictures">Animated profile picture</a> in MPEG4 format</li>
<li>Added <a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a> - Incoming phone call signaling payload</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>video_calls_available</strong> parameter in <a href="/constructor/userFull">userFull</a></li>
<li>Added <strong>force_file</strong> parameter in <a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a></li>
<li>Added <strong>video_thumbs</strong> parameter in <a href="/constructor/document">document</a></li>
<li>Added <strong>apply_min_photo</strong> parameter in <a href="/constructor/user">user</a></li>
<li>Added <strong>blocked</strong> parameter, changed type of <strong>can_view_stats</strong> from <strong>flags.12?true</strong> to <strong>flags.20?true</strong> in <a href="/constructor/channelFull">channelFull</a></li>
<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallWaiting">phoneCallWaiting</a></li>
<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallRequested">phoneCallRequested</a></li>
<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallAccepted">phoneCallAccepted</a></li>
<li>Added <strong>video</strong> parameter in <a href="/constructor/phoneCall">phoneCall</a></li>
<li>Changed type of <strong>video</strong> from <strong>flags.5?true</strong> to <strong>flags.6?true</strong> in <a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a></li>
<li>Added <strong>anonymous</strong> parameter in <a href="/constructor/chatAdminRights">chatAdminRights</a></li>
</ul>
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
<ul>
<li>Removed foundGif</li>
<li>Removed foundGifCached</li>
<li>Removed inputMediaGifExternal</li>
<li>Removed messages.foundGifs</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/userFull">userFull</a>#edf17c12 flags:<a href="/type/%23">#</a> blocked:flags.0?<a href="/constructor/true">true</a> phone_calls_available:flags.4?<a href="/constructor/true">true</a> phone_calls_private:flags.5?<a href="/constructor/true">true</a> can_pin_message:flags.7?<a href="/constructor/true">true</a> has_scheduled:flags.12?<a href="/constructor/true">true</a> video_calls_available:flags.13?<a href="/constructor/true">true</a> user:<a href="/type/User">User</a> about:flags.1?<a href="/type/string">string</a> settings:<a href="/type/PeerSettings">PeerSettings</a> profile_photo:flags.2?<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> bot_info:flags.3?<a href="/type/BotInfo">BotInfo</a> pinned_msg_id:flags.6?<a href="/type/int">int</a> common_chats_count:<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> = <a href="/type/UserFull">UserFull</a>;<br>
<a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a>#5b38c6c1 flags:<a href="/type/%23">#</a> nosound_video:flags.3?<a href="/constructor/true">true</a> force_file:flags.4?<a href="/constructor/true">true</a> file:<a href="/type/InputFile">InputFile</a> thumb:flags.2?<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; stickers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputDocument">InputDocument</a>&gt; ttl_seconds:flags.1?<a href="/type/int">int</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/document">document</a>#1e87342b flags:<a href="/type/%23">#</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumbs:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhotoSize">PhotoSize</a>&gt; video_thumbs:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/VideoSize">VideoSize</a>&gt; dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/Document">Document</a>;<br>
<a href="/constructor/user">user</a>#938458c1 flags:<a href="/type/%23">#</a> self:flags.10?<a href="/constructor/true">true</a> contact:flags.11?<a href="/constructor/true">true</a> mutual_contact:flags.12?<a href="/constructor/true">true</a> deleted:flags.13?<a href="/constructor/true">true</a> bot:flags.14?<a href="/constructor/true">true</a> bot_chat_history:flags.15?<a href="/constructor/true">true</a> bot_nochats:flags.16?<a href="/constructor/true">true</a> verified:flags.17?<a href="/constructor/true">true</a> restricted:flags.18?<a href="/constructor/true">true</a> min:flags.20?<a href="/constructor/true">true</a> bot_inline_geo:flags.21?<a href="/constructor/true">true</a> support:flags.23?<a href="/constructor/true">true</a> scam:flags.24?<a href="/constructor/true">true</a> apply_min_photo:flags.25?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> access_hash:flags.0?<a href="/type/long">long</a> first_name:flags.1?<a href="/type/string">string</a> last_name:flags.2?<a href="/type/string">string</a> username:flags.3?<a href="/type/string">string</a> phone:flags.4?<a href="/type/string">string</a> photo:flags.5?<a href="/type/UserProfilePhoto">UserProfilePhoto</a> status:flags.6?<a href="/type/UserStatus">UserStatus</a> bot_info_version:flags.14?<a href="/type/int">int</a> restriction_reason:flags.18?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/RestrictionReason">RestrictionReason</a>&gt; bot_inline_placeholder:flags.19?<a href="/type/string">string</a> lang_code:flags.22?<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
<a href="/constructor/channelFull">channelFull</a>#f0e6672a flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> can_view_stats:flags.20?<a href="/constructor/true">true</a> blocked:flags.22?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotInfo">BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
<a href="/constructor/phoneCallWaiting">phoneCallWaiting</a>#1b8f4ad1 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> receive_date:flags.0?<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;
<a href="/constructor/phoneCallRequested">phoneCallRequested</a>#87eabb53 flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a_hash:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
<a href="/constructor/phoneCallAccepted">phoneCallAccepted</a>#997c454a flags:<a href="/type/%23">#</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_b:<a href="/type/bytes">bytes</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> = <a href="/type/PhoneCall">PhoneCall</a>;
<a href="/constructor/phoneCall">phoneCall</a>#8742ae7f flags:<a href="/type/%23">#</a> p2p_allowed:flags.5?<a href="/constructor/true">true</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> admin_id:<a href="/type/int">int</a> participant_id:<a href="/type/int">int</a> g_a_or_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> protocol:<a href="/type/PhoneCallProtocol">PhoneCallProtocol</a> connections:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PhoneConnection">PhoneConnection</a>&gt; start_date:<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;
<a href="/constructor/phoneCallDiscarded">phoneCallDiscarded</a>#50ca4de1 flags:<a href="/type/%23">#</a> need_rating:flags.2?<a href="/constructor/true">true</a> need_debug:flags.3?<a href="/constructor/true">true</a> video:flags.6?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> reason:flags.0?<a href="/type/PhoneCallDiscardReason">PhoneCallDiscardReason</a> duration:flags.1?<a href="/type/int">int</a> = <a href="/type/PhoneCall">PhoneCall</a>;<br>
<a href="/constructor/chatAdminRights">chatAdminRights</a>#5fb224d5 flags:<a href="/type/%23">#</a> change_info:flags.0?<a href="/constructor/true">true</a> post_messages:flags.1?<a href="/constructor/true">true</a> edit_messages:flags.2?<a href="/constructor/true">true</a> delete_messages:flags.3?<a href="/constructor/true">true</a> ban_users:flags.4?<a href="/constructor/true">true</a> invite_users:flags.5?<a href="/constructor/true">true</a> pin_messages:flags.7?<a href="/constructor/true">true</a> add_admins:flags.9?<a href="/constructor/true">true</a> anonymous:flags.10?<a href="/constructor/true">true</a> = <a href="/type/ChatAdminRights">ChatAdminRights</a>;<br>
<a href="/constructor/videoSize">videoSize</a>#435bb987 type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> = <a href="/type/VideoSize">VideoSize</a>;<br>
<a href="/constructor/updatePhoneCallSignalingData">updatePhoneCallSignalingData</a>#2661bf09 phone_call_id:<a href="/type/long">long</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/Update">Update</a>;<br>
---functions---<br>
<a href="/method/messages.forwardMessages">messages.forwardMessages</a>#d9fee60e flags:<a href="/type/%23">#</a> silent:flags.5?<a href="/constructor/true">true</a> background:flags.6?<a href="/constructor/true">true</a> with_my_score:flags.8?<a href="/constructor/true">true</a> from_peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; random_id:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; to_peer:<a href="/type/InputPeer">InputPeer</a> schedule_date:flags.10?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;
<a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a>#d2aaf7ec flags:<a href="/type/%23">#</a> silent:flags.0?<a href="/constructor/true">true</a> unpin:flags.1?<a href="/constructor/true">true</a> pm_oneside:flags.2?<a href="/constructor/true">true</a> peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
<a href="/method/phone.sendSignalingData">phone.sendSignalingData</a>#ff7a9383 peer:<a href="/type/InputPhoneCall">InputPhoneCall</a> data:<a href="/type/bytes">bytes</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-113" id="layer-113" name="layer-113"><i class="anchor-icon"></i></a><a href="/schema?layer=113">Layer 113</a></h3>
<p>Public Service Announcement constructors and better PUSH notifications.<br>
Notice that all <code>PINNED_*</code> <a href="https://core.telegram.org/api/push-updates#possible-notifications">PUSH notifications</a> have two variants: one for groups, and one for channels.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/help.getPromoData">help.getPromoData</a> - Get MTProxy/Public Service Announcement information</li>
<li>Added <a href="/method/help.hidePromoData">help.hidePromoData</a> - Hide MTProxy/Public Service Announcement information</li>
</ul>
<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
<ul>
<li>Removed help.getProxyData</li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/help.promoDataEmpty">help.promoDataEmpty</a> - No PSA/MTProxy info is available</li>
<li>Added <a href="/constructor/help.promoData">help.promoData</a> - MTProxy/Public Service Announcement information</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>psa_type</strong> parameter in <a href="/constructor/messageFwdHeader">messageFwdHeader</a></li>
</ul>
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
<ul>
<li>Removed help.proxyDataEmpty</li>
<li>Removed help.proxyDataPromo</li>
</ul>
<h4><a class="anchor" href="#push-notification-changes" id="push-notification-changes" name="push-notification-changes"><i class="anchor-icon"></i></a>PUSH notification changes</h4>
<h5><a class="anchor" href="#new-push-notifications" id="new-push-notifications" name="new-push-notifications"><i class="anchor-icon"></i></a>New PUSH notifications</h5>
<ul>
<li>Added <a href="/api/push-updates#possible-notifications">MESSAGE_QUIZ</a> - <code>{1} sent you a quiz {2}</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_QUIZ</a> - <code>{1} posted a quiz {2}</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_QUIZ</a> - <code>{1} sent a quiz {3} to the group {2}</code></li>
<li>Added <a href="/api/push-updates#possible-notifications">PINNED_QUIZ</a> - <code>{1} pinned a quiz {2}</code></li>
</ul>
<h5><a class="anchor" href="#changed-push-notifications" id="changed-push-notifications" name="changed-push-notifications"><i class="anchor-icon"></i></a>Changed PUSH notifications</h5>
<ul>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_TEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_NOTEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_PHOTO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_PHOTO_SECRET</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_VIDEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_VIDEO_SECRET</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_SCREENSHOT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_ROUND</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_DOC</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_STICKER</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_AUDIO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_CONTACT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GEOLIVE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_POLL</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GIF</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GAME</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_GAME_SCORE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">MESSAGE_INVOICE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_TEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_NOTEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_PHOTO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_VIDEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_ROUND</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_DOC</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_STICKER</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_AUDIO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_CONTACT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GEOLIVE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_POLL</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GIF</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GAME</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHANNEL_MESSAGE_GAME_SCORE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_TEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_NOTEXT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_PHOTO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_VIDEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_ROUND</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_DOC</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_STICKER</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_AUDIO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_CONTACT</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GEO</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GEOLIVE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_POLL</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GIF</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GAME</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_GAME_SCORE</a></li>
<li>Added <strong>scheduled</strong> additional parameter in <a href="/api/push-updates#possible-notifications">CHAT_MESSAGE_INVOICE</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/messageFwdHeader">messageFwdHeader</a>#353a686b flags:<a href="/type/%23">#</a> from_id:flags.0?<a href="/type/int">int</a> from_name:flags.5?<a href="/type/string">string</a> date:<a href="/type/int">int</a> channel_id:flags.1?<a href="/type/int">int</a> channel_post:flags.2?<a href="/type/int">int</a> post_author:flags.3?<a href="/type/string">string</a> saved_from_peer:flags.4?<a href="/type/Peer">Peer</a> saved_from_msg_id:flags.4?<a href="/type/int">int</a> psa_type:flags.6?<a href="/type/string">string</a> = <a href="/type/MessageFwdHeader">MessageFwdHeader</a>;<br>
<a href="/constructor/help.promoDataEmpty">help.promoDataEmpty</a>#98f6ac75 expires:<a href="/type/int">int</a> = <a href="/type/help.PromoData">help.PromoData</a>;
<a href="/constructor/help.promoData">help.promoData</a>#8c39793f flags:<a href="/type/%23">#</a> proxy:flags.0?<a href="/constructor/true">true</a> expires:<a href="/type/int">int</a> peer:<a href="/type/Peer">Peer</a> chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; psa_type:flags.1?<a href="/type/string">string</a> psa_message:flags.2?<a href="/type/string">string</a> = <a href="/type/help.PromoData">help.PromoData</a>;<br>
---functions---<br>
<a href="/method/help.getPromoData">help.getPromoData</a>#c0977421 = <a href="/type/help.PromoData">help.PromoData</a>;
<a href="/method/help.hidePromoData">help.hidePromoData</a>#1e251c95 peer:<a href="/type/InputPeer">InputPeer</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-112" id="layer-112" name="layer-112"><i class="anchor-icon"></i></a><a href="/schema?layer=112">Layer 112</a></h3>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a> - Method for fetching previously featured stickers</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>count</strong> parameter in <a href="/constructor/messages.featuredStickersNotModified">messages.featuredStickersNotModified</a></li>
<li>Added <strong>count</strong> parameter in <a href="/constructor/messages.featuredStickers">messages.featuredStickers</a></li>
<li>Added <strong>close_period</strong>, <strong>close_date</strong> parameters in <a href="/constructor/poll">poll</a></li>
<li>Added <strong>solution</strong>, <strong>solution_entities</strong> parameters in <a href="/constructor/pollResults">pollResults</a></li>
<li>Added <strong>solution</strong>, <strong>solution_entities</strong> parameters in <a href="/constructor/inputMediaPoll">inputMediaPoll</a></li>
<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/inputMediaDice">inputMediaDice</a></li>
<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/messageMediaDice">messageMediaDice</a></li>
<li>Added <strong>emoticon</strong> parameter in <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/messages.featuredStickersNotModified">messages.featuredStickersNotModified</a>#c6dc0c66 count:<a href="/type/int">int</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;
<a href="/constructor/messages.featuredStickers">messages.featuredStickers</a>#b6abc341 hash:<a href="/type/int">int</a> count:<a href="/type/int">int</a> sets:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StickerSetCovered">StickerSetCovered</a>&gt; unread:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;<br>
<a href="/constructor/poll">poll</a>#86e18161 id:<a href="/type/long">long</a> flags:<a href="/type/%23">#</a> closed:flags.0?<a href="/constructor/true">true</a> public_voters:flags.1?<a href="/constructor/true">true</a> multiple_choice:flags.2?<a href="/constructor/true">true</a> quiz:flags.3?<a href="/constructor/true">true</a> question:<a href="/type/string">string</a> answers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswer">PollAnswer</a>&gt; close_period:flags.4?<a href="/type/int">int</a> close_date:flags.5?<a href="/type/int">int</a> = <a href="/type/Poll">Poll</a>;
<a href="/constructor/pollResults">pollResults</a>#badcc1a3 flags:<a href="/type/%23">#</a> min:flags.0?<a href="/constructor/true">true</a> results:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswerVoters">PollAnswerVoters</a>&gt; total_voters:flags.2?<a href="/type/int">int</a> recent_voters:flags.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; solution:flags.4?<a href="/type/string">string</a> solution_entities:flags.4?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/PollResults">PollResults</a>;<br>
<a href="/constructor/inputMediaPoll">inputMediaPoll</a>#0f94e5f1 flags:<a href="/type/%23">#</a> poll:<a href="/type/Poll">Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; solution:flags.1?<a href="/type/string">string</a> solution_entities:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageEntity">MessageEntity</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;
<a href="/constructor/inputMediaDice">inputMediaDice</a>#e66fbf7b emoticon:<a href="/type/string">string</a> = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/messageMediaDice">messageMediaDice</a>#3f7ee58b value:<a href="/type/int">int</a> emoticon:<a href="/type/string">string</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
<a href="/constructor/inputStickerSetDice">inputStickerSetDice</a>#e67f520e emoticon:<a href="/type/string">string</a> = <a href="/type/InputStickerSet">InputStickerSet</a>;<br>
---functions---<br>
<a href="/method/initConnection">initConnection</a>#c1cd5ea9 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
<a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a>#5fe7025b offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> hash:<a href="/type/int">int</a> = <a href="/type/messages.FeaturedStickers">messages.FeaturedStickers</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-111" id="layer-111" name="layer-111"><i class="anchor-icon"></i></a><a href="/schema?layer=111">Layer 111</a></h3>
<p><a href="/api/folders">Folders</a>, <a href="/api/stats">channel stats</a>, bot and sticker improvements</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/messages.getDialogFilters">messages.getDialogFilters</a> - Get <a href="/api/folders">folders</a></li>
<li>Added <a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a> - Get <a href="/api/folders">suggested folders</a></li>
<li>Added <a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a> - Update <a href="/api/folders">folder</a></li>
<li>Added <a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a> - Reorder <a href="/api/folders">folders</a></li>
<li>Added <a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a> - Get <a href="/api/stats">channel statistics</a></li>
<li>Added <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> - Load <a href="/api/stats">channel statistics graph</a> asynchronously</li>
<li>Added <a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a> - Set stickerset thumbnail</li>
<li>Added <a href="/method/bots.setBotCommands">bots.setBotCommands</a> - Set bot command list</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Added <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
<li>Added <strong>animated</strong>, <strong>thumb</strong> parameters in <a href="/method/stickers.createStickerSet">stickers.createStickerSet</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/dialogFilter">dialogFilter</a> - Dialog filter AKA <a href="/api/folders">folder</a></li>
<li>Added <a href="/constructor/dialogFilterSuggested">dialogFilterSuggested</a> - Suggested <a href="/api/folders">folders</a></li>
<li>Added <a href="/constructor/updateDialogFilter">updateDialogFilter</a> - A new <a href="/api/folders">folder</a> was added</li>
<li>Added <a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a> - New <a href="/api/folders">folder</a> order</li>
<li>Added <a href="/constructor/updateDialogFilters">updateDialogFilters</a> - Clients should update <a href="/api/folders">folder</a> info</li>
<li>Added <a href="/constructor/statsDateRangeDays">statsDateRangeDays</a> - <a href="/api/stats">Channel statistics</a> date range</li>
<li>Added <a href="/constructor/statsAbsValueAndPrev">statsAbsValueAndPrev</a> - Statistics value couple; intial and final value for period of time currently in consideration</li>
<li>Added <a href="/constructor/statsPercentValue">statsPercentValue</a> - <a href="/api/stats">Channel statistics percentage</a>. </li>
<li>Added <a href="/constructor/statsGraphAsync">statsGraphAsync</a> - This <a href="/api/stats">channel statistics graph</a> must be generated asynchronously using <a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a> to reduce server load</li>
<li>Added <a href="/constructor/statsGraphError">statsGraphError</a> - An error occurred while generating the <a href="/api/stats">statistics graph</a></li>
<li>Added <a href="/constructor/statsGraph">statsGraph</a> - <a href="/api/stats">Channel statistics graph</a></li>
<li>Added <a href="/constructor/messageInteractionCounters">messageInteractionCounters</a> - Message interaction counters</li>
<li>Added <a href="/constructor/stats.broadcastStats">stats.broadcastStats</a> - <a href="/api/stats">Channel statistics</a>.</li>
<li>Added <a href="/constructor/inputMediaDice">inputMediaDice</a> - Send a <a href="/api/dice">dice-based animated sticker</a></li>
<li>Added <a href="/constructor/messageMediaDice">messageMediaDice</a> - <a href="/api/dice">Dice-based animated sticker</a></li>
<li>Added <a href="/constructor/inputStickerSetDice">inputStickerSetDice</a> - Used for fetching <a href="/api/dice">animated dice stickers</a></li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>stats_dc</strong> parameter in <a href="/constructor/channelFull">channelFull</a></li>
<li>Added <strong>flags</strong>, <strong>cached_page_views</strong> parameters in <a href="/constructor/webPageNotModified">webPageNotModified</a></li>
<li>Added <strong>library_versions</strong> parameter in <a href="/constructor/phoneCallProtocol">phoneCallProtocol</a></li>
<li>Added <strong>views</strong> parameter in <a href="/constructor/page">page</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/channelFull">channelFull</a>#f0e6672a flags:<a href="/type/%23">#</a> can_view_participants:flags.3?<a href="/constructor/true">true</a> can_set_username:flags.6?<a href="/constructor/true">true</a> can_set_stickers:flags.7?<a href="/constructor/true">true</a> hidden_prehistory:flags.10?<a href="/constructor/true">true</a> can_view_stats:flags.12?<a href="/constructor/true">true</a> can_set_location:flags.16?<a href="/constructor/true">true</a> has_scheduled:flags.19?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> about:<a href="/type/string">string</a> participants_count:flags.0?<a href="/type/int">int</a> admins_count:flags.1?<a href="/type/int">int</a> kicked_count:flags.2?<a href="/type/int">int</a> banned_count:flags.2?<a href="/type/int">int</a> online_count:flags.13?<a href="/type/int">int</a> read_inbox_max_id:<a href="/type/int">int</a> read_outbox_max_id:<a href="/type/int">int</a> unread_count:<a href="/type/int">int</a> chat_photo:<a href="/type/Photo">Photo</a> notify_settings:<a href="/type/PeerNotifySettings">PeerNotifySettings</a> exported_invite:<a href="/type/ExportedChatInvite">ExportedChatInvite</a> bot_info:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotInfo">BotInfo</a>&gt; migrated_from_chat_id:flags.4?<a href="/type/int">int</a> migrated_from_max_id:flags.4?<a href="/type/int">int</a> pinned_msg_id:flags.5?<a href="/type/int">int</a> stickerset:flags.8?<a href="/type/StickerSet">StickerSet</a> available_min_id:flags.9?<a href="/type/int">int</a> folder_id:flags.11?<a href="/type/int">int</a> linked_chat_id:flags.14?<a href="/type/int">int</a> location:flags.15?<a href="/type/ChannelLocation">ChannelLocation</a> slowmode_seconds:flags.17?<a href="/type/int">int</a> slowmode_next_send_date:flags.18?<a href="/type/int">int</a> stats_dc:flags.12?<a href="/type/int">int</a> pts:<a href="/type/int">int</a> = <a href="/type/ChatFull">ChatFull</a>;<br>
<a href="/constructor/webPageNotModified">webPageNotModified</a>#7311ca11 flags:<a href="/type/%23">#</a> cached_page_views:flags.0?<a href="/type/int">int</a> = <a href="/type/WebPage">WebPage</a>;<br>
<a href="/constructor/phoneCallProtocol">phoneCallProtocol</a>#fc878fc8 flags:<a href="/type/%23">#</a> udp_p2p:flags.0?<a href="/constructor/true">true</a> udp_reflector:flags.1?<a href="/constructor/true">true</a> min_layer:<a href="/type/int">int</a> max_layer:<a href="/type/int">int</a> library_versions:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/string">string</a>&gt; = <a href="/type/PhoneCallProtocol">PhoneCallProtocol</a>;
<a href="/constructor/page">page</a>#98657f0d flags:<a href="/type/%23">#</a> part:flags.0?<a href="/constructor/true">true</a> rtl:flags.1?<a href="/constructor/true">true</a> v2:flags.2?<a href="/constructor/true">true</a> url:<a href="/type/string">string</a> blocks:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PageBlock">PageBlock</a>&gt; photos:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Photo">Photo</a>&gt; documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; views:flags.3?<a href="/type/int">int</a> = <a href="/type/Page">Page</a>;<br>
<a href="/constructor/dialogFilter">dialogFilter</a>#7438f7e8 flags:<a href="/type/%23">#</a> contacts:flags.0?<a href="/constructor/true">true</a> non_contacts:flags.1?<a href="/constructor/true">true</a> groups:flags.2?<a href="/constructor/true">true</a> broadcasts:flags.3?<a href="/constructor/true">true</a> bots:flags.4?<a href="/constructor/true">true</a> exclude_muted:flags.11?<a href="/constructor/true">true</a> exclude_read:flags.12?<a href="/constructor/true">true</a> exclude_archived:flags.13?<a href="/constructor/true">true</a> id:<a href="/type/int">int</a> title:<a href="/type/string">string</a> emoticon:flags.25?<a href="/type/string">string</a> pinned_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; include_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; exclude_peers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPeer">InputPeer</a>&gt; = <a href="/type/DialogFilter">DialogFilter</a>;
<a href="/constructor/dialogFilterSuggested">dialogFilterSuggested</a>#77744d4a filter:<a href="/type/DialogFilter">DialogFilter</a> description:<a href="/type/string">string</a> = <a href="/type/DialogFilterSuggested">DialogFilterSuggested</a>;<br>
<a href="/constructor/updateDialogFilter">updateDialogFilter</a>#26ffde7d flags:<a href="/type/%23">#</a> id:<a href="/type/int">int</a> filter:flags.0?<a href="/type/DialogFilter">DialogFilter</a> = <a href="/type/Update">Update</a>;
<a href="/constructor/updateDialogFilterOrder">updateDialogFilterOrder</a>#a5d72105 order:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/Update">Update</a>;
<a href="/constructor/updateDialogFilters">updateDialogFilters</a>#3504914f = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/statsDateRangeDays">statsDateRangeDays</a>#b637edaf min_date:<a href="/type/int">int</a> max_date:<a href="/type/int">int</a> = <a href="/type/StatsDateRangeDays">StatsDateRangeDays</a>;
<a href="/constructor/statsAbsValueAndPrev">statsAbsValueAndPrev</a>#cb43acde current:<a href="/type/double">double</a> previous:<a href="/type/double">double</a> = <a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a>;
<a href="/constructor/statsPercentValue">statsPercentValue</a>#cbce2fe0 part:<a href="/type/double">double</a> total:<a href="/type/double">double</a> = <a href="/type/StatsPercentValue">StatsPercentValue</a>;
<a href="/constructor/statsGraphAsync">statsGraphAsync</a>#4a27eb2d token:<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;
<a href="/constructor/statsGraphError">statsGraphError</a>#bedc9822 error:<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;
<a href="/constructor/statsGraph">statsGraph</a>#8ea464b6 flags:<a href="/type/%23">#</a> json:<a href="/type/DataJSON">DataJSON</a> zoom_token:flags.0?<a href="/type/string">string</a> = <a href="/type/StatsGraph">StatsGraph</a>;<br>
<a href="/constructor/messageInteractionCounters">messageInteractionCounters</a>#ad4fc9bd msg_id:<a href="/type/int">int</a> views:<a href="/type/int">int</a> forwards:<a href="/type/int">int</a> = <a href="/type/MessageInteractionCounters">MessageInteractionCounters</a>;<br>
<a href="/constructor/stats.broadcastStats">stats.broadcastStats</a>#bdf78394 period:<a href="/type/StatsDateRangeDays">StatsDateRangeDays</a> followers:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> views_per_post:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> shares_per_post:<a href="/type/StatsAbsValueAndPrev">StatsAbsValueAndPrev</a> enabled_notifications:<a href="/type/StatsPercentValue">StatsPercentValue</a> growth_graph:<a href="/type/StatsGraph">StatsGraph</a> followers_graph:<a href="/type/StatsGraph">StatsGraph</a> mute_graph:<a href="/type/StatsGraph">StatsGraph</a> top_hours_graph:<a href="/type/StatsGraph">StatsGraph</a> interactions_graph:<a href="/type/StatsGraph">StatsGraph</a> iv_interactions_graph:<a href="/type/StatsGraph">StatsGraph</a> views_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> new_followers_by_source_graph:<a href="/type/StatsGraph">StatsGraph</a> languages_graph:<a href="/type/StatsGraph">StatsGraph</a> recent_message_interactions:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageInteractionCounters">MessageInteractionCounters</a>&gt; = <a href="/type/stats.BroadcastStats">stats.BroadcastStats</a>;<br>
<a href="/constructor/inputMediaDice">inputMediaDice</a>#aeffa807 = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/messageMediaDice">messageMediaDice</a>#638fe46b value:<a href="/type/int">int</a> = <a href="/type/MessageMedia">MessageMedia</a>;<br>
<a href="/constructor/inputStickerSetDice">inputStickerSetDice</a>#79e21a53 = <a href="/type/InputStickerSet">InputStickerSet</a>;<br>
---functions---<br>
<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
<a href="/method/stickers.createStickerSet">stickers.createStickerSet</a>#f1036780 flags:<a href="/type/%23">#</a> masks:flags.0?<a href="/constructor/true">true</a> animated:flags.1?<a href="/constructor/true">true</a> user_id:<a href="/type/InputUser">InputUser</a> title:<a href="/type/string">string</a> short_name:<a href="/type/string">string</a> thumb:flags.2?<a href="/type/InputDocument">InputDocument</a> stickers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputStickerSetItem">InputStickerSetItem</a>&gt; = <a href="/type/messages.StickerSet">messages.StickerSet</a>;<br>
<a href="/method/messages.getDialogFilters">messages.getDialogFilters</a>#f19ed96d = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DialogFilter">DialogFilter</a>&gt;;
<a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a>#a29cd42c = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DialogFilterSuggested">DialogFilterSuggested</a>&gt;;
<a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a>#1ad4a04a flags:<a href="/type/%23">#</a> id:<a href="/type/int">int</a> filter:flags.0?<a href="/type/DialogFilter">DialogFilter</a> = <a href="/type/Bool">Bool</a>;
<a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a>#c563c1e4 order:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/Bool">Bool</a>;<br>
<a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a>#ab42441a flags:<a href="/type/%23">#</a> dark:flags.0?<a href="/constructor/true">true</a> channel:<a href="/type/InputChannel">InputChannel</a> = <a href="/type/stats.BroadcastStats">stats.BroadcastStats</a>;
<a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a>#621d5fa0 flags:<a href="/type/%23">#</a> token:<a href="/type/string">string</a> x:flags.0?<a href="/type/long">long</a> = <a href="/type/StatsGraph">StatsGraph</a>;
<a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a>#9a364e30 stickerset:<a href="/type/InputStickerSet">InputStickerSet</a> thumb:<a href="/type/InputDocument">InputDocument</a> = <a href="/type/messages.StickerSet">messages.StickerSet</a>;<br>
<a href="/method/bots.setBotCommands">bots.setBotCommands</a>#805d46f6 commands:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BotCommand">BotCommand</a>&gt; = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-110" id="layer-110" name="layer-110"><i class="anchor-icon"></i></a><a href="/schema?layer=110">Layer 110</a></h3>
<p>Credit card information</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/payments.getBankCardData">payments.getBankCardData</a> - Get info about a credit card</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Removed <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
<li>Added <strong>flags</strong>, <strong>background</strong>, <strong>self_expires</strong> parameters in <a href="/method/contacts.getLocated">contacts.getLocated</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/messageEntityBankCard">messageEntityBankCard</a> - Indicates a credit card number</li>
<li>Added <a href="/constructor/bankCardOpenUrl">bankCardOpenUrl</a> - Credit card info URL provided by the bank</li>
<li>Added <a href="/constructor/payments.bankCardData">payments.bankCardData</a> - Credit card info, provided by the card's bank(s)</li>
<li>Added <a href="/constructor/peerSelfLocated">peerSelfLocated</a> - Current peer</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/messageEntityBankCard">messageEntityBankCard</a>#761e6af4 offset:<a href="/type/int">int</a> length:<a href="/type/int">int</a> = <a href="/type/MessageEntity">MessageEntity</a>;<br>
<a href="/constructor/bankCardOpenUrl">bankCardOpenUrl</a>#f568028a url:<a href="/type/string">string</a> name:<a href="/type/string">string</a> = <a href="/type/BankCardOpenUrl">BankCardOpenUrl</a>;<br>
<a href="/constructor/payments.bankCardData">payments.bankCardData</a>#3e24e573 title:<a href="/type/string">string</a> open_urls:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/BankCardOpenUrl">BankCardOpenUrl</a>&gt; = <a href="/type/payments.BankCardData">payments.BankCardData</a>;
<a href="/constructor/peerSelfLocated">peerSelfLocated</a>#f8ec284b expires:<a href="/type/int">int</a> = <a href="/type/PeerLocated">PeerLocated</a>;<br>
---functions---<br>
<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> query:!X = X;<br>
<a href="/method/contacts.getLocated">contacts.getLocated</a>#d348bc44 flags:<a href="/type/%23">#</a> background:flags.1?<a href="/constructor/true">true</a> geo_point:<a href="/type/InputGeoPoint">InputGeoPoint</a> self_expires:flags.0?<a href="/type/int">int</a> = <a href="/type/Updates">Updates</a>;<br>
<a href="/method/payments.getBankCardData">payments.getBankCardData</a>#2e79d779 number:<a href="/type/string">string</a> = <a href="/type/payments.BankCardData">payments.BankCardData</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-109" id="layer-109" name="layer-109"><i class="anchor-icon"></i></a><a href="/schema?layer=109">Layer 109</a></h3>
<p>Non-anonymous polls, improved sticker management</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/messages.getPollVotes">messages.getPollVotes</a> - Get poll results for non-anonymous polls</li>
<li>Added <a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a> - Apply changes to multiple stickersets</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Added <strong>params</strong> parameter in <a href="/method/initConnection">initConnection</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/updateMessagePollVote">updateMessagePollVote</a> - A specific user has voted in a poll</li>
<li>Added <a href="/constructor/messageUserVote">messageUserVote</a> - How a user voted in a poll</li>
<li>Added <a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a> - How a user voted in a poll (reduced constructor, returned if an <code>option</code> was provided to <a href="/method/messages.getPollVotes">messages.getPollVotes</a>)</li>
<li>Added <a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a> - How a user voted in a multiple-choice poll</li>
<li>Added <a href="/constructor/messages.votesList">messages.votesList</a> - How users voted in a poll</li>
<li>Added <a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a> - A button that allows the user to create and send a poll when pressed; available only in private</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>recent_voters</strong> parameter in <a href="/constructor/pollResults">pollResults</a></li>
<li>Added <strong>flags</strong>, <strong>correct_answers</strong> parameters in <a href="/constructor/inputMediaPoll">inputMediaPoll</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/pollResults">pollResults</a>#c87024a2 flags:<a href="/type/%23">#</a> min:flags.0?<a href="/constructor/true">true</a> results:flags.1?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswerVoters">PollAnswerVoters</a>&gt; total_voters:flags.2?<a href="/type/int">int</a> recent_voters:flags.3?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PollResults">PollResults</a>;<br>
<a href="/constructor/inputMediaPoll">inputMediaPoll</a>#abe9ca25 flags:<a href="/type/%23">#</a> poll:<a href="/type/Poll">Poll</a> correct_answers:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/updateMessagePollVote">updateMessagePollVote</a>#42f88f2c poll_id:<a href="/type/long">long</a> user_id:<a href="/type/int">int</a> options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/messageUserVote">messageUserVote</a>#a28e5559 user_id:<a href="/type/int">int</a> option:<a href="/type/bytes">bytes</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
<a href="/constructor/messageUserVoteInputOption">messageUserVoteInputOption</a>#36377430 user_id:<a href="/type/int">int</a> date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
<a href="/constructor/messageUserVoteMultiple">messageUserVoteMultiple</a>#0e8fe0de user_id:<a href="/type/int">int</a> options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/bytes">bytes</a>&gt; date:<a href="/type/int">int</a> = <a href="/type/MessageUserVote">MessageUserVote</a>;
<a href="/constructor/messages.votesList">messages.votesList</a>#0823f649 flags:<a href="/type/%23">#</a> count:<a href="/type/int">int</a> votes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/MessageUserVote">MessageUserVote</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; next_offset:flags.0?<a href="/type/string">string</a> = <a href="/type/messages.VotesList">messages.VotesList</a>;<br>
<a href="/constructor/keyboardButtonRequestPoll">keyboardButtonRequestPoll</a>#bbc7515d flags:<a href="/type/%23">#</a> quiz:flags.0?<a href="/type/Bool">Bool</a> text:<a href="/type/string">string</a> = <a href="/type/KeyboardButton">KeyboardButton</a>;<br>
---functions---<br>
<a href="/method/initConnection">initConnection</a>#785188b8 {X:Type} flags:<a href="/type/%23">#</a> api_id:<a href="/type/int">int</a> device_model:<a href="/type/string">string</a> system_version:<a href="/type/string">string</a> app_version:<a href="/type/string">string</a> system_lang_code:<a href="/type/string">string</a> lang_pack:<a href="/type/string">string</a> lang_code:<a href="/type/string">string</a> proxy:flags.0?<a href="/type/InputClientProxy">InputClientProxy</a> params:flags.1?<a href="/type/JSONValue">JSONValue</a> query:!X = X;<br>
<a href="/method/messages.getPollVotes">messages.getPollVotes</a>#b86e380e flags:<a href="/type/%23">#</a> peer:<a href="/type/InputPeer">InputPeer</a> id:<a href="/type/int">int</a> option:flags.0?<a href="/type/bytes">bytes</a> offset:flags.1?<a href="/type/string">string</a> limit:<a href="/type/int">int</a> = <a href="/type/messages.VotesList">messages.VotesList</a>;
<a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a>#b5052fea flags:<a href="/type/%23">#</a> uninstall:flags.0?<a href="/constructor/true">true</a> archive:flags.1?<a href="/constructor/true">true</a> unarchive:flags.2?<a href="/constructor/true">true</a> stickersets:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputStickerSet">InputStickerSet</a>&gt; = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-108" id="layer-108" name="layer-108"><i class="anchor-icon"></i></a><a href="/schema?layer=108">Layer 108</a></h3>
<p>Login with QR-code, sensitive content settings, quizes, multiple-choice and public polls, get inactive chats, improved wallpapers and themes.</p>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/auth.exportLoginToken">auth.exportLoginToken</a> - Generate a login token, for <a href="/api/qr-login">login via QR code</a>. </li>
<li>Added <a href="/method/auth.importLoginToken">auth.importLoginToken</a> - Login using a redirected login token, generated in case of DC mismatch during <a href="/api/qr-login">QR code login</a>.</li>
<li>Added <a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a> - Accept QR code login token, logging in the app that generated it.</li>
<li>Added <a href="/method/account.setContentSettings">account.setContentSettings</a> - Set sensitive content settings (for viewing or hiding NSFW content)</li>
<li>Added <a href="/method/account.getContentSettings">account.getContentSettings</a> - Get sensitive content settings</li>
<li>Added <a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a> - Get inactive channels and supergroups</li>
<li>Added <a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a> - Get info about multiple wallpapers</li>
</ul>
<h5><a class="anchor" href="#changed-methods" id="changed-methods" name="changed-methods"><i class="anchor-icon"></i></a>Changed Methods</h5>
<ul>
<li>Added <strong>cdn_supported</strong> parameter in <a href="/method/upload.getFile">upload.getFile</a></li>
<li>Added <strong>flags</strong>, <strong>settings</strong> parameters, changed type of <strong>document</strong> from <strong>InputDocument</strong> to <strong>flags.2?InputDocument</strong> in <a href="/method/account.createTheme">account.createTheme</a></li>
<li>Added <strong>settings</strong> parameter in <a href="/method/account.updateTheme">account.updateTheme</a></li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a> - Legacy photo file location</li>
<li>Added <a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a> - Live geoposition message was viewed</li>
<li>Added <a href="/constructor/updateLoginToken">updateLoginToken</a> - A login token (for login via QR code) was accepted.</li>
<li>Added <a href="/constructor/auth.loginToken">auth.loginToken</a> - Login token (for <a href="/api/qr-login">QR code login</a>)</li>
<li>Added <a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a> - Repeat the query to the specified DC</li>
<li>Added <a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a> - Login via token (QR code) succeded!</li>
<li>Added <a href="/constructor/account.contentSettings">account.contentSettings</a> - Sensitive content settings</li>
<li>Added <a href="/constructor/messages.inactiveChats">messages.inactiveChats</a> - Inactive chat list</li>
<li>Added <a href="/constructor/baseThemeClassic">baseThemeClassic</a> - Classic theme</li>
<li>Added <a href="/constructor/baseThemeDay">baseThemeDay</a> - Day theme</li>
<li>Added <a href="/constructor/baseThemeNight">baseThemeNight</a> - Night theme</li>
<li>Added <a href="/constructor/baseThemeTinted">baseThemeTinted</a> - Tinted theme</li>
<li>Added <a href="/constructor/baseThemeArctic">baseThemeArctic</a> - Arctic theme</li>
<li>Added <a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a> - Wallpaper with no file</li>
<li>Added <a href="/constructor/wallPaperNoFile">wallPaperNoFile</a> - No file wallpaper</li>
<li>Added <a href="/constructor/inputThemeSettings">inputThemeSettings</a> - Theme settings</li>
<li>Added <a href="/constructor/themeSettings">themeSettings</a> - Theme settings</li>
<li>Added <a href="/constructor/webPageAttributeTheme">webPageAttributeTheme</a> - Page theme</li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>attributes</strong> parameter, removed <strong>documents</strong> parameter in <a href="/constructor/webPage">webPage</a></li>
<li>Added <strong>public_voters</strong>, <strong>multiple_choice</strong>, <strong>quiz</strong> parameters in <a href="/constructor/poll">poll</a></li>
<li>Added <strong>correct</strong> parameter in <a href="/constructor/pollAnswerVoters">pollAnswerVoters</a></li>
<li>Added <strong>second_background_color</strong>, <strong>rotation</strong> parameters in <a href="/constructor/wallPaperSettings">wallPaperSettings</a></li>
<li>Added <strong>video_upload_maxbitrate</strong> parameter in <a href="/constructor/autoDownloadSettings">autoDownloadSettings</a></li>
<li>Added <strong>settings</strong> parameter in <a href="/constructor/theme">theme</a></li>
</ul>
<h5><a class="anchor" href="#deleted-constructors" id="deleted-constructors" name="deleted-constructors"><i class="anchor-icon"></i></a>Deleted Constructors</h5>
<ul>
<li>Removed themeDocumentNotModified</li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/webPage">webPage</a>#e89c45b2 flags:<a href="/type/%23">#</a> id:<a href="/type/long">long</a> url:<a href="/type/string">string</a> display_url:<a href="/type/string">string</a> hash:<a href="/type/int">int</a> type:flags.0?<a href="/type/string">string</a> site_name:flags.1?<a href="/type/string">string</a> title:flags.2?<a href="/type/string">string</a> description:flags.3?<a href="/type/string">string</a> photo:flags.4?<a href="/type/Photo">Photo</a> embed_url:flags.5?<a href="/type/string">string</a> embed_type:flags.5?<a href="/type/string">string</a> embed_width:flags.6?<a href="/type/int">int</a> embed_height:flags.6?<a href="/type/int">int</a> duration:flags.7?<a href="/type/int">int</a> author:flags.8?<a href="/type/string">string</a> document:flags.9?<a href="/type/Document">Document</a> cached_page:flags.10?<a href="/type/Page">Page</a> attributes:flags.12?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/WebPageAttribute">WebPageAttribute</a>&gt; = <a href="/type/WebPage">WebPage</a>;<br>
<a href="/constructor/poll">poll</a>#d5529d06 id:<a href="/type/long">long</a> flags:<a href="/type/%23">#</a> closed:flags.0?<a href="/constructor/true">true</a> public_voters:flags.1?<a href="/constructor/true">true</a> multiple_choice:flags.2?<a href="/constructor/true">true</a> quiz:flags.3?<a href="/constructor/true">true</a> question:<a href="/type/string">string</a> answers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PollAnswer">PollAnswer</a>&gt; = <a href="/type/Poll">Poll</a>;
<a href="/constructor/pollAnswerVoters">pollAnswerVoters</a>#3b6ddad2 flags:<a href="/type/%23">#</a> chosen:flags.0?<a href="/constructor/true">true</a> correct:flags.1?<a href="/constructor/true">true</a> option:<a href="/type/bytes">bytes</a> voters:<a href="/type/int">int</a> = <a href="/type/PollAnswerVoters">PollAnswerVoters</a>;<br>
<a href="/constructor/wallPaperSettings">wallPaperSettings</a>#05086cf8 flags:<a href="/type/%23">#</a> blur:flags.1?<a href="/constructor/true">true</a> motion:flags.2?<a href="/constructor/true">true</a> background_color:flags.0?<a href="/type/int">int</a> second_background_color:flags.4?<a href="/type/int">int</a> intensity:flags.3?<a href="/type/int">int</a> rotation:flags.4?<a href="/type/int">int</a> = <a href="/type/WallPaperSettings">WallPaperSettings</a>;<br>
<a href="/constructor/autoDownloadSettings">autoDownloadSettings</a>#e04232f3 flags:<a href="/type/%23">#</a> disabled:flags.0?<a href="/constructor/true">true</a> video_preload_large:flags.1?<a href="/constructor/true">true</a> audio_preload_next:flags.2?<a href="/constructor/true">true</a> phonecalls_less_data:flags.3?<a href="/constructor/true">true</a> photo_size_max:<a href="/type/int">int</a> video_size_max:<a href="/type/int">int</a> file_size_max:<a href="/type/int">int</a> video_upload_maxbitrate:<a href="/type/int">int</a> = <a href="/type/AutoDownloadSettings">AutoDownloadSettings</a>;<br>
<a href="/constructor/inputPhotoLegacyFileLocation">inputPhotoLegacyFileLocation</a>#d83466f3 id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> file_reference:<a href="/type/bytes">bytes</a> volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/InputFileLocation">InputFileLocation</a>;<br>
<a href="/constructor/theme">theme</a>#028f1114 flags:<a href="/type/%23">#</a> creator:flags.0?<a href="/constructor/true">true</a> default:flags.1?<a href="/constructor/true">true</a> id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> slug:<a href="/type/string">string</a> title:<a href="/type/string">string</a> document:flags.2?<a href="/type/Document">Document</a> settings:flags.3?<a href="/type/ThemeSettings">ThemeSettings</a> installs_count:<a href="/type/int">int</a> = <a href="/type/Theme">Theme</a>;<br>
<a href="/constructor/updateGeoLiveViewed">updateGeoLiveViewed</a>#871fb939 peer:<a href="/type/Peer">Peer</a> msg_id:<a href="/type/int">int</a> = <a href="/type/Update">Update</a>;
<a href="/constructor/updateLoginToken">updateLoginToken</a>#564fe691 = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/auth.loginToken">auth.loginToken</a>#629f1980 expires:<a href="/type/int">int</a> token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
<a href="/constructor/auth.loginTokenMigrateTo">auth.loginTokenMigrateTo</a>#068e9916 dc_id:<a href="/type/int">int</a> token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
<a href="/constructor/auth.loginTokenSuccess">auth.loginTokenSuccess</a>#390d5c5e authorization:<a href="/type/auth.Authorization">auth.Authorization</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
<a href="/constructor/account.contentSettings">account.contentSettings</a>#57e28221 flags:<a href="/type/%23">#</a> sensitive_enabled:flags.0?<a href="/constructor/true">true</a> sensitive_can_change:flags.1?<a href="/constructor/true">true</a> = <a href="/type/account.ContentSettings">account.ContentSettings</a>;<br>
<a href="/constructor/messages.inactiveChats">messages.inactiveChats</a>#a927fec5 dates:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; chats:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Chat">Chat</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/messages.InactiveChats">messages.InactiveChats</a>;<br>
<a href="/constructor/baseThemeClassic">baseThemeClassic</a>#c3a12462 = <a href="/type/BaseTheme">BaseTheme</a>;
<a href="/constructor/baseThemeDay">baseThemeDay</a>#fbd81688 = <a href="/type/BaseTheme">BaseTheme</a>;
<a href="/constructor/baseThemeNight">baseThemeNight</a>#b7b31ea8 = <a href="/type/BaseTheme">BaseTheme</a>;
<a href="/constructor/baseThemeTinted">baseThemeTinted</a>#6d5f77ee = <a href="/type/BaseTheme">BaseTheme</a>;
<a href="/constructor/baseThemeArctic">baseThemeArctic</a>#5b11125a = <a href="/type/BaseTheme">BaseTheme</a>;<br>
<a href="/constructor/inputWallPaperNoFile">inputWallPaperNoFile</a>#8427bbac = <a href="/type/InputWallPaper">InputWallPaper</a>;<br>
<a href="/constructor/wallPaperNoFile">wallPaperNoFile</a>#8af40b25 flags:<a href="/type/%23">#</a> default:flags.1?<a href="/constructor/true">true</a> dark:flags.4?<a href="/constructor/true">true</a> settings:flags.2?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/WallPaper">WallPaper</a>;<br>
<a href="/constructor/inputThemeSettings">inputThemeSettings</a>#bd507cd1 flags:<a href="/type/%23">#</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_top_color:flags.0?<a href="/type/int">int</a> message_bottom_color:flags.0?<a href="/type/int">int</a> wallpaper:flags.1?<a href="/type/InputWallPaper">InputWallPaper</a> wallpaper_settings:flags.1?<a href="/type/WallPaperSettings">WallPaperSettings</a> = <a href="/type/InputThemeSettings">InputThemeSettings</a>;<br>
<a href="/constructor/themeSettings">themeSettings</a>#9c14984a flags:<a href="/type/%23">#</a> base_theme:<a href="/type/BaseTheme">BaseTheme</a> accent_color:<a href="/type/int">int</a> message_top_color:flags.0?<a href="/type/int">int</a> message_bottom_color:flags.0?<a href="/type/int">int</a> wallpaper:flags.1?<a href="/type/WallPaper">WallPaper</a> = <a href="/type/ThemeSettings">ThemeSettings</a>;<br>
<a href="/constructor/webPageAttributeTheme">webPageAttributeTheme</a>#54b56617 flags:<a href="/type/%23">#</a> documents:flags.0?<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; settings:flags.1?<a href="/type/ThemeSettings">ThemeSettings</a> = <a href="/type/WebPageAttribute">WebPageAttribute</a>;<br>
---functions---<br>
<a href="/method/upload.getFile">upload.getFile</a>#b15a9afc flags:<a href="/type/%23">#</a> precise:flags.0?<a href="/constructor/true">true</a> cdn_supported:flags.1?<a href="/constructor/true">true</a> location:<a href="/type/InputFileLocation">InputFileLocation</a> offset:<a href="/type/int">int</a> limit:<a href="/type/int">int</a> = <a href="/type/upload.File">upload.File</a>;<br>
<a href="/method/account.createTheme">account.createTheme</a>#8432c21f flags:<a href="/type/%23">#</a> slug:<a href="/type/string">string</a> title:<a href="/type/string">string</a> document:flags.2?<a href="/type/InputDocument">InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings">InputThemeSettings</a> = <a href="/type/Theme">Theme</a>;
<a href="/method/account.updateTheme">account.updateTheme</a>#5cb367d5 flags:<a href="/type/%23">#</a> format:<a href="/type/string">string</a> theme:<a href="/type/InputTheme">InputTheme</a> slug:flags.0?<a href="/type/string">string</a> title:flags.1?<a href="/type/string">string</a> document:flags.2?<a href="/type/InputDocument">InputDocument</a> settings:flags.3?<a href="/type/InputThemeSettings">InputThemeSettings</a> = <a href="/type/Theme">Theme</a>;
<a href="/method/auth.exportLoginToken">auth.exportLoginToken</a>#b1b41517 api_id:<a href="/type/int">int</a> api_hash:<a href="/type/string">string</a> except_ids:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
<a href="/method/auth.importLoginToken">auth.importLoginToken</a>#95ac5ce4 token:<a href="/type/bytes">bytes</a> = <a href="/type/auth.LoginToken">auth.LoginToken</a>;
<a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</a>#e894ad4d token:<a href="/type/bytes">bytes</a> = <a href="/type/Authorization">Authorization</a>;
<a href="/method/account.setContentSettings">account.setContentSettings</a>#b574b16b flags:<a href="/type/%23">#</a> sensitive_enabled:flags.0?<a href="/constructor/true">true</a> = <a href="/type/Bool">Bool</a>;
<a href="/method/account.getContentSettings">account.getContentSettings</a>#8b9b4dae = <a href="/type/account.ContentSettings">account.ContentSettings</a>;<br>
<a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a>#11e831ee = <a href="/type/messages.InactiveChats">messages.InactiveChats</a>;<br>
<a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a>#65ad71dc wallpapers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputWallPaper">InputWallPaper</a>&gt; = <a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/WallPaper">WallPaper</a>&gt;;<br></code></pre></div>
<h3><a class="anchor" href="#layer-105" id="layer-105" name="layer-105"><i class="anchor-icon"></i></a><a href="/schema?layer=105">Layer 105</a></h3>
<p>The API underwent huge changes, a full reread of the <a href="https://core.telegram.org">documentation</a> is required.</p>
<h3><a class="anchor" href="#layer-23" id="layer-23" name="layer-23"><i class="anchor-icon"></i></a><a href="/schema?layer=23">Layer 23</a></h3>
<h4><a class="anchor" href="#scheme-changes" id="scheme-changes" name="scheme-changes"><i class="anchor-icon"></i></a>Scheme changes</h4>
<h5><a class="anchor" href="#new-methods" id="new-methods" name="new-methods"><i class="anchor-icon"></i></a>New Methods</h5>
<ul>
<li>Added <a href="/method/account.getPrivacy">account.getPrivacy</a> - Get privacy settings of current account</li>
<li>Added <a href="/method/account.setPrivacy">account.setPrivacy</a> - Change privacy settings of current account</li>
<li>Added <a href="/method/account.deleteAccount">account.deleteAccount</a> - Delete the user's account from the telegram servers. Can be used, for example, to delete the account of a user that provided the login code, but forgot the <a href="/api/srp">2FA password and no recovery method is configured</a>.</li>
<li>Added <a href="/method/account.getAccountTTL">account.getAccountTTL</a> - Get days to live of account</li>
<li>Added <a href="/method/account.setAccountTTL">account.setAccountTTL</a> - Set account self-destruction period</li>
<li>Added <a href="/method/invokeWithLayer">invokeWithLayer</a> - Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</a></li>
<li>Added <a href="/method/contacts.resolveUsername">contacts.resolveUsername</a> - Resolve a @username to get peer info</li>
<li>Added <a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a> - Verify a new phone number to associate to the current account</li>
<li>Added <a href="/method/account.changePhone">account.changePhone</a> - Change the phone number of the current account</li>
<li>Added <a href="/method/messages.getStickers">messages.getStickers</a> - Get stickers by emoji</li>
<li>Added <a href="/method/messages.getAllStickers">messages.getAllStickers</a> - Get all installed stickers</li>
<li>Added <a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a> - When client-side passcode lock feature is enabled, will not show message texts in incoming <a href="/api/push-updates">PUSH notifications</a>.</li>
</ul>
<h5><a class="anchor" href="#deleted-methods" id="deleted-methods" name="deleted-methods"><i class="anchor-icon"></i></a>Deleted Methods</h5>
<ul>
<li>Removed invokeWithLayer18</li>
</ul>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/userStatusRecently">userStatusRecently</a> - Online status: last seen recently</li>
<li>Added <a href="/constructor/userStatusLastWeek">userStatusLastWeek</a> - Online status: last seen last week</li>
<li>Added <a href="/constructor/userStatusLastMonth">userStatusLastMonth</a> - Online status: last seen last month</li>
<li>Added <a href="/constructor/updatePrivacy">updatePrivacy</a> - Privacy rules were changed</li>
<li>Added <a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a> - Whether we can see the exact last online timestamp of the user</li>
<li>Added <a href="/constructor/privacyKeyStatusTimestamp">privacyKeyStatusTimestamp</a> - Whether we can see the last online timestamp</li>
<li>Added <a href="/constructor/inputPrivacyValueAllowContacts">inputPrivacyValueAllowContacts</a> - Allow only contacts</li>
<li>Added <a href="/constructor/inputPrivacyValueAllowAll">inputPrivacyValueAllowAll</a> - Allow all users</li>
<li>Added <a href="/constructor/inputPrivacyValueAllowUsers">inputPrivacyValueAllowUsers</a> - Allow only certain users</li>
<li>Added <a href="/constructor/inputPrivacyValueDisallowContacts">inputPrivacyValueDisallowContacts</a> - Disallow only contacts</li>
<li>Added <a href="/constructor/inputPrivacyValueDisallowAll">inputPrivacyValueDisallowAll</a> - Disallow all</li>
<li>Added <a href="/constructor/inputPrivacyValueDisallowUsers">inputPrivacyValueDisallowUsers</a> - Disallow only certain users</li>
<li>Added <a href="/constructor/privacyValueAllowContacts">privacyValueAllowContacts</a> - Allow all contacts</li>
<li>Added <a href="/constructor/privacyValueAllowAll">privacyValueAllowAll</a> - Allow all users</li>
<li>Added <a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a> - Allow only certain users</li>
<li>Added <a href="/constructor/privacyValueDisallowContacts">privacyValueDisallowContacts</a> - Disallow only contacts</li>
<li>Added <a href="/constructor/privacyValueDisallowAll">privacyValueDisallowAll</a> - Disallow all users</li>
<li>Added <a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a> - Disallow only certain users</li>
<li>Added <a href="/constructor/account.privacyRules">account.privacyRules</a> - Privacy rules</li>
<li>Added <a href="/constructor/accountDaysTTL">accountDaysTTL</a> - Time to live in days of the current account</li>
<li>Added <a href="/constructor/account.sentChangePhoneCode">account.sentChangePhoneCode</a></li>
<li>Added <a href="/constructor/updateUserPhone">updateUserPhone</a> - A user's phone number was changed</li>
<li>Added <a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a> - Defines the width and height of an image uploaded as document</li>
<li>Added <a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a> - Defines an animated GIF</li>
<li>Added <a href="/constructor/documentAttributeSticker">documentAttributeSticker</a> - Defines a sticker</li>
<li>Added <a href="/constructor/documentAttributeVideo">documentAttributeVideo</a> - Defines a video</li>
<li>Added <a href="/constructor/documentAttributeAudio">documentAttributeAudio</a> - Represents an audio file</li>
<li>Added <a href="/constructor/documentAttributeFilename">documentAttributeFilename</a> - A simple document with a file name</li>
<li>Added <a href="/constructor/messages.stickersNotModified">messages.stickersNotModified</a> - No new stickers were found for the given query</li>
<li>Added <a href="/constructor/messages.stickers">messages.stickers</a> - Found stickers</li>
<li>Added <a href="/constructor/stickerPack">stickerPack</a> - A stickerpack is a group of stickers associated to the same emoji. </li>
<li>Added <a href="/constructor/messages.allStickersNotModified">messages.allStickersNotModified</a> - Info about all installed stickers hasn't changed</li>
<li>Added <a href="/constructor/messages.allStickers">messages.allStickers</a> - Info about all installed stickers</li>
<li>Added <a href="/constructor/disabledFeature">disabledFeature</a></li>
</ul>
<h5><a class="anchor" href="#changed-constructors" id="changed-constructors" name="changed-constructors"><i class="anchor-icon"></i></a>Changed Constructors</h5>
<ul>
<li>Added <strong>status</strong> parameter, removed <strong>expires</strong> parameter in <a href="/constructor/contactStatus">contactStatus</a></li>
<li>Added <strong>expires</strong>, <strong>chat_big_size</strong>, <strong>disabled_features</strong> parameters in <a href="/constructor/config">config</a></li>
<li>Added <strong>attributes</strong> parameter, removed <strong>file_name</strong> parameter in <a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a></li>
<li>Added <strong>attributes</strong> parameter, removed <strong>file_name</strong> parameter in <a href="/constructor/inputMediaUploadedThumbDocument">inputMediaUploadedThumbDocument</a></li>
<li>Added <strong>attributes</strong> parameter, removed <strong>user_id</strong>, <strong>file_name</strong> parameters in <a href="/constructor/document">document</a></li>
</ul>
<h4><a class="anchor" href="#scheme" id="scheme" name="scheme"><i class="anchor-icon"></i></a>Scheme</h4>
<div><pre><code><a href="/constructor/contactStatus">contactStatus</a>#d3680c61 user_id:<a href="/type/int">int</a> status:<a href="/type/UserStatus">UserStatus</a> = <a href="/type/ContactStatus">ContactStatus</a>;
<a href="/constructor/config">config</a>#7dae33e0 date:<a href="/type/int">int</a> expires:<a href="/type/int">int</a> test_mode:<a href="/type/Bool">Bool</a> this_dc:<a href="/type/int">int</a> dc_options:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DcOption">DcOption</a>&gt; chat_big_size:<a href="/type/int">int</a> chat_size_max:<a href="/type/int">int</a> broadcast_size_max:<a href="/type/int">int</a> disabled_features:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DisabledFeature">DisabledFeature</a>&gt; = <a href="/type/Config">Config</a>;<br>
<a href="/constructor/inputMediaUploadedDocument">inputMediaUploadedDocument</a>#ffe76b78 file:<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;
<a href="/constructor/inputMediaUploadedThumbDocument">inputMediaUploadedThumbDocument</a>#41481486 file:<a href="/type/InputFile">InputFile</a> thumb:<a href="/type/InputFile">InputFile</a> mime_type:<a href="/type/string">string</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/InputMedia">InputMedia</a>;<br>
<a href="/constructor/document">document</a>#f9a39f4f id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumb:<a href="/type/PhotoSize">PhotoSize</a> dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/Document">Document</a>;<br>
<a href="/constructor/userStatusRecently">userStatusRecently</a>#e26f42f1 = <a href="/type/UserStatus">UserStatus</a>;
<a href="/constructor/userStatusLastWeek">userStatusLastWeek</a>#07bf09fc = <a href="/type/UserStatus">UserStatus</a>;
<a href="/constructor/userStatusLastMonth">userStatusLastMonth</a>#77ebc742 = <a href="/type/UserStatus">UserStatus</a>;
<a href="/constructor/updatePrivacy">updatePrivacy</a>#ee3b272a key:<a href="/type/PrivacyKey">PrivacyKey</a> rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PrivacyRule">PrivacyRule</a>&gt; = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/inputPrivacyKeyStatusTimestamp">inputPrivacyKeyStatusTimestamp</a>#4f96cb18 = <a href="/type/InputPrivacyKey">InputPrivacyKey</a>;<br>
<a href="/constructor/privacyKeyStatusTimestamp">privacyKeyStatusTimestamp</a>#bc2eab30 = <a href="/type/PrivacyKey">PrivacyKey</a>;<br>
<a href="/constructor/inputPrivacyValueAllowContacts">inputPrivacyValueAllowContacts</a>#0d09e07b = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
<a href="/constructor/inputPrivacyValueAllowAll">inputPrivacyValueAllowAll</a>#184b35ce = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
<a href="/constructor/inputPrivacyValueAllowUsers">inputPrivacyValueAllowUsers</a>#131cc67f users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputUser">InputUser</a>&gt; = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
<a href="/constructor/inputPrivacyValueDisallowContacts">inputPrivacyValueDisallowContacts</a>#0ba52007 = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
<a href="/constructor/inputPrivacyValueDisallowAll">inputPrivacyValueDisallowAll</a>#d66b66c9 = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;
<a href="/constructor/inputPrivacyValueDisallowUsers">inputPrivacyValueDisallowUsers</a>#90110467 users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputUser">InputUser</a>&gt; = <a href="/type/InputPrivacyRule">InputPrivacyRule</a>;<br>
<a href="/constructor/privacyValueAllowContacts">privacyValueAllowContacts</a>#fffe1bac = <a href="/type/PrivacyRule">PrivacyRule</a>;
<a href="/constructor/privacyValueAllowAll">privacyValueAllowAll</a>#65427b82 = <a href="/type/PrivacyRule">PrivacyRule</a>;
<a href="/constructor/privacyValueAllowUsers">privacyValueAllowUsers</a>#4d5bbe0c users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PrivacyRule">PrivacyRule</a>;
<a href="/constructor/privacyValueDisallowContacts">privacyValueDisallowContacts</a>#f888fa1a = <a href="/type/PrivacyRule">PrivacyRule</a>;
<a href="/constructor/privacyValueDisallowAll">privacyValueDisallowAll</a>#8b73e763 = <a href="/type/PrivacyRule">PrivacyRule</a>;
<a href="/constructor/privacyValueDisallowUsers">privacyValueDisallowUsers</a>#0c7f49b7 users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/int">int</a>&gt; = <a href="/type/PrivacyRule">PrivacyRule</a>;<br>
<a href="/constructor/account.privacyRules">account.privacyRules</a>#554abb6f rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/PrivacyRule">PrivacyRule</a>&gt; users:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/User">User</a>&gt; = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
<a href="/constructor/accountDaysTTL">accountDaysTTL</a>#b8d0afdf days:<a href="/type/int">int</a> = <a href="/type/AccountDaysTTL">AccountDaysTTL</a>;
<a href="/constructor/account.sentChangePhoneCode">account.sentChangePhoneCode</a>#a4f58c4c phone_code_hash:<a href="/type/string">string</a> send_call_timeout:<a href="/type/int">int</a> = <a href="/type/account.SentChangePhoneCode">account.SentChangePhoneCode</a>;<br>
<a href="/constructor/updateUserPhone">updateUserPhone</a>#12b9417b user_id:<a href="/type/int">int</a> phone:<a href="/type/string">string</a> = <a href="/type/Update">Update</a>;<br>
<a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeSticker">documentAttributeSticker</a>#fb0a5727 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeVideo">documentAttributeVideo</a>#5910cccb duration:<a href="/type/int">int</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeAudio">documentAttributeAudio</a>#051448e5 duration:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeFilename">documentAttributeFilename</a>#15590068 file_name:<a href="/type/string">string</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;<br>
<a href="/constructor/messages.stickersNotModified">messages.stickersNotModified</a>#f1749a22 = <a href="/type/messages.Stickers">messages.Stickers</a>;
<a href="/constructor/messages.stickers">messages.stickers</a>#8a8ecd32 hash:<a href="/type/string">string</a> stickers:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; = <a href="/type/messages.Stickers">messages.Stickers</a>;<br>
<a href="/constructor/stickerPack">stickerPack</a>#12b299d4 emoticon:<a href="/type/string">string</a> documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/long">long</a>&gt; = <a href="/type/StickerPack">StickerPack</a>;<br>
<a href="/constructor/messages.allStickersNotModified">messages.allStickersNotModified</a>#e86602c3 = <a href="/type/messages.AllStickers">messages.AllStickers</a>;
<a href="/constructor/messages.allStickers">messages.allStickers</a>#dcef3102 hash:<a href="/type/string">string</a> packs:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/StickerPack">StickerPack</a>&gt; documents:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/Document">Document</a>&gt; = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
<a href="/constructor/disabledFeature">disabledFeature</a>#ae636f24 feature:<a href="/type/string">string</a> description:<a href="/type/string">string</a> = <a href="/type/DisabledFeature">DisabledFeature</a>;<br>
---functions---<br>
<a href="/method/account.getPrivacy">account.getPrivacy</a>#dadbc950 key:<a href="/type/InputPrivacyKey">InputPrivacyKey</a> = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
<a href="/method/account.setPrivacy">account.setPrivacy</a>#c9f81ce8 key:<a href="/type/InputPrivacyKey">InputPrivacyKey</a> rules:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/InputPrivacyRule">InputPrivacyRule</a>&gt; = <a href="/type/account.PrivacyRules">account.PrivacyRules</a>;
<a href="/method/account.deleteAccount">account.deleteAccount</a>#418d4e0b reason:<a href="/type/string">string</a> = <a href="/type/Bool">Bool</a>;
<a href="/method/account.getAccountTTL">account.getAccountTTL</a>#08fc711d = <a href="/type/AccountDaysTTL">AccountDaysTTL</a>;
<a href="/method/account.setAccountTTL">account.setAccountTTL</a>#2442485e ttl:<a href="/type/AccountDaysTTL">AccountDaysTTL</a> = <a href="/type/Bool">Bool</a>;<br>
<a href="/method/invokeWithLayer">invokeWithLayer</a>#da9b0d0d {X:Type} layer:<a href="/type/int">int</a> query:!X = X;<br>
<a href="/method/contacts.resolveUsername">contacts.resolveUsername</a>#0bf0131c username:<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
<a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a>#a407a8f4 phone_number:<a href="/type/string">string</a> = <a href="/type/account.SentChangePhoneCode">account.SentChangePhoneCode</a>;
<a href="/method/account.changePhone">account.changePhone</a>#70c32edb phone_number:<a href="/type/string">string</a> phone_code_hash:<a href="/type/string">string</a> phone_code:<a href="/type/string">string</a> = <a href="/type/User">User</a>;<br>
<a href="/method/messages.getStickers">messages.getStickers</a>#ae22e045 emoticon:<a href="/type/string">string</a> hash:<a href="/type/string">string</a> = <a href="/type/messages.Stickers">messages.Stickers</a>;
<a href="/method/messages.getAllStickers">messages.getAllStickers</a>#aa3bc868 hash:<a href="/type/string">string</a> = <a href="/type/messages.AllStickers">messages.AllStickers</a>;<br>
<a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a>#38df3532 period:<a href="/type/int">int</a> = <a href="/type/Bool">Bool</a>;<br></code></pre></div>
<h4><a class="anchor" href="#end-to-end-scheme-changes" id="end-to-end-scheme-changes" name="end-to-end-scheme-changes"><i class="anchor-icon"></i></a>End-to-end scheme changes</h4>
<h5><a class="anchor" href="#new-constructors" id="new-constructors" name="new-constructors"><i class="anchor-icon"></i></a>New Constructors</h5>
<ul>
<li>Added <a href="/constructor/decryptedMessageActionCommitKey">decryptedMessageActionCommitKey</a> - Commit new key, see <a href="/api/end-to-end/pfs">rekeying process</a></li>
<li>Added <a href="/constructor/decryptedMessageActionNoop">decryptedMessageActionNoop</a> - NOOP action</li>
<li>Added <a href="/constructor/decryptedMessageActionAbortKey">decryptedMessageActionAbortKey</a> - Abort rekeying</li>
<li>Added <a href="/constructor/decryptedMessageActionAcceptKey">decryptedMessageActionAcceptKey</a> - Accept new key</li>
<li>Added <a href="/constructor/decryptedMessageActionRequestKey">decryptedMessageActionRequestKey</a> - Request rekeying, see <a href="/api/end-to-end/pfs">rekeying process</a></li>
<li>Added <a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a> - Defines the width and height of an image uploaded as document</li>
<li>Added <a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a> - Defines an animated GIF</li>
<li>Added <a href="/constructor/documentAttributeSticker">documentAttributeSticker</a> - Defines a sticker</li>
<li>Added <a href="/constructor/documentAttributeVideo">documentAttributeVideo</a> - Defines a video</li>
<li>Added <a href="/constructor/documentAttributeAudio">documentAttributeAudio</a> - Represents an audio file</li>
<li>Added <a href="/constructor/documentAttributeFilename">documentAttributeFilename</a> - A simple document with a file name</li>
<li>Added <a href="/constructor/photoSizeEmpty">photoSizeEmpty</a> - Empty constructor. Image with this thumbnail is unavailable.</li>
<li>Added <a href="/constructor/photoSize">photoSize</a> - Image description.</li>
<li>Added <a href="/constructor/photoCachedSize">photoCachedSize</a> - Description of an image and its content.</li>
<li>Added <a href="/constructor/fileLocationUnavailable">fileLocationUnavailable</a></li>
<li>Added <a href="/constructor/fileLocation">fileLocation</a></li>
<li>Added <a href="/constructor/decryptedMessageMediaExternalDocument">decryptedMessageMediaExternalDocument</a> - Non-e2e documented forwarded from non-secret chat</li>
</ul>
<h4><a class="anchor" href="#end-to-end-scheme" id="end-to-end-scheme" name="end-to-end-scheme"><i class="anchor-icon"></i></a>End-to-end scheme</h4>
<div><pre><code>===20===<br>
<a href="/constructor/decryptedMessageActionCommitKey">decryptedMessageActionCommitKey</a>#ec2e0b9b exchange_id:<a href="/type/long">long</a> key_fingerprint:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
<a href="/constructor/decryptedMessageActionNoop">decryptedMessageActionNoop</a>#a82fdd63 = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
<a href="/constructor/decryptedMessageActionAbortKey">decryptedMessageActionAbortKey</a>#dd05ec6b exchange_id:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
<a href="/constructor/decryptedMessageActionAcceptKey">decryptedMessageActionAcceptKey</a>#6fe1735b exchange_id:<a href="/type/long">long</a> g_b:<a href="/type/bytes">bytes</a> key_fingerprint:<a href="/type/long">long</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;
<a href="/constructor/decryptedMessageActionRequestKey">decryptedMessageActionRequestKey</a>#f3c9611b exchange_id:<a href="/type/long">long</a> g_a:<a href="/type/bytes">bytes</a> = <a href="/type/DecryptedMessageAction">DecryptedMessageAction</a>;<br>
===23===
<a href="/constructor/documentAttributeImageSize">documentAttributeImageSize</a>#6c37c15c w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeAnimated">documentAttributeAnimated</a>#11b58939 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeSticker">documentAttributeSticker</a>#fb0a5727 = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeVideo">documentAttributeVideo</a>#5910cccb duration:<a href="/type/int">int</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeAudio">documentAttributeAudio</a>#051448e5 duration:<a href="/type/int">int</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;
<a href="/constructor/documentAttributeFilename">documentAttributeFilename</a>#15590068 file_name:<a href="/type/string">string</a> = <a href="/type/DocumentAttribute">DocumentAttribute</a>;<br>
<a href="/constructor/photoSizeEmpty">photoSizeEmpty</a>#0e17e23c type:<a href="/type/string">string</a> = <a href="/type/PhotoSize">PhotoSize</a>;
<a href="/constructor/photoSize">photoSize</a>#77bfb61b type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> size:<a href="/type/int">int</a> = <a href="/type/PhotoSize">PhotoSize</a>;
<a href="/constructor/photoCachedSize">photoCachedSize</a>#e9a734fa type:<a href="/type/string">string</a> location:<a href="/type/FileLocation">FileLocation</a> w:<a href="/type/int">int</a> h:<a href="/type/int">int</a> bytes:<a href="/type/bytes">bytes</a> = <a href="/type/PhotoSize">PhotoSize</a>;<br>
<a href="/constructor/fileLocationUnavailable">fileLocationUnavailable</a>#7c596b46 volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/FileLocation">FileLocation</a>;
<a href="/constructor/fileLocation">fileLocation</a>#53d69076 dc_id:<a href="/type/int">int</a> volume_id:<a href="/type/long">long</a> local_id:<a href="/type/int">int</a> secret:<a href="/type/long">long</a> = <a href="/type/FileLocation">FileLocation</a>;<br>
<a href="/constructor/decryptedMessageMediaExternalDocument">decryptedMessageMediaExternalDocument</a>#fa95b0dd id:<a href="/type/long">long</a> access_hash:<a href="/type/long">long</a> date:<a href="/type/int">int</a> mime_type:<a href="/type/string">string</a> size:<a href="/type/int">int</a> thumb:<a href="/type/PhotoSize">PhotoSize</a> dc_id:<a href="/type/int">int</a> attributes:<a href="/type/Vector%20t">Vector</a>&lt;<a href="/type/DocumentAttribute">DocumentAttribute</a>&gt; = <a href="/type/DecryptedMessageMedia">DecryptedMessageMedia</a>;<br></code></pre></div>
<h3><a class="anchor" href="#layer-18" id="layer-18" name="layer-18"><i class="anchor-icon"></i></a><a href="/schema?layer=18">Layer 18</a></h3>
<p>Added username support and a new type of updates for service messages.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added methods <a href="/method/account.checkUsername">account.checkUsername</a> and <a href="/method/account.updateUsername">account.updateUsername</a> for setting up a username, as well as the method <a href="/method/contacts.search">contacts.search</a> that allows searching for publicly available users by username.</li>
<li><strong>username</strong> field added to constructors of the type <a href="/type/User">User</a> and to the <a href="/constructor/updateUserName">updateUserName</a> constructor.</li>
<li>Added new update constructor <a href="/constructor/updateServiceNotification">updateServiceNotification</a> for receiving service messages.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/contactFound'>contactFound</a> user_id:<a href='/type/int'>int</a> = <a href='/type/ContactFound'>ContactFound</a>;
<a href='/constructor/contacts.found'>contacts.found</a> results:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/ContactFound'>ContactFound</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/contacts.Found'>contacts.Found</a>;
<a href='/constructor/updateUserName'>updateUserName</a> user_id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/userSelf'>userSelf</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> inactive:<a href='/type/Bool'>Bool</a> = <a href='/type/User'>User</a>;
<a href='/constructor/userContact'>userContact</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
<a href='/constructor/userRequest'>userRequest</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> phone:<a href='/type/string'>string</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
<a href='/constructor/userForeign'>userForeign</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> access_hash:<a href='/type/long'>long</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> status:<a href='/type/UserStatus'>UserStatus</a> = <a href='/type/User'>User</a>;
<a href='/constructor/userDeleted'>userDeleted</a> id:<a href='/type/int'>int</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> username:<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
<a href='/constructor/updateServiceNotification'>updateServiceNotification</a> type:<a href='/type/string'>string</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> popup:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
---functions---
<a href='/method/account.checkUsername'>account.checkUsername</a> username:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/account.updateUsername'>account.updateUsername</a> username:<a href='/type/string'>string</a> = <a href='/type/User'>User</a>;
<a href='/method/contacts.search'>contacts.search</a> q:<a href='/type/string'>string</a> limit:<a href='/type/int'>int</a> = <a href='/type/contacts.Found'>contacts.Found</a>;
invokeWithLayer18#1c900537 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-17" id="layer-17" name="layer-17"><i class="anchor-icon"></i></a><a href="/schema?layer=17">Layer 17</a></h3>
<p>Added new events for recording and uploading media, selecting contacts and locations to share.</p>
<p>Read status for multimedia (messages containing <a href="/constructor/messageMediaVideo">messageMediaVideo</a> or <a href="/constructor/messageMediaAudio">messageMediaAudio</a>) was moved to the new method <a href="/method/messages.readMessageContents">messages.readMessageContents</a>. In case <strong>read_contents</strong> is not passed or <a href="/method/messages.readHistory">messages.readHistory</a> is used with an older layer, messages will be marked as read in the traditional way.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added new type <a href="/type/SendMessageAction">SendMessageAction</a> for user actions aside from typing (recording, uploading media, etc.). It is used in updates <a href="/constructor/updateUserTyping">updateUserTyping</a>, <a href="/constructor/updateChatUserTyping">updateChatUserTyping</a>, in the method <a href="/method/messages.setTyping">messages.setTyping</a>, and in the new encrypted service message <a href="/constructor/decryptedMessageActionTyping">decryptedMessageActionTyping</a>.</li>
<li><strong>unread</strong> and <strong>out</strong> parameters in the constructors of the <a href="/type/Message">Message</a> type were joined to form the new <strong>flags</strong> parameter, containing a flag mask.</li>
<li>Added new method <a href="/method/messages.readMessageContents">messages.readMessageContents</a>, to be called once the user listened to a voice message or watched a video.</li>
<li>Added parameters for end-to-end encrypted messages <strong>in_seq_no</strong>, <strong>out_seq_no</strong> and <strong>ttl</strong>.</li>
<li>Added <strong>mime_type</strong> field to secret chat audio and video constructors.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/sendMessageTypingAction'>sendMessageTypingAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageCancelAction'>sendMessageCancelAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageRecordVideoAction'>sendMessageRecordVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadVideoAction'>sendMessageUploadVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageRecordAudioAction'>sendMessageRecordAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadAudioAction'>sendMessageUploadAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadPhotoAction'>sendMessageUploadPhotoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadDocumentAction'>sendMessageUploadDocumentAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageGeoLocationAction'>sendMessageGeoLocationAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageChooseContactAction'>sendMessageChooseContactAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/updateUserTyping'>updateUserTyping</a> user_id:<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateChatUserTyping'>updateChatUserTyping</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Update'>Update</a>;
// Message object
<a href='/constructor/message'>message</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/Message'>Message</a>;
<a href='/constructor/messageForwarded'>messageForwarded</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> fwd_from_id:<a href='/type/int'>int</a> fwd_date:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/Message'>Message</a>;
<a href='/constructor/messageService'>messageService</a> flags:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> to_id:<a href='/type/Peer'>Peer</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/Message'>Message</a>;
---functions---
<a href='/method/messages.setTyping'>messages.setTyping</a> peer:<a href='/type/InputPeer'>InputPeer</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/messages.readHistory'>messages.readHistory</a> peer:<a href='/type/InputPeer'>InputPeer</a> max_id:<a href='/type/int'>int</a> offset:<a href='/type/int'>int</a> read_contents:<a href='/type/Bool'>Bool</a> = <a href='/type/messages.AffectedHistory'>messages.AffectedHistory</a>;
<a href='/method/messages.readMessageContents'>messages.readMessageContents</a> id:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt; = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/int'>int</a>&gt;;
invokeWithLayer17#50858a19 {X:Type} query:!X = X;</code></pre>
<h4><a class="anchor" href="#end-to-end-schema" id="end-to-end-schema" name="end-to-end-schema"><i class="anchor-icon"></i></a>End-to-end schema</h4>
<pre><code>===17===
// Layer
<a href='/constructor/decryptedMessageLayer'>decryptedMessageLayer</a> random_bytes:<a href='/type/bytes'>bytes</a> layer:<a href='/type/int'>int</a> in_seq_no:<a href='/type/int'>int</a> out_seq_no:<a href='/type/int'>int</a> message:<a href='/type/DecryptedMessage'>DecryptedMessage</a> = <a href='/type/DecryptedMessageLayer'>DecryptedMessageLayer</a>;
<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaVideo'>decryptedMessageMediaVideo</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/sendMessageTypingAction'>sendMessageTypingAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageCancelAction'>sendMessageCancelAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageRecordVideoAction'>sendMessageRecordVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadVideoAction'>sendMessageUploadVideoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageRecordAudioAction'>sendMessageRecordAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadAudioAction'>sendMessageUploadAudioAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadPhotoAction'>sendMessageUploadPhotoAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageUploadDocumentAction'>sendMessageUploadDocumentAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageGeoLocationAction'>sendMessageGeoLocationAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/sendMessageChooseContactAction'>sendMessageChooseContactAction</a> = <a href='/type/SendMessageAction'>SendMessageAction</a>;
<a href='/constructor/decryptedMessageActionNotifyLayer'>decryptedMessageActionNotifyLayer</a> layer:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessageActionTyping'>decryptedMessageActionTyping</a> action:<a href='/type/SendMessageAction'>SendMessageAction</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessage'>decryptedMessage</a> random_id:<a href='/type/long'>long</a> ttl:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
<a href='/constructor/decryptedMessageService'>decryptedMessageService</a> random_id:<a href='/type/long'>long</a> action:<a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;</code></pre>
<h3><a class="anchor" href="#layer-16" id="layer-16" name="layer-16"><i class="anchor-icon"></i></a><a href="/schema?layer=16">Layer 16</a></h3>
<p>Added new <strong>sms_type</strong> = <code>5</code> in the method <a href="/method/auth.sendCode">auth.sendCode</a>.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added new constructor: <a href="/constructor/auth.sentAppCode">auth.sentAppCode</a> to determine whether a code was sent via Telegram.</li>
<li>Added new method <a href="/method/auth.sendSms">auth.sendSms</a> to force re-sending a code via SMS.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/auth.sentAppCode'>auth.sentAppCode</a> phone_registered:<a href='/type/Bool'>Bool</a> phone_code_hash:<a href='/type/string'>string</a> send_call_timeout:<a href='/type/int'>int</a> is_password:<a href='/type/Bool'>Bool</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
---functions---
<a href='/method/auth.sendSms'>auth.sendSms</a> phone_number:<a href='/type/string'>string</a> phone_code_hash:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
invokeWithLayer16#cf5f0987 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-15" id="layer-15" name="layer-15"><i class="anchor-icon"></i></a><a href="/schema?layer=15">Layer 15</a></h3>
<p>Modified behavior of the <strong>offset</strong> parameter in the method <a href="/method/messages.getHistory">messages.getHistory</a>. From now on it's possible to combine message_id offset and a numeric offset.</p>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code>invokeWithLayer15#b4418b64 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-14" id="layer-14" name="layer-14"><i class="anchor-icon"></i></a><a href="/schema?layer=14">Layer 14</a></h3>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added new update constructors: <a href="/constructor/updateUserBlocked">updateUserBlocked</a> and <a href="/constructor/updateNotifySettings">updateNotifySettings</a> to sync notification settings and blacklists between devices.</li>
<li>Added <strong>notify_settings</strong> field to the <a href="/constructor/dialog">dialog</a> constructor.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/notifyPeer'>notifyPeer</a> peer:<a href='/type/Peer'>Peer</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
<a href='/constructor/notifyUsers'>notifyUsers</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
<a href='/constructor/notifyChats'>notifyChats</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
<a href='/constructor/notifyAll'>notifyAll</a> = <a href='/type/NotifyPeer'>NotifyPeer</a>;
<a href='/constructor/dialog'>dialog</a> peer:<a href='/type/Peer'>Peer</a> top_message:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> = <a href='/type/Dialog'>Dialog</a>;
<a href='/constructor/updateUserBlocked'>updateUserBlocked</a> user_id:<a href='/type/int'>int</a> blocked:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateNotifySettings'>updateNotifySettings</a> peer:<a href='/type/NotifyPeer'>NotifyPeer</a> notify_settings:<a href='/type/PeerNotifySettings'>PeerNotifySettings</a> = <a href='/type/Update'>Update</a>;
---functions---
invokeWithLayer14#2b9b08fa {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-13" id="layer-13" name="layer-13"><i class="anchor-icon"></i></a><a href="/schema?layer=13">Layer 13</a></h3>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added <strong>mime_type</strong> field to all audio and video constructors.</li>
<li>Added new <a href="/type/DecryptedMessageAction">service message types</a> in secret chats: messages read, messages deleted, screenshot taken, chat history cleared and API layer used by client notifications.</li>
<li>Added <strong>retry_contacts</strong> field to the <a href="/constructor/contacts.importedContacts">contacts.importedContacts</a> constructor: ids of contacts, that will have to be imported at a later date.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code>contacts.importedContacts imported:Vector&lt;ImportedContact&gt; retry_contacts:Vector&lt;long&gt; users:Vector&lt;User&gt; = contacts.Im portedContacts;
<a href='/constructor/inputMediaUploadedAudio'>inputMediaUploadedAudio</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaUploadedVideo'>inputMediaUploadedVideo</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaUploadedThumbVideo'>inputMediaUploadedThumbVideo</a> file:<a href='/type/InputFile'>InputFile</a> thumb:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/audio'>audio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Audio'>Audio</a>;
<a href='/constructor/video'>video</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> caption:<a href='/type/string'>string</a> duration:<a href='/type/int'>int</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumb:<a href='/type/PhotoSize'>PhotoSize</a> dc_id:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> = <a href='/type/Video'>Video</a>;
---functions---
invokeWithLayer13#427c8ea2 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-12" id="layer-12" name="layer-12"><i class="anchor-icon"></i></a><a href="/schema?layer=12">Layer 12</a></h3>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added method <a href="/method/help.getSupport">help.getSupport</a> for obtaining support user id.</li>
<li>Added <strong>broadcast_size_max</strong> field to the constructor <a href="/constructor/config">config</a>, contaning maximum number of broadcast recipients.</li>
<li>Added <strong>send_call_timeout</strong> field to the constructor <a href="/constructor/auth.sentCode">auth.sentCode</a>, containing required delay before calling <a href="/method/auth.sendCall">auth.sendCall</a>. New field <strong>is_password</strong> in the same constructor.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/auth.sentCode'>auth.sentCode</a> phone_registered:<a href='/type/Bool'>Bool</a> phone_code_hash:<a href='/type/string'>string</a> send_call_timeout:<a href='/type/int'>int</a> is_password:<a href='/type/Bool'>Bool</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
<a href='/constructor/config'>config</a> date:<a href='/type/int'>int</a> test_mode:<a href='/type/Bool'>Bool</a> this_dc:<a href='/type/int'>int</a> dc_options:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/DcOption'>DcOption</a>&gt; chat_size_max:<a href='/type/int'>int</a> broadcast_size_max:<a href='/type/int'>int</a> = <a href='/type/Config'>Config</a>;
<a href='/constructor/help.support'>help.support</a> phone_number:<a href='/type/string'>string</a> user:<a href='/type/User'>User</a> = <a href='/type/help.Support'>help.Support</a>;
---functions---
<a href='/method/help.getSupport'>help.getSupport</a> = <a href='/type/help.Support'>help.Support</a>;
invokeWithLayer12#dda60d3c {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-11" id="layer-11" name="layer-11"><i class="anchor-icon"></i></a><a href="/schema?layer=11">Layer 11</a></h3>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>The <strong>nonce</strong> parameter was removed from secret chat constructors. For purposes of backward compatibility, in all previous layers this field will contain empty bytes.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/encryptedChatRequested'>encryptedChatRequested</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/encryptedChat'>encryptedChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a_or_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
---functions---
invokeWithLayer11#a6b88fdf {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-10" id="layer-10" name="layer-10"><i class="anchor-icon"></i></a><a href="/schema?layer=10">Layer 10</a></h3>
<p>Added brief constructors for editing group members. Added new attachment types for ordinary and secret chats.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added new update contructors: <a href="/constructor/updateChatParticipantAdd">updateChatParticipantAdd</a> and <a href="/constructor/updateChatParticipantDelete">updateChatParticipantDelete</a>.</li>
<li>Added new media types: <a href="/type/Document">Document</a>, <a href="/type/Audio">Audio</a>, along with rescpective attachment constructors.</li>
<li>If the client doesn't support Layer 10, it will receive <a href="/constructor/messageMediaUnsupported">messageMediaUnsupported</a> constructors instead of the <a href="/constructor/messageMediaDocument">messageMediaDocument</a> and <a href="/constructor/messageMediaAudio">messageMediaAudio</a> constructors.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/updateChatParticipantAdd'>updateChatParticipantAdd</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> inviter_id:<a href='/type/int'>int</a> version:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateChatParticipantDelete'>updateChatParticipantDelete</a> chat_id:<a href='/type/int'>int</a> user_id:<a href='/type/int'>int</a> version:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/inputMediaUploadedAudio'>inputMediaUploadedAudio</a> file:<a href='/type/InputFile'>InputFile</a> duration:<a href='/type/int'>int</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaAudio'>inputMediaAudio</a> id:<a href='/type/InputAudio'>InputAudio</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaUploadedDocument'>inputMediaUploadedDocument</a> file:<a href='/type/InputFile'>InputFile</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaUploadedThumbDocument'>inputMediaUploadedThumbDocument</a> file:<a href='/type/InputFile'>InputFile</a> thumb:<a href='/type/InputFile'>InputFile</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/inputMediaDocument'>inputMediaDocument</a> id:<a href='/type/InputDocument'>InputDocument</a> = <a href='/type/InputMedia'>InputMedia</a>;
<a href='/constructor/messageMediaDocument'>messageMediaDocument</a> document:<a href='/type/Document'>Document</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
<a href='/constructor/messageMediaAudio'>messageMediaAudio</a> audio:<a href='/type/Audio'>Audio</a> = <a href='/type/MessageMedia'>MessageMedia</a>;
// Input Audio
<a href='/constructor/inputAudioEmpty'>inputAudioEmpty</a> = <a href='/type/InputAudio'>InputAudio</a>;
<a href='/constructor/inputAudio'>inputAudio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputAudio'>InputAudio</a>;
// Input Document
<a href='/constructor/inputDocumentEmpty'>inputDocumentEmpty</a> = <a href='/type/InputDocument'>InputDocument</a>;
<a href='/constructor/inputDocument'>inputDocument</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputDocument'>InputDocument</a>;
// Input location
<a href='/constructor/inputAudioFileLocation'>inputAudioFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
<a href='/constructor/inputDocumentFileLocation'>inputDocumentFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
<a href='/constructor/decryptedMessageMediaDocument'>decryptedMessageMediaDocument</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
// Audio object
<a href='/constructor/audioEmpty'>audioEmpty</a> id:<a href='/type/long'>long</a> = <a href='/type/Audio'>Audio</a>;
<a href='/constructor/audio'>audio</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Audio'>Audio</a>;
// Video object
<a href='/constructor/documentEmpty'>documentEmpty</a> id:<a href='/type/long'>long</a> = <a href='/type/Document'>Document</a>;
<a href='/constructor/document'>document</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> thumb:<a href='/type/PhotoSize'>PhotoSize</a> dc_id:<a href='/type/int'>int</a> = <a href='/type/Document'>Document</a>;
---functions---
invokeWithLayer10#39620c41 {X:Type} query:!X = X;
PUSH-notifications
Added MESSAGE_DOC, MESSAGE_AUDIO notifications — a message with document or audio received
Added CHAT_MESSAGE_DOC, CHAT_MESSAGE_AUDIO notifications — a message with document or audio received in a group</code></pre>
<h3><a class="anchor" href="#layer-9" id="layer-9" name="layer-9"><i class="anchor-icon"></i></a><a href="/schema?layer=9">Layer 9</a></h3>
<p>Increased efficiency when loading big files. Added important checks for certain methods.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added new <a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a> method, constructors <a href="/constructor/inputFileBig">inputFileBig</a>, <a href="/constructor/inputEncryptedFileBigUploaded">inputEncryptedFileBigUploaded</a> to optimize saving parts of big files. See the updated article on <a href="/api/files#uploading-files">Uploading files</a> for details.</li>
<li>Added a check whether the <a href="/method/initConnection">initConnection</a> method was called with all required parameters before making other API calls. See the updated article on <a href="/api/invoking#saving-client-info">Calling methods</a> for details.</li>
<li>Added availability check for <strong>lang_code</strong> parameters when calling methods <a href="/method/auth.sendCode">auth.sendCode</a>, <a href="/method/account.registerDevice">account.registerDevice</a></li>
<li>Added availability check for <strong>random_id</strong> parameters in all message sending methods: <a href="/method/messages.sendMessage">messages.sendMessage</a>, <a href="/method/messages.sendMedia">messages.sendMedia</a>, <a href="/method/messages.forwardMessage">messages.forwardMessage</a></li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/inputFileBig'>inputFileBig</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> name:<a href='/type/string'>string</a> = <a href='/type/InputFile'>InputFile</a>;
<a href='/constructor/inputEncryptedFileBigUploaded'>inputEncryptedFileBigUploaded</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
---functions---
<a href='/method/upload.saveBigFilePart'>upload.saveBigFilePart</a> file_id:<a href='/type/long'>long</a> file_part:<a href='/type/int'>int</a> file_total_parts:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/Bool'>Bool</a>;
initConnection#69796de9 {X:Type} api_id:int device_model:string system_version:string app_version:string lang_code:string query:!X = X;
invokeWithLayer9#76715a63 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-8" id="layer-8" name="layer-8"><i class="anchor-icon"></i></a><a href="/schema?layer=8">Layer 8</a></h3>
<p>Added support for end-to-end encryption in secret chats. <a href="/api/end-to-end">More...</a></p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added many constructors and methods for secret chats.</li>
<li>Added <strong>qts</strong> field in constructor <a href="/constructor/updates.state">updates.state</a>.</li>
<li>Added 4 new constructors of <a href="/type/Update">Update</a> type</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/updateNewEncryptedMessage'>updateNewEncryptedMessage</a> message:<a href='/type/EncryptedMessage'>EncryptedMessage</a> qts:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateEncryptedChatTyping'>updateEncryptedChatTyping</a> chat_id:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateEncryption'>updateEncryption</a> chat:<a href='/type/EncryptedChat'>EncryptedChat</a> date:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updateEncryptedMessagesRead'>updateEncryptedMessagesRead</a> chat_id:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> = <a href='/type/Update'>Update</a>;
// EncryptedChat object
<a href='/constructor/encryptedChatEmpty'>encryptedChatEmpty</a> id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/encryptedChatWaiting'>encryptedChatWaiting</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/encryptedChatRequested'>encryptedChatRequested</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/encryptedChat'>encryptedChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> date:<a href='/type/int'>int</a> admin_id:<a href='/type/int'>int</a> participant_id:<a href='/type/int'>int</a> g_a_or_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/encryptedChatDiscarded'>encryptedChatDiscarded</a> id:<a href='/type/int'>int</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/constructor/inputEncryptedChat'>inputEncryptedChat</a> chat_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputEncryptedChat'>InputEncryptedChat</a>;
// EncryptedFile object
<a href='/constructor/encryptedFileEmpty'>encryptedFileEmpty</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>;
<a href='/constructor/encryptedFile'>encryptedFile</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> size:<a href='/type/int'>int</a> dc_id:<a href='/type/int'>int</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/EncryptedFile'>EncryptedFile</a>;
<a href='/constructor/inputEncryptedFileEmpty'>inputEncryptedFileEmpty</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
<a href='/constructor/inputEncryptedFileUploaded'>inputEncryptedFileUploaded</a> id:<a href='/type/long'>long</a> parts:<a href='/type/int'>int</a> md5_checksum:<a href='/type/string'>string</a> key_fingerprint:<a href='/type/int'>int</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
<a href='/constructor/inputEncryptedFile'>inputEncryptedFile</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputEncryptedFile'>InputEncryptedFile</a>;
<a href='/constructor/inputEncryptedFileLocation'>inputEncryptedFileLocation</a> id:<a href='/type/long'>long</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputFileLocation'>InputFileLocation</a>;
// Encrypted message
<a href='/constructor/encryptedMessage'>encryptedMessage</a> random_id:<a href='/type/long'>long</a> chat_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> file:<a href='/type/EncryptedFile'>EncryptedFile</a> = <a href='/type/EncryptedMessage'>EncryptedMessage</a>;
<a href='/constructor/encryptedMessageService'>encryptedMessageService</a> random_id:<a href='/type/long'>long</a> chat_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> bytes:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedMessage'>EncryptedMessage</a>;
// Diffie-Hellman config
<a href='/constructor/messages.dhConfigNotModified'>messages.dhConfigNotModified</a> random:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
<a href='/constructor/messages.dhConfig'>messages.dhConfig</a> g:<a href='/type/int'>int</a> p:<a href='/type/bytes'>bytes</a> version:<a href='/type/int'>int</a> random:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
<a href='/constructor/messages.sentEncryptedMessage'>messages.sentEncryptedMessage</a> date:<a href='/type/int'>int</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
<a href='/constructor/messages.sentEncryptedFile'>messages.sentEncryptedFile</a> date:<a href='/type/int'>int</a> file:<a href='/type/EncryptedFile'>EncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
// Updated state with qts
<a href='/constructor/updates.state'>updates.state</a> pts:<a href='/type/int'>int</a> qts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> = <a href='/type/updates.State'>updates.State</a>;
<a href='/constructor/updates.difference'>updates.difference</a> new_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; new_encrypted_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/EncryptedMessage'>EncryptedMessage</a>&gt; other_updates:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Update'>Update</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; state:<a href='/type/updates.State'>updates.State</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
<a href='/constructor/updates.differenceSlice'>updates.differenceSlice</a> new_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; new_encrypted_messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/EncryptedMessage'>EncryptedMessage</a>&gt; other_updates:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Update'>Update</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; intermediate_state:<a href='/type/updates.State'>updates.State</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
---functions---
<a href='/method/messages.getDhConfig'>messages.getDhConfig</a> version:<a href='/type/int'>int</a> random_length:<a href='/type/int'>int</a> = <a href='/type/messages.DhConfig'>messages.DhConfig</a>;
<a href='/method/messages.requestEncryption'>messages.requestEncryption</a> user_id:<a href='/type/InputUser'>InputUser</a> random_id:<a href='/type/int'>int</a> g_a:<a href='/type/bytes'>bytes</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/method/messages.acceptEncryption'>messages.acceptEncryption</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> g_b:<a href='/type/bytes'>bytes</a> key_fingerprint:<a href='/type/long'>long</a> = <a href='/type/EncryptedChat'>EncryptedChat</a>;
<a href='/method/messages.discardEncryption'>messages.discardEncryption</a> chat_id:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/messages.setEncryptedTyping'>messages.setEncryptedTyping</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> typing:<a href='/type/Bool'>Bool</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/messages.readEncryptedHistory'>messages.readEncryptedHistory</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> max_date:<a href='/type/int'>int</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/messages.sendEncrypted'>messages.sendEncrypted</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
<a href='/method/messages.sendEncryptedFile'>messages.sendEncryptedFile</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> file:<a href='/type/InputEncryptedFile'>InputEncryptedFile</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
<a href='/method/messages.sendEncryptedService'>messages.sendEncryptedService</a> peer:<a href='/type/InputEncryptedChat'>InputEncryptedChat</a> random_id:<a href='/type/long'>long</a> data:<a href='/type/bytes'>bytes</a> = <a href='/type/messages.SentEncryptedMessage'>messages.SentEncryptedMessage</a>;
<a href='/method/messages.receivedQueue'>messages.receivedQueue</a> max_qts:<a href='/type/int'>int</a> = <a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt;;
<a href='/method/updates.getDifference'>updates.getDifference</a> pts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> qts:<a href='/type/int'>int</a> = <a href='/type/updates.Difference'>updates.Difference</a>;
invokeWithLayer8#e9abd9fd {X:Type} query:!X = X;</code></pre>
<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
<ul>
<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTION_REQUEST</a> type -- a contact requested secret chat creation</li>
<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTION_ACCEPT</a> type -- a contact confirmed secret chat creation</li>
<li>Added notification of <a href="/api/push-updates#possible-notifications">ENCRYPTED_MESSAGE</a> type -- a contact sent message in a secret chat</li>
</ul>
<h4><a class="anchor" href="#end-to-end-schema" id="end-to-end-schema" name="end-to-end-schema"><i class="anchor-icon"></i></a>End-to-end schema</h4>
<pre><code>===8===
<a href='/constructor/decryptedMessage'>decryptedMessage</a> random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/bytes'>bytes</a> message:<a href='/type/string'>string</a> media:<a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
<a href='/constructor/decryptedMessageService'>decryptedMessageService</a> random_id:<a href='/type/long'>long</a> random_bytes:<a href='/type/bytes'>bytes</a> action:<a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a> = <a href='/type/DecryptedMessage'>DecryptedMessage</a>;
<a href='/constructor/decryptedMessageMediaEmpty'>decryptedMessageMediaEmpty</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaPhoto'>decryptedMessageMediaPhoto</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaVideo'>decryptedMessageMediaVideo</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> duration:<a href='/type/int'>int</a> w:<a href='/type/int'>int</a> h:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaGeoPoint'>decryptedMessageMediaGeoPoint</a> lat:<a href='/type/double'>double</a> long:<a href='/type/double'>double</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaContact'>decryptedMessageMediaContact</a> phone_number:<a href='/type/string'>string</a> first_name:<a href='/type/string'>string</a> last_name:<a href='/type/string'>string</a> user_id:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageActionSetMessageTTL'>decryptedMessageActionSetMessageTTL</a> ttl_seconds:<a href='/type/int'>int</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessageMediaDocument'>decryptedMessageMediaDocument</a> thumb:<a href='/type/bytes'>bytes</a> thumb_w:<a href='/type/int'>int</a> thumb_h:<a href='/type/int'>int</a> file_name:<a href='/type/string'>string</a> mime_type:<a href='/type/string'>string</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageMediaAudio'>decryptedMessageMediaAudio</a> duration:<a href='/type/int'>int</a> size:<a href='/type/int'>int</a> key:<a href='/type/bytes'>bytes</a> iv:<a href='/type/bytes'>bytes</a> = <a href='/type/DecryptedMessageMedia'>DecryptedMessageMedia</a>;
<a href='/constructor/decryptedMessageActionReadMessages'>decryptedMessageActionReadMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessageActionDeleteMessages'>decryptedMessageActionDeleteMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessageActionScreenshotMessages'>decryptedMessageActionScreenshotMessages</a> random_ids:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/long'>long</a>&gt; = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;
<a href='/constructor/decryptedMessageActionFlushHistory'>decryptedMessageActionFlushHistory</a> = <a href='/type/DecryptedMessageAction'>DecryptedMessageAction</a>;</code></pre>
<h3><a class="anchor" href="#layer-7" id="layer-7" name="layer-7"><i class="anchor-icon"></i></a><a href="/schema?layer=7">Layer 7</a></h3>
<p>Added wallpaper constructor <a href="/constructor/wallPaperSolid">wallPaperSolid</a>.</p>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/wallPaperSolid'>wallPaperSolid</a> id:<a href='/type/int'>int</a> title:<a href='/type/string'>string</a> bg_color:<a href='/type/int'>int</a> color:<a href='/type/int'>int</a> = <a href='/type/WallPaper'>WallPaper</a>;
---functions---
invokeWithLayer7#a5be56d3 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-6" id="layer-6" name="layer-6"><i class="anchor-icon"></i></a><a href="/schema?layer=6">Layer 6</a></h3>
<p>Added location identifiers from foursquare.</p>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/geoChat'>geoChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> venue:<a href='/type/string'>string</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> photo:<a href='/type/ChatPhoto'>ChatPhoto</a> participants_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> checked_in:<a href='/type/Bool'>Bool</a> version:<a href='/type/int'>int</a> = <a href='/type/Chat'>Chat</a>;
---functions---
<a href='/method/geochats.createGeoChat'>geochats.createGeoChat</a> title:<a href='/type/string'>string</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> address:<a href='/type/string'>string</a> venue:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
invokeWithLayer6#3a64d54d {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-5" id="layer-5" name="layer-5"><i class="anchor-icon"></i></a><a href="/schema?layer=5">Layer 5</a></h3>
<p>Added parameters for internationalization.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added parameter lang_code to methods <a href="/method/auth.sendCode">auth.sendCode</a>, <a href="/method/account.registerDevice">account.registerDevice</a></li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code>---functions---
<a href='/method/auth.sendCode'>auth.sendCode</a> phone_number:<a href='/type/string'>string</a> sms_type:<a href='/type/int'>int</a> api_id:<a href='/type/int'>int</a> api_hash:<a href='/type/string'>string</a> lang_code:<a href='/type/string'>string</a> = <a href='/type/auth.SentCode'>auth.SentCode</a>;
<a href='/method/account.registerDevice'>account.registerDevice</a> token_type:<a href='/type/int'>int</a> token:<a href='/type/string'>string</a> device_model:<a href='/type/string'>string</a> system_version:<a href='/type/string'>string</a> app_version:<a href='/type/string'>string</a> app_sandbox:<a href='/type/Bool'>Bool</a> lang_code:<a href='/type/string'>string</a> = <a href='/type/Bool'>Bool</a>;
invokeWithLayer5#417a57ae {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-4" id="layer-4" name="layer-4"><i class="anchor-icon"></i></a><a href="/schema?layer=4">Layer 4</a></h3>
<p>Added geochats. <a href="/api/geochats">More...</a></p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added many constructors and methods for geochats.</li>
<li>Added friends_unread_count field to constructor <a href="/constructor/updates.state">updates.state</a>.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/inputGeoChat'>inputGeoChat</a> chat_id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> = <a href='/type/InputGeoChat'>InputGeoChat</a>;
<a href='/constructor/geoChat'>geoChat</a> id:<a href='/type/int'>int</a> access_hash:<a href='/type/long'>long</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> geo:<a href='/type/GeoPoint'>GeoPoint</a> photo:<a href='/type/ChatPhoto'>ChatPhoto</a> participants_count:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> left:<a href='/type/Bool'>Bool</a> version:<a href='/type/int'>int</a> = <a href='/type/Chat'>Chat</a>;
<a href='/constructor/geoChatMessageEmpty'>geoChatMessageEmpty</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
<a href='/constructor/geoChatMessage'>geoChatMessage</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> message:<a href='/type/string'>string</a> media:<a href='/type/MessageMedia'>MessageMedia</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
<a href='/constructor/geoChatMessageService'>geoChatMessageService</a> chat_id:<a href='/type/int'>int</a> id:<a href='/type/int'>int</a> from_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> action:<a href='/type/MessageAction'>MessageAction</a> = <a href='/type/GeoChatMessage'>GeoChatMessage</a>;
<a href='/constructor/geochats.statedMessage'>geochats.statedMessage</a> message:<a href='/type/GeoChatMessage'>GeoChatMessage</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; seq:<a href='/type/int'>int</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/constructor/geochats.located'>geochats.located</a> results:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/ChatLocated'>ChatLocated</a>&gt; messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Located'>geochats.Located</a>;
<a href='/constructor/geochats.messages'>geochats.messages</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Messages'>geochats.Messages</a>;
<a href='/constructor/geochats.messagesSlice'>geochats.messagesSlice</a> count:<a href='/type/int'>int</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/GeoChatMessage'>GeoChatMessage</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; = <a href='/type/geochats.Messages'>geochats.Messages</a>;
<a href='/constructor/messageActionGeoChatCreate'>messageActionGeoChatCreate</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> = <a href='/type/MessageAction'>MessageAction</a>;
<a href='/constructor/messageActionGeoChatCheckin'>messageActionGeoChatCheckin</a> = <a href='/type/MessageAction'>MessageAction</a>;
<a href='/constructor/updateNewGeoChatMessage'>updateNewGeoChatMessage</a> message:<a href='/type/GeoChatMessage'>GeoChatMessage</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/updates.state'>updates.state</a> pts:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> unread_count:<a href='/type/int'>int</a> friends_unread_count:<a href='/type/int'>int</a> = <a href='/type/updates.State'>updates.State</a>;
---functions---
<a href='/method/geochats.getLocated'>geochats.getLocated</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> radius:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Located'>geochats.Located</a>;
<a href='/method/geochats.checkin'>geochats.checkin</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/method/geochats.getFullChat'>geochats.getFullChat</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> = <a href='/type/messages.ChatFull'>messages.ChatFull</a>;
<a href='/method/geochats.editChatTitle'>geochats.editChatTitle</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> title:<a href='/type/string'>string</a> address:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/method/geochats.editChatPhoto'>geochats.editChatPhoto</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> photo:<a href='/type/InputChatPhoto'>InputChatPhoto</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/method/geochats.search'>geochats.search</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> q:<a href='/type/string'>string</a> filter:<a href='/type/MessagesFilter'>MessagesFilter</a> min_date:<a href='/type/int'>int</a> max_date:<a href='/type/int'>int</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Messages'>geochats.Messages</a>;
<a href='/method/geochats.getHistory'>geochats.getHistory</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/geochats.Messages'>geochats.Messages</a>;
<a href='/method/geochats.setTyping'>geochats.setTyping</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> typing:<a href='/type/Bool'>Bool</a> = <a href='/type/Bool'>Bool</a>;
<a href='/method/geochats.sendMessage'>geochats.sendMessage</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> message:<a href='/type/string'>string</a> random_id:<a href='/type/long'>long</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/method/geochats.sendMedia'>geochats.sendMedia</a> peer:<a href='/type/InputGeoChat'>InputGeoChat</a> media:<a href='/type/InputMedia'>InputMedia</a> random_id:<a href='/type/long'>long</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
<a href='/method/geochats.createGeoChat'>geochats.createGeoChat</a> title:<a href='/type/string'>string</a> geo_point:<a href='/type/InputGeoPoint'>InputGeoPoint</a> address:<a href='/type/string'>string</a> = <a href='/type/geochats.StatedMessage'>geochats.StatedMessage</a>;
invokeWithLayer4#dea0d430 {X:Type} query:!X = X;</code></pre>
<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
<ul>
<li>Added notification of <a href="/api/push-updates#possible-notifications">GEOCHAT_CHECKIN</a> type -- a user has checked-in in a geochat.</li>
</ul>
<h3><a class="anchor" href="#layer-3" id="layer-3" name="layer-3"><i class="anchor-icon"></i></a><a href="/schema?layer=3">Layer 3</a></h3>
<p>Support for link changes for a contact when a message is sent. Now, if user X has user Y in the contact list and if user Y writes a message to user X, number X will become available for him. <a href="/api/requests">More...</a></p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added constructors <a href="/constructor/messages.statedMessagesLinks">messages.statedMessagesLinks</a>, <a href="/constructor/messages.statedMessageLink">messages.statedMessageLink</a>, <a href="/constructor/messages.sentMessageLink">messages.sentMessageLink</a>. They are completely similar to previous ones except for the links field containing changed links.</li>
<li>Added events_mask field to constructors <a href="/constructor/inputPeerNotifySettings">inputPeerNotifySettings</a>, <a href="/constructor/peerNotifySettings">peerNotifySettings</a> making possible turning-off PUSH-notifications on image changes.</li>
<li>Added method <a href="/method/messages.forwardMessage">messages.forwardMessage</a> for sending single messages.</li>
<li>Added method <a href="/method/messages.sendBroadcast">messages.sendBroadcast</a> for bulky messaging.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/messages.statedMessagesLinks'>messages.statedMessagesLinks</a> messages:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Message'>Message</a>&gt; chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessages'>messages.StatedMessages</a>;
<a href='/constructor/messages.statedMessageLink'>messages.statedMessageLink</a> message:<a href='/type/Message'>Message</a> chats:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/Chat'>Chat</a>&gt; users:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/User'>User</a>&gt; links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> = <a href='/type/messages.StatedMessage'>messages.StatedMessage</a>;
<a href='/constructor/messages.sentMessageLink'>messages.sentMessageLink</a> id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> pts:<a href='/type/int'>int</a> seq:<a href='/type/int'>int</a> links:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/contacts.Link'>contacts.Link</a>&gt; = <a href='/type/messages.SentMessage'>messages.SentMessage</a>;
---functions---
<a href='/method/messages.forwardMessage'>messages.forwardMessage</a> peer:<a href='/type/InputPeer'>InputPeer</a> id:<a href='/type/int'>int</a> random_id:<a href='/type/long'>long</a> = <a href='/type/messages.StatedMessage'>messages.StatedMessage</a>;
<a href='/method/messages.sendBroadcast'>messages.sendBroadcast</a> contacts:<a href='/type/Vector%20t'>Vector</a>&lt;<a href='/type/InputUser'>InputUser</a>&gt; message:<a href='/type/string'>string</a> media:<a href='/type/InputMedia'>InputMedia</a> = <a href='/type/messages.StatedMessages'>messages.StatedMessages</a>;
invokeWithLayer3#b7475268 {X:Type} query:!X = X;</code></pre>
<h3><a class="anchor" href="#layer-2" id="layer-2" name="layer-2"><i class="anchor-icon"></i></a><a href="/schema?layer=2">Layer 2</a></h3>
<p>Support for notifications on changes of contact profile images. It is assumed that receiving such image changed notification a client will add a record on this event in the message history with this contact.</p>
<h4><a class="anchor" href="#schema-changes" id="schema-changes" name="schema-changes"><i class="anchor-icon"></i></a>Schema changes</h4>
<ul>
<li>Added date and previous fields to constructor <a href="/constructor/updateUserPhoto">updateUserPhoto</a>.</li>
<li>Added events_mask field to constructors <a href="/constructor/inputPeerNotifySettings">inputPeerNotifySettings</a>, <a href="/constructor/peerNotifySettings">peerNotifySettings</a> making possible turning-off PUSH-notifications on image change.</li>
<li>Added identifier for relevant image to constructor <a href="/constructor/userProfilePhoto">userProfilePhoto</a>.</li>
<li>Added method <a href="/method/photos.getUserPhotos">photos.getUserPhotos</a> to get a history of previous profile images.</li>
</ul>
<h4><a class="anchor" href="#schema" id="schema" name="schema"><i class="anchor-icon"></i></a>Schema</h4>
<pre><code><a href='/constructor/inputPeerNotifySettings'>inputPeerNotifySettings</a> mute_until:<a href='/type/int'>int</a> sound:<a href='/type/string'>string</a> show_previews:<a href='/type/Bool'>Bool</a> events_mask:<a href='/type/int'>int</a> = <a href='/type/InputPeerNotifySettings'>InputPeerNotifySettings</a>;
<a href='/constructor/peerNotifySettings'>peerNotifySettings</a> mute_until:<a href='/type/int'>int</a> sound:<a href='/type/string'>string</a> show_previews:<a href='/type/Bool'>Bool</a> events_mask:<a href='/type/int'>int</a> = <a href='/type/PeerNotifySettings'>PeerNotifySettings</a>;
<a href='/constructor/updateUserPhoto'>updateUserPhoto</a> user_id:<a href='/type/int'>int</a> date:<a href='/type/int'>int</a> photo:<a href='/type/UserProfilePhoto'>UserProfilePhoto</a> previous:<a href='/type/Bool'>Bool</a> = <a href='/type/Update'>Update</a>;
<a href='/constructor/userProfilePhoto'>userProfilePhoto</a> photo_id:<a href='/type/long'>long</a> photo_small:<a href='/type/FileLocation'>FileLocation</a> photo_big:<a href='/type/FileLocation'>FileLocation</a> = <a href='/type/UserProfilePhoto'>UserProfilePhoto</a>;
---functions---
<a href='/method/photos.getUserPhotos'>photos.getUserPhotos</a> user_id:<a href='/type/InputUser'>InputUser</a> offset:<a href='/type/int'>int</a> max_id:<a href='/type/int'>int</a> limit:<a href='/type/int'>int</a> = <a href='/type/photos.Photos'>photos.Photos</a>;
invokeWithLayer2#289dd1f6 {X:Type} query:!X = X;</code></pre>
<h4><a class="anchor" href="#push-notifications" id="push-notifications" name="push-notifications"><i class="anchor-icon"></i></a>Push-notifications</h4>
<ul>
<li>Added notification of <a href="/api/push-updates#possible-notifications">CONTACT_PHOTO</a> type -- a contact has changed profile image.</li>
</ul></div>
</div>
</div>
</div>
<div class="footer_wrap">
<div class="footer_columns_wrap footer_desktop">
<div class="footer_column footer_column_telegram">
<h5>Telegram</h5>
<div class="footer_telegram_description"></div>
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
</div>
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
<ul>
<li><a href="//telegram.org/faq">FAQ</a></li>
<li><a href="//telegram.org/blog">Blog</a></li>
<li><a href="//telegram.org/jobs">Jobs</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
<ul>
<li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
<li><a href="//telegram.org/dl/android">Android</a></li>
<li><a href="//telegram.org/dl/wp">Windows Phone</a></li>
</ul>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
<ul>
<li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
<li><a href="//macos.telegram.org/">macOS</a></li>
<li><a href="//telegram.org/dl/web">Web-browser</a></li>
</ul>
</div>
<div class="footer_column footer_column_platform">
<h5><a href="/">Platform</a></h5>
<ul>
<li><a href="/api">API</a></li>
<li><a href="//translations.telegram.org/">Translations</a></li>
<li><a href="//instantview.telegram.org/">Instant View</a></li>
</ul>
</div>
</div>
<div class="footer_columns_wrap footer_mobile">
<div class="footer_column">
<h5><a href="//telegram.org/faq">About</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/blog">Blog</a></h5>
</div>
<div class="footer_column">
<h5><a href="//telegram.org/apps">Apps</a></h5>
</div>
<div class="footer_column">
<h5><a href="/">Platform</a></h5>
</div>
<div class="footer_column">
<h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5>
</div>
</div>
</div>
</div>
<script src="/js/main.js?42"></script>
<script src="/js/jquery.min.js?1"></script>
<script src="/js/bootstrap.min.js"></script>
<script>window.initDevPageNav&&initDevPageNav();
backToTopInit("Go up");
removePreloadInit();
</script>
</body>
</html>