From 790efd0194ee6d70ceaa04456d996b27258dcafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=B5=E3=81=81?= Date: Thu, 15 Feb 2024 14:41:50 +0900 Subject: [PATCH] add removeLegacyDiscriminatorBehavior option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ふぁ --- .../compatible_discriminator/openapi-3.0.yaml | 6140 +++++++++++++++++ tools/build_config.py | 30 +- tools/hooks.py | 10 +- 3 files changed, 6176 insertions(+), 4 deletions(-) create mode 100644 dist/compatible_discriminator/openapi-3.0.yaml diff --git a/dist/compatible_discriminator/openapi-3.0.yaml b/dist/compatible_discriminator/openapi-3.0.yaml new file mode 100644 index 0000000..eceb0d0 --- /dev/null +++ b/dist/compatible_discriminator/openapi-3.0.yaml @@ -0,0 +1,6140 @@ +components: + schemas: + AdditionalMediaInfo: + properties: + call_to_actions: + $ref: '#/components/schemas/AdditionalMediaInfoCallToActions' + description: + type: string + embeddable: + type: boolean + monetizable: + type: boolean + source_user: + $ref: '#/components/schemas/UserResultCore' + title: + type: string + required: + - monetizable + AdditionalMediaInfoCallToActions: + properties: + visit_site: + $ref: '#/components/schemas/AdditionalMediaInfoCallToActionsUrl' + watch_now: + $ref: '#/components/schemas/AdditionalMediaInfoCallToActionsUrl' + AdditionalMediaInfoCallToActionsUrl: + properties: + url: + format: uri + type: string + required: + - url + AuthorCommunityRelationship: + properties: + community_results: + $ref: '#/components/schemas/Community' + role: + enum: + - Member + type: string + user_results: + $ref: '#/components/schemas/UserResults' + required: + - community_results + BirdwatchEntity: + properties: + fromIndex: + type: integer + ref: + $ref: '#/components/schemas/BirdwatchEntityRef' + toIndex: + type: integer + required: + - fromIndex + - toIndex + - ref + BirdwatchEntityRef: + properties: + text: + type: string + type: + enum: + - TimelineUrl + - TimelineRichTextHashtag + type: string + url: + format: uri + type: string + urlType: + enum: + - ExternalUrl + type: string + required: + - type + BirdwatchPivot: + properties: + callToAction: + $ref: '#/components/schemas/BirdwatchPivotCallToAction' + destinationUrl: + format: uri + type: string + footer: + $ref: '#/components/schemas/BirdwatchPivotFooter' + iconType: + enum: + - BirdwatchV1Icon + type: string + note: + $ref: '#/components/schemas/BirdwatchPivotNote' + shorttitle: + type: string + subtitle: + $ref: '#/components/schemas/BirdwatchPivotSubtitle' + title: + type: string + visualStyle: + enum: + - Default + type: string + required: + - destinationUrl + - footer + - note + - subtitle + - title + - shorttitle + - iconType + BirdwatchPivotCallToAction: + properties: + destinationUrl: + format: uri + type: string + prompt: + type: string + title: + type: string + required: + - prompt + - title + - destinationUrl + BirdwatchPivotFooter: + properties: + entities: + items: + $ref: '#/components/schemas/BirdwatchEntity' + type: array + text: + type: string + required: + - text + - entities + BirdwatchPivotNote: + properties: + rest_id: + pattern: ^[0-9]+$ + type: string + required: + - rest_id + BirdwatchPivotSubtitle: + properties: + entities: + items: + $ref: '#/components/schemas/BirdwatchEntity' + type: array + text: + type: string + required: + - text + - entities + BookmarksResponse: + properties: + data: + $ref: '#/components/schemas/BookmarksResponseData' + required: + - data + BookmarksResponseData: + properties: + bookmark_timeline_v2: + $ref: '#/components/schemas/BookmarksTimeline' + required: + - bookmark_timeline_v2 + BookmarksTimeline: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + required: + - timeline + Callback: + properties: + endpoint: + format: uri + type: string + required: + - endpoint + ClientEventInfo: + properties: + component: + type: string + details: + additionalProperties: true + type: object + element: + type: string + CommunitiesActions: + properties: + create: + type: boolean + required: + - create + type: object + Community: + properties: + result: + $ref: '#/components/schemas/CommunityData' + required: + - result + CommunityActions: + 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' + required: + - delete_action_result + - join_action_result + - leave_action_result + - pin_action_result + CommunityData: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + actions: + $ref: '#/components/schemas/CommunityActions' + admin_results: + $ref: '#/components/schemas/UserResults' + created_at: + type: integer + creator_results: + $ref: '#/components/schemas/UserResults' + custom_banner_media: + additionalProperties: true + type: object + default_banner_media: + additionalProperties: true + type: object + description: + type: string + id_str: + pattern: ^[0-9]+$ + type: string + invites_policy: + enum: + - MemberInvitesAllowed + type: string + invites_result: + $ref: '#/components/schemas/CommunityInvitesResult' + is_pinned: + type: boolean + join_policy: + enum: + - Open + type: string + join_requests_result: + $ref: '#/components/schemas/CommunityJoinRequestsResult' + member_count: + type: integer + members_facepile_results: + items: + $ref: '#/components/schemas/UserResults' + type: array + moderator_count: + type: integer + name: + type: string + primary_community_topic: + $ref: '#/components/schemas/PrimaryCommunityTopic' + question: + type: string + role: + enum: + - NonMember + type: string + rules: + items: + $ref: '#/components/schemas/CommunityRule' + type: array + search_tags: + items: + type: string + type: array + show_only_users_to_display: + items: + type: string + type: array + urls: + $ref: '#/components/schemas/CommunityUrls' + viewer_relationship: + additionalProperties: true + type: object + required: + - __typename + - id_str + - name + - description + - question + - search_tags + - actions + - admin_results + - creator_results + - invites_result + - join_policy + - invites_policy + - is_pinned + - members_facepile_results + - moderator_count + - member_count + - role + - rules + CommunityDeleteActionResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + reason: + enum: + - Unavailable + type: string + required: + - __typename + - reason + CommunityInvitesResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + message: + type: string + reason: + enum: + - Unavailable + type: string + required: + - __typename + - reason + - message + CommunityJoinActionResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + required: + - __typename + CommunityJoinRequestsResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + required: + - __typename + CommunityLeaveActionResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + message: + type: string + reason: + enum: + - ViewerNotMember + type: string + required: + - __typename + - reason + - message + CommunityPinActionResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + required: + - __typename + CommunityRule: + properties: + description: + type: string + name: + type: string + rest_id: + pattern: ^[0-9]+$ + type: string + required: + - rest_id + - name + CommunityUrls: + properties: + permalink: + $ref: '#/components/schemas/CommunityUrlsPermalink' + required: + - permalink + CommunityUrlsPermalink: + properties: + url: + format: uri + type: string + required: + - url + ContentEntryType: + enum: + - TimelineTimelineItem + - TimelineTimelineCursor + - TimelineTimelineModule + type: string + ContentItemType: + enum: + - TimelineTweet + - TimelineTimelineCursor + - TimelineUser + - TimelinePrompt + - TimelineMessagePrompt + - TimelineCommunity + type: string + ContentUnion: + discriminator: + mapping": + TimelineTimelineCursor: '#/components/schemas/TimelineTimelineCursor' + TimelineTimelineItem: '#/components/schemas/TimelineTimelineItem' + TimelineTimelineModule: '#/components/schemas/TimelineTimelineModule' + propertyName: entryType + oneOf: + - $ref: '#/components/schemas/TimelineTimelineItem' + - $ref: '#/components/schemas/TimelineTimelineModule' + - $ref: '#/components/schemas/TimelineTimelineCursor' + CoverCta: + properties: + Text: + type: string + buttonStyle: + enum: + - Primary + type: string + callbacks: + items: + $ref: '#/components/schemas/Callback' + type: array + clientEventInfo: + $ref: '#/components/schemas/CtaClientEventInfo' + ctaBehavior: + $ref: '#/components/schemas/TimelineCoverBehavior' + required: + - text + - ctaBehavior + - callbacks + - clientEventInfo + CreateRetweet: + properties: + result: + $ref: '#/components/schemas/Retweet' + required: + - result + CreateRetweetResponse: + properties: + data: + $ref: '#/components/schemas/CreateRetweetResponseData' + required: + - data + CreateRetweetResponseData: + properties: + create_retweet: + $ref: '#/components/schemas/CreateRetweetResponseResult' + required: + - create_retweet + CreateRetweetResponseResult: + properties: + retweet_results: + $ref: '#/components/schemas/CreateRetweet' + required: + - retweet_results + CreateTweet: + properties: + result: + $ref: '#/components/schemas/Tweet' + required: + - result + CreateTweetResponse: + properties: + data: + $ref: '#/components/schemas/CreateTweetResponseData' + required: + - data + CreateTweetResponseData: + properties: + create_tweet: + $ref: '#/components/schemas/CreateTweetResponseResult' + required: + - create_tweet + CreateTweetResponseResult: + properties: + tweet_results: + $ref: '#/components/schemas/CreateTweet' + required: + - tweet_results + CtaClientEventInfo: + properties: + action: + enum: + - primary_cta + type: string + required: + - action + CursorType: + enum: + - Top + - Bottom + - ShowMore + - ShowMoreThreads + - Gap + type: string + DeleteRetweet: + properties: + result: + items: + $ref: '#/components/schemas/Retweet' + type: object + required: + - result + DeleteRetweetResponse: + properties: + data: + $ref: '#/components/schemas/DeleteRetweetResponseData' + required: + - data + DeleteRetweetResponseData: + properties: + create_retweet: + $ref: '#/components/schemas/CreateRetweetResponseResult' + required: + - unretweet + DeleteRetweetResponseResult: + properties: + retweet_results: + $ref: '#/components/schemas/DeleteRetweet' + required: + - source_tweet_results + DeleteTweetResponse: + properties: + data: + $ref: '#/components/schemas/DeleteTweetResponseData' + required: + - data + DeleteTweetResponseData: + properties: + delete_retweet: + $ref: '#/components/schemas/DeleteTweetResponseResult' + required: + - delete_tweet + DeleteTweetResponseResult: + properties: + tweet_results: + type: object + required: + - tweet_results + DisplayTreatment: + properties: + actionText: + type: string + required: + - actionText + type: object + DisplayType: + enum: + - Vertical + - VerticalConversation + - VerticalGrid + - Carousel + type: string + Entities: + properties: + hashtags: + items: + $ref: '#/components/schemas/Hashtag' + type: array + media: + items: + $ref: '#/components/schemas/Media' + type: array + symbols: + items: + $ref: '#/components/schemas/Symbol' + type: array + urls: + items: + $ref: '#/components/schemas/Url' + type: array + user_mentions: + items: + $ref: '#/components/schemas/UserMention' + type: array + required: + - hashtags + - symbols + - user_mentions + - urls + Error: + properties: + code: + type: integer + extensions: + $ref: '#/components/schemas/ErrorExtensions' + kind: + type: string + locations: + items: + $ref: '#/components/schemas/Location' + type: array + message: + type: string + name: + type: string + path: + items: + type: string + type: array + retry_after: + type: integer + source: + type: string + tracing: + $ref: '#/components/schemas/Tracing' + required: + - message + - locations + - path + - extensions + - code + - kind + - name + - source + - retry_after + - tracing + type: object + ErrorExtensions: + properties: + code: + type: integer + kind: + type: string + name: + type: string + retry_after: + type: integer + source: + type: string + tracing: + $ref: '#/components/schemas/Tracing' + required: + - name + - source + - retry_after + - code + - kind + - tracing + type: object + ErrorResponse: + properties: + errors: + $ref: '#/components/schemas/Errors' + required: + - errors + - data + type: object + Errors: + properties: + errors: + items: + $ref: '#/components/schemas/Error' + type: array + required: + - errors + type: object + ExtMediaAvailability: + properties: + reason: + type: string + status: + enum: + - Available + - Unavailable + type: string + ExtendedEntities: + properties: + media: + items: + $ref: '#/components/schemas/MediaExtended' + type: array + required: + - media + Extensions: + properties: + code: + type: integer + kind: + type: string + name: + type: string + source: + type: string + tracing: + $ref: '#/components/schemas/Tracing' + required: + - name + - source + - code + - kind + - tracing + type: object + FavoriteTweet: + properties: + favorite_tweet: + type: string + required: + - favorite_tweet + FavoriteTweetResponseData: + properties: + data: + $ref: '#/components/schemas/FavoriteTweet' + required: + - data + FeedbackInfo: + properties: + feedbackKeys: + items: + type: string + type: array + required: + - feedbackType + FollowResponse: + properties: + data: + $ref: '#/components/schemas/FollowResponseData' + required: + - data + FollowResponseData: + properties: + user: + $ref: '#/components/schemas/FollowResponseUser' + required: + - user + FollowResponseResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + timeline: + $ref: '#/components/schemas/FollowTimeline' + required: + - __typename + - timeline + FollowResponseUser: + properties: + result: + $ref: '#/components/schemas/FollowResponseResult' + required: + - result + FollowTimeline: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + required: + - timeline + Hashtag: + additionalProperties: true + type: object + Highlight: + properties: + textHighlights: + items: + $ref: '#/components/schemas/TextHighlight' + type: array + required: + - textHighlights + type: object + HomeTimelineHome: + properties: + home_timeline_urt: + $ref: '#/components/schemas/Timeline' + required: + - home_timeline_urt + HomeTimelineResponseData: + properties: + home: + $ref: '#/components/schemas/HomeTimelineHome' + required: + - home + InstructionType: + enum: + - TimelineAddEntries + - TimelineAddToModule + - TimelineClearCache + - TimelinePinEntry + - TimelineReplaceEntry + - TimelineShowAlert + - TimelineTerminateTimeline + - TimelineShowCover + type: string + InstructionUnion: + discriminator: + mapping": + TimelineAddEntries: '#/components/schemas/TimelineAddEntries' + TimelineAddToModule: '#/components/schemas/TimelineAddToModule' + TimelineClearCache: '#/components/schemas/TimelineClearCache' + TimelinePinEntry: '#/components/schemas/TimelinePinEntry' + TimelineReplaceEntry: '#/components/schemas/TimelineReplaceEntry' + TimelineShowAlert: '#/components/schemas/TimelineShowAlert' + TimelineShowCover: '#/components/schemas/TimelineShowCover' + TimelineTerminateTimeline: '#/components/schemas/TimelineTerminateTimeline' + propertyName: type + oneOf: + - $ref: '#/components/schemas/TimelineAddEntries' + - $ref: '#/components/schemas/TimelineAddToModule' + - $ref: '#/components/schemas/TimelineClearCache' + - $ref: '#/components/schemas/TimelinePinEntry' + - $ref: '#/components/schemas/TimelineReplaceEntry' + - $ref: '#/components/schemas/TimelineShowAlert' + - $ref: '#/components/schemas/TimelineTerminateTimeline' + - $ref: '#/components/schemas/TimelineShowCover' + ItemContentUnion: + discriminator: + mapping": + TimelineCommunity: '#/components/schemas/TimelineCommunity' + TimelineMessagePrompt: '#/components/schemas/TimelineMessagePrompt' + TimelinePrompt: '#/components/schemas/TimelinePrompt' + TimelineTimelineCursor: '#/components/schemas/TimelineTimelineCursor' + TimelineTweet: '#/components/schemas/TimelineTweet' + TimelineUser: '#/components/schemas/TimelineUser' + propertyName: __typename + oneOf: + - $ref: '#/components/schemas/TimelineTweet' + - $ref: '#/components/schemas/TimelineTimelineCursor' + - $ref: '#/components/schemas/TimelineUser' + - $ref: '#/components/schemas/TimelinePrompt' + - $ref: '#/components/schemas/TimelineMessagePrompt' + - $ref: '#/components/schemas/TimelineCommunity' + ItemResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + result: + $ref: '#/components/schemas/TweetUnion' + ListLatestTweetsTimelineResponse: + properties: + data: + $ref: '#/components/schemas/ListTweetsTimelineData' + required: + - data + ListTweetsTimeline: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + ListTweetsTimelineData: + properties: + list: + $ref: '#/components/schemas/ListTweetsTimelineList' + required: + - list + ListTweetsTimelineList: + properties: + tweets_timeline: + $ref: '#/components/schemas/ListTweetsTimeline' + required: + - tweets_timeline + Location: + properties: + column: + type: integer + line: + type: integer + required: + - line + - column + type: object + Media: + properties: + additional_media_info: + additionalProperties: true + type: object + display_url: + format: uri + type: string + expanded_url: + format: uri + type: string + ext_alt_text: + type: string + ext_media_availability: + $ref: '#/components/schemas/ExtMediaAvailability' + features: + type: object + id_str: + pattern: ^[0-9]+$ + type: string + indices: + items: + type: integer + type: array + media_key: + type: string + media_url_https: + format: uri + type: string + original_info: + $ref: '#/components/schemas/MediaOriginalInfo' + sensitive_media_warning: + $ref: '#/components/schemas/SensitiveMediaWarning' + sizes: + $ref: '#/components/schemas/MediaSizes' + source_status_id_str: + pattern: ^[0-9]+$ + type: string + source_user_id_str: + pattern: ^[0-9]+$ + type: string + type: + enum: + - photo + - video + - animated_gif + type: string + url: + format: uri + type: string + video_info: + additionalProperties: true + type: object + required: + - display_url + - expanded_url + - id_str + - indices + - media_url_https + - type + - url + - sizes + - original_info + - media_key + - ext_media_availability + MediaExtended: + properties: + additional_media_info: + $ref: '#/components/schemas/AdditionalMediaInfo' + display_url: + format: uri + type: string + expanded_url: + format: uri + type: string + ext_alt_text: + type: string + ext_media_availability: + $ref: '#/components/schemas/ExtMediaAvailability' + features: + type: object + id_str: + pattern: ^[0-9]+$ + type: string + indices: + items: + type: integer + type: array + mediaStats: + $ref: '#/components/schemas/MediaStats' + media_key: + type: string + media_url_https: + format: uri + type: string + original_info: + $ref: '#/components/schemas/MediaOriginalInfo' + sensitive_media_warning: + $ref: '#/components/schemas/SensitiveMediaWarning' + sizes: + $ref: '#/components/schemas/MediaSizes' + source_status_id_str: + pattern: ^[0-9]+$ + type: string + source_user_id_str: + pattern: ^[0-9]+$ + type: string + type: + enum: + - photo + - video + - animated_gif + type: string + url: + format: uri + type: string + video_info: + $ref: '#/components/schemas/MediaVideoInfo' + required: + - display_url + - expanded_url + - id_str + - indices + - media_key + - media_url_https + - type + - url + - sizes + - original_info + MediaOriginalInfo: + properties: + focus_rects: + items: + $ref: '#/components/schemas/MediaOriginalInfoFocusRect' + type: array + height: + type: integer + width: + type: integer + required: + - height + - width + MediaOriginalInfoFocusRect: + properties: + h: + type: integer + w: + type: integer + x: + type: integer + y: + type: integer + required: + - x + - y + - w + - h + type: object + MediaSize: + properties: + h: + type: integer + resize: + enum: + - crop + - fit + type: string + w: + type: integer + required: + - w + - h + - resize + MediaSizes: + properties: + large: + $ref: '#/components/schemas/MediaSize' + medium: + $ref: '#/components/schemas/MediaSize' + small: + $ref: '#/components/schemas/MediaSize' + thumb: + $ref: '#/components/schemas/MediaSize' + required: + - large + - medium + - small + - thumb + MediaStats: + properties: + viewCount: + type: integer + required: + - viewCount + MediaVideoInfo: + properties: + aspect_ratio: + items: + type: integer + type: array + duration_millis: + type: integer + variants: + items: + $ref: '#/components/schemas/MediaVideoInfoVariant' + type: array + required: + - aspect_ratio + - variants + MediaVideoInfoVariant: + properties: + bitrate: + type: integer + content_type: + type: string + url: + format: uri + type: string + required: + - content_type + - url + ModuleEntry: + properties: + clientEventInfo: + $ref: '#/components/schemas/ClientEventInfo' + feedbackInfo: + $ref: '#/components/schemas/FeedbackInfo' + itemContent: + $ref: '#/components/schemas/ItemContentUnion' + required: + - itemContent + ModuleItem: + properties: + entryId: + pattern: ^(([a-z]+|[0-9]+|[0-9a-f]+)(-|$))+ + type: string + item: + $ref: '#/components/schemas/ModuleEntry' + required: + - entryId + - item + NoteTweet: + properties: + is_expandable: + type: boolean + note_tweet_results: + $ref: '#/components/schemas/NoteTweetResult' + required: + - is_expandable + - note_tweet_results + NoteTweetResult: + properties: + result: + $ref: '#/components/schemas/NoteTweetResultData' + required: + - result + NoteTweetResultData: + properties: + entity_set: + $ref: '#/components/schemas/Entities' + id: + pattern: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$ + type: string + media: + $ref: '#/components/schemas/NoteTweetResultMedia' + richtext: + $ref: '#/components/schemas/NoteTweetResultRichText' + text: + type: string + required: + - entity_set + - id + - text + NoteTweetResultMedia: + properties: + inline_media: + items: + $ref: '#/components/schemas/NoteTweetResultMediaInlineMedia' + type: array + required: + - inline_media + NoteTweetResultMediaInlineMedia: + properties: + index: + type: integer + media_id: + pattern: ^[0-9]+$ + type: string + required: + - media_id + - index + NoteTweetResultRichText: + properties: + richtext_tags: + items: + $ref: '#/components/schemas/NoteTweetResultRichTextTag' + type: array + required: + - richtext_tags + NoteTweetResultRichTextTag: + properties: + from_index: + type: integer + richtext_types: + items: + enum: + - Bold + - Italic + type: string + type: array + to_index: + type: integer + required: + - from_index + - to_index + - richtext_types + OneFactorLoginEligibility: + properties: + fetchStatus: + type: string + required: + - fetchStatus + type: object + OtherResponse: + properties: + Session: + $ref: '#/components/schemas/Session' + type: object + PrimaryCommunityTopic: + properties: + topic_id: + pattern: ^[0-9]+$ + type: string + topic_name: + type: string + required: + - topic_id + - topic_name + ProfileResponse: + properties: + data: + $ref: '#/components/schemas/ProfileResponseData' + required: + - data + ProfileResponseData: + properties: + user_result_by_screen_name: + $ref: '#/components/schemas/UserResultByScreenName' + required: + - user_result_by_screen_name + QuotedRefResult: + properties: + result: + $ref: '#/components/schemas/TweetUnion' + QuotedStatusPermalink: + properties: + display: + format: uri + type: string + expanded: + format: uri + type: string + url: + format: uri + type: string + required: + - url + - expanded + - display + Retweet: + properties: + legacy: + properties: + full_text: + type: string + required: + - full_text + type: object + rest_id: + pattern: ^[0-9]+$ + type: string + required: + - rest_id + - legacy + SearchByRawQuery: + properties: + search_timeline: + $ref: '#/components/schemas/SearchTimeline' + required: + - search_timeline + SearchTimeline: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + required: + - timeline + SearchTimelineData: + properties: + search_by_raw_query: + $ref: '#/components/schemas/SearchByRawQuery' + required: + - search_by_raw_query + SearchTimelineResponse: + properties: + data: + $ref: '#/components/schemas/SearchTimelineData' + required: + - data + SelfThread: + properties: + id_str: + pattern: ^[0-9]+$ + type: string + required: + - id_str + SensitiveMediaWarning: + properties: + adult_content: + default: false + type: boolean + graphic_violence: + default: false + type: boolean + other: + default: false + type: boolean + required: + - adult_content + - graphic_violence + - other + Session: + properties: + SsoInitTokens: + type: object + communitiesActions: + $ref: '#/components/schemas/CommunitiesActions' + country: + pattern: ^[A-Z]{2}$ + type: string + guestId: + pattern: ^[0-9]+$ + type: string + hasCommunityMemberships: + type: boolean + isActiveCreator: + type: boolean + isRestrictedSession: + type: boolean + isSuperFollowSubscriber: + type: boolean + language: + pattern: ^[a-z]{2}$ + type: string + oneFactorLoginEligibility: + $ref: '#/components/schemas/OneFactorLoginEligibility' + superFollowersCount: + type: integer + superFollowsApplicationStatus: + enum: + - NotStarted + type: string + userFeatures: + $ref: '#/components/schemas/UserFeatures' + user_id: + pattern: ^[0-9]+$ + type: string + required: + - country + - communitiesActions + - isActiveCreator + - isRestrictedSession + - guestId + - hasCommunityMemberships + - language + - oneFactorLoginEligibility + - ssoInitTokens + - superFollowersCount + - superFollowsApplicationStatus + - user_id + - userFeatures + - isSuperFollowSubscriber + type: object + SocialContextLandingUrl: + properties: + url: + format: uri + type: string + urlType: + enum: + - DeepLink + - UrtEndpoint + - ExternalUrl + type: string + urtEndpointOptions: + $ref: '#/components/schemas/UrtEndpointOptions' + type: object + SocialContextUnion: + discriminator: + mapping": + TimelineGeneralContext: '#/components/schemas/TimelineGeneralContext' + TimelineTopicContext: '#/components/schemas/TimelineTopicContext' + propertyName: type + oneOf: + - $ref: '#/components/schemas/TimelineGeneralContext' + - $ref: '#/components/schemas/TimelineTopicContext' + SocialContextUnionType: + enum: + - TimelineGeneralContext + - TimelineTopicContext + type: string + SuperFollowsReplyUserResult: + properties: + result: + $ref: '#/components/schemas/SuperFollowsReplyUserResultData' + required: + - result + SuperFollowsReplyUserResultData: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + legacy: + $ref: '#/components/schemas/SuperFollowsReplyUserResultLegacy' + required: + - __typename + - legacy + SuperFollowsReplyUserResultLegacy: + properties: + screen_name: + type: string + required: + - screen_name + Symbol: + additionalProperties: true + type: object + Text: + properties: + entities: + items: + $ref: '#/components/schemas/TextEntity' + type: array + text: + type: string + required: + - text + - entities + TextEntity: + properties: + fromIndex: + type: integer + ref: + $ref: '#/components/schemas/TextEntityRef' + toIndex: + type: integer + required: + - fromIndex + - toIndex + - ref + TextEntityRef: + properties: + type: + enum: + - TimelineUrl + type: string + url: + format: uri + type: string + urlType: + enum: + - ExternalUrl + type: string + required: + - type + - url + - urlType + TextHighlight: + properties: + endIndex: + type: integer + startIndex: + type: integer + required: + - startIndex + - endIndex + type: object + Timeline: + properties: + instructions: + items: + $ref: '#/components/schemas/InstructionUnion' + type: array + metadata: + additionalProperties: true + type: object + responseObjects: + additionalProperties: true + type: object + required: + - instructions + TimelineAddEntries: + properties: + entries: + items: + $ref: '#/components/schemas/TimelineAddEntry' + type: array + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - entries + TimelineAddEntry: + properties: + content: + $ref: '#/components/schemas/ContentUnion' + entryId: + pattern: ^(([a-z]+|[0-9]+|[0-9a-f]+)(-|$))+ + type: string + sortIndex: + pattern: '[0-9]+$' + type: string + required: + - content + - entryId + - sortIndex + TimelineAddToModule: + properties: + moduleEntryId: + type: string + moduleItems: + items: + $ref: '#/components/schemas/ModuleItem' + type: array + prepend: + type: boolean + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - moduleItems + - moduleEntryId + TimelineClearCache: + properties: + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + TimelineCommunity: + additionalProperties: true + properties: + __typename: + $ref: '#/components/schemas/TypeName' + TimelineCoverBehavior: + properties: + type: + enum: + - TimelineCoverBehaviorDismiss + type: string + required: + - type + TimelineGeneralContext: + properties: + contextType: + enum: + - Follow + - Pin + - Like + - Location + - Sparkle + - Conversation + - List + type: string + landingUrl: + $ref: '#/components/schemas/SocialContextLandingUrl' + text: + type: string + type: + $ref: '#/components/schemas/SocialContextUnionType' + type: object + TimelineHalfCover: + properties: + dismissible: + type: boolean + halfCoverDisplayType: + enum: + - Cover + type: string + impressionCallbacks: + items: + $ref: '#/components/schemas/Callback' + type: array + primaryCoverCta: + $ref: '#/components/schemas/CoverCta' + primaryText: + $ref: '#/components/schemas/Text' + secondaryText: + $ref: '#/components/schemas/Text' + type: + enum: + - TimelineHalfCover + type: string + required: + - type + - halfCoverDisplayType + - primaryText + - primaryCoverCta + - secondaryText + - impressionCallbacks + - dismissible + TimelineMessagePrompt: + additionalProperties: true + properties: + __typename: + $ref: '#/components/schemas/TypeName' + TimelinePinEntry: + properties: + entry: + $ref: '#/components/schemas/TimelineAddEntry' + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - entry + TimelinePrompt: + additionalProperties: true + properties: + __typename: + $ref: '#/components/schemas/TypeName' + TimelineReplaceEntry: + properties: + entry: + $ref: '#/components/schemas/TimelineAddEntry' + entry_id_to_replace: + type: string + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - entry_id_to_replace + - entry + TimelineResponse: + properties: + data: + $ref: '#/components/schemas/HomeTimelineResponseData' + required: + - data + TimelineShowAlert: + properties: + alertType: + enum: + - NewTweets + type: string + colorConfig: + additionalProperties: true + type: object + displayDurationMs: + type: integer + displayLocation: + enum: + - Top + type: string + iconDisplayInfo: + additionalProperties: true + type: object + richText: + properties: + entities: + items: + additionalProperties: true + type: object + type: array + text: + type: string + type: object + triggerDelayMs: + type: integer + type: + $ref: '#/components/schemas/InstructionType' + usersResults: + items: + $ref: '#/components/schemas/UserResults' + type: array + required: + - type + - usersResults + - richText + TimelineShowCover: + properties: + clientEventInfo: + $ref: '#/components/schemas/ClientEventInfo' + cover: + $ref: '#/components/schemas/TimelineHalfCover' + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - clientEventInfo + - cover + TimelineTerminateTimeline: + properties: + direction: + enum: + - Top + - Bottom + type: string + type: + $ref: '#/components/schemas/InstructionType' + required: + - type + - direction + TimelineTimelineCursor: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + cursorType: + $ref: '#/components/schemas/CursorType' + displayTreatment: + $ref: '#/components/schemas/DisplayTreatment' + entryType: + $ref: '#/components/schemas/ContentEntryType' + itemType: + $ref: '#/components/schemas/ContentEntryType' + stopOnEmptyResponse: + default: false + type: boolean + value: + type: string + required: + - __typename + - cursorType + - value + - stopOnEmptyResponse + TimelineTimelineItem: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + clientEventInfo: + $ref: '#/components/schemas/ClientEventInfo' + entryType: + $ref: '#/components/schemas/ContentEntryType' + feedbackInfo: + additionalProperties: true + type: object + itemContent: + $ref: '#/components/schemas/ItemContentUnion' + required: + - __typename + - entryType + - itemContent + TimelineTimelineModule: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + type: string + clientEventInfo: + additionalProperties: true + type: object + displayType: + $ref: '#/components/schemas/DisplayType' + entryType: + $ref: '#/components/schemas/ContentEntryType' + feedbackInfo: + $ref: '#/components/schemas/FeedbackInfo' + footer: + additionalProperties: true + type: object + header: + additionalProperties: true + type: object + items: + items: + $ref: '#/components/schemas/ModuleItem' + type: array + metadata: + additionalProperties: true + type: object + required: + - __typename + - entryType + - displayType + - clientEventInfo + TimelineTopicContext: + properties: + functionalityType: + enum: + - Basic + type: string + topic: + $ref: '#/components/schemas/TopicContext' + type: + $ref: '#/components/schemas/SocialContextUnionType' + type: object + TimelineTweet: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + highlights: + $ref: '#/components/schemas/Highlight' + itemType: + $ref: '#/components/schemas/ContentItemType' + promotedMetadata: + additionalProperties: true + type: object + socialContext: + $ref: '#/components/schemas/SocialContextUnion' + tweetDisplayType: + type: string + tweet_results: + $ref: '#/components/schemas/ItemResult' + required: + - __typename + - itemType + - tweetDisplayType + - tweet_results + TimelineUser: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + itemType: + $ref: '#/components/schemas/ContentItemType' + socialContext: + $ref: '#/components/schemas/SocialContextUnion' + userDisplayType: + enum: + - User + - UserDetailed + - SubscribableUser + type: string + user_results: + $ref: '#/components/schemas/UserResults' + required: + - __typename + - itemType + - userDisplayType + - user_results + TimelineV2: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + required: + - timeline + TopicContext: + properties: + description: + type: string + following: + type: boolean + icon_url: + format: uri + type: string + id: + type: string + name: + type: string + not_interested: + type: boolean + topic_id: + type: string + type: object + Tracing: + properties: + trace_id: + pattern: ^[0-9a-f]{16}$ + type: string + required: + - trace_id + type: object + Tweet: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + author_community_relationship: + $ref: '#/components/schemas/AuthorCommunityRelationship' + birdwatch_pivot: + $ref: '#/components/schemas/BirdwatchPivot' + card: + $ref: '#/components/schemas/TweetCard' + core: + $ref: '#/components/schemas/UserResultCore' + edit_control: + $ref: '#/components/schemas/TweetEditControl' + edit_prespective: + $ref: '#/components/schemas/TweetEditPrespective' + has_birdwatch_notes: + type: boolean + is_translatable: + default: false + type: boolean + legacy: + $ref: '#/components/schemas/TweetLegacy' + note_tweet: + $ref: '#/components/schemas/NoteTweet' + previous_counts: + $ref: '#/components/schemas/TweetPreviousCounts' + quick_promote_eligibility: + type: object + quotedRefResult: + $ref: '#/components/schemas/QuotedRefResult' + quoted_status_result: + $ref: '#/components/schemas/ItemResult' + rest_id: + pattern: ^[0-9]+$ + type: string + source: + type: string + superFollowsReplyUserResult: + $ref: '#/components/schemas/SuperFollowsReplyUserResult' + unified_card: + $ref: '#/components/schemas/UnifiedCard' + unmention_data: + additionalProperties: true + type: object + views: + $ref: '#/components/schemas/TweetView' + required: + - rest_id + TweetCard: + properties: + legacy: + $ref: '#/components/schemas/TweetCardLegacy' + rest_id: + type: string + TweetCardLegacy: + properties: + binding_values: + items: + $ref: '#/components/schemas/TweetCardLegacyBindingValue' + type: array + card_platform: + $ref: '#/components/schemas/TweetCardPlatformData' + name: + type: string + url: + type: string + user_refs_results: + items: + $ref: '#/components/schemas/UserResults' + type: array + required: + - binding_values + - name + - url + TweetCardLegacyBindingValue: + properties: + key: + type: string + value: + $ref: '#/components/schemas/TweetCardLegacyBindingValueData' + required: + - key + - value + TweetCardLegacyBindingValueData: + properties: + boolean_value: + type: boolean + image_color_value: + additionalProperties: true + type: object + image_value: + $ref: '#/components/schemas/TweetCardLegacyBindingValueDataImage' + scribe_key: + type: string + string_value: + type: string + type: + type: string + user_value: + $ref: '#/components/schemas/UserValue' + required: + - type + TweetCardLegacyBindingValueDataImage: + properties: + alt: + type: string + height: + type: integer + url: + format: uri + type: string + width: + type: integer + required: + - height + - width + - url + TweetCardPlatform: + properties: + audience: + $ref: '#/components/schemas/TweetCardPlatformAudience' + device: + $ref: '#/components/schemas/TweetCardPlatformDevice' + required: + - audience + - device + TweetCardPlatformAudience: + properties: + name: + enum: + - production + type: string + required: + - name + TweetCardPlatformData: + properties: + platform: + $ref: '#/components/schemas/TweetCardPlatform' + required: + - platform + TweetCardPlatformDevice: + properties: + name: + type: string + version: + pattern: ^[0-9]+$ + type: string + required: + - name + - version + TweetDetailResponse: + properties: + data: + $ref: '#/components/schemas/TweetDetailResponseData' + required: + - data + TweetDetailResponseData: + properties: + threaded_conversation_with_injections_v2: + $ref: '#/components/schemas/Timeline' + required: + - threaded_conversation_with_injections_v2 + TweetEditControl: + properties: + edit_control_initial: + $ref: '#/components/schemas/TweetEditControlInitial' + edit_tweet_ids: + items: + pattern: ^[0-9]+$ + type: string + type: array + editable_until_msecs: + pattern: ^[0-9]+$ + type: string + edits_remaining: + pattern: ^[0-9]+$ + type: string + initial_tweet_id: + pattern: ^[0-9]+$ + type: string + is_edit_eligible: + type: boolean + TweetEditControlInitial: + properties: + edit_tweet_ids: + items: + pattern: ^[0-9]+$ + type: string + type: array + editable_until_msecs: + pattern: ^[0-9]+$ + type: string + edits_remaining: + pattern: ^[0-9]+$ + type: string + is_edit_eligible: + type: boolean + required: + - edit_tweet_ids + - editable_until_msecs + - is_edit_eligible + - edits_remaining + TweetEditPrespective: + properties: + favorited: + type: boolean + retweeted: + type: boolean + TweetFavoritersResponse: + properties: + data: + $ref: '#/components/schemas/TweetFavoritersResponseData' + required: + - data + TweetFavoritersResponseData: + properties: + favoriters_timeline: + $ref: '#/components/schemas/TimelineV2' + required: + - favoriters_timeline + TweetInterstitial: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + displayType: + enum: + - NonCompliant + type: string + revealText: + $ref: '#/components/schemas/TweetInterstitialRevealText' + text: + $ref: '#/components/schemas/TweetInterstitialText' + required: + - __typename + - displayType + - text + - revealText + TweetInterstitialRevealText: + properties: + entities: + items: + $ref: '#/components/schemas/TweetInterstitialTextEntity' + type: array + rtl: + type: boolean + text: + type: string + required: + - rtl + - text + - entities + TweetInterstitialText: + properties: + entities: + items: + $ref: '#/components/schemas/TweetInterstitialTextEntity' + type: array + rtl: + type: boolean + text: + type: string + required: + - rtl + - text + - entities + TweetInterstitialTextEntity: + properties: + fromIndex: + type: integer + ref: + $ref: '#/components/schemas/TweetInterstitialTextEntityRef' + toIndex: + type: integer + required: + - fromIndex + - toIndex + - ref + TweetInterstitialTextEntityRef: + properties: + type: + enum: + - TimelineUrl + type: string + url: + format: uri + type: string + urlType: + enum: + - ExternalUrl + type: string + required: + - type + - url + - urlType + TweetLegacy: + properties: + bookmark_count: + type: integer + bookmarked: + type: boolean + conversation_control: + additionalProperties: true + conversation_id_str: + pattern: ^[0-9]+$ + type: string + created_at: + $ref: '#/components/schemas/TwitterTimeFormat' + display_text_range: + items: + type: integer + type: array + entities: + $ref: '#/components/schemas/Entities' + extended_entities: + $ref: '#/components/schemas/ExtendedEntities' + favorite_count: + type: integer + favorited: + type: boolean + full_text: + type: string + id_str: + pattern: ^[0-9]+$ + type: string + in_reply_to_screen_name: + type: string + in_reply_to_status_id_str: + pattern: ^[0-9]+$ + type: string + in_reply_to_user_id_str: + pattern: ^[0-9]+$ + type: string + is_quote_status: + type: boolean + lang: + type: string + limited_actions: + enum: + - limited_replies + - community_tweet_non_member_public_community + - non_compliant + - dynamic_product_ad + - stale_tweet + type: string + place: + additionalProperties: true + possibly_sensitive: + default: false + type: boolean + possibly_sensitive_editable: + default: false + type: boolean + quote_count: + type: integer + quoted_status_id_str: + pattern: ^[0-9]+$ + type: string + quoted_status_permalink: + $ref: '#/components/schemas/QuotedStatusPermalink' + reply_count: + type: integer + retweet_count: + type: integer + retweeted: + type: boolean + retweeted_status_result: + $ref: '#/components/schemas/ItemResult' + scopes: + $ref: '#/components/schemas/TweetLegacyScopes' + self_thread: + $ref: '#/components/schemas/SelfThread' + user_id_str: + pattern: ^[0-9]+$ + type: string + required: + - bookmark_count + - bookmarked + - conversation_id_str + - created_at + - display_text_range + - entities + - favorite_count + - favorited + - full_text + - is_quote_status + - lang + - quote_count + - reply_count + - retweet_count + - retweeted + - user_id_str + - id_str + TweetLegacyScopes: + properties: + followers: + type: boolean + required: + - followers + TweetPreviousCounts: + properties: + bookmark_count: + type: integer + favorite_count: + type: integer + quote_count: + type: integer + reply_count: + type: integer + retweet_count: + type: integer + required: + - bookmark_count + - favorite_count + - quote_count + - reply_count + - retweet_count + TweetResultByRestIdData: + properties: + tweetResult: + $ref: '#/components/schemas/ItemResult' + required: + - tweetResult + TweetResultByRestIdResponse: + properties: + data: + $ref: '#/components/schemas/TweetResultByRestIdData' + required: + - data + TweetRetweetersResponse: + properties: + data: + $ref: '#/components/schemas/TweetRetweetersResponseData' + required: + - data + TweetRetweetersResponseData: + properties: + retweeters_timeline: + $ref: '#/components/schemas/TimelineV2' + required: + - retweeters_timeline + TweetTombstone: + additionalProperties: true + properties: + __typename: + $ref: '#/components/schemas/TypeName' + TweetUnion: + discriminator: + mapping": + Tweet: '#/components/schemas/Tweet' + TweetTombstone: '#/components/schemas/TweetTombstone' + TweetWithVisibilityResults: '#/components/schemas/TweetWithVisibilityResults' + propertyName: __typename + oneOf: + - $ref: '#/components/schemas/Tweet' + - $ref: '#/components/schemas/TweetWithVisibilityResults' + - $ref: '#/components/schemas/TweetTombstone' + TweetView: + properties: + count: + pattern: ^[0-9]+$ + type: string + state: + enum: + - Enabled + - EnabledWithCount + type: string + required: + - state + TweetWithVisibilityResults: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + limitedActionResults: + additionalProperties: true + type: object + tweet: + $ref: '#/components/schemas/Tweet' + tweetInterstitial: + $ref: '#/components/schemas/TweetInterstitial' + required: + - __typename + - tweet + TwitterTimeFormat: + example: Sat Dec 31 23:59:59 +0000 2023 + pattern: '^(Sun|Mon|Tue|Wed|Thu|Fri|Sat) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) + (0[1-9]|[12][0-9]|3[01]) (0[0-9]|1[0-9]|2[0-3])(: ?)([0-5][0-9])(: ?)([0-5][0-9]) + ([+-][0-9]{4}) ([0-9]{4})$' + type: string + TypeName: + enum: + - TimelineTweet + - TimelineTimelineItem + - TimelineUser + - TimelineTimelineCursor + - TweetWithVisibilityResults + - ContextualTweetInterstitial + - TimelineTimelineModule + - TweetTombstone + - TimelinePrompt + - TimelineMessagePrompt + - TimelineCommunity + - TweetUnavailable + - Tweet + - User + - UserUnavailable + - Community + - CommunityDeleteActionUnavailable + - CommunityJoinAction + - CommunityLeaveActionUnavailable + - CommunityTweetPinActionUnavailable + - CommunityInvitesUnavailable + - CommunityJoinRequestsUnavailable + type: string + UnfavoriteTweet: + properties: + unfavorite_tweet: + type: string + required: + - unfavorite_tweet + UnfavoriteTweetResponseData: + properties: + data: + $ref: '#/components/schemas/UnfavoriteTweet' + required: + - data + UnifiedCard: + properties: + card_fetch_state: + enum: + - NoCard + type: string + required: + - card_fetch_state + Url: + properties: + display_url: + type: string + expanded_url: + format: uri + type: string + indices: + items: + type: integer + type: array + url: + format: uri + type: string + required: + - url + - indices + - expanded_url + - display_url + type: object + UrtEndpointOptions: + properties: + requestParams: + items: + $ref: '#/components/schemas/UrtEndpointRequestParams' + type: array + title: + type: string + required: + - title + - requestParams + type: object + UrtEndpointRequestParams: + properties: + key: + type: string + value: + type: string + required: + - key + - value + type: object + User: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + affiliates_highlighted_label: + additionalProperties: true + type: object + business_account: + additionalProperties: true + type: object + creator_subscriptions_count: + type: integer + has_graduated_access: + type: boolean + has_nft_avatar: + default: false + type: boolean + highlights_info: + $ref: '#/components/schemas/UserHighlightsInfo' + id: + pattern: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$ + type: string + is_blue_verified: + default: false + type: boolean + is_profile_translatable: + type: boolean + legacy: + $ref: '#/components/schemas/UserLegacy' + professional: + $ref: '#/components/schemas/UserProfessional' + profile_image_shape: + enum: + - Circle + - Square + - Hexagon + type: string + rest_id: + pattern: ^[0-9]+$ + type: string + super_follow_eligible: + default: false + type: boolean + super_followed_by: + default: false + type: boolean + super_following: + default: false + type: boolean + user_seed_tweet_count: + type: integer + verification_info: + $ref: '#/components/schemas/UserVerificationInfo' + required: + - __typename + - affiliates_highlighted_label + - id + - is_blue_verified + - legacy + - rest_id + - super_follow_eligible + - super_followed_by + - super_following + - profile_image_shape + UserFeatures: + properties: + mediatool_studio_library: + type: boolean + required: + - mediatool_studio_library + type: object + UserHighlightsInfo: + properties: + can_highlight_tweets: + type: boolean + highlighted_tweets: + type: string + required: + - can_highlight_tweets + - highlighted_tweets + UserHighlightsTweetsData: + properties: + user: + $ref: '#/components/schemas/UserHighlightsTweetsUser' + required: + - user + UserHighlightsTweetsResponse: + properties: + data: + $ref: '#/components/schemas/UserHighlightsTweetsData' + required: + - data + UserHighlightsTweetsResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + timeline: + $ref: '#/components/schemas/UserHighlightsTweetsTimeline' + required: + - timeline + - __typename + UserHighlightsTweetsTimeline: + properties: + timeline: + $ref: '#/components/schemas/Timeline' + required: + - timeline + UserHighlightsTweetsUser: + properties: + result: + $ref: '#/components/schemas/UserHighlightsTweetsResult' + required: + - result + UserLegacy: + properties: + blocked_by: + default: false + type: boolean + blocking: + default: false + type: boolean + can_dm: + default: false + type: boolean + can_media_tag: + default: false + type: boolean + created_at: + $ref: '#/components/schemas/TwitterTimeFormat' + default_profile: + default: false + type: boolean + default_profile_image: + default: false + type: boolean + description: + type: string + entities: + additionalProperties: true + type: object + fast_followers_count: + type: integer + favourites_count: + default: 0 + type: integer + follow_request_sent: + default: false + type: boolean + followed_by: + default: false + type: boolean + followers_count: + default: 0 + type: integer + following: + default: false + type: boolean + friends_count: + default: 0 + type: integer + has_custom_timelines: + default: false + type: boolean + is_translator: + default: false + type: boolean + listed_count: + default: 0 + type: integer + location: + type: string + media_count: + default: 0 + type: integer + muting: + default: false + type: boolean + name: + type: string + normal_followers_count: + default: 0 + type: integer + notifications: + default: false + type: boolean + pinned_tweet_ids_str: + items: + type: string + type: array + possibly_sensitive: + default: false + type: boolean + profile_banner_extensions: + type: object + profile_banner_url: + format: uri + type: string + profile_image_extensions: + type: object + profile_image_url_https: + format: uri + type: string + profile_interstitial_type: + type: string + protected: + default: false + type: boolean + screen_name: + type: string + statuses_count: + default: 0 + type: integer + translator_type: + type: string + url: + type: string + verified: + type: boolean + verified_type: + enum: + - Business + - Government + type: string + want_retweets: + default: false + type: boolean + withheld_in_countries: + items: + type: string + type: array + required: + - blocked_by + - blocking + - can_dm + - can_media_tag + - created_at + - default_profile + - default_profile_image + - description + - entities + - fast_followers_count + - favourites_count + - followers_count + - friends_count + - has_custom_timelines + - is_translator + - listed_count + - location + - media_count + - muting + - name + - normal_followers_count + - pinned_tweet_ids_str + - possibly_sensitive + - profile_image_url_https + - profile_interstitial_type + - screen_name + - status + - statuses_count + - translator_type + - verified + - want_retweets + UserMention: + additionalProperties: true + type: object + UserProfessional: + properties: + category: + items: + $ref: '#/components/schemas/UserProfessionalCategory' + type: array + professional_type: + enum: + - Business + - Creator + type: string + rest_id: + pattern: ^[0-9]+$ + type: string + required: + - rest_id + - professional_type + - category + UserProfessionalCategory: + properties: + icon_name: + type: string + id: + type: integer + name: + type: string + required: + - id + - name + - icon_name + UserResponse: + properties: + data: + $ref: '#/components/schemas/UserResponseData' + required: + - data + UserResponseData: + properties: + user: + $ref: '#/components/schemas/UserResults' + required: + - user + UserResultByScreenName: + properties: + id: + pattern: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$ + type: string + result: + $ref: '#/components/schemas/UserResultByScreenNameResult' + required: + - id + - result + UserResultByScreenNameLegacy: + properties: + blocked_by: + type: boolean + blocking: + type: boolean + followed_by: + type: boolean + following: + type: boolean + name: + type: string + protected: + type: boolean + screen_name: + type: string + UserResultByScreenNameResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + id: + pattern: ^[0-9a-zA-Z=]+$ + type: string + legacy: + $ref: '#/components/schemas/UserResultByScreenNameLegacy' + profilemodules: + additionalProperties: true + type: object + rest_id: + pattern: ^[0-9]+$ + type: string + required: + - __typename + - id + - legacy + - profilemodules + - rest_id + UserResultCore: + properties: + user_results: + $ref: '#/components/schemas/UserResults' + required: + - user_results + UserResults: + properties: + result: + $ref: '#/components/schemas/UserUnion' + UserTweetsData: + properties: + user: + $ref: '#/components/schemas/UserTweetsUser' + required: + - user + UserTweetsResponse: + properties: + data: + $ref: '#/components/schemas/UserTweetsData' + required: + - data + UserTweetsResult: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + timeline_v2: + $ref: '#/components/schemas/TimelineV2' + required: + - __typename + - timeline_v2 + UserTweetsUser: + properties: + result: + $ref: '#/components/schemas/UserTweetsResult' + required: + - result + UserUnavailable: + properties: + __typename: + $ref: '#/components/schemas/TypeName' + reason: + type: string + required: + - __typename + - reason + UserUnion: + discriminator: + mapping": + User: '#/components/schemas/User' + UserUnavailable: '#/components/schemas/UserUnavailable' + propertyName: __typename + oneOf: + - $ref: '#/components/schemas/User' + - $ref: '#/components/schemas/UserUnavailable' + UserValue: + properties: + id_str: + pattern: ^[0-9]+$ + type: string + required: + - id_str + UserVerificationInfo: + properties: + is_identity_verified: + default: false + type: boolean + reason: + $ref: '#/components/schemas/UserVerificationInfoReason' + required: + - is_identity_verified + UserVerificationInfoReason: + properties: + description: + $ref: '#/components/schemas/UserVerificationInfoReasonDescription' + override_verified_year: + type: integer + verified_since_msec: + pattern: ^-?[0-9]+$ + type: string + required: + - description + - verified_since_msec + - override_verified_year + UserVerificationInfoReasonDescription: + properties: + entities: + items: + $ref: '#/components/schemas/UserVerificationInfoReasonDescriptionEntities' + type: array + text: + type: string + required: + - text + - entities + UserVerificationInfoReasonDescriptionEntities: + properties: + from_index: + type: integer + ref: + $ref: '#/components/schemas/UserVerificationInfoReasonDescriptionEntitiesRef' + to_index: + type: integer + required: + - from_index + - to_index + - ref + UserVerificationInfoReasonDescriptionEntitiesRef: + properties: + url: + format: uri + type: string + url_type: + enum: + - ExternalUrl + type: string + required: + - url + - url_type + UsersResponse: + properties: + data: + $ref: '#/components/schemas/UsersResponseData' + required: + - data + UsersResponseData: + properties: + users: + items: + $ref: '#/components/schemas/UserResults' + type: array + required: + - users + securitySchemes: + Accept: + description: '*/*' + in: header + name: Accept + type: apiKey + AcceptEncoding: + description: gzip, deflate, br + in: header + name: Accept-Encoding + type: apiKey + AcceptLanguage: + description: en-US,en;q=0.9 + in: header + name: Accept-Language + type: apiKey + ActiveUser: + description: 'yes' + in: header + name: x-twitter-active-user + type: apiKey + AuthType: + description: OAuth2Session if you are logged in + in: header + name: x-twitter-auth-type + type: apiKey + BearerAuth: + description: AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA + scheme: bearer + type: http + CacheControl: + description: no-cache + in: header + name: Cache-Control + type: apiKey + ClientLanguage: + description: en + in: header + name: x-twitter-client-language + type: apiKey + CookieAuthToken: + description: HttpOnly cookie + in: cookie + name: auth_token + type: apiKey + CookieCt0: + description: document.cookie.split('; ').find(row => row.startsWith('ct0=')); + in: cookie + name: ct0 + type: apiKey + CsrfToken: + description: '' + in: header + name: x-csrf-token + type: apiKey + GuestToken: + description: document.cookie.split('; ').find(row => row.startsWith('gt=')); + in: header + name: x-guest-token + type: apiKey + Pragma: + description: no-cache + in: header + name: Pragma + type: apiKey + SecChUa: + description: '"Chromium";v="116", "Not)A;Brand";v="24", "Google Chrome";v="116"' + in: header + name: Sec-Ch-Ua + type: apiKey + SecChUaMobile: + description: ?0 + in: header + name: Sec-Ch-Ua-Mobile + type: apiKey + SecChUaPlatform: + description: '"Windows"' + in: header + name: Sec-Ch-Ua-Platform + type: apiKey + SecFetchDest: + description: empty + in: header + name: Sec-Fetch-Dest + type: apiKey + SecFetchMode: + description: cors + in: header + name: Sec-Fetch-Mode + type: apiKey + SecFetchSite: + description: same-origin + in: header + name: Sec-Fetch-Site + type: apiKey + UserAgent: + description: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, + like Gecko) Chrome/112.0.0.0 Safari/537.36 + in: header + name: user-agent + type: apiKey +info: + contact: + email: yuki@yuki0311.com + description: Twitter OpenAPI(Swagger) specification + license: + name: custom license or AGPL-3.0-or-later + url: https://github.com/fa0311/twitter-openapi#license + termsOfService: https://github.com/fa0311 + title: Twitter OpenAPI + version: 0.0.1 +openapi: 3.0.3 +paths: + /1.1/friends/following/list.json: + get: + description: get friends following list + operationId: getFriendsFollowingList + parameters: + - in: query + name: include_profile_interstitial_type + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_blocking + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_blocked_by + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_followed_by + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_want_retweets + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_mute_edge + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_can_dm + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_can_media_tag + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_has_nft_avatar + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_is_blue_verified + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_verified_type + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_profile_image_shape + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: skip_status + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: cursor + required: true + schema: + default: -1 + example: -1 + type: integer + - in: query + name: user_id + required: true + schema: + default: '44196397' + example: '44196397' + type: string + - in: query + name: count + required: true + schema: + default: 3 + example: 3 + type: integer + - in: query + name: with_total_count + required: true + schema: + default: true + example: true + type: boolean + responses: + '200': + description: Successful operation + headers: + status: + schema: + type: string + x-access-level: + schema: + type: string + x-client-event-enabled: + schema: + type: boolean + x-connection-hash: + schema: + type: string + x-content-type-options: + schema: + type: string + x-response-time: + schema: + type: integer + x-transaction: + schema: + type: string + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - v1.1-get + /1.1/friendships/create.json: + post: + description: post create friendships + operationId: postCreateFriendships + parameters: [] + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + include_blocked_by: + default: 1 + example: 1 + type: integer + include_blocking: + default: 1 + example: 1 + type: integer + include_can_dm: + default: 1 + example: 1 + type: integer + include_can_media_tag: + default: 1 + example: 1 + type: integer + include_ext_has_nft_avatar: + default: 1 + example: 1 + type: integer + include_ext_is_blue_verified: + default: 1 + example: 1 + type: integer + include_ext_profile_image_shape: + default: 1 + example: 1 + type: integer + include_ext_verified_type: + default: 1 + example: 1 + type: integer + include_followed_by: + default: 1 + example: 1 + type: integer + include_mute_edge: + default: 1 + example: 1 + type: integer + include_profile_interstitial_type: + default: 1 + example: 1 + type: integer + include_want_retweets: + default: 1 + example: 1 + type: integer + skip_status: + default: 1 + example: 1 + type: integer + user_id: + default: '44196397' + example: '44196397' + type: string + required: + - include_profile_interstitial_type + - include_blocking + - include_blocked_by + - include_followed_by + - include_want_retweets + - include_mute_edge + - include_can_dm + - include_can_media_tag + - include_ext_has_nft_avatar + - include_ext_is_blue_verified + - include_ext_verified_type + - include_ext_profile_image_shape + - skip_status + - user_id + description: body + required: true + responses: + '200': + description: Successful operation + headers: + status: + schema: + type: string + x-access-level: + schema: + type: string + x-client-event-enabled: + schema: + type: boolean + x-connection-hash: + schema: + type: string + x-content-type-options: + schema: + type: string + x-response-time: + schema: + type: integer + x-transaction: + schema: + type: string + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - v1.1-post + /1.1/friendships/destroy.json: + post: + description: post destroy friendships + operationId: postDestroyFriendships + parameters: [] + requestBody: + content: + application/x-www-form-urlencoded: + schema: + properties: + include_blocked_by: + default: 1 + example: 1 + type: integer + include_blocking: + default: 1 + example: 1 + type: integer + include_can_dm: + default: 1 + example: 1 + type: integer + include_can_media_tag: + default: 1 + example: 1 + type: integer + include_ext_has_nft_avatar: + default: 1 + example: 1 + type: integer + include_ext_is_blue_verified: + default: 1 + example: 1 + type: integer + include_ext_profile_image_shape: + default: 1 + example: 1 + type: integer + include_ext_verified_type: + default: 1 + example: 1 + type: integer + include_followed_by: + default: 1 + example: 1 + type: integer + include_mute_edge: + default: 1 + example: 1 + type: integer + include_profile_interstitial_type: + default: 1 + example: 1 + type: integer + include_want_retweets: + default: 1 + example: 1 + type: integer + skip_status: + default: 1 + example: 1 + type: integer + user_id: + default: '44196397' + example: '44196397' + type: string + required: + - include_profile_interstitial_type + - include_blocking + - include_blocked_by + - include_followed_by + - include_want_retweets + - include_mute_edge + - include_can_dm + - include_can_media_tag + - include_ext_has_nft_avatar + - include_ext_is_blue_verified + - include_ext_verified_type + - include_ext_profile_image_shape + - skip_status + - user_id + description: body + required: true + responses: + '200': + description: Successful operation + headers: + status: + schema: + type: string + x-access-level: + schema: + type: string + x-client-event-enabled: + schema: + type: boolean + x-connection-hash: + schema: + type: string + x-content-type-options: + schema: + type: string + x-response-time: + schema: + type: integer + x-transaction: + schema: + type: string + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - v1.1-post + /1.1/search/typeahead.json: + get: + description: get search typeahead + operationId: getSearchTypeahead + parameters: + - in: query + name: include_ext_is_blue_verified + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_verified_type + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_profile_image_shape + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: q + required: true + schema: + default: test + example: test + type: string + - in: query + name: src + required: true + schema: + default: search_box + example: search_box + type: string + - in: query + name: result_type + required: true + schema: + default: events,users,topics + example: events,users,topics + type: string + responses: + '200': + description: Successful operation + headers: + status: + schema: + type: string + x-access-level: + schema: + type: string + x-client-event-enabled: + schema: + type: boolean + x-connection-hash: + schema: + type: string + x-content-type-options: + schema: + type: string + x-response-time: + schema: + type: integer + x-transaction: + schema: + type: string + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - v1.1-get + /2/search/adaptive.json: + get: + description: get search adaptive + operationId: getSearchAdaptive + parameters: + - in: query + name: include_profile_interstitial_type + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_blocking + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_blocked_by + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_followed_by + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_want_retweets + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_mute_edge + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_can_dm + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_can_media_tag + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_has_nft_avatar + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_is_blue_verified + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_verified_type + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_profile_image_shape + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: skip_status + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: cards_platform + required: true + schema: + default: Web-12 + example: Web-12 + type: string + - in: query + name: include_cards + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_alt_text + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_ext_limited_action_results + required: true + schema: + default: false + example: false + type: boolean + - in: query + name: include_quote_count + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_reply_count + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: tweet_mode + required: true + schema: + default: extended + example: extended + type: string + - in: query + name: include_ext_views + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_entities + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_user_entities + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_ext_media_color + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_ext_media_availability + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_ext_sensitive_media_warning + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: include_ext_trusted_friends_metadata + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: send_error_codes + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: simple_quoted_tweet + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: q + required: true + schema: + default: elon musk + example: elon musk + type: string + - in: query + name: query_source + required: true + schema: + default: trend_click + example: trend_click + type: string + - in: query + name: count + required: true + schema: + default: 20 + example: 20 + type: integer + - in: query + name: requestContext + required: true + schema: + default: launch + example: launch + type: string + - in: query + name: pc + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: spelling_corrections + required: true + schema: + default: 1 + example: 1 + type: integer + - in: query + name: include_ext_edit_control + required: true + schema: + default: true + example: true + type: boolean + - in: query + name: ext + required: true + schema: + default: mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,enrichments,superFollowMetadata,unmentionInfo,editControl,vibe + example: mediaStats,highlightedLabel,hasNftAvatar,voiceInfo,birdwatchPivot,enrichments,superFollowMetadata,unmentionInfo,editControl,vibe + type: string + responses: + '200': + description: Successful operation + headers: + status: + schema: + type: string + x-access-level: + schema: + type: string + x-client-event-enabled: + schema: + type: boolean + x-connection-hash: + schema: + type: string + x-content-type-options: + schema: + type: string + x-response-time: + schema: + type: integer + x-transaction: + schema: + type: string + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - v2.0-get + /graphql/{pathQueryId}/Bookmarks: + get: + description: get bookmarks + operationId: getBookmarks + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: cQxQgX8MJYjWwC0dxpyfYg + example: cQxQgX8MJYjWwC0dxpyfYg + type: string + - in: query + name: variables + required: true + schema: + default: '{"count": 20, "includePromotedContent": true}' + example: '{"count": 20, "includePromotedContent": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"graphql_timeline_v2_bookmark_timeline": true, "responsive_web_graphql_exclude_directive_enabled": + true, "verified_phone_label_enabled": false, "creator_subscriptions_tweet_preview_api_enabled": + true, "responsive_web_graphql_timeline_navigation_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"graphql_timeline_v2_bookmark_timeline": true, "responsive_web_graphql_exclude_directive_enabled": + true, "verified_phone_label_enabled": false, "creator_subscriptions_tweet_preview_api_enabled": + true, "responsive_web_graphql_timeline_navigation_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/BookmarksResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/CreateRetweet: + post: + description: create Retweet + operationId: postCreateRetweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: ojPdsZsimiJrUGLR1sjUtA + example: ojPdsZsimiJrUGLR1sjUtA + type: string + requestBody: + content: + application/json: + schema: + properties: + queryId: + default: ojPdsZsimiJrUGLR1sjUtA + example: ojPdsZsimiJrUGLR1sjUtA + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + tweet_id: + default: '1349129669258448897' + example: '1349129669258448897' + type: string + required: + - tweet_id + - dark_request + type: object + required: + - queryId + - variables + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/CreateRetweetResponse' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/CreateTweet: + post: + description: create Tweet + operationId: postCreateTweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: 8ED1SMuUGkOZVBEjiYUTfw + example: 8ED1SMuUGkOZVBEjiYUTfw + type: string + requestBody: + content: + application/json: + schema: + properties: + features: + properties: + c9s_tweet_anatomy_moderator_badge_enabled: + default: true + example: true + type: boolean + freedom_of_speech_not_reach_fetch_enabled: + default: true + example: true + type: boolean + graphql_is_translatable_rweb_tweet_is_translatable_enabled: + default: true + example: true + type: boolean + longform_notetweets_consumption_enabled: + default: true + example: true + type: boolean + longform_notetweets_inline_media_enabled: + default: true + example: true + type: boolean + longform_notetweets_rich_text_read_enabled: + default: true + example: true + type: boolean + responsive_web_edit_tweet_api_enabled: + default: true + example: true + type: boolean + responsive_web_enhance_cards_enabled: + default: false + example: false + type: boolean + responsive_web_graphql_exclude_directive_enabled: + default: true + example: true + type: boolean + responsive_web_graphql_skip_user_profile_image_extensions_enabled: + default: false + example: false + type: boolean + responsive_web_graphql_timeline_navigation_enabled: + default: true + example: true + type: boolean + responsive_web_media_download_video_enabled: + default: false + example: false + type: boolean + responsive_web_twitter_article_tweet_consumption_enabled: + default: true + example: true + type: boolean + rweb_video_timestamps_enabled: + default: true + example: true + type: boolean + standardized_nudges_misinfo: + default: true + example: true + type: boolean + tweet_awards_web_tipping_enabled: + default: false + example: false + type: boolean + tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled: + default: true + example: true + type: boolean + tweetypie_unmention_optimization_enabled: + default: true + example: true + type: boolean + verified_phone_label_enabled: + default: false + example: false + type: boolean + view_counts_everywhere_api_enabled: + default: true + example: true + type: boolean + required: + - c9s_tweet_anatomy_moderator_badge_enabled + - tweetypie_unmention_optimization_enabled + - responsive_web_edit_tweet_api_enabled + - graphql_is_translatable_rweb_tweet_is_translatable_enabled + - view_counts_everywhere_api_enabled + - longform_notetweets_consumption_enabled + - responsive_web_twitter_article_tweet_consumption_enabled + - tweet_awards_web_tipping_enabled + - longform_notetweets_rich_text_read_enabled + - longform_notetweets_inline_media_enabled + - rweb_video_timestamps_enabled + - responsive_web_graphql_exclude_directive_enabled + - verified_phone_label_enabled + - freedom_of_speech_not_reach_fetch_enabled + - standardized_nudges_misinfo + - tweet_with_visibility_results_prefer_gql_limited_actions_policy_enabled + - responsive_web_media_download_video_enabled + - responsive_web_graphql_skip_user_profile_image_extensions_enabled + - responsive_web_graphql_timeline_navigation_enabled + - responsive_web_enhance_cards_enabled + type: object + queryId: + default: 8ED1SMuUGkOZVBEjiYUTfw + example: 8ED1SMuUGkOZVBEjiYUTfw + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + media: + properties: + media_entities: + items: + properties: + media_id: + default: '1111111111111111111' + example: '1111111111111111111' + type: string + tagged_users: + items: + type: object + type: array + required: + - media_id + - tagged_users + type: object + type: array + possibly_sensitive: + default: false + example: false + type: boolean + required: + - media_entities + - possibly_sensitive + type: object + reply: + properties: + exclude_reply_user_ids: + items: + type: object + type: array + in_reply_to_tweet_id: + default: '1111111111111111111' + example: '1111111111111111111' + type: string + required: + - in_reply_to_tweet_id + - exclude_reply_user_ids + type: object + semantic_annotation_ids: + items: + type: object + type: array + tweet_text: + default: test + example: test + type: string + required: + - tweet_text + - media + - semantic_annotation_ids + - dark_request + type: object + required: + - queryId + - variables + - features + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/CreateTweetResponse' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/DeleteRetweet: + post: + description: delete Retweet + operationId: postDeleteRetweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: iQtK4dl5hBmXewYZuEOKVw + example: iQtK4dl5hBmXewYZuEOKVw + type: string + requestBody: + content: + application/json: + schema: + properties: + queryId: + default: iQtK4dl5hBmXewYZuEOKVw + example: iQtK4dl5hBmXewYZuEOKVw + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + source_tweet_id: + default: '1349129669258448897' + example: '1349129669258448897' + type: string + required: + - source_tweet_id + - dark_request + type: object + required: + - queryId + - variables + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/DeleteRetweetResponse' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/DeleteTweet: + post: + description: delete Retweet + operationId: postDeleteTweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: VaenaVgh5q5ih7kvyVjgtg + example: VaenaVgh5q5ih7kvyVjgtg + type: string + requestBody: + content: + application/json: + schema: + properties: + queryId: + default: VaenaVgh5q5ih7kvyVjgtg + example: VaenaVgh5q5ih7kvyVjgtg + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + tweet_id: + default: '1349129669258448897' + example: '1349129669258448897' + type: string + required: + - tweet_id + - dark_request + type: object + required: + - queryId + - variables + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/DeleteTweetResponse' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/FavoriteTweet: + post: + description: favorite Tweet + operationId: postFavoriteTweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: lI07N6Otwv1PhnEgXILM7A + example: lI07N6Otwv1PhnEgXILM7A + type: string + requestBody: + content: + application/json: + schema: + properties: + queryId: + default: lI07N6Otwv1PhnEgXILM7A + example: lI07N6Otwv1PhnEgXILM7A + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + tweet_id: + default: '1349129669258448897' + example: '1349129669258448897' + type: string + required: + - tweet_id + - dark_request + type: object + required: + - queryId + - variables + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/FavoriteTweetResponseData' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/Favoriters: + get: + description: get tweet favoriters + operationId: getFavoriters + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: LLkw5EcVutJL6y-2gkz22A + example: LLkw5EcVutJL6y-2gkz22A + type: string + - in: query + name: variables + required: true + schema: + default: '{"tweetId": "1349129669258448897", "count": 20, "includePromotedContent": + true}' + example: '{"tweetId": "1349129669258448897", "count": 20, "includePromotedContent": + true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TweetFavoritersResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user-list + /graphql/{pathQueryId}/Followers: + get: + description: get user list of followers + operationId: getFollowers + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: ZG1BQPaRSg04qo55kKaW2g + example: ZG1BQPaRSg04qo55kKaW2g + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + example: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FollowResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user-list + /graphql/{pathQueryId}/FollowersYouKnow: + get: + description: get followers you know + operationId: getFollowersYouKnow + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: citX7s5IAb1C6AVCqUO68g + example: citX7s5IAb1C6AVCqUO68g + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + example: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FollowResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user-list + /graphql/{pathQueryId}/Following: + get: + description: get user list of following + operationId: getFollowing + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: PAnE9toEjRfE-4tozRcsfw + example: PAnE9toEjRfE-4tozRcsfw + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + example: '{"userId": "44196397", "count": 20, "includePromotedContent": + false}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/FollowResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user-list + /graphql/{pathQueryId}/HomeLatestTimeline: + get: + description: get tweet list of timeline + operationId: getHomeLatestTimeline + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: IjTuxEFmAb6DvzycVz4fHg + example: IjTuxEFmAb6DvzycVz4fHg + type: string + - in: query + name: variables + required: true + schema: + default: '{"count": 20, "includePromotedContent": true, "latestControlAvailable": + true, "requestContext": "launch"}' + example: '{"count": 20, "includePromotedContent": true, "latestControlAvailable": + true, "requestContext": "launch"}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TimelineResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/HomeTimeline: + get: + description: get tweet list of timeline + operationId: getHomeTimeline + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: AmMFotx7L4P3QnyOM3bCRA + example: AmMFotx7L4P3QnyOM3bCRA + type: string + - in: query + name: variables + required: true + schema: + default: '{"count": 20, "includePromotedContent": true, "latestControlAvailable": + true, "requestContext": "launch", "withCommunity": true, "seenTweetIds": + ["1349129669258448897"]}' + example: '{"count": 20, "includePromotedContent": true, "latestControlAvailable": + true, "requestContext": "launch", "withCommunity": true, "seenTweetIds": + ["1349129669258448897"]}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TimelineResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/Likes: + get: + description: get user likes tweets + operationId: getLikes + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: 9s8V6sUI8fZLDiN-REkAxA + example: 9s8V6sUI8fZLDiN-REkAxA + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 20, "includePromotedContent": + false, "withClientEventToken": false, "withBirdwatchNotes": false, "withVoice": + true, "withV2Timeline": true}' + example: '{"userId": "44196397", "count": 20, "includePromotedContent": + false, "withClientEventToken": false, "withBirdwatchNotes": false, "withVoice": + true, "withV2Timeline": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserTweetsResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/ListLatestTweetsTimeline: + get: + description: get tweet list of timeline + operationId: getListLatestTweetsTimeline + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: HjsWc-nwwHKYwHenbHm-tw + example: HjsWc-nwwHKYwHenbHm-tw + type: string + - in: query + name: variables + required: true + schema: + default: '{"listId": "1539453138322673664", "count": 20}' + example: '{"listId": "1539453138322673664", "count": 20}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ListLatestTweetsTimelineResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/ProfileSpotlightsQuery: + get: + description: get user by screen name + operationId: getProfileSpotlightsQuery + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: X-Sw7rvhcUhof35mh5ObKw + example: X-Sw7rvhcUhof35mh5ObKw + type: string + - in: query + name: variables + required: true + schema: + default: '{"screen_name": "elonmusk"}' + example: '{"screen_name": "elonmusk"}' + type: string + - in: query + name: features + required: true + schema: + default: '{}' + example: '{}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/ProfileResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + /graphql/{pathQueryId}/Retweeters: + get: + description: get tweet retweeters + operationId: getRetweeters + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: X-XEqG5qHQSAwmvy00xfyQ + example: X-XEqG5qHQSAwmvy00xfyQ + type: string + - in: query + name: variables + required: true + schema: + default: '{"tweetId": "1349129669258448897", "count": 20, "includePromotedContent": + true}' + example: '{"tweetId": "1349129669258448897", "count": 20, "includePromotedContent": + true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TweetRetweetersResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user-list + /graphql/{pathQueryId}/SearchTimeline: + get: + description: search tweet list. product:[Top, Latest, People, Photos, Videos] + operationId: getSearchTimeline + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: fZK7JipRHWtiZsTodhsTfQ + example: fZK7JipRHWtiZsTodhsTfQ + type: string + - in: query + name: variables + required: true + schema: + default: '{"rawQuery": "elonmusk", "count": 20, "querySource": "typed_query", + "product": "Top"}' + example: '{"rawQuery": "elonmusk", "count": 20, "querySource": "typed_query", + "product": "Top"}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/SearchTimelineResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/TweetDetail: + get: + description: get TweetDetail + operationId: getTweetDetail + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: B9_KmbkLhXt6jRwGjJrweg + example: B9_KmbkLhXt6jRwGjJrweg + type: string + - in: query + name: variables + required: true + schema: + default: '{"focalTweetId": "1349129669258448897", "referrer": "home", "with_rux_injections": + false, "includePromotedContent": true, "withCommunity": true, "withQuickPromoteEligibilityTweetFields": + true, "withBirdwatchNotes": true, "withVoice": true, "withV2Timeline": + true}' + example: '{"focalTweetId": "1349129669258448897", "referrer": "home", "with_rux_injections": + false, "includePromotedContent": true, "withCommunity": true, "withQuickPromoteEligibilityTweetFields": + true, "withBirdwatchNotes": true, "withVoice": true, "withV2Timeline": + true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + - in: query + name: fieldToggles + required: true + schema: + default: '{"withArticleRichContentState": false}' + example: '{"withArticleRichContentState": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TweetDetailResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/TweetResultByRestId: + get: + description: get TweetResultByRestId + operationId: getTweetResultByRestId + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: MWY3AO9_I3rcP_L2A4FR4A + example: MWY3AO9_I3rcP_L2A4FR4A + type: string + - in: query + name: variables + required: true + schema: + default: '{"tweetId": "1691730070669517096", "withCommunity": false, "includePromotedContent": + false, "withVoice": false}' + example: '{"tweetId": "1691730070669517096", "withCommunity": false, "includePromotedContent": + false, "withVoice": false}' + type: string + - in: query + name: features + required: true + schema: + default: '{"creator_subscriptions_tweet_preview_api_enabled": true, "c9s_tweet_anatomy_moderator_badge_enabled": + true, "tweetypie_unmention_optimization_enabled": true, "responsive_web_edit_tweet_api_enabled": + true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, + "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_graphql_exclude_directive_enabled": + true, "verified_phone_label_enabled": false, "responsive_web_media_download_video_enabled": + false, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true, "responsive_web_enhance_cards_enabled": + false}' + example: '{"creator_subscriptions_tweet_preview_api_enabled": true, "c9s_tweet_anatomy_moderator_badge_enabled": + true, "tweetypie_unmention_optimization_enabled": true, "responsive_web_edit_tweet_api_enabled": + true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": true, + "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_graphql_exclude_directive_enabled": + true, "verified_phone_label_enabled": false, "responsive_web_media_download_video_enabled": + false, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true, "responsive_web_enhance_cards_enabled": + false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/TweetResultByRestIdResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + /graphql/{pathQueryId}/UnfavoriteTweet: + post: + description: unfavorite Tweet + operationId: postUnfavoriteTweet + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: ZYKSe-w7KEslx3JhSIk5LA + example: ZYKSe-w7KEslx3JhSIk5LA + type: string + requestBody: + content: + application/json: + schema: + properties: + queryId: + default: ZYKSe-w7KEslx3JhSIk5LA + example: ZYKSe-w7KEslx3JhSIk5LA + type: string + variables: + properties: + dark_request: + default: false + example: false + type: boolean + tweet_id: + default: '1349129669258448897' + example: '1349129669258448897' + type: string + required: + - tweet_id + - dark_request + type: object + required: + - queryId + - variables + description: body + required: true + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UnfavoriteTweetResponseData' + - $ref: '#/components/schemas/Errors' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - post + /graphql/{pathQueryId}/UserByRestId: + get: + description: get user by rest id + operationId: getUserByRestId + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: tD8zKvQzwY3kdx5yz6YmOw + example: tD8zKvQzwY3kdx5yz6YmOw + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "withSafetyModeUserFields": true}' + example: '{"userId": "44196397", "withSafetyModeUserFields": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"hidden_profile_likes_enabled": true, "hidden_profile_subscriptions_enabled": + true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "highlights_tweets_tab_ui_enabled": true, "responsive_web_twitter_article_notes_tab_enabled": + true, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + example: '{"hidden_profile_likes_enabled": true, "hidden_profile_subscriptions_enabled": + true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "highlights_tweets_tab_ui_enabled": true, "responsive_web_twitter_article_notes_tab_enabled": + true, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user + /graphql/{pathQueryId}/UserByScreenName: + get: + description: get user by screen name + operationId: getUserByScreenName + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: k5XapwcSikNsEsILW5FvgA + example: k5XapwcSikNsEsILW5FvgA + type: string + - in: query + name: variables + required: true + schema: + default: '{"screen_name": "elonmusk", "withSafetyModeUserFields": true}' + example: '{"screen_name": "elonmusk", "withSafetyModeUserFields": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"hidden_profile_likes_enabled": true, "hidden_profile_subscriptions_enabled": + true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "subscriptions_verification_info_is_identity_verified_enabled": + true, "subscriptions_verification_info_verified_since_enabled": true, + "highlights_tweets_tab_ui_enabled": true, "responsive_web_twitter_article_notes_tab_enabled": + true, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + example: '{"hidden_profile_likes_enabled": true, "hidden_profile_subscriptions_enabled": + true, "responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "subscriptions_verification_info_is_identity_verified_enabled": + true, "subscriptions_verification_info_verified_since_enabled": true, + "highlights_tweets_tab_ui_enabled": true, "responsive_web_twitter_article_notes_tab_enabled": + true, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + type: string + - in: query + name: fieldToggles + required: true + schema: + default: '{"withAuxiliaryUserLabels": false}' + example: '{"withAuxiliaryUserLabels": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - user + /graphql/{pathQueryId}/UserHighlightsTweets: + get: + description: get user highlights tweets + operationId: getUserHighlightsTweets + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: ZRU-YBvpJ5c-SOS-nb_Lhg + example: ZRU-YBvpJ5c-SOS-nb_Lhg + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withVoice": true}' + example: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withVoice": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserHighlightsTweetsResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/UserMedia: + get: + description: get user media tweets + operationId: getUserMedia + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: tO4LMUYAZbR4T0SqQ85aAw + example: tO4LMUYAZbR4T0SqQ85aAw + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 40, "includePromotedContent": + false, "withClientEventToken": false, "withBirdwatchNotes": false, "withVoice": + true, "withV2Timeline": true}' + example: '{"userId": "44196397", "count": 40, "includePromotedContent": + false, "withClientEventToken": false, "withBirdwatchNotes": false, "withVoice": + true, "withV2Timeline": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserTweetsResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/UserTweets: + get: + description: get user tweets + operationId: getUserTweets + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: 5ICa5d9-AitXZrIA3H-4MQ + example: 5ICa5d9-AitXZrIA3H-4MQ + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withQuickPromoteEligibilityTweetFields": true, "withVoice": true, + "withV2Timeline": true}' + example: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withQuickPromoteEligibilityTweetFields": true, "withVoice": true, + "withV2Timeline": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserTweetsResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/UserTweetsAndReplies: + get: + description: get user replies tweets + operationId: getUserTweetsAndReplies + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: UtLStR_BnYUGD7Q453UXQg + example: UtLStR_BnYUGD7Q453UXQg + type: string + - in: query + name: variables + required: true + schema: + default: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withCommunity": true, "withVoice": true, "withV2Timeline": true}' + example: '{"userId": "44196397", "count": 40, "includePromotedContent": + true, "withCommunity": true, "withVoice": true, "withV2Timeline": true}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "creator_subscriptions_tweet_preview_api_enabled": true, "responsive_web_graphql_timeline_navigation_enabled": + true, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "c9s_tweet_anatomy_moderator_badge_enabled": true, "tweetypie_unmention_optimization_enabled": + true, "responsive_web_edit_tweet_api_enabled": true, "graphql_is_translatable_rweb_tweet_is_translatable_enabled": + true, "view_counts_everywhere_api_enabled": true, "longform_notetweets_consumption_enabled": + true, "responsive_web_twitter_article_tweet_consumption_enabled": true, + "tweet_awards_web_tipping_enabled": false, "freedom_of_speech_not_reach_fetch_enabled": + true, "standardized_nudges_misinfo": 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_inline_media_enabled": true, "responsive_web_media_download_video_enabled": + false, "responsive_web_enhance_cards_enabled": false}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UserTweetsResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - tweet + /graphql/{pathQueryId}/UsersByRestIds: + get: + description: get users by rest ids + operationId: getUsersByRestIds + parameters: + - in: path + name: pathQueryId + required: true + schema: + default: itEhGywpgX9b3GJCzOtSrA + example: itEhGywpgX9b3GJCzOtSrA + type: string + - in: query + name: variables + required: true + schema: + default: '{"userIds": ["44196397"]}' + example: '{"userIds": ["44196397"]}' + type: string + - in: query + name: features + required: true + schema: + default: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + example: '{"responsive_web_graphql_exclude_directive_enabled": true, "verified_phone_label_enabled": + false, "responsive_web_graphql_skip_user_profile_image_extensions_enabled": + false, "responsive_web_graphql_timeline_navigation_enabled": true}' + type: string + responses: + '200': + content: + application/json: + schema: + $ref: '#/components/schemas/UsersResponse' + description: Successful operation + headers: + x-connection-hash: + schema: + type: string + x-rate-limit-limit: + schema: + type: integer + x-rate-limit-remaining: + schema: + type: integer + x-rate-limit-reset: + schema: + type: integer + x-response-time: + schema: + type: integer + x-tfe-preserve-body: + schema: + type: boolean + x-transaction-id: + schema: + type: string + x-twitter-response-tags: + schema: + type: string + tags: + - users + /other: + get: + description: This is not an actual endpoint + operationId: other + responses: + '200': + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/OtherResponse' + description: Successful operation + tags: + - other +security: +- CsrfToken: [] +- CookieCt0: [] +- GuestToken: [] +- CookieAuthToken: [] +- AuthType: [] +- UserAgent: [] +- BearerAuth: [] +- ActiveUser: [] +- ClientLanguage: [] +- Accept: [] +- AcceptEncoding: [] +- AcceptLanguage: [] +- CacheControl: [] +- Pragma: [] +- SecChUa: [] +- SecChUaMobile: [] +- SecChUaPlatform: [] +- SecFetchDest: [] +- SecFetchMode: [] +- SecFetchSite: [] +servers: +- url: https://twitter.com/i/api +tags: +- description: Responses containing User objects. + name: user +- description: Responses containing List[User] objects. + name: users +- description: Responses containing instruction objects. + name: user-list +- description: Responses containing instruction objects. + name: tweet +- description: post + name: post +- description: legacy APIs get + name: v1.1-get +- description: legacy APIs post + name: v1.1-post +- description: legacy APIs get + name: v2.0-get +- description: legacy APIs post + name: v2.0-post +- description: other + name: other diff --git a/tools/build_config.py b/tools/build_config.py index 597ad0b..0caebce 100644 --- a/tools/build_config.py +++ b/tools/build_config.py @@ -1,11 +1,23 @@ -from hooks import * +from hooks import ( + AddParametersOnBody, + AddParametersOnContent, + AddParametersOnParameters, + AddPathQueryIdOnParameters, + AddSecuritySchemesOnSecuritySchemes, + RemoveErrorHandle, + SetResponsesHeader, +) class Config: OUTPUT_DIR = "dist/{0}" INPUT_DIR = "src/openapi" - def hooks_generator(self, queryParameterJson=True): + def hooks_generator( + self, + queryParameterJson=True, + removeLegacyDiscriminatorBehavior=False, + ): # https://stackoverflow.com/questions/34820064/defining-an-api-with-swagger-get-call-that-uses-json-in-parameters/45223964 if queryParameterJson: # ["parameters"][0]["content"]["application/json"]["schema"] @@ -22,6 +34,11 @@ class Config: ignoreKeys=["queryId"], ) + # https://github.com/OpenAPITools/openapi-generator/issues/15373 + additionalHooks = [] + if removeLegacyDiscriminatorBehavior: + additionalHooks.append(RemoveErrorHandle()) + return { "openapi": [AddSecuritySchemesOnSecuritySchemes()], "schemas": [], @@ -31,6 +48,7 @@ class Config: SetResponsesHeader(suffix=None), AddPathQueryIdOnParameters(split=-1), getParamHook, + *additionalHooks, ] for key in ["default", "user", "users", "user-list", "tweet"] } @@ -70,5 +88,11 @@ class Config: def main(self): return { "docs": self.hooks_generator(), - "compatible": self.hooks_generator(queryParameterJson=False), + "compatible": self.hooks_generator( + queryParameterJson=False, + ), + "compatible_discriminator": self.hooks_generator( + queryParameterJson=False, + removelegacyDiscriminatorBehavior=True, + ), } diff --git a/tools/hooks.py b/tools/hooks.py index 405e3fc..be632d3 100644 --- a/tools/hooks.py +++ b/tools/hooks.py @@ -1,6 +1,7 @@ -import yaml import json +import yaml + class HookBase: PLACEHOLDER: dict @@ -193,6 +194,13 @@ class AddPathQueryIdOnParameters(RequestHookBase): return path, value +class RemoveErrorHandle(RequestHookBase): + def hook(self, path: str, value: dict): + content = value["responses"]["200"]["content"]["application/json"] + content["schema"] = content["schema"]["oneOf"][0] + return path, value + + # OnParameters