diff --git a/src/config/placeholder.json b/src/config/placeholder.json index 067756e..c9d7644 100644 --- a/src/config/placeholder.json +++ b/src/config/placeholder.json @@ -1134,6 +1134,48 @@ "responsive_web_enhance_cards_enabled": false } }, + "NotificationsTimeline": { + "@path": "/i/api/graphql/GquVPn-SKYxKLgLsRPpJ6g/NotificationsTimeline", + "@method": "GET", + "queryId": "GquVPn-SKYxKLgLsRPpJ6g", + "variables": { + "timeline_type": "All", + "count": 20 + }, + "features": { + "rweb_video_screen_enabled": false, + "profile_label_improvements_pcf_label_in_post_enabled": true, + "rweb_tipjar_consumption_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, + "premium_content_api_read_enabled": false, + "communities_web_enable_tweet_community_results_fetch": true, + "c9s_tweet_anatomy_moderator_badge_enabled": true, + "responsive_web_grok_analyze_button_fetch_trends_enabled": false, + "responsive_web_grok_analyze_post_followups_enabled": true, + "responsive_web_jetfuel_frame": false, + "responsive_web_grok_share_attachment_enabled": true, + "articles_preview_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, + "responsive_web_grok_show_grok_translated_post": false, + "responsive_web_grok_analysis_button_from_backend": false, + "creator_subscriptions_quote_tweet_preview_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, + "longform_notetweets_rich_text_read_enabled": true, + "longform_notetweets_inline_media_enabled": true, + "responsive_web_grok_image_annotation_enabled": true, + "responsive_web_enhance_cards_enabled": false + } + }, "#=====v1.1====": { "url": "https://x.com/i/api/1.1/" }, @@ -1727,44 +1769,6 @@ "@method": "GET", "queryId": "I_tJ_DO6WLqG0em8EQsVVg" }, - "NotificationsTimeline": { - "@path": "/i/api/graphql/GquVPn-SKYxKLgLsRPpJ6g/NotificationsTimeline", - "@method": "GET", - "queryId": "GquVPn-SKYxKLgLsRPpJ6g", - "features": { - "rweb_video_screen_enabled": false, - "profile_label_improvements_pcf_label_in_post_enabled": true, - "rweb_tipjar_consumption_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, - "premium_content_api_read_enabled": false, - "communities_web_enable_tweet_community_results_fetch": true, - "c9s_tweet_anatomy_moderator_badge_enabled": true, - "responsive_web_grok_analyze_button_fetch_trends_enabled": false, - "responsive_web_grok_analyze_post_followups_enabled": true, - "responsive_web_jetfuel_frame": false, - "responsive_web_grok_share_attachment_enabled": true, - "articles_preview_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, - "responsive_web_grok_show_grok_translated_post": false, - "responsive_web_grok_analysis_button_from_backend": false, - "creator_subscriptions_quote_tweet_preview_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, - "longform_notetweets_rich_text_read_enabled": true, - "longform_notetweets_inline_media_enabled": true, - "responsive_web_grok_image_annotation_enabled": true, - "responsive_web_enhance_cards_enabled": false - } - }, "TopicCarouselQuery": { "@path": "/i/api/graphql/byVjaS0CUtBqAao_lhZFgA/TopicCarouselQuery", "@method": "GET", diff --git a/src/openapi/paths/timeline.yaml b/src/openapi/paths/timeline.yaml index a83c134..49cb6c4 100644 --- a/src/openapi/paths/timeline.yaml +++ b/src/openapi/paths/timeline.yaml @@ -102,6 +102,20 @@ paths: tags: - "tweet" + /graphql/{pathQueryId}/NotificationsTimeline: + get: + operationId: getNotificationsTimeline + description: get notification list. timeline_type:[All, Verified, Mentions] + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/NotificationsTimelineResponse" + tags: + - "tweet" + components: schemas: TimelineResponse: @@ -291,3 +305,49 @@ components: $ref: "./../schemas/typename.yaml#/components/schemas/TypeName" # Community about_timeline: $ref: "./../schemas/timeline.yaml#/components/schemas/TimelineResult" + + NotificationsTimelineResponse: + required: + - "data" + properties: + data: + $ref: "#/components/schemas/NotificationsTimelineData" + errors: + type: array + items: + $ref: "./../response/error.yaml#/components/schemas/ErrorResponse" + + NotificationsTimelineData: + required: + - "viewer_v2" + properties: + viewer_v2: + $ref: "#/components/schemas/NotificationsViewerV2" + + NotificationsViewerV2: + required: + - "user_results" + properties: + user_results: + $ref: "#/components/schemas/NotificationsUserResults" + + NotificationsUserResults: + required: + - "result" + properties: + result: + $ref: "#/components/schemas/NotificationsResult" + + NotificationsResult: + required: + - "__typename" + - "rest_id" + - "notification_timeline" + properties: + __typename: + $ref: "./../schemas/typename.yaml#/components/schemas/TypeName" # User + rest_id: + type: string + pattern: "^[0-9]+$" + notification_timeline: + $ref: "./../schemas/timeline.yaml#/components/schemas/TimelineResult" diff --git a/src/openapi/schemas/content.yaml b/src/openapi/schemas/content.yaml index 7440e06..4f71914 100644 --- a/src/openapi/schemas/content.yaml +++ b/src/openapi/schemas/content.yaml @@ -166,6 +166,7 @@ components: - $ref: "#/components/schemas/TimelineCommunity" - $ref: "#/components/schemas/TimelineTombstone" - $ref: "#/components/schemas/TimelineTrend" + - $ref: "#/components/schemas/TimelineNotification" discriminator: propertyName: __typename @@ -178,6 +179,7 @@ components: TimelineCommunity: "#/components/schemas/TimelineCommunity" TimelineTombstone: "#/components/schemas/TimelineTombstone" TimelineTrend: "#/components/schemas/TimelineTrend" + TimelineNotification: "#/components/schemas/TimelineNotification" ContentItemType: type: string @@ -190,6 +192,8 @@ components: TimelineMessagePrompt, TimelineCommunity, TimelineTombstone, + TimelineTrend, + TimelineNotification, ] TimelineTweet: @@ -507,3 +511,53 @@ components: url: type: string format: uri + + TimelineNotification: + required: + - "__typename" + - "itemType" + - "id" + - "notification_icon" + - "rich_message" + - "notification_url" + - "template" + - "timestamp_ms" + properties: + __typename: + $ref: "./typename.yaml#/components/schemas/TypeName" # TimelineNotification + itemType: + $ref: "#/components/schemas/ContentItemType" # TimelineNotification + id: + type: string + notification_icon: + type: string # enum milestone_icon + rich_message: + $ref: "#/components/schemas/RichMessage" + notification_url: + $ref: "#/components/schemas/SocialContextLandingUrl" + template: + $ref: "#/components/schemas/NotificationTemplate" + timestamp_ms: + type: string # 2025-05-05T01:18:21.657Z + + RichMessage: + type: object + properties: + rtl: + type: boolean + text: + type: string + + NotificationTemplate: + type: object + properties: + __typename: + $ref: "./typename.yaml#/components/schemas/TypeName" # NotificationTemplate + target_objects: + type: array + items: + type: object + from_users: + type: array + items: + type: object diff --git a/src/openapi/schemas/instruction.yaml b/src/openapi/schemas/instruction.yaml index 95586d8..d792bea 100644 --- a/src/openapi/schemas/instruction.yaml +++ b/src/openapi/schemas/instruction.yaml @@ -16,6 +16,8 @@ components: - $ref: "#/components/schemas/TimelineShowAlert" - $ref: "#/components/schemas/TimelineTerminateTimeline" - $ref: "#/components/schemas/TimelineShowCover" + - $ref: "#/components/schemas/TimelineClearEntriesUnreadState" + - $ref: "#/components/schemas/TimelineMarkEntriesUnreadGreaterThanSortIndex" discriminator: propertyName: type @@ -28,6 +30,8 @@ components: TimelineShowAlert: "#/components/schemas/TimelineShowAlert" TimelineTerminateTimeline: "#/components/schemas/TimelineTerminateTimeline" TimelineShowCover: "#/components/schemas/TimelineShowCover" + TimelineClearEntriesUnreadState: "#/components/schemas/TimelineClearEntriesUnreadState" + TimelineMarkEntriesUnreadGreaterThanSortIndex: "#/components/schemas/TimelineMarkEntriesUnreadGreaterThanSortIndex" InstructionType: type: string @@ -41,6 +45,8 @@ components: TimelineShowAlert, TimelineTerminateTimeline, TimelineShowCover, + TimelineClearEntriesUnreadState, + TimelineMarkEntriesUnreadGreaterThanSortIndex, ] TimelineAddEntries: @@ -309,3 +315,20 @@ components: action: type: string enum: [primary_cta] + + TimelineClearEntriesUnreadState: + required: + - type + properties: + type: + $ref: "#/components/schemas/InstructionType" # TimelineClearEntriesUnreadState + + TimelineMarkEntriesUnreadGreaterThanSortIndex: + required: + - type + properties: + type: + $ref: "#/components/schemas/InstructionType" # TimelineMarkEntriesUnreadGreaterThanSortIndex + sort_index: + type: string + pattern: "[0-9]+$" diff --git a/src/openapi/schemas/timeline.yaml b/src/openapi/schemas/timeline.yaml index eece93e..e3858df 100644 --- a/src/openapi/schemas/timeline.yaml +++ b/src/openapi/schemas/timeline.yaml @@ -8,6 +8,8 @@ components: schemas: TimelineResult: properties: + id: + type: string timeline: $ref: "#/components/schemas/Timeline" diff --git a/src/openapi/schemas/typename.yaml b/src/openapi/schemas/typename.yaml index 79845b2..6246f54 100644 --- a/src/openapi/schemas/typename.yaml +++ b/src/openapi/schemas/typename.yaml @@ -22,6 +22,8 @@ components: TimelineCommunity, TimelineTombstone, TimelineTrend, + TimelineNotification, + TimelineNotificationAggregateUserActions, TweetUnavailable, TweetPreviewDisplay, Tweet,