diff --git a/data/web/corefork.telegram.org/api/action-bar.html b/data/web/corefork.telegram.org/api/action-bar.html new file mode 100644 index 0000000000..6977d98184 --- /dev/null +++ b/data/web/corefork.telegram.org/api/action-bar.html @@ -0,0 +1,188 @@ + + +
+ +Sometimes, when interacting with Telegram users via private or secret chats, an action bar must be shown on top of the chat, offering convenient action buttons or notices regarding the user.
+Schema:
+peerSettings#a518110d flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int = PeerSettings;
+
+userFull#b9b12c6c flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights premium_gifts:flags.19?Vector<PremiumGiftOption> wallpaper:flags.24?WallPaper stories:flags.25?PeerStories = UserFull;
+
+updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update;
+
+messages.peerSettings#6880b94d settings:PeerSettings chats:Vector<Chat> users:Vector<User> = messages.PeerSettings;
+
+---functions---
+
+messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings;
+The action bar is represented by the peerSettings constructor, fetchable using messages.getPeerSettings; it is also contained in the userFull constructor returned by users.getFullUser.
+Changes to the chat bar may also be notified by the server using updatePeerSettings.
+What follows is a list of the various (mutually exclusive) chat bar types, along with the condition used to identify each type, by checking the appropriate flags of peerSettings.
+inputReportReasonSpam#58dbcab8 = ReportReason;
+
+---functions---
+
+account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool;
+This action bar, associated to a private or secret chat, offers the user a button to report the chat for spam using account.reportPeer and inputReportReasonSpam.
+Condition: the peerSettings.report_spam
flag must be set.
Additionally, if the chat was automatically archived », an extra button can be shown to unarchive the chat as specified here » instead of reporting it.
+Schema:
+contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates;
+This action bar, associated to a private or secret chat, offers the user a button to share their phone number with the other user using contacts.acceptContact.
+Conditions:
+add_contact
flag must be set and the chat must not be archived.add_contact
flag must be set, and the block_contact
and report_spam
flags must not be set.Optionally, the peerSettings.need_contacts_exception
flag may also be set: if so, the add_phone_privacy_exception
flag must be set if the user clicks on the add contact button, invoking contacts.acceptContact.
Schema:
+contacts.acceptContact#f831a20f id:InputUser = Updates;
+This action bar, associated to a private or secret chat, offers the user a button to share their phone number with the other user using contacts.acceptContact.
+Condition: the peerSettings.share_contact
flag must be set.
inputReportReasonGeoIrrelevant#dbd4feed = ReportReason;
+
+---functions---
+
+account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool;
+This bar indicates that the associated location-based supergroup can be reported for having an unrelated location using a bar button that invokes account.reportPeer with reason
inputReportReasonGeoIrrelevant.
Condition: the peerSettings.report_geo
flag must be set.
Schema:
+---functions---
+
+messages.addChatUser#f24753e3 chat_id:long user_id:InputUser fwd_limit:int = Updates;
+
+channels.inviteToChannel#199f3a6c channel:InputChannel users:Vector<InputUser> = Updates;
+This bar indicates that the associated group was created recently, and it offers a bar button to invite new members using messages.addChatUser or channels.inviteToChannel, depending on whether the associated peer is a group or a supergroup.
+Condition: the peerSettings.invite_members
flag must be set.
This bar indicates that the associated private or secret chat is a chat with an administrator of a group or channel to which the user sent a join request, see here for more info on join requests ».
+Condition: the request_chat_title
and request_chat_date
fields of peerSettings must both be set; optionally request_chat_broadcast
may also be set:
request_chat_title
- Contains the group/channel's title.request_chat_date
- Contains the timestamp indicating when the join request was sent.request_chat_broadcast
- This flag is set if the join request is related to a channel (otherwise, the join request is related to a group).large_queue_max_active_operations_count
A soft limit, specifying the maximum number of files that should be downloaded in parallel from the same DC, for files bigger than 20MB. (integer)
authorization_autoconfirm_period
story_expire_period
story_viewers_expire_period
The exact list of users that viewed the story will be hidden from the poster this many seconds after the story expires. (integer)
+This limit applies only to non-Premium users, Premium users can always access the viewer list.
story_expiring_limit_default
The maximum number of active stories
story_expiring_limit_premium
story_caption_length_limit_premium
The maximum UTF-8 length of story captions for Premium users (integer)
+The maximum UTF-8 length of story captions for Premium users. (integer)
story_caption_length_limit_default
The maximum UTF-8 length of story captions for non-Premium users (integer)
+The maximum UTF-8 length of story captions for non-Premium users. (integer)
stories_posting
Indicates whether users can post stories. (string)
One of:
@@ -484,10 +485,15 @@ Note that the stickerset can be fetched usingstories_stealth_cooldown_period
After enabling stories stealth mode, this many seconds must elapse before the user is allowed to enable it again. (integer)
stories_sent_weekly_limit_default
Maximum number of stories that can be sent in a week by non-Premium users. (integer)
stories_sent_weekly_limit_premium
Maximum number of stories that can be sent in a week by Premium users. (integer)
stories_sent_monthly_limit_default
Maximum number of stories that can be sent in a month by non-Premium users. (integer)
stories_sent_monthly_limit_premium
Maximum number of stories that can be sent in a month by Premium users. (integer)
stories_venue_search_username
Username of the inline bot to use to generate venue location tags for stories, see here » for more info. (string)
stories_all_hidden
stories_entities
stories_export_nopublic_link
Working with contacts.
+Schema:
+inputPhoneContact#f392b7f4 client_id:long phone:string first_name:string last_name:string = InputContact;
+
+importedContact#c13e3c50 user_id:long client_id:long = ImportedContact;
+popularContact#5ce14175 client_id:long importers:int = PopularContact;
+
+contacts.importedContacts#77d01c3b imported:Vector<ImportedContact> popular_invites:Vector<PopularContact> retry_contacts:Vector<long> users:Vector<User> = contacts.ImportedContacts;
+
+---functions---
+
+contacts.importContacts#2c800be5 contacts:Vector<InputContact> = contacts.ImportedContacts;
+To upload the local contact list to Telegram and see which contacts are already signed up on telegram, use contacts.importContacts, passing an array of inputPhoneContact constructors, containing:
+phone
- The phone number in international formatfirst_name
- First namelast_name
- Last name, can be emptyclient_id
- An arbitrary 64-bit integer (not the contact's Telegram user ID, since we do not have it yet); make sure there are no collisions between the client_ids passed to a single contacts.importContacts call (for example, use a simple incremental ID starting from 0)The method will return a contacts.importedContacts constructor, containing the following fields:
+imported
- A list of successfully imported contacts that have an associated Telegram account as importedContact constructors.user_id
is the Telegram user ID, client_id
is the client_id
associated to the contact, passed during the method call.
+Note that according to the user's privacy settings, not all contacts which have an associated Telegram account may be returned here.users
- Contains info about the Telegram users mentioned in imported
popular_invites
- Contains info about popular contacts: each popularContact constructor indicates that the contact with the specified client_id
was imported imported
times by that many Telegram users.retry_contacts
- List of contact ids that could not be imported due to a server-side system limitation and have to be reimported with another call to contacts.importedContacts.Schema:
+users.userFull#3b6d152e full_user:UserFull chats:Vector<Chat> users:Vector<User> = users.UserFull;
+
+inputUser#f21158c6 user_id:long access_hash:long = InputUser;
+
+user#abb5f120 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int = User;
+
+peerSettings#a518110d flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int = PeerSettings;
+
+userFull#b9b12c6c flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights premium_gifts:flags.19?Vector<PremiumGiftOption> wallpaper:flags.24?WallPaper stories:flags.25?PeerStories = UserFull;
+
+updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update;
+
+---functions---
+
+users.getFullUser#b60f5918 id:InputUser = users.UserFull;
+
+contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates;
+contacts.acceptContact#f831a20f id:InputUser = Updates;
+Telegram users may also be added to the contact list (even if we do not have access to their phone number!) using contacts.addContact.
+Set the add_phone_privacy_exception
flag if we wish to allow the other user to see our phone number: this flag must be set if the need_contacts_exception
flag of [peerSettings] is set (see the action bar documentation »).
Schema:
+contact#145ade0b user_id:long mutual:Bool = Contact;
+
+user#abb5f120 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int = User;
+
+contacts.contacts#eae87e42 contacts:Vector<Contact> saved_count:int users:Vector<User> = contacts.Contacts;
+contacts.contactsNotModified#b74ba9d2 = contacts.Contacts;
+
+savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact;
+
+---functions---
+
+contacts.getContacts#5dd69e12 hash:long = contacts.Contacts;
+
+contacts.getSaved#82f1e39f = Vector<SavedContact>;
+Use contacts.getContacts to obtain all members of the contact list that have an associated Telegram account.
+To obtain the full contact list, including contacts which do not have an associated Telegram account, use contacts.getSaved in combination with a takeout session ».
+Schema:
+userStatusEmpty#9d05049 = UserStatus;
+userStatusOnline#edb93949 expires:int = UserStatus;
+userStatusOffline#8c703f was_online:int = UserStatus;
+userStatusRecently#e26f42f1 = UserStatus;
+userStatusLastWeek#7bf09fc = UserStatus;
+userStatusLastMonth#77ebc742 = UserStatus;
+
+contactStatus#16d9703b user_id:long status:UserStatus = ContactStatus;
+
+---functions---
+
+contacts.getStatuses#c4a353ee = Vector<ContactStatus>;
+Use contacts.getStatuses to obtain the online statuses of all contacts with a phone number.
+Schema:
+contacts.found#b3134d9d my_results:Vector<Peer> results:Vector<Peer> chats:Vector<Chat> users:Vector<User> = contacts.Found;
+
+---functions---
+
+contacts.search#11f812d8 q:string limit:int = contacts.Found;
+Schema:
+---functions---
+
+contacts.deleteContacts#96a0e00 id:Vector<InputUser> = Updates;
+
+contacts.deleteByPhones#1013fd9e phones:Vector<string> = Bool;
+Use contacts.deleteContacts to delete contacts with an associated Telegram account; the returned Updates will contain updated user information.
+Use contacts.deleteByPhones to delete contacts by their phone number, even if they don't have an associated Telegram account.
+contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool;
+contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bool;
+contacts.setBlocked#94c65c76 flags:# my_stories_from:flags.0?true id:Vector<InputPeer> limit:int = Bool;
+contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked;
+contacts.getContactIDs#7adc669d hash:long = Vector<int>;
+contacts.resetSaved#879537f1 = Bool;
+contacts.getLocated#d348bc44 flags:# background:flags.1?true geo_point:InputGeoPoint self_expires:flags.0?int = Updates;
+contacts.blockFromReplies#29a8962c flags:# delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:int = Updates;
Telegram allows users to specify granular privacy settings, choosing which users can or can't interact with them in certain ways.
+Schema:
+inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule;
+inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule;
+inputPrivacyValueAllowUsers#131cc67f users:Vector<InputUser> = InputPrivacyRule;
+inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule;
+inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule;
+inputPrivacyValueDisallowUsers#90110467 users:Vector<InputUser> = InputPrivacyRule;
+inputPrivacyValueAllowChatParticipants#840649cf chats:Vector<long> = InputPrivacyRule;
+inputPrivacyValueDisallowChatParticipants#e94f0f86 chats:Vector<long> = InputPrivacyRule;
+inputPrivacyValueAllowCloseFriends#2f453e49 = InputPrivacyRule;
+
+privacyValueAllowContacts#fffe1bac = PrivacyRule;
+privacyValueAllowAll#65427b82 = PrivacyRule;
+privacyValueAllowUsers#b8905fb2 users:Vector<long> = PrivacyRule;
+privacyValueDisallowContacts#f888fa1a = PrivacyRule;
+privacyValueDisallowAll#8b73e763 = PrivacyRule;
+privacyValueDisallowUsers#e4621141 users:Vector<long> = PrivacyRule;
+privacyValueAllowChatParticipants#6b134e8e chats:Vector<long> = PrivacyRule;
+privacyValueDisallowChatParticipants#41c87565 chats:Vector<long> = PrivacyRule;
+privacyValueAllowCloseFriends#f7e8d89b = PrivacyRule;
+
+user#abb5f120 flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int = User;
+
+---functions---
+
+contacts.editCloseFriends#ba6705f0 id:Vector<long> = Bool;
+Privacy rules indicate who can or can't do something and are specified by a PrivacyRule, and its input counterpart InputPrivacyRule.
+InputPrivacyRule constructors are passed as input to methods that accept privacy rules, while PrivacyRules are contained in constructors returned by the API.
See the type page » for a full list of privacy rules and their descriptions.
+One privacy rule in particular should be mentioned separately, (input)privacyValueAllowCloseFriends: this privacy rule, which can be used only when posting stories, refers exclusively to a list of "close friends", that can be modified using contacts.editCloseFriends, passing the full close friend list as a list of user IDs: note that only users in the contact list (even without a phone number) » can be added to the close friends list.
+The current list of close friends can be checking which users in our contact list have the close_friend
flag set in the associated user constructor, see here » for more info on how to fetch the contact list.
Schema:
+inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey;
+inputPrivacyKeyChatInvite#bdfb0426 = InputPrivacyKey;
+inputPrivacyKeyPhoneCall#fabadc5f = InputPrivacyKey;
+inputPrivacyKeyPhoneP2P#db9e70d2 = InputPrivacyKey;
+inputPrivacyKeyForwards#a4dd4c08 = InputPrivacyKey;
+inputPrivacyKeyProfilePhoto#5719bacc = InputPrivacyKey;
+inputPrivacyKeyPhoneNumber#352dafa = InputPrivacyKey;
+inputPrivacyKeyAddedByPhone#d1219bdd = InputPrivacyKey;
+inputPrivacyKeyVoiceMessages#aee69d68 = InputPrivacyKey;
+inputPrivacyKeyAbout#3823cc40 = InputPrivacyKey;
+
+privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey;
+privacyKeyChatInvite#500e6dfa = PrivacyKey;
+privacyKeyPhoneCall#3d662b7b = PrivacyKey;
+privacyKeyPhoneP2P#39491cc8 = PrivacyKey;
+privacyKeyForwards#69ec56a3 = PrivacyKey;
+privacyKeyProfilePhoto#96151fed = PrivacyKey;
+privacyKeyPhoneNumber#d19ae46d = PrivacyKey;
+privacyKeyAddedByPhone#42ffd42b = PrivacyKey;
+privacyKeyVoiceMessages#697f414 = PrivacyKey;
+privacyKeyAbout#a486b761 = PrivacyKey;
+
+account.privacyRules#50a04e45 rules:Vector<PrivacyRule> chats:Vector<Chat> users:Vector<User> = account.PrivacyRules;
+
+updatePrivacy#ee3b272a key:PrivacyKey rules:Vector<PrivacyRule> = Update;
+
+---functions---
+
+account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules;
+account.setPrivacy#c9f81ce8 key:InputPrivacyKey rules:Vector<InputPrivacyRule> = account.PrivacyRules;
+Privacy keys together with privacy rules » indicate what can or can't someone do and are specified by a PrivacyKey constructor, and its input counterpart InputPrivacyKey.
+InputPrivacyKey constructors are passed as input to methods that accept privacy keys, while PrivacyKeys are contained in constructors returned by the API.
See the type page » for a full list of privacy keys and their descriptions.
+Use account.getPrivacy to obtain the current set of rules associated to a key, and account.setPrivacy to change it.
+Changing the privacy settings will trigger an updatePrivacy, sent to all currently logged in sessions of the current account.
Before posting a story, clients should invoke stories.canSendStory, to make sure
+ +contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked; +contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; +contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; +Before posting a story, clients should invoke stories.canSendStory, to make sure they can send stories to the specified peer
(which can be inputPeerSelf to send the story as a normal user and inputPeerChannel to send a story as a channel).
This methods returns boolTrue only if:
CHAT_ADMIN_REQUIRED
error is returned.post_stories
admin rights, and the post_stories
admin rights; otherwise, a CHAT_ADMIN_REQUIRED
error is returned.BOOSTS_REQUIRED
error is returned.stories_posting
client configuration parameter; otherwise, a PREMIUM_ACCOUNT_REQUIRED
error is returned.story_expiring_limit_*
client configuration parameters; otherwise a STORIES_TOO_MUCH
error is returned, indicating that the user should buy a Premium subscription, delete an active story, or wait for the oldest story to expire.stories_sent_weekly_limit_*
client configuration parameters; otherwise, a STORY_SEND_FLOOD_WEEKLY_%d
error is returned, indicating the number of seconds to wait before posting a new story.stories_sent_monthly_limit_*
client configuration parameters; otherwise, a STORY_SEND_FLOOD_MONTHLY_%d
error is returned, indicating the number of seconds to wait before posting a new story.After checking if a story can be posted, the client may invoke stories.sendStory to upload the story.
+Note that if any of the conditions changes in the period between the call to stories.canSendStory and stories.sendStory (for example, the user uploads a story from another client, reaching the weekly limit), the same errors listed above for stories.canSendStory will be emitted by stories.sendStory.
The parameters of stories.sendStory are fully described on the method page », here are some of the most important ones:
+peer
: The peer to send the story as.media
: The story media.media_areas
: Media areas associated to the story, see here » for more info.privacy_rules
: A set of privacy rules » for the story as an array of InputPrivacyRule constructors, indicating who can or can't view the story.expire
: Period after which the story is moved to archive (and to the profile if pinned
is set), in seconds; must be one of 6 * 3600
, 12 * 3600
, 86400
, or 2 * 86400
for Telegram Premium users, and 86400
otherwise.pinned
: Whether to also add the story to the profile automatically upon expiration. If not set, the story will only be added to the archive. A story may also be edited using stories.editStory.
+---functions---
+
+stories.togglePinned#9a75a1ef peer:InputPeer id:Vector<int> pinned:Bool = Vector<int>;
+stories.getStoriesArchive#b4352016 peer:InputPeer offset_id:int limit:int = stories.Stories;
+
+stories.toggleAllStoriesHidden#7c2557c4 hidden:Bool = Bool;
+stories.togglePeerStoriesHidden#bd0415c4 peer:InputPeer hidden:Bool = Bool;
+---functions---
+
+stories.deleteStories#ae59db5f peer:InputPeer id:Vector<int> = Vector<int>;
+Use the stories.deleteStories method to delete one or more stories by their IDs, passed in id
.
---functions---
+
+stories.getAllStories#eeb0d625 flags:# next:flags.1?true hidden:flags.2?true state:flags.0?string = stories.AllStories;
+stories.getPinnedStories#5821a5dc peer:InputPeer offset_id:int limit:int = stories.Stories;
+stories.getStoriesByID#5774ca74 peer:InputPeer id:Vector<int> = stories.Stories;
+stories.readStories#a556dac8 peer:InputPeer max_id:int = Vector<int>;
+stories.incrementStoryViews#b2028afb peer:InputPeer id:Vector<int> = Bool;
+
+stories.getStoryViewsList#7ed23c57 flags:# just_contacts:flags.0?true reactions_first:flags.2?true peer:InputPeer q:flags.1?string id:int offset:string limit:int = stories.StoryViewsList;
+
+stories.getStoriesViews#28e16cc8 peer:InputPeer id:Vector<int> = stories.StoryViews;
+stories.exportStoryLink#7b8def20 peer:InputPeer id:int = ExportedStoryLink;
+stories.report#1923fa8c peer:InputPeer id:Vector<int> reason:ReportReason message:string = Bool;
+
+stories.getPeerStories#2c4ada50 peer:InputPeer = stories.PeerStories;
+stories.getAllReadPeerStories#9b5ae7f9 = Updates;
+stories.getPeerMaxIDs#535983c3 id:Vector<InputPeer> = Vector<int>;
+Schema:
+mediaAreaCoordinates#3d1ea4e x:double y:double w:double h:double rotation:double = MediaAreaCoordinates;
+
+mediaAreaVenue#be82db9c coordinates:MediaAreaCoordinates geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MediaArea;
+inputMediaAreaVenue#b282217f coordinates:MediaAreaCoordinates query_id:long result_id:string = MediaArea;
+mediaAreaGeoPoint#df8b3b22 coordinates:MediaAreaCoordinates geo:GeoPoint = MediaArea;
+mediaAreaSuggestedReaction#14455871 flags:# dark:flags.0?true flipped:flags.1?true coordinates:MediaAreaCoordinates reaction:Reaction = MediaArea;
+
+storyItem#44c457ce flags:# pinned:flags.5?true public:flags.7?true close_friends:flags.8?true min:flags.9?true noforwards:flags.10?true edited:flags.11?true contacts:flags.12?true selected_contacts:flags.13?true out:flags.16?true id:int date:int expire_date:int caption:flags.0?string entities:flags.1?Vector<MessageEntity> media:MessageMedia media_areas:flags.14?Vector<MediaArea> privacy:flags.2?Vector<PrivacyRule> views:flags.3?StoryViews sent_reaction:flags.15?Reaction = StoryItem;
+
+---functions---
+
+stories.sendStory#bcb73644 flags:# pinned:flags.2?true noforwards:flags.4?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int = Updates;
+stories.editStory#b583ba46 flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector<MediaArea> caption:flags.1?string entities:flags.1?Vector<MessageEntity> privacy_rules:flags.2?Vector<InputPrivacyRule> = Updates;
+Stories can have so-called "media areas": clickable rectangular areas with animated overlays on top of the story offering functionality like location tags or reactions.
+The coordinates and size of each media area is specified in a mediaAreaCoordinates constructor attached to each MediaArea, see the constructor page » for more info.
+After construction, the vector of MediaArea constructors can be passed to stories.sendStory or stories.editStory.
+Schema:
+geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint;
+
+mediaAreaGeoPoint#df8b3b22 coordinates:MediaAreaCoordinates geo:GeoPoint = MediaArea;
+mediaAreaVenue#be82db9c coordinates:MediaAreaCoordinates geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MediaArea;
+
+inputMediaAreaVenue#b282217f coordinates:MediaAreaCoordinates query_id:long result_id:string = MediaArea;
+Location tags are represented by a mediaAreaVenue or mediaAreaGeoPoint, associated to a location sticker on top of the story media with an associated clickable media area.
+Both constructors have an associated geolocation represented as a geoPoint, and information about the clickable media area on top of the story media as a mediaAreaCoordinates constructor.
+mediaAreaGeoPoint is used to represent a simple geolocation without any extra information.
+mediaAreaVenue is used to represent the location of a specific venue (i.e. a mall, a shop, a dance school et cetera), and apart from the venue's coordinates, it also contains a textual representation of the address, the venue name (title
) and a venue type/ID (venue_id
/venue_type
) in a format supported by the venue provider specified in provider
.
Currently, the only provider that needs to be supported is foursquare
.
To send a mediaAreaVenue, clients should use inputMediaAreaVenue, constructed as follows:
+stories_venue_search_username
client configuration parameter », as described as the inline queries documentation », populating the geo_point
.geo_point
, should be listed in the lower section of the map UI: upon selection, construct the inputMediaAreaVenue with:query_id
: the query_id
from messages.botResults.result_id
: the id
of the chosen result.Clients may also re-use an existing mediaAreaVenue from a previously uploaded story.
+Schema:
+reactionEmoji#1b2286b8 emoticon:string = Reaction;
+reactionCustomEmoji#8935fc73 document_id:long = Reaction;
+
+mediaAreaSuggestedReaction#14455871 flags:# dark:flags.0?true flipped:flags.1?true coordinates:MediaAreaCoordinates reaction:Reaction = MediaArea;
+
+---functions---
+
+stories.sendReaction#7fd736b2 flags:# add_to_recent:flags.0?true peer:InputPeer story_id:int reaction:Reaction = Updates;
+Story reactions are implemented using a simple in-UI button that allows the user to send any reaction using stories.sendReaction.
+However, the poster of a story may also use mediaAreaSuggestedReaction media areas » to suggest some specific reactions as simple clickable buttons: they're rendered as a round comic-style thought bubble with its "tail" on the right, white background and the reaction » from the reaction
field located in its center.
+If the dark
flag is set, the background should by black.
+If the flipped
flag is set, the "tail" should be located on the left.
Clicking it should invoke stories.sendReaction as usual.
Premium users may enable stealth mode, erasing their views from any stories they opened in the past stories_stealth_past_period
seconds », and hiding their views on stories for the next stories_stealth_future_period
seconds », as specified by the client configuration ».
Schema:
@@ -119,13 +232,13 @@ ABOOST_NOT_MODIFIED
RPC error will be returned when calling any of
inputPeerChannel#27bcbbfc channel_id:long access_hash:long = InputPeer;
+messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
+
---functions---
-stories.canSendStory#c7dfdfdd peer:InputPeer = Bool;
-stories.sendStory#bcb73644 flags:# pinned:flags.2?true noforwards:flags.4?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int = Updates;
-stories.editStory#b583ba46 flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector<MediaArea> caption:flags.1?string entities:flags.1?Vector<MessageEntity> privacy_rules:flags.2?Vector<InputPrivacyRule> = Updates;
-stories.deleteStories#ae59db5f peer:InputPeer id:Vector<int> = Vector<int>;
-Everything works exactly the same as when posting stories as a user, with the only difference that clients should pass the appropriate inputPeerChannel instead of inputPeerSelf to stories.canSendStory, stories.sendStory and all the other story methods, see the main documentation » for more info.
+stories.getChatsToSend#a56a8b60 = messages.Chats; +Everything works exactly the same as when posting stories as a user, with the only difference that clients should pass the appropriate inputPeerChannel instead of inputPeerSelf to stories.canSendStory, stories.sendStory and all the other story methods, see the main documentation » for more info.
+Use stories.getChatsToSend to obtain a list of channels where the user can post stories; stories.canSendStory must still be used before uploading a story to make sure no other limit was reached, as described in the main documentation ».
diff --git a/data/web/corefork.telegram.org/api/story.html b/data/web/corefork.telegram.org/api/story.html new file mode 100644 index 0000000000..3c174d560a --- /dev/null +++ b/data/web/corefork.telegram.org/api/story.html @@ -0,0 +1,118 @@ + + + + +Telegram's API allows users to export all of their information through the takeout API.
+account.takeout#4dba4501 id:long = account.Takeout;
+
+inputTakeoutFileLocation#29be5899 = InputFileLocation;
+
+---functions---
+
+account.initTakeoutSession#8ef3eab0 flags:# contacts:flags.0?true message_users:flags.1?true message_chats:flags.2?true message_megagroups:flags.3?true message_channels:flags.4?true files:flags.5?true file_max_size:flags.5?long = account.Takeout;
+
+invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X;
+invokeWithMessagesRange#365275f2 {X:Type} range:MessageRange query:!X = X;
+
+account.finishTakeoutSession#1d2652ee flags:# success:flags.0?true = Bool;
+Use account.initTakeoutSession to initialize a takeout session: pass the appropriate flags to enable usage of the corresponding methods, as described below.
+When invoking the methods described below, each query must be wrapped using invokeWithTakeout, with the id
returned by account.initTakeoutSession.
After finishing the export, terminate the session using account.finishTakeoutSession.
+savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact;
+
+---functions---
+
+contacts.getSaved#82f1e39f = Vector<SavedContact>;
+Use contacts.getSaved to export the full contact list, see here » for another alternative method that may be used to fetch the full list of all contacts with a Telegram account, without using a takeout session.
+messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats;
+messages.chatsSlice#9cd81144 count:int chats:Vector<Chat> = messages.Chats;
+
+---functions---
+
+channels.getLeftChannels#8341ecc0 offset:int = messages.Chats;
+Use channels.getLeftChannels to get a list of channels or supergroups we left.
+If enabled, the rating of top peers indicates the relevance of a frequently used peer in a certain category (frequently messaged users, frequently used bots, inline bots, frequently visited channels and so on).
Schema:
-topPeer#edcdc05b peer:Peer rating:double = TopPeer;
-
-topPeerCategoryBotsPM#ab661b5b = TopPeerCategory;
+topPeerCategoryBotsPM#ab661b5b = TopPeerCategory;
topPeerCategoryBotsInline#148677e2 = TopPeerCategory;
topPeerCategoryCorrespondents#637b7ed = TopPeerCategory;
topPeerCategoryGroups#bd17a14a = TopPeerCategory;
@@ -55,6 +53,8 @@
topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory;
topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory;
+topPeer#edcdc05b peer:Peer rating:double = TopPeer;
+
topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers;
contacts.topPeersNotModified#de266ef5 = contacts.TopPeers;
@@ -63,7 +63,10 @@
---functions---
-contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true offset:int limit:int hash:long = contacts.TopPeers;
+contacts.toggleTopPeers#8514bdda enabled:Bool = Bool;
+contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true offset:int limit:int hash:long = contacts.TopPeers;
+contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = Bool;
+Use contacts.toggleTopPeers to enable or disable top peer ratings.
The rate delta is computed by taking the time delta between the last time the user used a certain peer and the last time the rating for that peer was received and dividing it by the exponential decay from config.
Example:
Client-side, every time a user opens chat 123456789
the following operation must be done on the cached top peer info.
123456789
the following o
normalizeRate
is an arbitrary time in the recent past.
When ratings are received from the server using contacts.getTopPeers and the schema described above, it is the time when they were received.topPeer.rating += e^((dateOpened - normalizeRate) / config.rating_e_decay)
topPeer.rating += e^((dateOpened - normalizeRate) / config.rating_e_decay)
+Use contacts.resetTopPeerRating to reset the top peer rating of a certain peer, in a certain category.
diff --git a/data/web/corefork.telegram.org/constructor/botInlineMessageMediaVenue.html b/data/web/corefork.telegram.org/constructor/botInlineMessageMediaVenue.html index 6b69f38072..ed3a116501 100644 --- a/data/web/corefork.telegram.org/constructor/botInlineMessageMediaVenue.html +++ b/data/web/corefork.telegram.org/constructor/botInlineMessageMediaVenue.html @@ -89,7 +89,7 @@Coordinates and size of a clicable rectangular area on top of a story.
+Represents a geolocation tag attached to a story.
+Represents a reaction bubble.
+Telegram users and channels can easily post and view stories through the API.
Represents a location tag attached to a story, with additional venue information.
+Represents a story.
+pinned
is set), in seconds; must be one of 6 * 3600
, 12 * 3600
, 86400
, or 2 * 86400
for Telegram Premium users, and 86400
otherwise.Sent payload (excluding transport headers/trailers):
-0000 | 00 00 00 00 00 00 00 00 CC 7D 0D 00 D2 5E 20 65
-0010 | 14 00 00 00 F1 8E 7E BE 44 89 D8 96 B9 08 80 A8
-0020 | A6 23 F7 43 BD FB 19 7A
+0000 | 00 00 00 00 00 00 00 00 90 45 05 00 71 F5 22 65
+0010 | 14 00 00 00 F1 8E 7E BE 58 C2 89 3D 19 63 D1 36
+0020 | 4C 49 F9 69 1D 09 67 FA
Payload (de)serialization:
req_pq_multi#be7e8ef1 nonce:int128 = ResPQ;
message_id | 8, 8 | -CC7D0D00D25E2065 |
+9045050071F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Random number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
message_id | 8, 8 | -011C2AC6D25E2065 |
+01307E2871F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
message_length | 16, 4 | -68000000 (104 in decimal) |
+90000000 (144 in decimal) |
Message body length | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 40, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Server-generated random number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pq | 56, 12 | -082CE5C208765AC5ED000000 TL byte deserialization => bigendian conversion to decimal => 3235205248936756717 |
+0832F8EA1A81A922C9000000 TL byte deserialization => bigendian conversion to decimal => 3672942895686034121 |
Single-byte prefix denoting length, an 8-byte string, and three bytes of padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
pq | 4, 12 | -082CE5C208765AC5ED000000 TL byte deserialization => bigendian conversion to decimal => 3235205248936756717 |
+0832F8EA1A81A922C9000000 TL byte deserialization => bigendian conversion to decimal => 3672942895686034121 |
Single-byte prefix denoting length, 8-byte string, and three bytes of padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
p | 16, 8 | -04668DCFBB000000 TL byte deserialization => bigendian conversion to decimal => 1720569787 |
+046F17C60B000000 TL byte deserialization => bigendian conversion to decimal => 1863829003 |
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
q | 24, 8 | -0470134277000000 TL byte deserialization => bigendian conversion to decimal => 1880310391 |
+047575A2FB000000 TL byte deserialization => bigendian conversion to decimal => 1970643707 |
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
nonce | 32, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 48, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
new_nonce | 64, 32 | -3C482639410DE8BC5EB6D9D7E540F349 775AE1B4336D7C7B31F4F1BDC8F0D7B3 |
+E7A08A34DBA68AC408C85D5875F16066 B012D8E777A3150783CF00F4588B2E05 |
Client-generated random number | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
message_id | 8, 8 | -28A20E00D25E2065 |
+14610B0071F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) | |||||||||||||||||||||||||||||||||||||||||||||||||||||
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 40, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
p | 56, 8 | -04668DCFBB000000 TL byte deserialization => bigendian conversion to decimal => 1720569787 |
+046F17C60B000000 TL byte deserialization => bigendian conversion to decimal => 1863829003 |
First prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding | |||||||||||||||||||||||||||||||||||||||||||||||||||||
q | 64, 8 | -0470134277000000 TL byte deserialization => bigendian conversion to decimal => 1880310391 |
+047575A2FB000000 TL byte deserialization => bigendian conversion to decimal => 1970643707 |
Second prime cofactor: single-byte prefix denoting length, 4-byte string, and three bytes of padding | |||||||||||||||||||||||||||||||||||||||||||||||||||||
encrypted_data | 80, 260 | -FE000100D177563F10EFE0AA71F81FA9 17FE234D3995C71C486C33EB265C2BE2 18EF78E485FD8A5C88EB70F6EA7161FE AA85443BD690CA865C4EB7242F2FD8D3 C76E8BF61C85FFACC985DC350726AD9D 7D1A9B4830C184ED313CE355E9404420 D2318C6912921895797D22790AC2780E A1AE38C3B04BEC379799CDD0819D378E 6662B8C75449EA2226ED355E9645B83A 60F4CD115BCCCFE7584241F904BE4A70 A06B03B72ED74703780465D8E8386CF1 E0915739981FC984C4CFE31137FDEF2B D8F87B6F01E70BA3E0113B01C338C80F 7E0CC800FE8CE464F71B9BB97BB9EEDE 308480142F72F75582BB5B78ED995C7D 1A9C70CD531AB0077DADD342D507CAFB 5E7F6E34 |
+FE0001001D332697DD5742DA60F7620B 959BCF6239EBF5DB882924327EF2B6D4 BC7F72EE4FFC6FB012EF6FB9C3D0FB43 DA1DD8AB7B7DAB4E9497B4F9D084D54E DC13174A1243122757731EFCB059F8FF 69FD369F03D621E190CFB2589B726C63 6A1810B1D5032F9B7EEA5C686FB3D9C0 6EA241DECF5BAF480910B8E31B2F9CA2 DD703BC7D551DF2E1DBB2B46026FD629 E3A1CAA330A72D8B98C8C41FC77E56F2 9BB6CAB036BF8B235DA5DF8E16685AC8 22B365E3DE3F56450E7055F38D2F163B D2FD1453D3F698720126CB53CD7A5E03 6D5109D2CCF8DA7ECC28D8FC3884809A CF510F247429106F2CE6C896615E858C 64D176C96FFF9920BAFAA61681F3052D 06D5F6BA |
Value generated above |
message_id | 8, 8 | -01B86878D35E2065 |
+01E020E371F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) | |||||||||||||||||||||||||||||||||||||||||||||||||||||
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 40, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
encrypted_answer | 56, 596 | -FE500200D8A877B268751FA9ECBDA5D5 A8A867464810AD8FCB6B3E36FDDAB9BB E6E93BD3832F75BBF9CDDEEE28425937 55FF04DC87278B7378962C2186DD3794 506405CA0A73CBB1319590B56CD0F15E A05EDF4F967E489E11BB8843EF090D08 4FCF0D4E00167D8B203F839FFD5F5CDB 5A16352D781742924B12CE68F04DBD6C 541D34BAA91E509E4629AF328167860F 76628B12F1BB76E6E007FF53009B0516 BD3CC052F3A683F31D427C5530597E15 DFDA3FA039D3AE53F4087E2C8B3B8DEA 58283839539FB2E57D9FB28D394A4675 B8AD1E830366631427DB2C987F4B33C2 7C9251F5A7808B602806142F1FFBD321 5329D8A1C81244E227D26CAD12B5458C 1141D2DBA57BDAE35C4FC48B3AEEDBA3 50DE91B98F9E5A419AE2E7E31D47A3EC 9E19ACF65BA339CF8AD4C944AB4CF3FC DCEE2E72617137876FC7E54E62A9C4DD 8826A476C6AA23ABCFAE6698BBE98622 18F6F42201CBCE6FA3AF9AF6118EDD74 DE25EFC4AB6BABA3D9606C66EC90D3C1 99FCABC3442841FC2024DB95077D6673 ED1F465B3E7EAE19919A840904148FB0 73C2815672B4BB92D21EA003C8121263 D79D4A753C1690FC4C455D03350D612F C513FC797E9EA3E00209F08610757295 40F2BA5E21C67A57A953DB5E0B6A0E20 13713D7E5321BE566673107B113C7121 B93371C6608A48D4C9E29D3988D750B7 9983B53FD98403B621AC0E006D4DEBC6 61AAA334214A8FAF17C132BEE0259518 A93FD5DC45C282C73A4029A20C18D7CE A4BDCF561AD73C292AAF6270F2606469 B52576A86A397A1A257A0DDD3F762217 E8C84BB9EA2E78293D669C5CDA8C46E9 2028E464 |
+FE50020071580A8A83C3BCFEF0D783EC 010EC2ED5C172AE2D3FBA6A98B25574D CE59AF7F46B6396DF169C880C1E45F5A 5FC6979F4FDAFE2A1F7A7211FA8202C0 599884A569240B7FA6E73E404B3CB0E9 E16C04696AC4CF3FC4785D682A3C3C44 C4EAD93F3B679C6D999EEBA201123BF0 3C84E88C4BC141F67725DFCBB4A95430 3E9BA3923F41269B762BDBC8A83642DF 3781C7E5F4C12217B58001E686F44FB6 8A07049BE05BB915B79736710C8D2FD7 59DCF2BA73A8A7DB5B4245E705CF8BC9 C5767B9CC59438F6EF09C5E992995C23 39CE5B408D3528EBA9E860B2ACD21053 4A39033EB6BA6BDAD6C5C6E6604A106F 6D530BDDE374837145D74BE04795352E 2465B23EA4BD24F5D2F692D1714B5A40 CE9E1B3AD23CC1C3702B5BFFB6104B24 9187550EC07DEE92948DD0FC0C76026E 173A72D88DDDF2AA674E05567AC7E196 A6F4DEA374EE51C842C4FE2A79C58B82 F18DE78D722DD22542FC95F047021C81 24FE9B50EBF53C129F4BF47BB3AB7C1F AC68B000D92CB9BDA537E83EC84E003B A2B8D3683F7B7D1C2E9A26AC9B5F5BB1 59DFA43D6A89B56D9C3479E3903D8FC0 586DE9ABC3829A537668DC7454ADFC7A FCBC06DF0E3394A9B8EE50AAF533E8AC 15736663C51F3A1FABD5DCDDE54647AE 4D34C22D64A78EB5BDDB449CFE8D37DB F0EE406793F2F2A348D3A1E88403A800 2B31FA906CC6111992B9D03FFE756D32 A280D692EE616F8975EC554E790FE7C1 5F571135725535A1AFFEF42EB50668C9 7129D9ED58632388A92D94981B0E5339 6E7F4F790BD5F7B3C7FBF1F5A4149B97 0179A1CD044A624858DCFDB445D5E6AD 0D5CD859 |
See below |
nonce | 4, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 20, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
g_a | 300, 260 | -FE00010081626BD4F644F37B9C05189C 924A9DBFF73E82493AE0301961F1FD0A E568D51AD760C54D5B9181CCDB65CF5D 912D634CA6E90A67331D4DE4C9AC9534 267667E786FEA07F48685ECA15DDEF41 DD57415A35F6D40049BD0C62E6653F95 8230A8223709001B06F579E328EDC8F1 AF54275A8B903DDE6E2BF59617F81582 D6D496312E97C039A9A531CD629397D6 30FADE7F5A4D76BDE6E068A73D62688D FE18FB10DF6B4D64CB3E4F5269F01A54 098EF37356759FF01A5EF59D8532E47D EA41D8035E5CFE7B6569A8ABAED53452 3002E1EF85FE2DC1249103B543F9633F 3744F30D5BF7150851C0A5EED21FC6D1 9D3CB4AB3BF56ED08A458D00EFC22CB9 AA1BB7F6 |
+FE000100985AF8E2C6F85D3F92DFA2AA F64E043E3670DC584FC7786A26C7B14D B98AF9595382F790BF9B8F3EFBD3A20D 7600581C32A4E0EC581D098CB2C39B53 21A4A59DE58597B517A1D4BC58EF0ABF F3D324C0D0C01AC667FC5DCB5FEC1E01 E72A14682A494324FFD027C1D96298D1 C3050F4A22179243CC5810F0EAC060DC DE13148CD159D1ABE9D0133045350887 86AA3D62B988FD94101F8EB07350A242 7CBED7B4498DB95195D307623D9500B1 A194BD9DC04E8603B17352EDA6469DD7 EC0A694DCD291BD6DD31ADA6E29916ED 96E0F3C777C51D22E5A35E72A96796B8 E0196E54BF83F2F03A70324DCBD305A8 0E72846F7C52C2816EA76C5F663969D1 EE760034 |
g_a diffie-hellman parameter |
|||||||||||||||||||||||||||||||||||||||||||||||||||||
server_time | 560, 4 | -D35E2065 (1696620243 in decimal) |
+71F52265 (1696789873 in decimal) |
Server time |
nonce | 4, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
server_nonce | 20, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 | |||||||||||||||||||||||||||||||||||||||||||||||||||||
g_b | 36, 260 | -FE0001009CACAC715E89F072F01C3CF7 B9FD8BC8B7242BBCE6A68BB576BC0431 387894245A4499354A6B5CFAB18A9E00 BDB0E56E2EAEF108FE5C65F54F8F7EA1 94E62727EC248B3A60CFD96E17C0CA54 F00657D20CA1B700F46A0D7A66210E5F 039DC626B698D553DA70BAFA6A13B815 62DF550EBE6F2683DF86B4C6FEBEF378 165D1A48203A93E607C5B74C9BC19170 0836C59C9B275D06B22FCD6D70AB447F 91C9B6A979DABE601B9ED0C8C1326C4E BF44A67DD1EE6CE8A1730C72C227FB3D D51F6A75CFC0DB0B2768006884F9F983 7842ADC45CD9EDE3972BC230DCC46140 6492489343B7228C8560A014F8FA89B8 173AF37273BB7897D89BAC1B88CDE0FD D6427CCC |
+FE000100C1FA6C6108A690D57884A076 23800F29B976346C7FAF707299B186F7 2628781D1C4DD1EA9FD326C1896FBAC6 506D534F89335B13FCEC4626184BC4F9 CFD55895DA8D5C74A8D1E1F981FC9992 217E93EEB55535DF90FC100F8D7FFA12 78A286FB01EE5D107B69A39D1068A96B 95322E4C9F9F1DC27AD90EFCF8DBABF9 C8639644F9E392BD964FC32FE918F86D 00585D3F13FAC7090294CB2222EE1766 B9001FF22CC11D28FB0AE9CD589E0DC7 10F5DBB695C303876793838ACFB39E49 DF1C9D6F99328918DA28559A02AB4079 1AAE5CE6AFBBD047AE4C8B57ADB15127 38F35646D627840669C043D0DC0777D7 B347B0FEA33A3D86198F81863A15E046 32C9D737 |
Single-byte prefix denoting length, a 256-byte (2048-bit) string, and zero bytes of padding | |||||||||||||||||||||||||||||||||||||||||||||||||||||
message_id | 8, 8 | -E8340000D35E2065 |
+18610B0071F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) |
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 |
server_nonce | 40, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 |
encrypted_data | 56, 340 | -FE500100251F8A30247E4F706052B4ED 166B8A3543F6335F56881F4450E329B3 B65A4163CC304561C3C0A6AE6BDD02E2 39D038E4455EAEDE525C3F29ABE82259 43B85759A043F464148AA2C3D5E8137C E3B19EB2583A9BC88396F12678A1A916 254374806D052F8D30135E5D58C1C672 96268A562775AFB164157F55B3AA45CC F1E7D45BABC06D3FCD5A441C362102A6 915B6487E12F55BE46F35F0DA1C24BB4 9A552A32D4F15FB16755B8658583FB00 FD2B64C7429016483E850A5D0BD1F5F5 84A2EAB1DD24A6A6B7AD3C4A4193318C 2014E8EA6DAB6685D67F7C2611189E3C 7C2A705A54159E82A9A150CEE6161E90 D1F2167657481A72F6C96D5C141AEAD6 65411CC7F9F3C89A495B0268329F1D80 6A51010B08124B75938FE5EB3ED1DB58 C6D7D8F9F4E2203738988758CA57B0FE D7B2D7F92048E242ACFC389703DA0230 64A2A9891B3DB5F3113C20D492B53EFD 0B826F28 |
+FE50010045D326B8F0CCBA2FEE4F2B8F 8F1098F45B851027507B03D61DD7A634 1B66F97E8B4B504B8161652687947B77 35C13192D5076BDBA37B76D33EA1E555 81F22C348F4B4139B8D55729BE66CDDE AE811F677018109FB1AC1A4EA6164FBA 0B1418E29A331BFEFB7CBE7A835D1708 2DAF985193ECC1EBBDCAD055C147290B 3D28B89C095382F9A81A0E72AC7035D4 02A9F40A5D5880EB4916C8175FCC6B8E 2C29416320DE75D84FED182F9EF42EF6 EC5BED09999703F9854390892051FEF2 5B7D27F5844A18DFA7C09AEB75D88223 DFFB418B1740A5E31058F77839E1E801 D3DCA237F29381F47DFDB3318F7899DF E267C879496DED11C2F405D1CBE93280 B44E768BF4A2F030B1900DB1409C0661 5A2B8F092E3FB1518D98355A4EE5DB0C 1BC487ADA77A06D9C3171B9ECD7E59CD 47ABF017832E26B91264B3BC4302FD5F FE98408966395BB437254DE26D7989A4 AD957909 |
Encrypted client_DH_inner_data generated previously, serialized as a TL byte string |
message_id | 8, 8 | -0170DEBFD35E2065 |
+0128AB2E72F52265 |
Message ID generated as specified here » (unixtime() << 32) + (N*4) |
message_length | 16, 4 | -64000000 (100 in decimal) |
+A4000000 (164 in decimal) |
Message body length |
nonce | 24, 16 | -4489D896B90880A8A623F743BDFB197A |
+58C2893D1963D1364C49F9691D0967FA |
Value generated by client in Step 1 |
server_nonce | 40, 16 | -4C579283D0EA21D447218B38DC9C5508 |
+5454540799FB066AD90AE7F9A5F7E048 |
Value received from server in Step 2 |
new_nonce_hash1 | 56, 16 | -1180E79B75ABDAF8B9D6489066E9C17A |
+64284ABB5E5C330A2B7ED331267706B5 |
The 128 lower-order bits of SHA1 of the byte string derived from the new_nonce string by adding a single byte with the value of 1, 2, or 3, and followed by another 8 bytes with auth_key_aux_hash . Different values are required to prevent an intruder from changing server response dh_gen_ok into dh_gen_retry. |
mediaAreaVenue | -+ | Represents a location tag attached to a story, with additional venue information. | ||
inputMediaAreaVenue | @@ -95,11 +85,11 @@ mediaAreaSuggestedReaction…">||||
mediaAreaGeoPoint | -+ | Represents a geolocation tag attached to a story. | ||
mediaAreaSuggestedReaction | -+ | Represents a reaction bubble. |
Coordinates and size of a clicable rectangular area on top of a story.
+Privacy key
+Privacy keys together with privacy rules » indicate what can or can't someone do and are specified by a PrivacyKey constructor, and its input counterpart InputPrivacyKey.
+See the privacy documentation » for more info.
Privacy rule
+Privacy rules together with privacy indicate what can or can't someone do and are specified by a PrivacyKey constructor, and its input counterpart InputPrivacyKey.
+See the privacy documentation » for more info.