x-twitter-scraper 0.7.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +6 -0
  3. package/package.json +1 -1
  4. package/resources/shared.d.mts +382 -15
  5. package/resources/shared.d.mts.map +1 -1
  6. package/resources/shared.d.ts +382 -15
  7. package/resources/shared.d.ts.map +1 -1
  8. package/resources/support/tickets.d.mts +19 -19
  9. package/resources/support/tickets.d.mts.map +1 -1
  10. package/resources/support/tickets.d.ts +19 -19
  11. package/resources/support/tickets.d.ts.map +1 -1
  12. package/resources/trends.d.mts +12 -0
  13. package/resources/trends.d.mts.map +1 -1
  14. package/resources/trends.d.ts +12 -0
  15. package/resources/trends.d.ts.map +1 -1
  16. package/resources/x/account-connection-challenges.d.mts +1 -1
  17. package/resources/x/account-connection-challenges.d.mts.map +1 -1
  18. package/resources/x/account-connection-challenges.d.ts +1 -1
  19. package/resources/x/account-connection-challenges.d.ts.map +1 -1
  20. package/resources/x/accounts.d.mts +40 -3
  21. package/resources/x/accounts.d.mts.map +1 -1
  22. package/resources/x/accounts.d.ts +40 -3
  23. package/resources/x/accounts.d.ts.map +1 -1
  24. package/resources/x/communities/communities.d.mts +2 -12
  25. package/resources/x/communities/communities.d.mts.map +1 -1
  26. package/resources/x/communities/communities.d.ts +2 -12
  27. package/resources/x/communities/communities.d.ts.map +1 -1
  28. package/resources/x/communities/communities.js.map +1 -1
  29. package/resources/x/communities/communities.mjs.map +1 -1
  30. package/resources/x/communities/tweets.d.mts +4 -8
  31. package/resources/x/communities/tweets.d.mts.map +1 -1
  32. package/resources/x/communities/tweets.d.ts +4 -8
  33. package/resources/x/communities/tweets.d.ts.map +1 -1
  34. package/resources/x/index.d.mts +1 -1
  35. package/resources/x/index.d.mts.map +1 -1
  36. package/resources/x/index.d.ts +1 -1
  37. package/resources/x/index.d.ts.map +1 -1
  38. package/resources/x/index.js.map +1 -1
  39. package/resources/x/index.mjs.map +1 -1
  40. package/resources/x/lists.d.mts +2 -4
  41. package/resources/x/lists.d.mts.map +1 -1
  42. package/resources/x/lists.d.ts +2 -4
  43. package/resources/x/lists.d.ts.map +1 -1
  44. package/resources/x/tweets/index.d.mts +1 -1
  45. package/resources/x/tweets/index.d.mts.map +1 -1
  46. package/resources/x/tweets/index.d.ts +1 -1
  47. package/resources/x/tweets/index.d.ts.map +1 -1
  48. package/resources/x/tweets/index.js.map +1 -1
  49. package/resources/x/tweets/index.mjs.map +1 -1
  50. package/resources/x/tweets/tweets.d.mts +301 -22
  51. package/resources/x/tweets/tweets.d.mts.map +1 -1
  52. package/resources/x/tweets/tweets.d.ts +301 -22
  53. package/resources/x/tweets/tweets.d.ts.map +1 -1
  54. package/resources/x/tweets/tweets.js +5 -8
  55. package/resources/x/tweets/tweets.js.map +1 -1
  56. package/resources/x/tweets/tweets.mjs +5 -8
  57. package/resources/x/tweets/tweets.mjs.map +1 -1
  58. package/resources/x/users/users.d.mts +10 -20
  59. package/resources/x/users/users.d.mts.map +1 -1
  60. package/resources/x/users/users.d.ts +10 -20
  61. package/resources/x/users/users.d.ts.map +1 -1
  62. package/resources/x/users/users.js.map +1 -1
  63. package/resources/x/users/users.mjs.map +1 -1
  64. package/resources/x/x.d.mts +14 -3
  65. package/resources/x/x.d.mts.map +1 -1
  66. package/resources/x/x.d.ts +14 -3
  67. package/resources/x/x.d.ts.map +1 -1
  68. package/resources/x/x.js.map +1 -1
  69. package/resources/x/x.mjs.map +1 -1
  70. package/skills/x-twitter-scraper/SKILL.md +8 -4
  71. package/skills/x-twitter-scraper/metadata.json +1 -1
  72. package/skills/x-twitter-scraper/references/mcp-setup.md +12 -5
  73. package/skills/x-twitter-scraper/references/mcp-tools.md +7 -1
  74. package/skills/x-twitter-scraper/references/types-x-api.md +62 -12
  75. package/skills/x-twitter-scraper/skill-card.md +2 -2
  76. package/skills/x-twitter-scraper/skillspector-report.md +4 -1
  77. package/src/resources/shared.ts +514 -16
  78. package/src/resources/support/tickets.ts +19 -19
  79. package/src/resources/trends.ts +15 -0
  80. package/src/resources/x/account-connection-challenges.ts +1 -1
  81. package/src/resources/x/accounts.ts +59 -3
  82. package/src/resources/x/communities/communities.ts +2 -14
  83. package/src/resources/x/communities/tweets.ts +4 -8
  84. package/src/resources/x/index.ts +1 -0
  85. package/src/resources/x/lists.ts +2 -4
  86. package/src/resources/x/tweets/index.ts +1 -0
  87. package/src/resources/x/tweets/tweets.ts +393 -22
  88. package/src/resources/x/users/users.ts +10 -20
  89. package/src/resources/x/x.ts +17 -2
  90. package/src/version.ts +1 -1
  91. package/version.d.mts +1 -1
  92. package/version.d.ts +1 -1
  93. package/version.js +1 -1
  94. package/version.mjs +1 -1
@@ -23,11 +23,6 @@ export namespace ContentDisclosure {
23
23
  }
24
24
 
25
25
  export interface AIGenerated {
26
- /**
27
- * Whether the disclosure can be edited on X.
28
- */
29
- canEdit?: boolean;
30
-
31
26
  /**
32
27
  * Source of the AI-generated media disclosure.
33
28
  */
@@ -62,11 +57,26 @@ export interface EmbeddedTweet {
62
57
 
63
58
  viewCount: number;
64
59
 
60
+ /**
61
+ * Article metadata attached to a tweet.
62
+ */
63
+ article?: EmbeddedTweet.Article;
64
+
65
65
  /**
66
66
  * X user profile with bio, follower counts, and verification status.
67
67
  */
68
68
  author?: UserProfile;
69
69
 
70
+ /**
71
+ * Public card metadata attached to a tweet.
72
+ */
73
+ card?: EmbeddedTweet.Card;
74
+
75
+ /**
76
+ * Community Note presentation metadata returned by X.
77
+ */
78
+ communityNote?: EmbeddedTweet.CommunityNote;
79
+
70
80
  /**
71
81
  * Content disclosure metadata shown by X when a tweet is labeled as paid
72
82
  * partnership content or AI-generated media.
@@ -79,6 +89,11 @@ export interface EmbeddedTweet {
79
89
 
80
90
  displayTextRange?: Array<number>;
81
91
 
92
+ /**
93
+ * Edit history metadata returned by X.
94
+ */
95
+ edit?: EmbeddedTweet.Edit;
96
+
82
97
  entities?: { [key: string]: unknown };
83
98
 
84
99
  inReplyToId?: string;
@@ -95,15 +110,167 @@ export interface EmbeddedTweet {
95
110
 
96
111
  isReply?: boolean;
97
112
 
113
+ isTranslatable?: boolean;
114
+
98
115
  lang?: string;
99
116
 
100
117
  media?: Array<TweetMedia>;
101
118
 
119
+ /**
120
+ * Complete Note Tweet content and rich-text metadata.
121
+ */
122
+ noteTweet?: EmbeddedTweet.NoteTweet;
123
+
124
+ /**
125
+ * Public place metadata attached to a tweet.
126
+ */
127
+ place?: EmbeddedTweet.Place;
128
+
129
+ possiblySensitive?: boolean;
130
+
131
+ /**
132
+ * Engagement counts retained from a prior tweet edit.
133
+ */
134
+ previousCounts?: EmbeddedTweet.PreviousCounts;
135
+
136
+ /**
137
+ * Quoted or retweeted tweet context. Every object includes id, text, and
138
+ * engagement metrics. A zero metric can mean X did not report the count. Author,
139
+ * media, and conversation fields appear when available.
140
+ */
141
+ quoted_tweet?: EmbeddedTweet;
142
+
143
+ /**
144
+ * Quoted or retweeted tweet context. Every object includes id, text, and
145
+ * engagement metrics. A zero metric can mean X did not report the count. Author,
146
+ * media, and conversation fields appear when available.
147
+ */
148
+ retweeted_tweet?: EmbeddedTweet;
149
+
102
150
  source?: string;
103
151
 
104
152
  type?: string;
105
153
 
106
154
  url?: string;
155
+
156
+ viewState?: string;
157
+ }
158
+
159
+ export namespace EmbeddedTweet {
160
+ /**
161
+ * Article metadata attached to a tweet.
162
+ */
163
+ export interface Article {
164
+ id?: string;
165
+
166
+ coverMediaUrl?: string;
167
+
168
+ previewText?: string;
169
+
170
+ title?: string;
171
+ }
172
+
173
+ /**
174
+ * Public card metadata attached to a tweet.
175
+ */
176
+ export interface Card {
177
+ id?: string;
178
+
179
+ bindingValues?: { [key: string]: unknown };
180
+
181
+ name?: string;
182
+
183
+ url?: string;
184
+ }
185
+
186
+ /**
187
+ * Community Note presentation metadata returned by X.
188
+ */
189
+ export interface CommunityNote {
190
+ id?: string;
191
+
192
+ destinationUrl?: string;
193
+
194
+ footer?: string;
195
+
196
+ shortTitle?: string;
197
+
198
+ subtitle?: string;
199
+
200
+ title?: string;
201
+
202
+ visualStyle?: string;
203
+ }
204
+
205
+ /**
206
+ * Edit history metadata returned by X.
207
+ */
208
+ export interface Edit {
209
+ editableUntilMsecs?: string;
210
+
211
+ editTweetIds?: Array<string>;
212
+ }
213
+
214
+ /**
215
+ * Complete Note Tweet content and rich-text metadata.
216
+ */
217
+ export interface NoteTweet {
218
+ text: string;
219
+
220
+ id?: string;
221
+
222
+ entities?: { [key: string]: unknown };
223
+
224
+ isExpandable?: boolean;
225
+
226
+ richtextTags?: Array<NoteTweet.RichtextTag>;
227
+ }
228
+
229
+ export namespace NoteTweet {
230
+ export interface RichtextTag {
231
+ fromIndex: number;
232
+
233
+ toIndex: number;
234
+
235
+ types: Array<string>;
236
+ }
237
+ }
238
+
239
+ /**
240
+ * Public place metadata attached to a tweet.
241
+ */
242
+ export interface Place {
243
+ id?: string;
244
+
245
+ boundingBox?: { [key: string]: unknown };
246
+
247
+ country?: string;
248
+
249
+ countryCode?: string;
250
+
251
+ fullName?: string;
252
+
253
+ name?: string;
254
+
255
+ placeType?: string;
256
+
257
+ url?: string;
258
+ }
259
+
260
+ /**
261
+ * Engagement counts retained from a prior tweet edit.
262
+ */
263
+ export interface PreviousCounts {
264
+ bookmarkCount?: number;
265
+
266
+ likeCount?: number;
267
+
268
+ quoteCount?: number;
269
+
270
+ replyCount?: number;
271
+
272
+ retweetCount?: number;
273
+ }
107
274
  }
108
275
 
109
276
  /**
@@ -378,11 +545,10 @@ export type EventType =
378
545
  | 'profile.unavailable.changed';
379
546
 
380
547
  /**
381
- * Paginated tweet results. The item count can be lower than pageSize when the
382
- * source returns fewer tweets, filters remove tweets, or the available usage balance covers
383
- * fewer results. Follow next_cursor while has_next_page is true. An empty page can
384
- * still have has_next_page true after filtering. Zero affordable results returns
385
- * 402 insufficient_credits.
548
+ * Paginated tweets. Source visibility, filters, or remaining credits can reduce
549
+ * results. An empty filtered page can still have has_next_page true. Follow
550
+ * next_cursor while has_next_page is true. Zero affordable results returns 402
551
+ * insufficient_credits.
386
552
  */
387
553
  export interface PaginatedTweets {
388
554
  has_next_page: boolean;
@@ -428,11 +594,26 @@ export interface SearchTweet {
428
594
 
429
595
  viewCount: number;
430
596
 
597
+ /**
598
+ * Article metadata attached to a tweet.
599
+ */
600
+ article?: SearchTweet.Article;
601
+
431
602
  /**
432
603
  * X user profile with bio, follower counts, and verification status.
433
604
  */
434
605
  author?: UserProfile;
435
606
 
607
+ /**
608
+ * Public card metadata attached to a tweet.
609
+ */
610
+ card?: SearchTweet.Card;
611
+
612
+ /**
613
+ * Community Note presentation metadata returned by X.
614
+ */
615
+ communityNote?: SearchTweet.CommunityNote;
616
+
436
617
  /**
437
618
  * Content disclosure metadata shown by X when a tweet is labeled as paid
438
619
  * partnership content or AI-generated media.
@@ -451,6 +632,11 @@ export interface SearchTweet {
451
632
  */
452
633
  displayTextRange?: Array<number>;
453
634
 
635
+ /**
636
+ * Edit history metadata returned by X.
637
+ */
638
+ edit?: SearchTweet.Edit;
639
+
454
640
  /**
455
641
  * Parsed search-result entities including URLs, mentions, hashtags, and media
456
642
  * markers
@@ -492,6 +678,8 @@ export interface SearchTweet {
492
678
  */
493
679
  isReply?: boolean;
494
680
 
681
+ isTranslatable?: boolean;
682
+
495
683
  /**
496
684
  * Search result language code.
497
685
  */
@@ -502,6 +690,23 @@ export interface SearchTweet {
502
690
  */
503
691
  media?: Array<TweetMedia>;
504
692
 
693
+ /**
694
+ * Complete Note Tweet content and rich-text metadata.
695
+ */
696
+ noteTweet?: SearchTweet.NoteTweet;
697
+
698
+ /**
699
+ * Public place metadata attached to a tweet.
700
+ */
701
+ place?: SearchTweet.Place;
702
+
703
+ possiblySensitive?: boolean;
704
+
705
+ /**
706
+ * Engagement counts retained from a prior tweet edit.
707
+ */
708
+ previousCounts?: SearchTweet.PreviousCounts;
709
+
505
710
  /**
506
711
  * Quoted or retweeted tweet context. Every object includes id, text, and
507
712
  * engagement metrics. A zero metric can mean X did not report the count. Author,
@@ -527,6 +732,125 @@ export interface SearchTweet {
527
732
  * Search result permalink.
528
733
  */
529
734
  url?: string;
735
+
736
+ viewState?: string;
737
+ }
738
+
739
+ export namespace SearchTweet {
740
+ /**
741
+ * Article metadata attached to a tweet.
742
+ */
743
+ export interface Article {
744
+ id?: string;
745
+
746
+ coverMediaUrl?: string;
747
+
748
+ previewText?: string;
749
+
750
+ title?: string;
751
+ }
752
+
753
+ /**
754
+ * Public card metadata attached to a tweet.
755
+ */
756
+ export interface Card {
757
+ id?: string;
758
+
759
+ bindingValues?: { [key: string]: unknown };
760
+
761
+ name?: string;
762
+
763
+ url?: string;
764
+ }
765
+
766
+ /**
767
+ * Community Note presentation metadata returned by X.
768
+ */
769
+ export interface CommunityNote {
770
+ id?: string;
771
+
772
+ destinationUrl?: string;
773
+
774
+ footer?: string;
775
+
776
+ shortTitle?: string;
777
+
778
+ subtitle?: string;
779
+
780
+ title?: string;
781
+
782
+ visualStyle?: string;
783
+ }
784
+
785
+ /**
786
+ * Edit history metadata returned by X.
787
+ */
788
+ export interface Edit {
789
+ editableUntilMsecs?: string;
790
+
791
+ editTweetIds?: Array<string>;
792
+ }
793
+
794
+ /**
795
+ * Complete Note Tweet content and rich-text metadata.
796
+ */
797
+ export interface NoteTweet {
798
+ text: string;
799
+
800
+ id?: string;
801
+
802
+ entities?: { [key: string]: unknown };
803
+
804
+ isExpandable?: boolean;
805
+
806
+ richtextTags?: Array<NoteTweet.RichtextTag>;
807
+ }
808
+
809
+ export namespace NoteTweet {
810
+ export interface RichtextTag {
811
+ fromIndex: number;
812
+
813
+ toIndex: number;
814
+
815
+ types: Array<string>;
816
+ }
817
+ }
818
+
819
+ /**
820
+ * Public place metadata attached to a tweet.
821
+ */
822
+ export interface Place {
823
+ id?: string;
824
+
825
+ boundingBox?: { [key: string]: unknown };
826
+
827
+ country?: string;
828
+
829
+ countryCode?: string;
830
+
831
+ fullName?: string;
832
+
833
+ name?: string;
834
+
835
+ placeType?: string;
836
+
837
+ url?: string;
838
+ }
839
+
840
+ /**
841
+ * Engagement counts retained from a prior tweet edit.
842
+ */
843
+ export interface PreviousCounts {
844
+ bookmarkCount?: number;
845
+
846
+ likeCount?: number;
847
+
848
+ quoteCount?: number;
849
+
850
+ replyCount?: number;
851
+
852
+ retweetCount?: number;
853
+ }
530
854
  }
531
855
 
532
856
  /**
@@ -545,13 +869,121 @@ export interface TweetMedia {
545
869
  */
546
870
  url: string;
547
871
 
872
+ /**
873
+ * X media entity ID.
874
+ */
875
+ id?: string;
876
+
877
+ /**
878
+ * Whether X permits direct media download.
879
+ */
880
+ allowDownload?: boolean;
881
+
882
+ /**
883
+ * Accessibility text supplied for the media.
884
+ */
885
+ altText?: string;
886
+
887
+ /**
888
+ * Video aspect ratio as width and height.
889
+ */
890
+ aspectRatio?: Array<number>;
891
+
892
+ /**
893
+ * Media availability state reported by X.
894
+ */
895
+ availabilityStatus?: string;
896
+
897
+ /**
898
+ * Display-friendly media URL reported by X.
899
+ */
900
+ displayUrl?: string;
901
+
902
+ /**
903
+ * Video duration in milliseconds.
904
+ */
905
+ durationMillis?: number;
906
+
907
+ /**
908
+ * Expanded X media URL.
909
+ */
910
+ expandedUrl?: string;
911
+
912
+ /**
913
+ * Face-aware crop rectangles grouped by media size.
914
+ */
915
+ faceRects?: { [key: string]: Array<TweetMedia.FaceRect> };
916
+
917
+ /**
918
+ * Suggested image crops reported by X.
919
+ */
920
+ focusRects?: Array<TweetMedia.FocusRect>;
921
+
922
+ /**
923
+ * Original media height.
924
+ */
925
+ height?: number;
926
+
927
+ /**
928
+ * Media entity offsets in the tweet text.
929
+ */
930
+ indices?: Array<number>;
931
+
932
+ /**
933
+ * Stable X media key.
934
+ */
935
+ mediaKey?: string;
936
+
937
+ /**
938
+ * Whether X reports the media as monetizable.
939
+ */
940
+ monetizable?: boolean;
941
+
942
+ /**
943
+ * Named media renditions and resize modes.
944
+ */
945
+ sizes?: { [key: string]: TweetMedia.Sizes };
946
+
548
947
  /**
549
948
  * Available video encodings, ordered as returned
550
949
  */
551
950
  videoVariants?: Array<TweetMedia.VideoVariant>;
951
+
952
+ /**
953
+ * Original media width.
954
+ */
955
+ width?: number;
552
956
  }
553
957
 
554
958
  export namespace TweetMedia {
959
+ export interface FaceRect {
960
+ h: number;
961
+
962
+ w: number;
963
+
964
+ x: number;
965
+
966
+ y: number;
967
+ }
968
+
969
+ export interface FocusRect {
970
+ h: number;
971
+
972
+ w: number;
973
+
974
+ x: number;
975
+
976
+ y: number;
977
+ }
978
+
979
+ export interface Sizes {
980
+ h: number;
981
+
982
+ resize: string;
983
+
984
+ w: number;
985
+ }
986
+
555
987
  export interface VideoVariant {
556
988
  contentType: string;
557
989
 
@@ -571,9 +1003,14 @@ export interface UserProfile {
571
1003
 
572
1004
  username: string;
573
1005
 
1006
+ /**
1007
+ * Organization affiliation label shown on an X profile.
1008
+ */
1009
+ affiliatesHighlightedLabel?: UserProfile.AffiliatesHighlightedLabel;
1010
+
574
1011
  automatedBy?: string;
575
1012
 
576
- canDm?: boolean;
1013
+ businessAccountAffiliatesCount?: number;
577
1014
 
578
1015
  /**
579
1016
  * Community role when returned by community member reads
@@ -584,6 +1021,8 @@ export interface UserProfile {
584
1021
 
585
1022
  createdAt?: string;
586
1023
 
1024
+ creatorSubscriptionsCount?: number;
1025
+
587
1026
  description?: string;
588
1027
 
589
1028
  favouritesCount?: number;
@@ -594,6 +1033,20 @@ export interface UserProfile {
594
1033
 
595
1034
  hasCustomTimelines?: boolean;
596
1035
 
1036
+ hasGraduatedAccess?: boolean;
1037
+
1038
+ hasHiddenSubscriptionsOnProfile?: boolean;
1039
+
1040
+ /**
1041
+ * Profile highlight availability and count metadata.
1042
+ */
1043
+ highlightsInfo?: UserProfile.HighlightsInfo;
1044
+
1045
+ /**
1046
+ * Identity verification metadata displayed by X.
1047
+ */
1048
+ identityVerification?: UserProfile.IdentityVerification;
1049
+
597
1050
  isAutomated?: boolean;
598
1051
 
599
1052
  /**
@@ -601,6 +1054,8 @@ export interface UserProfile {
601
1054
  */
602
1055
  isBlueVerified?: boolean;
603
1056
 
1057
+ isProfileTranslatable?: boolean;
1058
+
604
1059
  isTranslator?: boolean;
605
1060
 
606
1061
  /**
@@ -612,6 +1067,8 @@ export interface UserProfile {
612
1067
 
613
1068
  mediaCount?: number;
614
1069
 
1070
+ parodyCommentaryFanLabel?: string;
1071
+
615
1072
  pinnedTweetIds?: Array<string>;
616
1073
 
617
1074
  possiblySensitive?: boolean;
@@ -626,8 +1083,18 @@ export interface UserProfile {
626
1083
  */
627
1084
  profileBannerUrl?: string;
628
1085
 
1086
+ profileDescriptionLanguage?: string;
1087
+
1088
+ profileImageShape?: string;
1089
+
1090
+ profileInterstitialType?: string;
1091
+
629
1092
  profilePicture?: string;
630
1093
 
1094
+ profileSortEnabled?: boolean;
1095
+
1096
+ profileTranslatorType?: string;
1097
+
631
1098
  /**
632
1099
  * Whether the profile protects its posts
633
1100
  */
@@ -635,6 +1102,8 @@ export interface UserProfile {
635
1102
 
636
1103
  statusesCount?: number;
637
1104
 
1105
+ superFollowEligible?: boolean;
1106
+
638
1107
  unavailable?: boolean;
639
1108
 
640
1109
  unavailableReason?: string;
@@ -645,15 +1114,44 @@ export interface UserProfile {
645
1114
 
646
1115
  verifiedType?: string;
647
1116
 
1117
+ withheldInCountries?: Array<string>;
1118
+ }
1119
+
1120
+ export namespace UserProfile {
1121
+ /**
1122
+ * Organization affiliation label shown on an X profile.
1123
+ */
1124
+ export interface AffiliatesHighlightedLabel {
1125
+ badgeUrl?: string;
1126
+
1127
+ description?: string;
1128
+
1129
+ url?: string;
1130
+
1131
+ urlType?: string;
1132
+
1133
+ userLabelDisplayType?: string;
1134
+
1135
+ userLabelType?: string;
1136
+ }
1137
+
648
1138
  /**
649
- * Whether this profile follows the authenticated viewer
1139
+ * Profile highlight availability and count metadata.
650
1140
  */
651
- viewerFollowedBy?: boolean;
1141
+ export interface HighlightsInfo {
1142
+ canHighlightTweets?: boolean;
1143
+
1144
+ highlightedTweets?: string;
1145
+ }
652
1146
 
653
1147
  /**
654
- * Whether the authenticated viewer follows this profile
1148
+ * Identity verification metadata displayed by X.
655
1149
  */
656
- viewerFollowing?: boolean;
1150
+ export interface IdentityVerification {
1151
+ description?: string;
657
1152
 
658
- withheldInCountries?: Array<string>;
1153
+ isIdentityVerified?: boolean;
1154
+
1155
+ verifiedSinceMsec?: string;
1156
+ }
659
1157
  }