openapi: 3.0.3 info: title: Twitter OpenAPI description: |- Twitter OpenAPI termsOfService: https://github.com/fa0311 contact: email: yuki@yuki0311.com license: name: other url: https://github.com/fa0311/twitter-openapi/LICENSE version: 0.0.1 servers: - url: https://twitter.com/i/api/graphql paths: /BntFPEOxs3GYdPaS6CjUcg/HomeTimeline: get: operationId: getHomeTimeline description: get tweet list of timeline parameters: - $ref: "#/components/parameters/Variables" - $ref: "#/components/parameters/Features" - in: query name: queryId required: true schema: type: string default: "BntFPEOxs3GYdPaS6CjUcg" responses: "200": description: Successful operation content: application/json: schema: $ref: "#/components/schemas/HomeTimelineResponse" /FaBzCqZXuQCb4PhB0RHqHw/Following: get: operationId: getFollowing description: get user list of following parameters: - $ref: "#/components/parameters/Variables" - $ref: "#/components/parameters/Features" - in: query name: queryId required: true schema: type: string default: "FaBzCqZXuQCb4PhB0RHqHw" responses: "200": description: Successful operation content: application/json: schema: $ref: "#/components/schemas/HomeTimelineData" /VptSi88PiaQhBevFbGVlGg/Followers: get: operationId: getFollowers description: get user list of followers parameters: - $ref: "#/components/parameters/Variables" - $ref: "#/components/parameters/Features" - in: query name: queryId required: true schema: type: string default: "VptSi88PiaQhBevFbGVlGg" responses: "200": description: Successful operation content: application/json: schema: $ref: "#/components/schemas/HomeTimelineData" components: schemas: TypeName: type: string enum: [ TimelineTweet, TimelineTimelineItem, TimelineTimelineCursor, TweetWithVisibilityResults, Tweet, User, ] InstructionType: type: string enum: [ TimelineAddEntries, TimelineAddToModule, TimelineTerminateTimeline, TimelineShowAlert, ] ContentEntryType: type: string enum: [TimelineTimelineItem, TimelineTimelineCursor] ContentItemType: type: string enum: [TimelineTweet] TestObject: type: object HomeTimelineResponse: required: - "data" properties: data: $ref: "#/components/schemas/HomeTimelineData" HomeTimelineData: required: - "home" properties: home: $ref: "#/components/schemas/HomeTimelineHome" HomeTimelineHome: required: - "home_timeline_urt" properties: home_timeline_urt: $ref: "#/components/schemas/HomeTimelineUrt" HomeTimelineUrt: required: - "instructions" - "metadata" - "responseObjects" properties: instructions: type: array items: $ref: "#/components/schemas/InstructionUnion" metadata: type: object # todo responseObjects: type: object # todo InstructionUnion: oneOf: - $ref: "#/components/schemas/TimelineAddEntries" discriminator: propertyName: type mapping": # deprecated TimelineAddEntries: "#components/schemas/TimelineAddEntries" TimelineAddEntries: required: - type - entries properties: type: type: string $ref: "#/components/schemas/InstructionType" # TimelineAddEntries entries: type: array items: $ref: "#/components/schemas/TimelineAddEntry" TimelineAddEntry: required: - "content" - "entryId" - "sortIndex" properties: content: $ref: "#/components/schemas/ContentUnion" entryId: type: string pattern: '^[a-z\-]+[0-9]+$' sortIndex: type: string pattern: "[0-9]+$" ContentUnion: oneOf: - $ref: "#/components/schemas/TimelineTimelineItem" - $ref: "#/components/schemas/TimelineTimelineCursor" discriminator: propertyName: entryType mapping": # deprecated TimelineTimelineItem: "#components/schemas/TimelineTimelineItem" TimelineTimelineCursor: "#/components/schemas/TimelineTimelineCursor" TimelineTimelineItem: required: - "__typename" - "entryType" - "itemContent" properties: __typename: $ref: "#/components/schemas/TypeName" # TimelineTimelineItem entryType: type: string # enum $ref: "#/components/schemas/ContentEntryType" # TimelineTimelineItem itemContent: $ref: "#/components/schemas/ItemContent" clientEventInfo: type: object # todo feedbackInfo: type: object # todo TimelineTimelineCursor: required: - "__typename" - "entryType" - "cursorType" - "value" properties: __typename: $ref: "#/components/schemas/TypeName" # TimelineTimelineCursor entryType: type: string # enum $ref: "#/components/schemas/ContentEntryType" # TimelineTimelineCursor cursorType: type: string enum: [Top, Bottom] value: type: string ItemContent: required: - "__typename" - "itemType" - "tweetDisplayType" - "tweet_results" properties: __typename: $ref: "#/components/schemas/TypeName" # TimelineTweet itemType: $ref: "#/components/schemas/ContentItemType" # TimelineTweet tweetDisplayType: type: string # enum tweet_results: $ref: "#/components/schemas/ItemResult" ItemResult: required: - "result" properties: result: $ref: "#/components/schemas/TweetResult" TweetResult: required: - "__typename" - "rest_id" - "core" - "edit_control" - "edit_prespective" - "is_translatable" - "legacy" - "views" properties: __typename: $ref: "#/components/schemas/TypeName" # Tweet TweetWithVisibilityResults rest_id: type: string pattern: "^[0-9]+$" core: $ref: "#/components/schemas/UserResultCore" unmention_data: type: object # todo edit_control: type: object properties: edit_tweet_ids: type: array items: type: string pattern: "^[0-9]+$" editable_until_msecs: type: string pattern: "^[0-9]+$" is_edit_eligible: type: boolean edits_remaining: type: string pattern: "^[0-9]+$" edit_prespective: type: object properties: favorited: type: boolean retweeted: type: boolean is_translatable: type: boolean default: false UserLegacy: $ref: "#/components/schemas/UserLegacy" views: type: object properties: count: type: string pattern: "^[0-9]+$" state: type: string # enum UserResultCore: required: - "user_results" properties: user_results: $ref: "#/components/schemas/UserResults" UserResults: required: - "result" properties: result: $ref: "#/components/schemas/UserResult" UserResult: required: - "__typename" - "affiliates_highlighted_label" - "has_graduated_access" - "id" - "is_blue_verified" - "legacy" - "rest_id" - "super_follow_eligible" - "super_followed_by" - "super_following" properties: __typename: $ref: "#/components/schemas/TypeName" # User affiliates_highlighted_label: type: object # todo has_graduated_access: type: boolean has_nft_avatar: type: boolean default: false id: type: string pattern: '^[a-z\-]+[0-9]+$' is_blue_verified: type: boolean default: false legacy: $ref: "#/components/schemas/UserLegacy" rest_id: type: string pattern: "^[0-9]+$" business_account: type: object # todo super_follow_eligible: type: boolean default: false super_followed_by: type: boolean default: false super_following: type: boolean default: false UserLegacy: required: - "blocked_by" - "blocking" - "can_dm" - "can_media_tag" - "created_at" - "default_profile" - "default_profile_image" - "description" - "fast_followers_count" - "favourites_count" - "follow_request_sent" - "followed_by" - "followers_count" - "following" - "friends_count" - "has_custom_timelines" - "is_translator" - "listed_count" - "location" - "media_count" - "muting" - "name" - "normal_followers_count" - "notifications" - "pinned_tweet_ids_str" - "possibly_sensitive" - "profile_image_url_https" - "profile_interstitial_type" - "protected" - "screen_name" - "statuses_count" - "translator_type" - "verified" - "want_retweets" properties: blocked_by: type: boolean default: false blocking: type: boolean default: false can_dm: type: boolean can_media_tag: type: boolean created_at: type: string # Wed Jul 08 14:05:58 +0000 2009 default_profile: type: boolean default_profile_image: type: boolean description: type: string entities: type: object # todo fast_followers_count: type: integer favourites_count: type: integer follow_request_sent: type: boolean default: false followed_by: type: boolean default: false followers_count: type: integer following: type: boolean default: false friends_count: type: integer has_custom_timelines: type: boolean is_translator: type: boolean listed_count: type: integer location: type: string media_count: type: integer muting: type: boolean default: false name: type: string normal_followers_count: type: integer notifications: type: boolean default: false pinned_tweet_ids_str: type: array items: type: string possibly_sensitive: type: boolean profile_banner_extensions: type: object profile_banner_url: type: string profile_image_extensions: type: object profile_image_url_https: type: string profile_interstitial_type: type: string protected: type: boolean default: false screen_name: type: string statuses_count: type: integer translator_type: type: string url: type: string verified: type: boolean want_retweets: type: boolean TweetLegacy: required: - "bookmark_count" - "bookmarked" - "created_at" - "conversation_id_str" - "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" properties: bookmark_count: type: integer bookmarked: type: boolean created_at: type: string # Thu Apr 06 13:23:34 +0000 2023 conversation_id_str: type: string pattern: "^[0-9]+$" display_text_range: type: array items: type: integer entities: type: object favorite_count: type: integer favorited: type: boolean full_text: type: string is_quote_status: type: boolean lang: type: string # enum possibly_sensitive: type: boolean default: false possibly_sensitive_editable: type: boolean default: false quote_count: type: integer reply_count: type: integer retweet_count: type: integer retweeted: type: boolean user_id_str: type: string pattern: "^[0-9]+$" id_str: type: string pattern: "^[0-9]+$" # === parameters === parameters: Variables: name: variables in: query required: true schema: type: string Features: name: features in: query required: true schema: type: string # https://github.com/OpenAPITools/openapi-generator/issues/13584 # It doesn't seem to work with dart lang. VariablesV3: name: variables in: query required: true content: application/json: schema: type: object FeaturesV3: name: features in: query required: true content: application/json: schema: type: object