1
Fork 0
mirror of https://github.com/thegeneralist01/twitter-openapi synced 2026-01-11 15:40:26 +01:00

update file

Signed-off-by: ふぁ <yuki@yuki0311.com>
This commit is contained in:
ふぁ 2023-04-12 02:16:34 +09:00
parent 9b3deabd8e
commit 3d54c8d9a7
No known key found for this signature in database
GPG key ID: 83A8A5E74872A8AA
13 changed files with 600 additions and 605 deletions

View file

@ -1,605 +0,0 @@
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

22
openapi/openapi-3.0.yaml Normal file
View file

@ -0,0 +1,22 @@
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:
$ref: ./src/paths/timeline/HomeTimeline.yaml
/FaBzCqZXuQCb4PhB0RHqHw/Following:
$ref: ./src/paths/follow/Following.yaml
/VptSi88PiaQhBevFbGVlGg/Followers:
$ref: ./src/paths/follow/Followers.yaml

View file

@ -0,0 +1,9 @@
# https://github.com/OpenAPITools/openapi-generator/issues/13584
Features:
in: query
required: true
content:
application/json:
schema:
type: object

View file

@ -0,0 +1,9 @@
# https://github.com/OpenAPITools/openapi-generator/issues/13584
Variables:
in: query
required: true
content:
application/json:
schema:
type: object

View file

@ -0,0 +1,49 @@
ContentUnion:
oneOf:
- $ref: "#/TimelineTimelineItem"
- $ref: "#/TimelineTimelineCursor"
discriminator:
propertyName: entryType
mapping": # deprecated
TimelineTimelineItem: "#/TimelineTimelineItem"
TimelineTimelineCursor: "#/TimelineTimelineCursor"
ContentEntryType:
type: string
enum: [TimelineTimelineItem, TimelineTimelineCursor]
TimelineTimelineItem:
required:
- "__typename"
- "entryType"
- "itemContent"
properties:
__typename:
$ref: "./TypeName.yaml#/TypeName" # TimelineTimelineItem
entryType:
type: string # enum
$ref: "#/ContentEntryType" # TimelineTimelineItem
itemContent:
$ref: "./ItemContent.yaml#/ItemContent"
clientEventInfo:
type: object # todo
feedbackInfo:
type: object # todo
TimelineTimelineCursor:
required:
- "__typename"
- "entryType"
- "cursorType"
- "value"
properties:
__typename:
$ref: "./TypeName.yaml#/TypeName" # TimelineTimelineCursor
entryType:
type: string # enum
$ref: "#/ContentEntryType" # TimelineTimelineCursor
cursorType:
type: string
enum: [Top, Bottom]
value:
type: string

View file

@ -0,0 +1,45 @@
InstructionUnion:
oneOf:
- $ref: "#/TimelineAddEntries"
discriminator:
propertyName: type
mapping": # deprecated
TimelineAddEntries: "#/TimelineAddEntries"
InstructionType:
type: string
enum:
[
TimelineAddEntries,
TimelineAddToModule,
TimelineTerminateTimeline,
TimelineShowAlert,
]
TimelineAddEntries:
required:
- type
- entries
properties:
type:
type: string
$ref: "#/InstructionType" # TimelineAddEntries
entries:
type: array
items:
$ref: "#/TimelineAddEntry"
TimelineAddEntry:
required:
- "content"
- "entryId"
- "sortIndex"
properties:
content:
$ref: "./Content.yaml#/ContentUnion"
entryId:
type: string
pattern: '^[a-z\-]+[0-9]+$'
sortIndex:
type: string
pattern: "[0-9]+$"

View file

@ -0,0 +1,27 @@
ContentItemType:
type: string
enum: [TimelineTweet]
ItemContent:
required:
- "__typename"
- "itemType"
- "tweetDisplayType"
- "tweet_results"
properties:
__typename:
$ref: "TypeName.yaml#/TypeName" # TimelineTweet
itemType:
type: string # enum
$ref: "#/ContentItemType" # TimelineTweet
tweetDisplayType:
type: string
tweet_results:
$ref: "#/ItemResult"
ItemResult:
required:
- "result"
properties:
result:
$ref: "./Tweet.yaml#/TweetResult"

View file

@ -0,0 +1,123 @@
TweetResult:
required:
- "__typename"
- "rest_id"
- "core"
- "edit_control"
- "edit_prespective"
- "is_translatable"
- "legacy"
- "views"
properties:
__typename:
$ref: "TypeName.yaml#/TypeName" # Tweet TweetWithVisibilityResults
rest_id:
type: string
pattern: "^[0-9]+$"
core:
$ref: "./User.yaml#/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
legacy:
$ref: "#/TweetLegacy"
views:
type: object
properties:
count:
type: string
pattern: "^[0-9]+$"
state:
type: string # enum
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]+$"

View file

@ -0,0 +1,11 @@
TypeName:
type: string
enum:
[
TimelineTweet,
TimelineTimelineItem,
TimelineTimelineCursor,
TweetWithVisibilityResults,
Tweet,
User,
]

View file

@ -0,0 +1,185 @@
UserResultCore:
required:
- "user_results"
properties:
user_results:
$ref: "#/UserResults"
UserResults:
required:
- "result"
properties:
result:
$ref: "#/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: "TypeName.yaml#/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: "#/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

View file

@ -0,0 +1,26 @@
get:
operationId: getFollowers
description: get user list of followers
parameters:
- name: variables
in: query
required: true
schema:
type: string
- name: features
in: query
required: true
schema:
type: string
- name: queryId
in: query
schema:
type: string
default: "VptSi88PiaQhBevFbGVlGg"
responses:
"200":
description: Successful operation

View file

@ -0,0 +1,26 @@
get:
operationId: getFollowing
description: get user list of following
parameters:
- name: variables
in: query
required: true
schema:
type: string
- name: features
in: query
required: true
schema:
type: string
- name: queryId
in: query
schema:
type: string
default: "FaBzCqZXuQCb4PhB0RHqHw"
responses:
"200":
description: Successful operation

View file

@ -0,0 +1,68 @@
get:
operationId: getHomeTimeline
description: get tweet list of timeline
parameters:
- name: variables
in: query
required: true
schema:
type: string
- name: features
in: query
required: true
schema:
type: string
- name: queryId
in: query
required: true
schema:
type: string
default: "BntFPEOxs3GYdPaS6CjUcg"
responses:
"200":
description: Successful operation
content:
application/json:
schema:
$ref: "#/components/schemas/HomeTimelineResponse"
components:
schemas:
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/Instruction.yaml#/InstructionUnion"
metadata:
type: object # todo
responseObjects:
type: object # todo