mirror of
https://github.com/thegeneralist01/twitter-openapi
synced 2026-01-11 23:50:26 +01:00
commit
8443ccfd7f
11 changed files with 3317 additions and 517 deletions
4
.vscode/launch.json
vendored
4
.vscode/launch.json
vendored
|
|
@ -26,7 +26,9 @@
|
||||||
"justMyCode": false,
|
"justMyCode": false,
|
||||||
"preLaunchTask": "build-task",
|
"preLaunchTask": "build-task",
|
||||||
"env": {
|
"env": {
|
||||||
"ERROR_UNCATCHED": "True"
|
"ERROR_UNCATCHED": "True",
|
||||||
|
"STRICT_MODE": "True",
|
||||||
|
"MULTI_THREAD": "True"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
1485
dist/compatible/openapi-3.0.yaml
vendored
1485
dist/compatible/openapi-3.0.yaml
vendored
File diff suppressed because it is too large
Load diff
1232
dist/docs/openapi-3.0.yaml
vendored
1232
dist/docs/openapi-3.0.yaml
vendored
File diff suppressed because it is too large
Load diff
BIN
requirements.txt
BIN
requirements.txt
Binary file not shown.
|
|
@ -1,15 +1,15 @@
|
||||||
{
|
{
|
||||||
"HomeTimeline": {
|
"HomeTimeline": {
|
||||||
"queryId": "vd1SSLv05a4lAc9-ml4kpA",
|
"queryId": "AmMFotx7L4P3QnyOM3bCRA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true,
|
"includePromotedContent": true,
|
||||||
"latestControlAvailable": true,
|
"latestControlAvailable": true,
|
||||||
"requestContext": "launch",
|
"requestContext": "launch",
|
||||||
|
"withCommunity": true,
|
||||||
"seenTweetIds": [
|
"seenTweetIds": [
|
||||||
"1349129669258448897"
|
"1349129669258448897"
|
||||||
],
|
]
|
||||||
"withCommunity": true
|
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
|
@ -17,16 +17,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -34,7 +36,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"HomeLatestTimeline": {
|
"HomeLatestTimeline": {
|
||||||
"queryId": "fKbuCe1XHAqSM99T6q-MOg",
|
"queryId": "IjTuxEFmAb6DvzycVz4fHg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true,
|
"includePromotedContent": true,
|
||||||
|
|
@ -47,16 +49,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -64,7 +68,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ListLatestTweetsTimeline": {
|
"ListLatestTweetsTimeline": {
|
||||||
"queryId": "qHgwF5h2HLowIJ6dHmAP_A",
|
"queryId": "HjsWc-nwwHKYwHenbHm-tw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"listId": "1539453138322673664",
|
"listId": "1539453138322673664",
|
||||||
"count": 20
|
"count": 20
|
||||||
|
|
@ -75,16 +79,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -92,7 +98,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserByScreenName": {
|
"UserByScreenName": {
|
||||||
"queryId": "G3KGOASz96M-Qu0nwmGXNg",
|
"queryId": "k5XapwcSikNsEsILW5FvgA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"screen_name": "elonmusk",
|
"screen_name": "elonmusk",
|
||||||
"withSafetyModeUserFields": true
|
"withSafetyModeUserFields": true
|
||||||
|
|
@ -105,6 +111,7 @@
|
||||||
"subscriptions_verification_info_is_identity_verified_enabled": true,
|
"subscriptions_verification_info_is_identity_verified_enabled": true,
|
||||||
"subscriptions_verification_info_verified_since_enabled": true,
|
"subscriptions_verification_info_verified_since_enabled": true,
|
||||||
"highlights_tweets_tab_ui_enabled": true,
|
"highlights_tweets_tab_ui_enabled": true,
|
||||||
|
"responsive_web_twitter_article_notes_tab_enabled": true,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
|
|
@ -114,7 +121,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserByRestId": {
|
"UserByRestId": {
|
||||||
"queryId": "QdS5LJDl99iL_KUzckdfNQ",
|
"queryId": "tD8zKvQzwY3kdx5yz6YmOw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"withSafetyModeUserFields": true
|
"withSafetyModeUserFields": true
|
||||||
|
|
@ -125,13 +132,14 @@
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"highlights_tweets_tab_ui_enabled": true,
|
"highlights_tweets_tab_ui_enabled": true,
|
||||||
|
"responsive_web_twitter_article_notes_tab_enabled": true,
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true
|
"responsive_web_graphql_timeline_navigation_enabled": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UsersByRestIds": {
|
"UsersByRestIds": {
|
||||||
"queryId": "GD4q8bBE2i6cqWw2iT74Gg",
|
"queryId": "itEhGywpgX9b3GJCzOtSrA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userIds": [
|
"userIds": [
|
||||||
"44196397"
|
"44196397"
|
||||||
|
|
@ -145,14 +153,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ProfileSpotlightsQuery": {
|
"ProfileSpotlightsQuery": {
|
||||||
"queryId": "_pnlqeTOtnpbIL9o-fS_pg",
|
"queryId": "X-Sw7rvhcUhof35mh5ObKw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"screen_name": "elonmusk"
|
"screen_name": "elonmusk"
|
||||||
},
|
},
|
||||||
"features": {}
|
"features": {}
|
||||||
},
|
},
|
||||||
"UserTweets": {
|
"UserTweets": {
|
||||||
"queryId": "H8OOoI-5ZE4NxgRr8lfyWg",
|
"queryId": "5ICa5d9-AitXZrIA3H-4MQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -167,16 +175,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -184,7 +194,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserTweetsAndReplies": {
|
"UserTweetsAndReplies": {
|
||||||
"queryId": "Q6aAvPw7azXZbqXzuqTALA",
|
"queryId": "UtLStR_BnYUGD7Q453UXQg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -199,16 +209,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -216,7 +228,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserHighlightsTweets": {
|
"UserHighlightsTweets": {
|
||||||
"queryId": "KTtT5_kU8yor3I3UI4G5Vw",
|
"queryId": "ZRU-YBvpJ5c-SOS-nb_Lhg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -229,16 +241,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -246,7 +260,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"UserMedia": {
|
"UserMedia": {
|
||||||
"queryId": "Le6KlbilFmSu-5VltFND-Q",
|
"queryId": "tO4LMUYAZbR4T0SqQ85aAw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 40,
|
"count": 40,
|
||||||
|
|
@ -262,16 +276,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -279,7 +295,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Likes": {
|
"Likes": {
|
||||||
"queryId": "lVf2NuhLoYVrpN4nO7uw0Q",
|
"queryId": "9s8V6sUI8fZLDiN-REkAxA",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -295,16 +311,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -312,7 +330,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Bookmarks": {
|
"Bookmarks": {
|
||||||
"queryId": "j5KExFXtSWj8HjRui17ydA",
|
"queryId": "cQxQgX8MJYjWwC0dxpyfYg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"count": 20,
|
"count": 20,
|
||||||
"includePromotedContent": true
|
"includePromotedContent": true
|
||||||
|
|
@ -324,16 +342,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -341,9 +361,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TweetDetail": {
|
"TweetDetail": {
|
||||||
"queryId": "xOhkmRac04YFZmOzU9PJHg",
|
"queryId": "B9_KmbkLhXt6jRwGjJrweg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"focalTweetId": "1349129669258448897",
|
"focalTweetId": "1349129669258448897",
|
||||||
|
"referrer": "home",
|
||||||
"with_rux_injections": false,
|
"with_rux_injections": false,
|
||||||
"includePromotedContent": true,
|
"includePromotedContent": true,
|
||||||
"withCommunity": true,
|
"withCommunity": true,
|
||||||
|
|
@ -358,16 +379,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -378,7 +401,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"TweetResultByRestId": {
|
"TweetResultByRestId": {
|
||||||
"queryId": "DJS3BdhUhcaEpZ7B7irJDg",
|
"queryId": "MWY3AO9_I3rcP_L2A4FR4A",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweetId": "1691730070669517096",
|
"tweetId": "1691730070669517096",
|
||||||
"withCommunity": false,
|
"withCommunity": false,
|
||||||
|
|
@ -387,16 +410,18 @@
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
|
|
@ -408,7 +433,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"SearchTimeline": {
|
"SearchTimeline": {
|
||||||
"queryId": "3Ej-6N7xXONuEp5eJa1TdQ",
|
"queryId": "fZK7JipRHWtiZsTodhsTfQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"rawQuery": "elonmusk",
|
"rawQuery": "elonmusk",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -421,16 +446,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -438,7 +465,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Favoriters": {
|
"Favoriters": {
|
||||||
"queryId": "VIA2_af01oqZqBB6NvWi-Q",
|
"queryId": "LLkw5EcVutJL6y-2gkz22A",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweetId": "1349129669258448897",
|
"tweetId": "1349129669258448897",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -450,16 +477,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -467,7 +496,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Retweeters": {
|
"Retweeters": {
|
||||||
"queryId": "9jBdme5U626ATWp01dvgrA",
|
"queryId": "X-XEqG5qHQSAwmvy00xfyQ",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweetId": "1349129669258448897",
|
"tweetId": "1349129669258448897",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -479,16 +508,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -496,7 +527,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Followers": {
|
"Followers": {
|
||||||
"queryId": "rRXFSG5vR6drKr5M37YOTw",
|
"queryId": "ZG1BQPaRSg04qo55kKaW2g",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -508,16 +539,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -525,7 +558,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Following": {
|
"Following": {
|
||||||
"queryId": "iSicc7LrzWGBgDPL0tM_TQ",
|
"queryId": "PAnE9toEjRfE-4tozRcsfw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -537,16 +570,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -554,7 +589,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"BlueVerifiedFollowers": {
|
"BlueVerifiedFollowers": {
|
||||||
"queryId": "kXi37EbqWokFUNypPHhQDQ",
|
"queryId": "mg4dFO4kMIKt6tpqPMmFeg",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "1347135745706708993",
|
"userId": "1347135745706708993",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -566,16 +601,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -583,7 +620,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"FollowersYouKnow": {
|
"FollowersYouKnow": {
|
||||||
"queryId": "yqrUptVSP9DAkVLqpc0lsg",
|
"queryId": "citX7s5IAb1C6AVCqUO68g",
|
||||||
"variables": {
|
"variables": {
|
||||||
"userId": "44196397",
|
"userId": "44196397",
|
||||||
"count": 20,
|
"count": 20,
|
||||||
|
|
@ -595,16 +632,18 @@
|
||||||
"creator_subscriptions_tweet_preview_api_enabled": true,
|
"creator_subscriptions_tweet_preview_api_enabled": true,
|
||||||
"responsive_web_graphql_timeline_navigation_enabled": true,
|
"responsive_web_graphql_timeline_navigation_enabled": true,
|
||||||
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
"responsive_web_graphql_skip_user_profile_image_extensions_enabled": false,
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
"standardized_nudges_misinfo": true,
|
"standardized_nudges_misinfo": true,
|
||||||
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
"tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
"responsive_web_media_download_video_enabled": false,
|
"responsive_web_media_download_video_enabled": false,
|
||||||
|
|
@ -612,7 +651,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"CreateTweet": {
|
"CreateTweet": {
|
||||||
"queryId": "PIZtQLRIYtSa9AtW_fI2Mw",
|
"queryId": "8ED1SMuUGkOZVBEjiYUTfw",
|
||||||
"variables": {
|
"variables": {
|
||||||
"tweet_text": "test",
|
"tweet_text": "test",
|
||||||
"media": {
|
"media": {
|
||||||
|
|
@ -632,15 +671,17 @@
|
||||||
"dark_request": false
|
"dark_request": false
|
||||||
},
|
},
|
||||||
"features": {
|
"features": {
|
||||||
|
"c9s_tweet_anatomy_moderator_badge_enabled": true,
|
||||||
"tweetypie_unmention_optimization_enabled": true,
|
"tweetypie_unmention_optimization_enabled": true,
|
||||||
"responsive_web_edit_tweet_api_enabled": true,
|
"responsive_web_edit_tweet_api_enabled": true,
|
||||||
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
"graphql_is_translatable_rweb_tweet_is_translatable_enabled": true,
|
||||||
"view_counts_everywhere_api_enabled": true,
|
"view_counts_everywhere_api_enabled": true,
|
||||||
"longform_notetweets_consumption_enabled": true,
|
"longform_notetweets_consumption_enabled": true,
|
||||||
"responsive_web_twitter_article_tweet_consumption_enabled": false,
|
"responsive_web_twitter_article_tweet_consumption_enabled": true,
|
||||||
"tweet_awards_web_tipping_enabled": false,
|
"tweet_awards_web_tipping_enabled": false,
|
||||||
"longform_notetweets_rich_text_read_enabled": true,
|
"longform_notetweets_rich_text_read_enabled": true,
|
||||||
"longform_notetweets_inline_media_enabled": true,
|
"longform_notetweets_inline_media_enabled": true,
|
||||||
|
"rweb_video_timestamps_enabled": true,
|
||||||
"responsive_web_graphql_exclude_directive_enabled": true,
|
"responsive_web_graphql_exclude_directive_enabled": true,
|
||||||
"verified_phone_label_enabled": false,
|
"verified_phone_label_enabled": false,
|
||||||
"freedom_of_speech_not_reach_fetch_enabled": true,
|
"freedom_of_speech_not_reach_fetch_enabled": true,
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ components:
|
||||||
- kind
|
- kind
|
||||||
- name
|
- name
|
||||||
- source
|
- source
|
||||||
|
- retry_after
|
||||||
- tracing
|
- tracing
|
||||||
properties:
|
properties:
|
||||||
message:
|
message:
|
||||||
|
|
@ -54,6 +55,8 @@ components:
|
||||||
type: string
|
type: string
|
||||||
source:
|
source:
|
||||||
type: string
|
type: string
|
||||||
|
retry_after:
|
||||||
|
type: integer
|
||||||
tracing:
|
tracing:
|
||||||
$ref: "#/components/schemas/Tracing"
|
$ref: "#/components/schemas/Tracing"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -71,16 +71,21 @@ components:
|
||||||
header:
|
header:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true # todo
|
additionalProperties: true # todo
|
||||||
|
|
||||||
clientEventInfo:
|
clientEventInfo:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true # todo
|
additionalProperties: true # todo
|
||||||
|
metadata:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
feedbackInfo:
|
||||||
|
$ref: "#/components/schemas/FeedbackInfo"
|
||||||
|
|
||||||
TimelineTimelineCursor:
|
TimelineTimelineCursor:
|
||||||
required:
|
required:
|
||||||
- "__typename"
|
- "__typename"
|
||||||
- "cursorType"
|
- "cursorType"
|
||||||
- "value"
|
- "value"
|
||||||
|
- "stopOnEmptyResponse"
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineTimelineCursor
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineTimelineCursor
|
||||||
|
|
@ -92,6 +97,19 @@ components:
|
||||||
$ref: "#/components/schemas/CursorType"
|
$ref: "#/components/schemas/CursorType"
|
||||||
value:
|
value:
|
||||||
type: string
|
type: string
|
||||||
|
stopOnEmptyResponse:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
displayTreatment:
|
||||||
|
$ref: "#/components/schemas/DisplayTreatment"
|
||||||
|
|
||||||
|
DisplayTreatment:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- "actionText"
|
||||||
|
properties:
|
||||||
|
actionText:
|
||||||
|
type: string
|
||||||
|
|
||||||
# ================= Module =================
|
# ================= Module =================
|
||||||
|
|
||||||
|
|
@ -115,6 +133,15 @@ components:
|
||||||
itemContent:
|
itemContent:
|
||||||
$ref: "#/components/schemas/ItemContentUnion"
|
$ref: "#/components/schemas/ItemContentUnion"
|
||||||
|
|
||||||
|
FeedbackInfo:
|
||||||
|
required:
|
||||||
|
- "feedbackType"
|
||||||
|
properties:
|
||||||
|
feedbackKeys:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
|
||||||
# ================= ContentItem =================
|
# ================= ContentItem =================
|
||||||
|
|
||||||
ItemContentUnion:
|
ItemContentUnion:
|
||||||
|
|
@ -163,17 +190,18 @@ components:
|
||||||
type: string
|
type: string
|
||||||
tweet_results:
|
tweet_results:
|
||||||
$ref: "#/components/schemas/ItemResult"
|
$ref: "#/components/schemas/ItemResult"
|
||||||
SocialContext:
|
socialContext:
|
||||||
$ref: "#/components/schemas/SocialContext"
|
$ref: "#/components/schemas/SocialContextUnion"
|
||||||
promotedMetadata:
|
promotedMetadata:
|
||||||
type: object
|
type: object
|
||||||
additionalProperties: true # todo
|
additionalProperties: true # todo
|
||||||
|
highlights:
|
||||||
|
$ref: "#/components/schemas/Highlight"
|
||||||
|
|
||||||
TimelineUser:
|
TimelineUser:
|
||||||
required:
|
required:
|
||||||
- "__typename"
|
- "__typename"
|
||||||
- "itemType"
|
- "itemType"
|
||||||
- "socialContext"
|
|
||||||
- "userDisplayType"
|
- "userDisplayType"
|
||||||
- "user_results"
|
- "user_results"
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -181,8 +209,8 @@ components:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineUser
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TimelineUser
|
||||||
itemType:
|
itemType:
|
||||||
$ref: "#/components/schemas/ContentItemType" # TimelineUser
|
$ref: "#/components/schemas/ContentItemType" # TimelineUser
|
||||||
SocialContext:
|
socialContext:
|
||||||
$ref: "#/components/schemas/SocialContext"
|
$ref: "#/components/schemas/SocialContextUnion"
|
||||||
userDisplayType:
|
userDisplayType:
|
||||||
type: string
|
type: string
|
||||||
enum: [User, UserDetailed, SubscribableUser]
|
enum: [User, UserDetailed, SubscribableUser]
|
||||||
|
|
@ -196,15 +224,122 @@ components:
|
||||||
result:
|
result:
|
||||||
$ref: "./tweet.yaml#/components/schemas/TweetUnion"
|
$ref: "./tweet.yaml#/components/schemas/TweetUnion"
|
||||||
|
|
||||||
SocialContext:
|
SocialContextUnion:
|
||||||
|
oneOf:
|
||||||
|
- $ref: "#/components/schemas/TimelineGeneralContext"
|
||||||
|
- $ref: "#/components/schemas/TimelineTopicContext"
|
||||||
|
discriminator:
|
||||||
|
propertyName: type
|
||||||
|
mapping": # deprecated
|
||||||
|
TimelineGeneralContext: "#/components/schemas/TimelineGeneralContext"
|
||||||
|
TimelineTopicContext: "#/components/schemas/TimelineTopicContext"
|
||||||
|
|
||||||
|
SocialContextUnionType:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- TimelineGeneralContext
|
||||||
|
- TimelineTopicContext
|
||||||
|
|
||||||
|
|
||||||
|
TimelineGeneralContext:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
type:
|
||||||
|
$ref: "#/components/schemas/SocialContextUnionType"
|
||||||
contextType:
|
contextType:
|
||||||
type: string # enum
|
type: string # enum
|
||||||
|
enum: ["Follow", "Pin", "Like", "Location", "Sparkle"]
|
||||||
text:
|
text:
|
||||||
type: string
|
type: string
|
||||||
|
landingUrl:
|
||||||
|
$ref: "#/components/schemas/SocialContextLandingUrl"
|
||||||
|
|
||||||
|
TimelineTopicContext:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
type:
|
type:
|
||||||
|
$ref: "#/components/schemas/SocialContextUnionType"
|
||||||
|
topic:
|
||||||
|
$ref: "#/components/schemas/TopicContext"
|
||||||
|
functionalityType:
|
||||||
|
type: string
|
||||||
|
enum: ["Basic"]
|
||||||
|
|
||||||
|
TopicContext:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: string
|
||||||
|
topic_id:
|
||||||
|
type: string
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
icon_url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
following:
|
||||||
|
type: boolean
|
||||||
|
not_interested:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
SocialContextLandingUrl:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
urlType:
|
||||||
type: string # enum
|
type: string # enum
|
||||||
|
enum: ["DeepLink", "UrtEndpoint"]
|
||||||
|
url:
|
||||||
|
type: string # twitter://user?id=900282258736545792
|
||||||
|
format: uri
|
||||||
|
urtEndpointOptions:
|
||||||
|
$ref: "#/components/schemas/UrtEndpointOptions"
|
||||||
|
|
||||||
|
UrtEndpointOptions:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- "title"
|
||||||
|
- "requestParams"
|
||||||
|
properties:
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
requestParams:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/UrtEndpointRequestParams"
|
||||||
|
|
||||||
|
UrtEndpointRequestParams:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- "key"
|
||||||
|
- "value"
|
||||||
|
properties:
|
||||||
|
key:
|
||||||
|
type: string
|
||||||
|
value:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
Highlight:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- "textHighlights"
|
||||||
|
properties:
|
||||||
|
textHighlights:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/TextHighlight"
|
||||||
|
|
||||||
|
TextHighlight:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- "startIndex"
|
||||||
|
- "endIndex"
|
||||||
|
properties:
|
||||||
|
startIndex:
|
||||||
|
type: integer
|
||||||
|
endIndex:
|
||||||
|
type: integer
|
||||||
|
|
||||||
TimelinePrompt:
|
TimelinePrompt:
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,94 @@ components:
|
||||||
required:
|
required:
|
||||||
- "__typename"
|
- "__typename"
|
||||||
- "tweet"
|
- "tweet"
|
||||||
|
- "limitedActionResults"
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # TweetWithVisibilityResults
|
$ref: "./typename.yaml#/components/schemas/TypeName" # TweetWithVisibilityResults
|
||||||
tweet:
|
tweet:
|
||||||
$ref: "#/components/schemas/Tweet"
|
$ref: "#/components/schemas/Tweet"
|
||||||
|
limitedActionResults:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
tweetInterstitial:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitial"
|
||||||
|
|
||||||
|
# {'__typename': 'ContextualTweetInterstitial', 'displayType': 'NonCompliant', 'text': {'rtl': False, 'text': 'This Post violated the X Rules. However, X has determined that it may be in the public’s interest for the Post to remain accessible. Learn more', 'entities': [{'fromIndex': 133, 'toIndex': 143, 'ref': {'type': 'TimelineUrl', 'url': 'https://help.twitter.com/rules-and-policies/public-interest', 'urlType': 'ExternalUrl'}}]}, 'revealText': {'rtl': False, 'text': 'View', 'entities': []}}
|
||||||
|
TweetInterstitial:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "displayType"
|
||||||
|
- "text"
|
||||||
|
- "revealText"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # ContextualTweetInterstitial
|
||||||
|
displayType:
|
||||||
|
type: string
|
||||||
|
enum: [NonCompliant]
|
||||||
|
text:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitialText"
|
||||||
|
revealText:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitialRevealText"
|
||||||
|
|
||||||
|
TweetInterstitialText:
|
||||||
|
required:
|
||||||
|
- "rtl"
|
||||||
|
- "text"
|
||||||
|
- "entities"
|
||||||
|
properties:
|
||||||
|
rtl:
|
||||||
|
type: boolean
|
||||||
|
text:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitialTextEntity"
|
||||||
|
|
||||||
|
TweetInterstitialTextEntity:
|
||||||
|
required:
|
||||||
|
- "fromIndex"
|
||||||
|
- "toIndex"
|
||||||
|
- "ref"
|
||||||
|
properties:
|
||||||
|
fromIndex:
|
||||||
|
type: integer
|
||||||
|
toIndex:
|
||||||
|
type: integer
|
||||||
|
ref:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitialTextEntityRef"
|
||||||
|
|
||||||
|
TweetInterstitialTextEntityRef:
|
||||||
|
required:
|
||||||
|
- "type"
|
||||||
|
- "url"
|
||||||
|
- "urlType"
|
||||||
|
properties:
|
||||||
|
type:
|
||||||
|
type: string
|
||||||
|
enum: [TimelineUrl]
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
urlType:
|
||||||
|
type: string
|
||||||
|
enum: [ExternalUrl]
|
||||||
|
|
||||||
|
TweetInterstitialRevealText:
|
||||||
|
required:
|
||||||
|
- "rtl"
|
||||||
|
- "text"
|
||||||
|
- "entities"
|
||||||
|
properties:
|
||||||
|
rtl:
|
||||||
|
type: boolean
|
||||||
|
text:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/TweetInterstitialTextEntity"
|
||||||
|
|
||||||
TweetTombstone: #remove tweet
|
TweetTombstone: #remove tweet
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -45,7 +128,6 @@ components:
|
||||||
# - "source"
|
# - "source"
|
||||||
# - "legacy"
|
# - "legacy"
|
||||||
- "views"
|
- "views"
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
$ref: "./typename.yaml#/components/schemas/TypeName" # null | Tweet
|
$ref: "./typename.yaml#/components/schemas/TypeName" # null | Tweet
|
||||||
|
|
@ -80,6 +162,18 @@ components:
|
||||||
$ref: "#/components/schemas/NoteTweet"
|
$ref: "#/components/schemas/NoteTweet"
|
||||||
quick_promote_eligibility:
|
quick_promote_eligibility:
|
||||||
type: object
|
type: object
|
||||||
|
unified_card:
|
||||||
|
$ref: "#/components/schemas/UnifiedCard"
|
||||||
|
previous_counts:
|
||||||
|
$ref: "#/components/schemas/TweetPreviousCounts"
|
||||||
|
quotedRefResult:
|
||||||
|
$ref: "#/components/schemas/QuotedRefResult"
|
||||||
|
superFollowsReplyUserResult:
|
||||||
|
$ref: "#/components/schemas/SuperFollowsReplyUserResult"
|
||||||
|
has_birdwatch_notes:
|
||||||
|
type: boolean
|
||||||
|
author_community_relationship:
|
||||||
|
$ref: "#/components/schemas/AuthorCommunityRelationship"
|
||||||
|
|
||||||
TweetEditControl:
|
TweetEditControl:
|
||||||
properties:
|
properties:
|
||||||
|
|
@ -220,6 +314,299 @@ components:
|
||||||
type: string
|
type: string
|
||||||
enum: [Bold, Italic]
|
enum: [Bold, Italic]
|
||||||
|
|
||||||
|
UnifiedCard:
|
||||||
|
required:
|
||||||
|
- "card_fetch_state"
|
||||||
|
properties:
|
||||||
|
card_fetch_state:
|
||||||
|
type: string
|
||||||
|
enum: [NoCard]
|
||||||
|
|
||||||
|
TweetPreviousCounts:
|
||||||
|
required:
|
||||||
|
- "bookmark_count"
|
||||||
|
- "favorite_count"
|
||||||
|
- "quote_count"
|
||||||
|
- "reply_count"
|
||||||
|
- "retweet_count"
|
||||||
|
properties:
|
||||||
|
bookmark_count:
|
||||||
|
type: integer
|
||||||
|
favorite_count:
|
||||||
|
type: integer
|
||||||
|
quote_count:
|
||||||
|
type: integer
|
||||||
|
reply_count:
|
||||||
|
type: integer
|
||||||
|
retweet_count:
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
QuotedRefResult:
|
||||||
|
required:
|
||||||
|
- "result"
|
||||||
|
properties:
|
||||||
|
result:
|
||||||
|
$ref: "#/components/schemas/QuotedRefResultData"
|
||||||
|
|
||||||
|
QuotedRefResultData:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "rest_id"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # Tweet
|
||||||
|
rest_id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
|
||||||
|
SuperFollowsReplyUserResult:
|
||||||
|
required:
|
||||||
|
- "result"
|
||||||
|
properties:
|
||||||
|
result:
|
||||||
|
$ref: "#/components/schemas/SuperFollowsReplyUserResultData"
|
||||||
|
|
||||||
|
SuperFollowsReplyUserResultData:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "legacy"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./../schemas/typename.yaml#/components/schemas/TypeName" # User
|
||||||
|
legacy:
|
||||||
|
$ref: "#/components/schemas/SuperFollowsReplyUserResultLegacy"
|
||||||
|
|
||||||
|
SuperFollowsReplyUserResultLegacy:
|
||||||
|
required:
|
||||||
|
- "screen_name"
|
||||||
|
properties:
|
||||||
|
screen_name:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
AuthorCommunityRelationship:
|
||||||
|
required:
|
||||||
|
- "community_results"
|
||||||
|
properties:
|
||||||
|
community_results:
|
||||||
|
$ref: "#/components/schemas/Community"
|
||||||
|
role:
|
||||||
|
type: string
|
||||||
|
enum: [Member]
|
||||||
|
user_results:
|
||||||
|
$ref: "user.yaml#/components/schemas/UserResults"
|
||||||
|
|
||||||
|
Community:
|
||||||
|
required:
|
||||||
|
- "result"
|
||||||
|
properties:
|
||||||
|
result:
|
||||||
|
$ref: "#/components/schemas/CommunityData"
|
||||||
|
|
||||||
|
CommunityData:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "id_str"
|
||||||
|
- "name"
|
||||||
|
- "description"
|
||||||
|
- "question"
|
||||||
|
- "search_tags"
|
||||||
|
- "primary_community_topic"
|
||||||
|
- "actions"
|
||||||
|
- "admin_results"
|
||||||
|
- "creator_results"
|
||||||
|
- "invites_result"
|
||||||
|
- "join_policy"
|
||||||
|
- "invites_policy"
|
||||||
|
- "is_pinned"
|
||||||
|
- "members_facepile_results"
|
||||||
|
- "moderator_count"
|
||||||
|
- "member_count"
|
||||||
|
- "role"
|
||||||
|
- "rules"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # Community
|
||||||
|
id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
created_at:
|
||||||
|
type: integer
|
||||||
|
question:
|
||||||
|
type: string
|
||||||
|
search_tags:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
primary_community_topic:
|
||||||
|
$ref: "#/components/schemas/PrimaryCommunityTopic"
|
||||||
|
actions:
|
||||||
|
$ref: "#/components/schemas/CommunityActions"
|
||||||
|
admin_results:
|
||||||
|
$ref: "user.yaml#/components/schemas/UserResults"
|
||||||
|
creator_results:
|
||||||
|
$ref: "user.yaml#/components/schemas/UserResults"
|
||||||
|
invites_result:
|
||||||
|
$ref: "#/components/schemas/CommunityInvitesResult"
|
||||||
|
join_requests_result:
|
||||||
|
$ref: "#/components/schemas/CommunityJoinRequestsResult"
|
||||||
|
join_policy:
|
||||||
|
type: string
|
||||||
|
enum: [Open]
|
||||||
|
invites_policy:
|
||||||
|
type: string
|
||||||
|
enum: [MemberInvitesAllowed]
|
||||||
|
is_pinned:
|
||||||
|
type: boolean
|
||||||
|
members_facepile_results:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "user.yaml#/components/schemas/UserResults"
|
||||||
|
moderator_count:
|
||||||
|
type: integer
|
||||||
|
member_count:
|
||||||
|
type: integer
|
||||||
|
role:
|
||||||
|
type: string
|
||||||
|
enum: [NonMember]
|
||||||
|
rules:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/CommunityRule"
|
||||||
|
show_only_users_to_display:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
urls:
|
||||||
|
$ref: "#/components/schemas/CommunityUrls"
|
||||||
|
default_banner_media:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
custom_banner_media:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
viewer_relationship:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
|
||||||
|
PrimaryCommunityTopic:
|
||||||
|
required:
|
||||||
|
- "topic_id"
|
||||||
|
- "topic_name"
|
||||||
|
properties:
|
||||||
|
topic_id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
topic_name:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
CommunityActions:
|
||||||
|
required:
|
||||||
|
- "delete_action_result"
|
||||||
|
- "join_action_result"
|
||||||
|
- "leave_action_result"
|
||||||
|
- "pin_action_result"
|
||||||
|
properties:
|
||||||
|
delete_action_result:
|
||||||
|
$ref: "#/components/schemas/CommunityDeleteActionResult"
|
||||||
|
join_action_result:
|
||||||
|
$ref: "#/components/schemas/CommunityJoinActionResult"
|
||||||
|
leave_action_result:
|
||||||
|
$ref: "#/components/schemas/CommunityLeaveActionResult"
|
||||||
|
pin_action_result:
|
||||||
|
$ref: "#/components/schemas/CommunityPinActionResult"
|
||||||
|
|
||||||
|
CommunityDeleteActionResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "reason"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityDeleteActionUnavailable
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
enum: [Unavailable]
|
||||||
|
|
||||||
|
CommunityJoinActionResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityJoinAction
|
||||||
|
|
||||||
|
CommunityLeaveActionResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "reason"
|
||||||
|
- "message"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityLeaveActionUnavailable
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
enum: [ViewerNotMember]
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
CommunityPinActionResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityTweetPinActionUnavailable
|
||||||
|
|
||||||
|
CommunityInvitesResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
- "reason"
|
||||||
|
- "message"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityInvitesUnavailable
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
enum: [Unavailable]
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
CommunityJoinRequestsResult:
|
||||||
|
required:
|
||||||
|
- "__typename"
|
||||||
|
properties:
|
||||||
|
__typename:
|
||||||
|
$ref: "./typename.yaml#/components/schemas/TypeName" # CommunityJoinRequestsUnavailable
|
||||||
|
|
||||||
|
CommunityRule:
|
||||||
|
required:
|
||||||
|
- "rest_id"
|
||||||
|
- "name"
|
||||||
|
properties:
|
||||||
|
rest_id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
CommunityUrls:
|
||||||
|
required:
|
||||||
|
- "permalink"
|
||||||
|
properties:
|
||||||
|
permalink:
|
||||||
|
$ref: "#/components/schemas/CommunityUrlsPermalink"
|
||||||
|
|
||||||
|
CommunityUrlsPermalink:
|
||||||
|
required:
|
||||||
|
- "url"
|
||||||
|
properties:
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
BirdwatchPivot:
|
BirdwatchPivot:
|
||||||
required:
|
required:
|
||||||
- "destinationUrl"
|
- "destinationUrl"
|
||||||
|
|
@ -249,6 +636,8 @@ components:
|
||||||
iconType:
|
iconType:
|
||||||
type: string
|
type: string
|
||||||
enum: [BirdwatchV1Icon]
|
enum: [BirdwatchV1Icon]
|
||||||
|
callToAction:
|
||||||
|
$ref: "#/components/schemas/BirdwatchPivotCallToAction"
|
||||||
|
|
||||||
BirdwatchPivotFooter:
|
BirdwatchPivotFooter:
|
||||||
required:
|
required:
|
||||||
|
|
@ -311,6 +700,21 @@ components:
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/BirdwatchEntity"
|
$ref: "#/components/schemas/BirdwatchEntity"
|
||||||
|
|
||||||
|
BirdwatchPivotCallToAction:
|
||||||
|
# {'prompt': 'Do you find this helpful?', 'title': 'Rate it', 'destinationUrl': 'https://twitter.com/i/birdwatch/n/1710821689636934115'}
|
||||||
|
required:
|
||||||
|
- "prompt"
|
||||||
|
- "title"
|
||||||
|
- "destinationUrl"
|
||||||
|
properties:
|
||||||
|
prompt:
|
||||||
|
type: string
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
destinationUrl:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
TweetCard:
|
TweetCard:
|
||||||
properties:
|
properties:
|
||||||
rest_id:
|
rest_id:
|
||||||
|
|
@ -333,6 +737,50 @@ components:
|
||||||
items:
|
items:
|
||||||
$ref: "#/components/schemas/TweetCardLegacyBindingValue"
|
$ref: "#/components/schemas/TweetCardLegacyBindingValue"
|
||||||
|
|
||||||
|
# {'platform': {'audience': {'name': 'production'}, 'device': {'name': 'Swift', 'version': '12'}}}
|
||||||
|
card_platform:
|
||||||
|
$ref: "#/components/schemas/TweetCardPlatformData"
|
||||||
|
user_refs_results:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "user.yaml#/components/schemas/UserResults"
|
||||||
|
|
||||||
|
TweetCardPlatformData:
|
||||||
|
required:
|
||||||
|
- "platform"
|
||||||
|
properties:
|
||||||
|
platform:
|
||||||
|
$ref: "#/components/schemas/TweetCardPlatform"
|
||||||
|
|
||||||
|
TweetCardPlatform:
|
||||||
|
required:
|
||||||
|
- "audience"
|
||||||
|
- "device"
|
||||||
|
properties:
|
||||||
|
audience:
|
||||||
|
$ref: "#/components/schemas/TweetCardPlatformAudience"
|
||||||
|
device:
|
||||||
|
$ref: "#/components/schemas/TweetCardPlatformDevice"
|
||||||
|
|
||||||
|
TweetCardPlatformAudience:
|
||||||
|
required:
|
||||||
|
- "name"
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
enum: [production]
|
||||||
|
|
||||||
|
TweetCardPlatformDevice:
|
||||||
|
required:
|
||||||
|
- "name"
|
||||||
|
- "version"
|
||||||
|
properties:
|
||||||
|
name:
|
||||||
|
type: string # enum Swift
|
||||||
|
version:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
|
||||||
TweetCardLegacyBindingValue:
|
TweetCardLegacyBindingValue:
|
||||||
required:
|
required:
|
||||||
- "key"
|
- "key"
|
||||||
|
|
@ -355,6 +803,37 @@ components:
|
||||||
type: string
|
type: string
|
||||||
type:
|
type:
|
||||||
type: string
|
type: string
|
||||||
|
image_value:
|
||||||
|
$ref: "#/components/schemas/TweetCardLegacyBindingValueDataImage"
|
||||||
|
image_color_value:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
user_value:
|
||||||
|
$ref: "#/components/schemas/UserValue"
|
||||||
|
|
||||||
|
UserValue:
|
||||||
|
required:
|
||||||
|
- "id_str"
|
||||||
|
properties:
|
||||||
|
id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
|
||||||
|
TweetCardLegacyBindingValueDataImage:
|
||||||
|
required:
|
||||||
|
- "height"
|
||||||
|
- "width"
|
||||||
|
- "url"
|
||||||
|
properties:
|
||||||
|
height:
|
||||||
|
type: integer
|
||||||
|
width:
|
||||||
|
type: integer
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
alt:
|
||||||
|
type: string
|
||||||
|
|
||||||
TweetLegacy:
|
TweetLegacy:
|
||||||
required:
|
required:
|
||||||
|
|
@ -427,6 +906,32 @@ components:
|
||||||
$ref: "#/components/schemas/SelfThread"
|
$ref: "#/components/schemas/SelfThread"
|
||||||
extended_entities:
|
extended_entities:
|
||||||
$ref: "#/components/schemas/ExtendedEntities"
|
$ref: "#/components/schemas/ExtendedEntities"
|
||||||
|
scopes:
|
||||||
|
$ref: "#/components/schemas/TweetLegacyScopes"
|
||||||
|
in_reply_to_screen_name:
|
||||||
|
type: string
|
||||||
|
in_reply_to_status_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
in_reply_to_user_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
quoted_status_permalink:
|
||||||
|
$ref: "#/components/schemas/QuotedStatusPermalink"
|
||||||
|
quoted_status_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
conversation_control:
|
||||||
|
additionalProperties: true # todo
|
||||||
|
limited_actions:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "limited_replies"
|
||||||
|
- "community_tweet_non_member_public_community"
|
||||||
|
- "non_compliant"
|
||||||
|
- "dynamic_product_ad"
|
||||||
|
place:
|
||||||
|
additionalProperties: true # todo
|
||||||
|
|
||||||
SelfThread:
|
SelfThread:
|
||||||
required:
|
required:
|
||||||
|
|
@ -506,6 +1011,8 @@ components:
|
||||||
# - "features"
|
# - "features"
|
||||||
- "sizes"
|
- "sizes"
|
||||||
- "original_info"
|
- "original_info"
|
||||||
|
- "media_key"
|
||||||
|
- "ext_media_availability"
|
||||||
properties:
|
properties:
|
||||||
display_url:
|
display_url:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -535,6 +1042,47 @@ components:
|
||||||
$ref: "#/components/schemas/MediaSizes"
|
$ref: "#/components/schemas/MediaSizes"
|
||||||
original_info:
|
original_info:
|
||||||
$ref: "#/components/schemas/MediaOriginalInfo"
|
$ref: "#/components/schemas/MediaOriginalInfo"
|
||||||
|
media_key:
|
||||||
|
type: string
|
||||||
|
ext_media_availability:
|
||||||
|
$ref: "#/components/schemas/ExtMediaAvailability"
|
||||||
|
video_info:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
additional_media_info:
|
||||||
|
type: object
|
||||||
|
additionalProperties: true # todo
|
||||||
|
source_user_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
source_status_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
ext_alt_text:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
TweetLegacyScopes:
|
||||||
|
required:
|
||||||
|
- "followers"
|
||||||
|
properties:
|
||||||
|
followers:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
QuotedStatusPermalink:
|
||||||
|
required:
|
||||||
|
- "url"
|
||||||
|
- "expanded"
|
||||||
|
- "display"
|
||||||
|
properties:
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
expanded:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
display:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
ExtendedEntities:
|
ExtendedEntities:
|
||||||
required:
|
required:
|
||||||
|
|
@ -587,9 +1135,9 @@ components:
|
||||||
additional_media_info:
|
additional_media_info:
|
||||||
$ref: "#/components/schemas/AdditionalMediaInfo"
|
$ref: "#/components/schemas/AdditionalMediaInfo"
|
||||||
mediaStats:
|
mediaStats:
|
||||||
$ref: "#/components/schemas/mediaStats"
|
$ref: "#/components/schemas/MediaStats"
|
||||||
ext_media_availability:
|
ext_media_availability:
|
||||||
$ref: "#/components/schemas/extMediaAvailability"
|
$ref: "#/components/schemas/ExtMediaAvailability"
|
||||||
features:
|
features:
|
||||||
type: object
|
type: object
|
||||||
sizes:
|
sizes:
|
||||||
|
|
@ -598,6 +1146,14 @@ components:
|
||||||
$ref: "#/components/schemas/MediaOriginalInfo"
|
$ref: "#/components/schemas/MediaOriginalInfo"
|
||||||
video_info:
|
video_info:
|
||||||
$ref: "#/components/schemas/MediaVideoInfo"
|
$ref: "#/components/schemas/MediaVideoInfo"
|
||||||
|
source_user_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
source_status_id_str:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
ext_alt_text:
|
||||||
|
type: string
|
||||||
|
|
||||||
MediaOriginalInfo:
|
MediaOriginalInfo:
|
||||||
required:
|
required:
|
||||||
|
|
@ -665,15 +1221,40 @@ components:
|
||||||
properties:
|
properties:
|
||||||
monetizable:
|
monetizable:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
source_user:
|
||||||
|
$ref: "./user.yaml#/components/schemas/UserResultCore"
|
||||||
|
title: # null character
|
||||||
|
type: string
|
||||||
|
description: # null character
|
||||||
|
type: string
|
||||||
|
embeddable:
|
||||||
|
type: boolean
|
||||||
|
call_to_actions:
|
||||||
|
$ref: "#/components/schemas/AdditionalMediaInfoCallToActions"
|
||||||
|
|
||||||
mediaStats:
|
AdditionalMediaInfoCallToActions:
|
||||||
|
required:
|
||||||
|
- "visit_site"
|
||||||
|
properties:
|
||||||
|
visit_site:
|
||||||
|
$ref: "#/components/schemas/AdditionalMediaInfoCallToActionsVisitSite"
|
||||||
|
|
||||||
|
AdditionalMediaInfoCallToActionsVisitSite:
|
||||||
|
required:
|
||||||
|
- "url"
|
||||||
|
properties:
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
|
||||||
|
MediaStats:
|
||||||
required:
|
required:
|
||||||
- "viewCount"
|
- "viewCount"
|
||||||
properties:
|
properties:
|
||||||
viewCount:
|
viewCount:
|
||||||
type: integer
|
type: integer
|
||||||
|
|
||||||
extMediaAvailability:
|
ExtMediaAvailability:
|
||||||
# required:
|
# required:
|
||||||
# - "status"
|
# - "status"
|
||||||
properties:
|
properties:
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ components:
|
||||||
TimelineUser,
|
TimelineUser,
|
||||||
TimelineTimelineCursor,
|
TimelineTimelineCursor,
|
||||||
TweetWithVisibilityResults,
|
TweetWithVisibilityResults,
|
||||||
|
ContextualTweetInterstitial,
|
||||||
TimelineTimelineModule,
|
TimelineTimelineModule,
|
||||||
TweetTombstone,
|
TweetTombstone,
|
||||||
TimelinePrompt,
|
TimelinePrompt,
|
||||||
|
|
@ -23,4 +24,11 @@ components:
|
||||||
Tweet,
|
Tweet,
|
||||||
User,
|
User,
|
||||||
UserUnavailable,
|
UserUnavailable,
|
||||||
|
Community,
|
||||||
|
CommunityDeleteActionUnavailable,
|
||||||
|
CommunityJoinAction,
|
||||||
|
CommunityLeaveActionUnavailable,
|
||||||
|
CommunityTweetPinActionUnavailable,
|
||||||
|
CommunityInvitesUnavailable,
|
||||||
|
CommunityJoinRequestsUnavailable,
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ components:
|
||||||
- "super_follow_eligible"
|
- "super_follow_eligible"
|
||||||
- "super_followed_by"
|
- "super_followed_by"
|
||||||
- "super_following"
|
- "super_following"
|
||||||
|
- "profile_image_shape"
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
__typename:
|
__typename:
|
||||||
|
|
@ -73,6 +74,125 @@ components:
|
||||||
super_following:
|
super_following:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
profile_image_shape:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "Circle"
|
||||||
|
- "Square"
|
||||||
|
- "Hexagon"
|
||||||
|
professional:
|
||||||
|
$ref: "#/components/schemas/UserProfessional"
|
||||||
|
user_seed_tweet_count:
|
||||||
|
type: integer
|
||||||
|
highlights_info:
|
||||||
|
$ref: "#/components/schemas/UserHighlightsInfo"
|
||||||
|
creator_subscriptions_count:
|
||||||
|
type: integer
|
||||||
|
verification_info:
|
||||||
|
$ref: "#/components/schemas/UserVerificationInfo"
|
||||||
|
is_profile_translatable:
|
||||||
|
type: boolean
|
||||||
|
|
||||||
|
UserProfessional:
|
||||||
|
required:
|
||||||
|
- "rest_id"
|
||||||
|
- "professional_type"
|
||||||
|
- "category"
|
||||||
|
properties:
|
||||||
|
rest_id:
|
||||||
|
type: string
|
||||||
|
pattern: "^[0-9]+$"
|
||||||
|
professional_type:
|
||||||
|
type: string
|
||||||
|
enum: ["Business", "Creator"]
|
||||||
|
category:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/UserProfessionalCategory"
|
||||||
|
|
||||||
|
UserProfessionalCategory:
|
||||||
|
required:
|
||||||
|
- "id"
|
||||||
|
- "name"
|
||||||
|
- "icon_name"
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
name:
|
||||||
|
type: string # enum
|
||||||
|
icon_name:
|
||||||
|
type: string # IconBriefcaseStroke ?
|
||||||
|
|
||||||
|
UserHighlightsInfo:
|
||||||
|
required:
|
||||||
|
- "can_highlight_tweets"
|
||||||
|
- "highlighted_tweets"
|
||||||
|
properties:
|
||||||
|
can_highlight_tweets:
|
||||||
|
type: boolean
|
||||||
|
highlighted_tweets:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
UserVerificationInfo:
|
||||||
|
required:
|
||||||
|
- "is_identity_verified"
|
||||||
|
properties:
|
||||||
|
is_identity_verified:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
reason:
|
||||||
|
$ref: "#/components/schemas/UserVerificationInfoReason"
|
||||||
|
|
||||||
|
UserVerificationInfoReason:
|
||||||
|
required:
|
||||||
|
- "description"
|
||||||
|
- "verified_since_msec"
|
||||||
|
- "override_verified_year"
|
||||||
|
properties:
|
||||||
|
description:
|
||||||
|
$ref: "#/components/schemas/UserVerificationInfoReasonDescription"
|
||||||
|
verified_since_msec:
|
||||||
|
type: string
|
||||||
|
pattern: "^-?[0-9]+$"
|
||||||
|
override_verified_year:
|
||||||
|
type: integer
|
||||||
|
|
||||||
|
UserVerificationInfoReasonDescription:
|
||||||
|
required:
|
||||||
|
- "text"
|
||||||
|
- "entities"
|
||||||
|
properties:
|
||||||
|
text:
|
||||||
|
type: string
|
||||||
|
entities:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/UserVerificationInfoReasonDescriptionEntities"
|
||||||
|
|
||||||
|
UserVerificationInfoReasonDescriptionEntities:
|
||||||
|
required:
|
||||||
|
- "from_index"
|
||||||
|
- "to_index"
|
||||||
|
- "ref"
|
||||||
|
properties:
|
||||||
|
from_index:
|
||||||
|
type: integer
|
||||||
|
to_index:
|
||||||
|
type: integer
|
||||||
|
ref:
|
||||||
|
$ref: "#/components/schemas/UserVerificationInfoReasonDescriptionEntitiesRef"
|
||||||
|
|
||||||
|
UserVerificationInfoReasonDescriptionEntitiesRef:
|
||||||
|
required:
|
||||||
|
- "url"
|
||||||
|
- "url_type"
|
||||||
|
properties:
|
||||||
|
url:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
url_type:
|
||||||
|
type: string
|
||||||
|
enum: ["ExternalUrl"]
|
||||||
|
|
||||||
UserLegacy:
|
UserLegacy:
|
||||||
required:
|
required:
|
||||||
|
|
@ -219,6 +339,13 @@ components:
|
||||||
want_retweets:
|
want_retweets:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
|
verified_type:
|
||||||
|
type: string
|
||||||
|
enum: ["Business", "Government"]
|
||||||
|
withheld_in_countries:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string # enum DE
|
||||||
|
|
||||||
UserUnavailable:
|
UserUnavailable:
|
||||||
required:
|
required:
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,13 @@ import logging
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
|
import warnings
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
import aenum
|
import aenum
|
||||||
import openapi_client as pt
|
import openapi_client as pt
|
||||||
|
|
||||||
|
warnings.filterwarnings("ignore")
|
||||||
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(levelname)s %(message)s")
|
logging.basicConfig(level=logging.DEBUG, format="%(asctime)s %(levelname)s %(message)s")
|
||||||
logger = logging.getLogger("test_serialize")
|
logger = logging.getLogger("test_serialize")
|
||||||
|
|
||||||
|
|
@ -19,6 +21,7 @@ ERROR_UNCATCHED = os.environ.get("ERROR_UNCATCHED", "false").lower() == "true"
|
||||||
SLEEP_TIME = float(os.environ.get("SLEEP", "0"))
|
SLEEP_TIME = float(os.environ.get("SLEEP", "0"))
|
||||||
CUESOR_TEST_COUNT = int(os.environ.get("CUESOR_TEST_COUNT", "3"))
|
CUESOR_TEST_COUNT = int(os.environ.get("CUESOR_TEST_COUNT", "3"))
|
||||||
STRICT_MODE = os.environ.get("STRICT_MODE", "false").lower() == "true"
|
STRICT_MODE = os.environ.get("STRICT_MODE", "false").lower() == "true"
|
||||||
|
MULTI_THREAD = os.environ.get("MULTI_THREAD", "true").lower() == "true"
|
||||||
|
|
||||||
|
|
||||||
def get_key(snake_str):
|
def get_key(snake_str):
|
||||||
|
|
@ -62,13 +65,25 @@ def get_kwargs(key, additional):
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
|
|
||||||
def match_rate_zero(key):
|
def match_rate_zero(a, b, base, key):
|
||||||
|
def get(obj, key):
|
||||||
|
if isinstance(obj, list):
|
||||||
|
return get(obj[key[0]], key[1:])
|
||||||
|
if obj.__dict__.get("actual_instance") is not None:
|
||||||
|
return get(obj.actual_instance, key)
|
||||||
|
if len(key) == 0:
|
||||||
|
return obj
|
||||||
|
return get(super_get(obj.__dict__, key[0]), key[1:])
|
||||||
|
|
||||||
if STRICT_MODE:
|
if STRICT_MODE:
|
||||||
raise Exception(f"Strict mode: {key}")
|
obj_name = type(get(base, key[:-1]))
|
||||||
|
obj_key = f"{obj_name.__name__}.{key[-1]}"
|
||||||
|
raise Exception(f"Not defined: {obj_key}\nContents: {b}")
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def match_rate(a, b, key=""):
|
def match_rate(a, b, base, key=""):
|
||||||
if isinstance(a, aenum.Enum):
|
if isinstance(a, aenum.Enum):
|
||||||
a = a.value
|
a = a.value
|
||||||
if isinstance(b, aenum.Enum):
|
if isinstance(b, aenum.Enum):
|
||||||
|
|
@ -77,26 +92,30 @@ def match_rate(a, b, key=""):
|
||||||
return 1
|
return 1
|
||||||
if a is False and b is None:
|
if a is False and b is None:
|
||||||
return 1
|
return 1
|
||||||
if isinstance(a, list):
|
if a is None and isinstance(b, list) and len(b) == 0:
|
||||||
data = [match_rate(a[i], b[i], key=f"{key}[{i}]") for i in range(len(a))]
|
return 1
|
||||||
|
if isinstance(a, list) and b is None and len(a) == 0:
|
||||||
|
return 1
|
||||||
|
if a is None and isinstance(b, dict) and len(b) == 0:
|
||||||
|
return 1
|
||||||
|
if isinstance(a, dict) and b is None and len(a) == 0:
|
||||||
|
return 1
|
||||||
|
if isinstance(a, dict) and isinstance(b, dict):
|
||||||
if len(a) == 0 and len(b) == 0:
|
if len(a) == 0 and len(b) == 0:
|
||||||
return 1
|
return 1
|
||||||
if len(a) == 0 or len(b) == 0:
|
marge_key = set(a.keys()) | set(b.keys())
|
||||||
return match_rate_zero(key)
|
data = [match_rate(a.get(k), b.get(k), base, [*key, k]) for k in marge_key]
|
||||||
|
return sum(data) / len(b)
|
||||||
data = [match_rate(a.get(k), b.get(k), key=f"{key}.{k}") for k in a.keys()]
|
|
||||||
|
|
||||||
return sum(data) / len(a)
|
|
||||||
if isinstance(a, list) and isinstance(b, list):
|
if isinstance(a, list) and isinstance(b, list):
|
||||||
if len(a) == 0 and len(b) == 0:
|
if len(a) == 0 and len(b) == 0:
|
||||||
return 1
|
return 1
|
||||||
if len(a) != len(b):
|
if len(a) != len(b):
|
||||||
return match_rate_zero(key)
|
return match_rate_zero(a, b, base, key)
|
||||||
data = [match_rate(a[i], b[i], key=f"{key}[{i}]") for i in range(len(a))]
|
data = [match_rate(a[i], b[i], base, [*key, i]) for i in range(len(a))]
|
||||||
return sum(data) / len(a)
|
return sum(data) / len(a)
|
||||||
if a == b:
|
if a == b:
|
||||||
return 1
|
return 1
|
||||||
return match_rate_zero(key)
|
return match_rate_zero(a, b, base, key)
|
||||||
|
|
||||||
|
|
||||||
def save_cache(data):
|
def save_cache(data):
|
||||||
|
|
@ -106,12 +125,29 @@ def save_cache(data):
|
||||||
json.dump(data, f, indent=4)
|
json.dump(data, f, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
def super_get(obj: dict, key: str):
|
||||||
|
keys = [
|
||||||
|
key,
|
||||||
|
"".join(["_" + c.lower() if c.isupper() else c for c in key]).lstrip("_"),
|
||||||
|
]
|
||||||
|
|
||||||
|
for k in keys:
|
||||||
|
if obj.get(k) is not None:
|
||||||
|
return obj[k]
|
||||||
|
raise KeyError(key)
|
||||||
|
|
||||||
|
|
||||||
def task_callback(file, thread=True):
|
def task_callback(file, thread=True):
|
||||||
try:
|
try:
|
||||||
with open(file, "r") as f:
|
with open(file, "r") as f:
|
||||||
cache = json.load(f)
|
cache = json.load(f)
|
||||||
data = pt.__dict__[cache["type"]].from_json(cache["raw"])
|
data = pt.__dict__[cache["type"]].from_json(cache["raw"])
|
||||||
rate = match_rate(data.to_dict(), json.loads(cache["raw"]))
|
|
||||||
|
rate = match_rate(
|
||||||
|
data.to_dict(),
|
||||||
|
json.loads(cache["raw"]),
|
||||||
|
base=data,
|
||||||
|
)
|
||||||
return rate, file
|
return rate, file
|
||||||
except Exception:
|
except Exception:
|
||||||
if thread:
|
if thread:
|
||||||
|
|
@ -149,13 +185,21 @@ if __name__ == "__main__":
|
||||||
placeholder = json.load(f)
|
placeholder = json.load(f)
|
||||||
|
|
||||||
fail = []
|
fail = []
|
||||||
|
files = glob.glob("cache/*.json")
|
||||||
|
if MULTI_THREAD:
|
||||||
with concurrent.futures.ProcessPoolExecutor() as executor:
|
with concurrent.futures.ProcessPoolExecutor() as executor:
|
||||||
tasks = [executor.submit(task_callback, x) for x in glob.glob("cache/*.json")]
|
tasks = [executor.submit(task_callback, x) for x in files]
|
||||||
for task in concurrent.futures.as_completed(tasks):
|
for task in concurrent.futures.as_completed(tasks):
|
||||||
rate, file = task.result()
|
rate, file = task.result()
|
||||||
if rate < 1:
|
if rate < 1:
|
||||||
fail.append(file)
|
fail.append(file)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
|
else:
|
||||||
|
for file in files:
|
||||||
|
rate, file = task_callback(file, thread=False)
|
||||||
|
if rate < 1:
|
||||||
|
fail.append(file)
|
||||||
|
logger.info(f"Match rate: {rate}")
|
||||||
|
|
||||||
logger.info(f"Fail: {len(fail)} / {len(glob.glob('cache/*.json'))}")
|
logger.info(f"Fail: {len(fail)} / {len(glob.glob('cache/*.json'))}")
|
||||||
|
|
||||||
|
|
@ -212,7 +256,11 @@ if __name__ == "__main__":
|
||||||
new_cursor = set(get_cursor(data, find_cursor)) - cursor_history
|
new_cursor = set(get_cursor(data, find_cursor)) - cursor_history
|
||||||
cursor_list.update(new_cursor)
|
cursor_list.update(new_cursor)
|
||||||
|
|
||||||
rate = match_rate(data, json.loads(res.raw_data))
|
rate = match_rate(
|
||||||
|
data,
|
||||||
|
json.loads(res.raw_data),
|
||||||
|
res.data,
|
||||||
|
)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
|
|
||||||
if data.get("errors") is not None:
|
if data.get("errors") is not None:
|
||||||
|
|
@ -233,7 +281,11 @@ if __name__ == "__main__":
|
||||||
res = pt.UserApi(api_client).get_user_by_screen_name_with_http_info(**kwargs)
|
res = pt.UserApi(api_client).get_user_by_screen_name_with_http_info(**kwargs)
|
||||||
data = res.data.to_dict()
|
data = res.data.to_dict()
|
||||||
|
|
||||||
rate = match_rate(data, json.loads(res.raw_data))
|
rate = match_rate(
|
||||||
|
data,
|
||||||
|
json.loads(res.raw_data),
|
||||||
|
res.data,
|
||||||
|
)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
screen_name = data["data"]["user"]["result"]["legacy"]["screen_name"]
|
screen_name = data["data"]["user"]["result"]["legacy"]["screen_name"]
|
||||||
if not screen_name == "a810810931931":
|
if not screen_name == "a810810931931":
|
||||||
|
|
@ -248,7 +300,11 @@ if __name__ == "__main__":
|
||||||
res = pt.TweetApi(api_client).get_user_tweets_with_http_info(**kwargs)
|
res = pt.TweetApi(api_client).get_user_tweets_with_http_info(**kwargs)
|
||||||
data = res.data.to_dict()
|
data = res.data.to_dict()
|
||||||
|
|
||||||
rate = match_rate(data, json.loads(res.raw_data))
|
rate = match_rate(
|
||||||
|
data,
|
||||||
|
json.loads(res.raw_data),
|
||||||
|
res.data,
|
||||||
|
)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
@ -267,7 +323,11 @@ if __name__ == "__main__":
|
||||||
res = pt.TweetApi(api_client).get_tweet_detail_with_http_info(**kwargs)
|
res = pt.TweetApi(api_client).get_tweet_detail_with_http_info(**kwargs)
|
||||||
data = res.data.to_dict()
|
data = res.data.to_dict()
|
||||||
|
|
||||||
rate = match_rate(data, json.loads(res.raw_data))
|
rate = match_rate(
|
||||||
|
data,
|
||||||
|
json.loads(res.raw_data),
|
||||||
|
res.data,
|
||||||
|
)
|
||||||
logger.info(f"Match rate: {rate}")
|
logger.info(f"Match rate: {rate}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
error_dump(e)
|
error_dump(e)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue