x-twitter-scraper 0.4.5 → 0.5.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 (222) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/README.md +8 -41
  4. data/lib/x_twitter_scraper/client.rb +1 -1
  5. data/lib/x_twitter_scraper/internal/type/union.rb +13 -0
  6. data/lib/x_twitter_scraper/models/account_retrieve_response.rb +4 -4
  7. data/lib/x_twitter_scraper/models/compose_create_params.rb +194 -122
  8. data/lib/x_twitter_scraper/models/compose_create_response.rb +326 -33
  9. data/lib/x_twitter_scraper/models/credit_retrieve_topup_status_params.rb +2 -2
  10. data/lib/x_twitter_scraper/models/error.rb +99 -3
  11. data/lib/x_twitter_scraper/models/extraction_estimate_cost_params.rb +8 -8
  12. data/lib/x_twitter_scraper/models/guest_wallet_create_params.rb +2 -2
  13. data/lib/x_twitter_scraper/models/guest_wallet_create_response.rb +27 -7
  14. data/lib/x_twitter_scraper/models/guest_wallet_topup_params.rb +2 -2
  15. data/lib/x_twitter_scraper/models/guest_wallet_topup_response.rb +27 -7
  16. data/lib/x_twitter_scraper/models/search_tweet.rb +12 -12
  17. data/lib/x_twitter_scraper/models/support/ticket_create_params.rb +7 -1
  18. data/lib/x_twitter_scraper/models/support/ticket_create_response.rb +40 -3
  19. data/lib/x_twitter_scraper/models/support/ticket_reply_params.rb +7 -1
  20. data/lib/x_twitter_scraper/models/support/ticket_reply_response.rb +40 -3
  21. data/lib/x_twitter_scraper/models/support/ticket_retrieve_response.rb +114 -1
  22. data/lib/x_twitter_scraper/models/x/communities/join_create_params.rb +8 -1
  23. data/lib/x_twitter_scraper/models/x/communities/join_create_response.rb +577 -4
  24. data/lib/x_twitter_scraper/models/x/communities/join_delete_all_params.rb +8 -1
  25. data/lib/x_twitter_scraper/models/x/communities/join_delete_all_response.rb +585 -4
  26. data/lib/x_twitter_scraper/models/x/community_create_params.rb +8 -1
  27. data/lib/x_twitter_scraper/models/x/community_create_response.rb +568 -8
  28. data/lib/x_twitter_scraper/models/x/community_delete_params.rb +8 -1
  29. data/lib/x_twitter_scraper/models/x/community_delete_response.rb +576 -4
  30. data/lib/x_twitter_scraper/models/x/dm_send_params.rb +8 -1
  31. data/lib/x_twitter_scraper/models/x/dm_send_response.rb +573 -7
  32. data/lib/x_twitter_scraper/models/x/media_upload_params.rb +8 -1
  33. data/lib/x_twitter_scraper/models/x/media_upload_response.rb +568 -11
  34. data/lib/x_twitter_scraper/models/x/profile_update_avatar_params.rb +8 -1
  35. data/lib/x_twitter_scraper/models/x/profile_update_avatar_response.rb +576 -4
  36. data/lib/x_twitter_scraper/models/x/profile_update_banner_params.rb +8 -1
  37. data/lib/x_twitter_scraper/models/x/profile_update_banner_response.rb +576 -4
  38. data/lib/x_twitter_scraper/models/x/profile_update_params.rb +8 -1
  39. data/lib/x_twitter_scraper/models/x/profile_update_response.rb +576 -4
  40. data/lib/x_twitter_scraper/models/x/tweet_author.rb +1 -14
  41. data/lib/x_twitter_scraper/models/x/tweet_create_params.rb +5 -5
  42. data/lib/x_twitter_scraper/models/x/tweet_create_response.rb +551 -12
  43. data/lib/x_twitter_scraper/models/x/tweet_delete_params.rb +8 -1
  44. data/lib/x_twitter_scraper/models/x/tweet_delete_response.rb +576 -4
  45. data/lib/x_twitter_scraper/models/x/tweets/like_create_params.rb +8 -1
  46. data/lib/x_twitter_scraper/models/x/tweets/like_create_response.rb +576 -4
  47. data/lib/x_twitter_scraper/models/x/tweets/like_delete_params.rb +8 -1
  48. data/lib/x_twitter_scraper/models/x/tweets/like_delete_response.rb +576 -4
  49. data/lib/x_twitter_scraper/models/x/tweets/retweet_create_params.rb +8 -1
  50. data/lib/x_twitter_scraper/models/x/tweets/retweet_create_response.rb +576 -4
  51. data/lib/x_twitter_scraper/models/x/tweets/retweet_delete_params.rb +8 -1
  52. data/lib/x_twitter_scraper/models/x/tweets/retweet_delete_response.rb +576 -4
  53. data/lib/x_twitter_scraper/models/x/user_remove_follower_params.rb +8 -1
  54. data/lib/x_twitter_scraper/models/x/user_remove_follower_response.rb +576 -4
  55. data/lib/x_twitter_scraper/models/x/user_retrieve_following_params.rb +2 -2
  56. data/lib/x_twitter_scraper/models/x/user_retrieve_replies_params.rb +2 -2
  57. data/lib/x_twitter_scraper/models/x/users/follow_create_params.rb +8 -1
  58. data/lib/x_twitter_scraper/models/x/users/follow_create_response.rb +576 -4
  59. data/lib/x_twitter_scraper/models/x/users/follow_delete_all_params.rb +8 -1
  60. data/lib/x_twitter_scraper/models/x/users/follow_delete_all_response.rb +576 -4
  61. data/lib/x_twitter_scraper/models/x/write_action_retrieve_response.rb +469 -52
  62. data/lib/x_twitter_scraper/models/x/x_account.rb +7 -7
  63. data/lib/x_twitter_scraper/models/x/x_account_detail.rb +1 -1
  64. data/lib/x_twitter_scraper/resources/compose.rb +8 -26
  65. data/lib/x_twitter_scraper/resources/credits.rb +1 -1
  66. data/lib/x_twitter_scraper/resources/extractions.rb +4 -4
  67. data/lib/x_twitter_scraper/resources/guest_wallets.rb +2 -2
  68. data/lib/x_twitter_scraper/resources/monitors/keywords.rb +4 -5
  69. data/lib/x_twitter_scraper/resources/monitors.rb +3 -3
  70. data/lib/x_twitter_scraper/resources/support/tickets.rb +24 -8
  71. data/lib/x_twitter_scraper/resources/trends.rb +1 -1
  72. data/lib/x_twitter_scraper/resources/x/communities/join.rb +22 -8
  73. data/lib/x_twitter_scraper/resources/x/communities.rb +25 -11
  74. data/lib/x_twitter_scraper/resources/x/dm.rb +13 -6
  75. data/lib/x_twitter_scraper/resources/x/media.rb +17 -7
  76. data/lib/x_twitter_scraper/resources/x/profile.rb +46 -17
  77. data/lib/x_twitter_scraper/resources/x/tweets/like.rb +22 -8
  78. data/lib/x_twitter_scraper/resources/x/tweets/retweet.rb +22 -8
  79. data/lib/x_twitter_scraper/resources/x/tweets.rb +31 -16
  80. data/lib/x_twitter_scraper/resources/x/users/follow.rb +22 -8
  81. data/lib/x_twitter_scraper/resources/x/users.rb +16 -9
  82. data/lib/x_twitter_scraper/resources/x.rb +1 -2
  83. data/lib/x_twitter_scraper/version.rb +1 -1
  84. data/rbi/x_twitter_scraper/client.rbi +1 -1
  85. data/rbi/x_twitter_scraper/models/account_retrieve_response.rbi +4 -4
  86. data/rbi/x_twitter_scraper/models/compose_create_params.rbi +392 -215
  87. data/rbi/x_twitter_scraper/models/compose_create_response.rbi +537 -48
  88. data/rbi/x_twitter_scraper/models/credit_retrieve_topup_status_params.rbi +2 -2
  89. data/rbi/x_twitter_scraper/models/error.rbi +379 -13
  90. data/rbi/x_twitter_scraper/models/extraction_estimate_cost_params.rbi +8 -8
  91. data/rbi/x_twitter_scraper/models/guest_wallet_create_params.rbi +2 -2
  92. data/rbi/x_twitter_scraper/models/guest_wallet_create_response.rbi +87 -5
  93. data/rbi/x_twitter_scraper/models/guest_wallet_topup_params.rbi +2 -2
  94. data/rbi/x_twitter_scraper/models/guest_wallet_topup_response.rbi +87 -5
  95. data/rbi/x_twitter_scraper/models/search_tweet.rbi +12 -12
  96. data/rbi/x_twitter_scraper/models/support/ticket_create_params.rbi +9 -1
  97. data/rbi/x_twitter_scraper/models/support/ticket_create_response.rbi +113 -7
  98. data/rbi/x_twitter_scraper/models/support/ticket_reply_params.rbi +9 -1
  99. data/rbi/x_twitter_scraper/models/support/ticket_reply_response.rbi +113 -7
  100. data/rbi/x_twitter_scraper/models/support/ticket_retrieve_response.rbi +276 -5
  101. data/rbi/x_twitter_scraper/models/x/communities/join_create_params.rbi +6 -0
  102. data/rbi/x_twitter_scraper/models/x/communities/join_create_response.rbi +1154 -3
  103. data/rbi/x_twitter_scraper/models/x/communities/join_delete_all_params.rbi +6 -0
  104. data/rbi/x_twitter_scraper/models/x/communities/join_delete_all_response.rbi +1154 -3
  105. data/rbi/x_twitter_scraper/models/x/community_create_params.rbi +6 -0
  106. data/rbi/x_twitter_scraper/models/x/community_create_response.rbi +1127 -5
  107. data/rbi/x_twitter_scraper/models/x/community_delete_params.rbi +6 -0
  108. data/rbi/x_twitter_scraper/models/x/community_delete_response.rbi +1148 -3
  109. data/rbi/x_twitter_scraper/models/x/dm_send_params.rbi +6 -0
  110. data/rbi/x_twitter_scraper/models/x/dm_send_response.rbi +1112 -6
  111. data/rbi/x_twitter_scraper/models/x/media_upload_params.rbi +6 -0
  112. data/rbi/x_twitter_scraper/models/x/media_upload_response.rbi +1124 -9
  113. data/rbi/x_twitter_scraper/models/x/profile_update_avatar_params.rbi +6 -0
  114. data/rbi/x_twitter_scraper/models/x/profile_update_avatar_response.rbi +1152 -3
  115. data/rbi/x_twitter_scraper/models/x/profile_update_banner_params.rbi +6 -0
  116. data/rbi/x_twitter_scraper/models/x/profile_update_banner_response.rbi +1152 -3
  117. data/rbi/x_twitter_scraper/models/x/profile_update_params.rbi +6 -0
  118. data/rbi/x_twitter_scraper/models/x/profile_update_response.rbi +1144 -3
  119. data/rbi/x_twitter_scraper/models/x/tweet_author.rbi +3 -13
  120. data/rbi/x_twitter_scraper/models/x/tweet_create_params.rbi +5 -8
  121. data/rbi/x_twitter_scraper/models/x/tweet_create_response.rbi +1108 -14
  122. data/rbi/x_twitter_scraper/models/x/tweet_delete_params.rbi +6 -0
  123. data/rbi/x_twitter_scraper/models/x/tweet_delete_response.rbi +1140 -3
  124. data/rbi/x_twitter_scraper/models/x/tweets/like_create_params.rbi +6 -0
  125. data/rbi/x_twitter_scraper/models/x/tweets/like_create_response.rbi +1154 -3
  126. data/rbi/x_twitter_scraper/models/x/tweets/like_delete_params.rbi +6 -0
  127. data/rbi/x_twitter_scraper/models/x/tweets/like_delete_response.rbi +1154 -3
  128. data/rbi/x_twitter_scraper/models/x/tweets/retweet_create_params.rbi +6 -0
  129. data/rbi/x_twitter_scraper/models/x/tweets/retweet_create_response.rbi +1154 -3
  130. data/rbi/x_twitter_scraper/models/x/tweets/retweet_delete_params.rbi +6 -0
  131. data/rbi/x_twitter_scraper/models/x/tweets/retweet_delete_response.rbi +1154 -3
  132. data/rbi/x_twitter_scraper/models/x/user_remove_follower_params.rbi +6 -0
  133. data/rbi/x_twitter_scraper/models/x/user_remove_follower_response.rbi +1152 -3
  134. data/rbi/x_twitter_scraper/models/x/user_retrieve_following_params.rbi +2 -2
  135. data/rbi/x_twitter_scraper/models/x/user_retrieve_replies_params.rbi +2 -2
  136. data/rbi/x_twitter_scraper/models/x/users/follow_create_params.rbi +6 -0
  137. data/rbi/x_twitter_scraper/models/x/users/follow_create_response.rbi +1154 -3
  138. data/rbi/x_twitter_scraper/models/x/users/follow_delete_all_params.rbi +6 -0
  139. data/rbi/x_twitter_scraper/models/x/users/follow_delete_all_response.rbi +1154 -3
  140. data/rbi/x_twitter_scraper/models/x/write_action_retrieve_response.rbi +930 -66
  141. data/rbi/x_twitter_scraper/models/x/x_account.rbi +9 -9
  142. data/rbi/x_twitter_scraper/models/x/x_account_detail.rbi +1 -1
  143. data/rbi/x_twitter_scraper/resources/compose.rbi +12 -38
  144. data/rbi/x_twitter_scraper/resources/credits.rbi +1 -1
  145. data/rbi/x_twitter_scraper/resources/extractions.rbi +4 -4
  146. data/rbi/x_twitter_scraper/resources/guest_wallets.rbi +2 -2
  147. data/rbi/x_twitter_scraper/resources/monitors/keywords.rbi +4 -5
  148. data/rbi/x_twitter_scraper/resources/monitors.rbi +3 -3
  149. data/rbi/x_twitter_scraper/resources/support/tickets.rbi +17 -2
  150. data/rbi/x_twitter_scraper/resources/trends.rbi +1 -1
  151. data/rbi/x_twitter_scraper/resources/x/communities/join.rbi +16 -4
  152. data/rbi/x_twitter_scraper/resources/x/communities.rbi +19 -7
  153. data/rbi/x_twitter_scraper/resources/x/dm.rbi +10 -3
  154. data/rbi/x_twitter_scraper/resources/x/media.rbi +9 -4
  155. data/rbi/x_twitter_scraper/resources/x/profile.rbi +27 -8
  156. data/rbi/x_twitter_scraper/resources/x/tweets/like.rbi +16 -4
  157. data/rbi/x_twitter_scraper/resources/x/tweets/retweet.rbi +16 -4
  158. data/rbi/x_twitter_scraper/resources/x/tweets.rbi +31 -12
  159. data/rbi/x_twitter_scraper/resources/x/users/follow.rbi +16 -4
  160. data/rbi/x_twitter_scraper/resources/x/users.rbi +13 -7
  161. data/rbi/x_twitter_scraper/resources/x.rbi +1 -2
  162. data/sig/x_twitter_scraper/models/compose_create_params.rbs +150 -90
  163. data/sig/x_twitter_scraper/models/compose_create_response.rbs +249 -27
  164. data/sig/x_twitter_scraper/models/error.rbs +170 -7
  165. data/sig/x_twitter_scraper/models/guest_wallet_create_response.rbs +35 -5
  166. data/sig/x_twitter_scraper/models/guest_wallet_topup_response.rbs +35 -5
  167. data/sig/x_twitter_scraper/models/support/ticket_create_params.rbs +7 -1
  168. data/sig/x_twitter_scraper/models/support/ticket_create_response.rbs +49 -5
  169. data/sig/x_twitter_scraper/models/support/ticket_reply_params.rbs +7 -1
  170. data/sig/x_twitter_scraper/models/support/ticket_reply_response.rbs +49 -5
  171. data/sig/x_twitter_scraper/models/support/ticket_retrieve_response.rbs +113 -2
  172. data/sig/x_twitter_scraper/models/x/communities/join_create_params.rbs +5 -1
  173. data/sig/x_twitter_scraper/models/x/communities/join_create_response.rbs +540 -4
  174. data/sig/x_twitter_scraper/models/x/communities/join_delete_all_params.rbs +5 -1
  175. data/sig/x_twitter_scraper/models/x/communities/join_delete_all_response.rbs +540 -4
  176. data/sig/x_twitter_scraper/models/x/community_create_params.rbs +10 -1
  177. data/sig/x_twitter_scraper/models/x/community_create_response.rbs +528 -7
  178. data/sig/x_twitter_scraper/models/x/community_delete_params.rbs +10 -1
  179. data/sig/x_twitter_scraper/models/x/community_delete_response.rbs +540 -4
  180. data/sig/x_twitter_scraper/models/x/dm_send_params.rbs +5 -0
  181. data/sig/x_twitter_scraper/models/x/dm_send_response.rbs +539 -5
  182. data/sig/x_twitter_scraper/models/x/media_upload_params.rbs +5 -1
  183. data/sig/x_twitter_scraper/models/x/media_upload_response.rbs +534 -7
  184. data/sig/x_twitter_scraper/models/x/profile_update_avatar_params.rbs +5 -1
  185. data/sig/x_twitter_scraper/models/x/profile_update_avatar_response.rbs +540 -4
  186. data/sig/x_twitter_scraper/models/x/profile_update_banner_params.rbs +5 -1
  187. data/sig/x_twitter_scraper/models/x/profile_update_banner_response.rbs +540 -4
  188. data/sig/x_twitter_scraper/models/x/profile_update_params.rbs +5 -0
  189. data/sig/x_twitter_scraper/models/x/profile_update_response.rbs +540 -4
  190. data/sig/x_twitter_scraper/models/x/tweet_author.rbs +3 -11
  191. data/sig/x_twitter_scraper/models/x/tweet_create_params.rbs +4 -6
  192. data/sig/x_twitter_scraper/models/x/tweet_create_response.rbs +518 -11
  193. data/sig/x_twitter_scraper/models/x/tweet_delete_params.rbs +5 -1
  194. data/sig/x_twitter_scraper/models/x/tweet_delete_response.rbs +540 -4
  195. data/sig/x_twitter_scraper/models/x/tweets/like_create_params.rbs +5 -1
  196. data/sig/x_twitter_scraper/models/x/tweets/like_create_response.rbs +540 -4
  197. data/sig/x_twitter_scraper/models/x/tweets/like_delete_params.rbs +5 -1
  198. data/sig/x_twitter_scraper/models/x/tweets/like_delete_response.rbs +540 -4
  199. data/sig/x_twitter_scraper/models/x/tweets/retweet_create_params.rbs +5 -1
  200. data/sig/x_twitter_scraper/models/x/tweets/retweet_create_response.rbs +540 -4
  201. data/sig/x_twitter_scraper/models/x/tweets/retweet_delete_params.rbs +5 -1
  202. data/sig/x_twitter_scraper/models/x/tweets/retweet_delete_response.rbs +540 -4
  203. data/sig/x_twitter_scraper/models/x/user_remove_follower_params.rbs +5 -1
  204. data/sig/x_twitter_scraper/models/x/user_remove_follower_response.rbs +540 -4
  205. data/sig/x_twitter_scraper/models/x/users/follow_create_params.rbs +5 -1
  206. data/sig/x_twitter_scraper/models/x/users/follow_create_response.rbs +540 -4
  207. data/sig/x_twitter_scraper/models/x/users/follow_delete_all_params.rbs +5 -1
  208. data/sig/x_twitter_scraper/models/x/users/follow_delete_all_response.rbs +540 -4
  209. data/sig/x_twitter_scraper/models/x/write_action_retrieve_response.rbs +428 -54
  210. data/sig/x_twitter_scraper/resources/compose.rbs +2 -12
  211. data/sig/x_twitter_scraper/resources/support/tickets.rbs +2 -0
  212. data/sig/x_twitter_scraper/resources/x/communities/join.rbs +2 -0
  213. data/sig/x_twitter_scraper/resources/x/communities.rbs +2 -0
  214. data/sig/x_twitter_scraper/resources/x/dm.rbs +1 -0
  215. data/sig/x_twitter_scraper/resources/x/media.rbs +1 -0
  216. data/sig/x_twitter_scraper/resources/x/profile.rbs +3 -0
  217. data/sig/x_twitter_scraper/resources/x/tweets/like.rbs +2 -0
  218. data/sig/x_twitter_scraper/resources/x/tweets/retweet.rbs +2 -0
  219. data/sig/x_twitter_scraper/resources/x/tweets.rbs +2 -1
  220. data/sig/x_twitter_scraper/resources/x/users/follow.rbs +2 -0
  221. data/sig/x_twitter_scraper/resources/x/users.rbs +1 -0
  222. metadata +17 -26
@@ -12,16 +12,1165 @@ module XTwitterScraper
12
12
  )
13
13
  end
14
14
 
15
+ sig { returns(String) }
16
+ attr_accessor :id
17
+
18
+ # Connected account selected for the write.
19
+ sig do
20
+ returns(
21
+ T.nilable(
22
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Account
23
+ )
24
+ )
25
+ end
26
+ attr_reader :account
27
+
28
+ sig do
29
+ params(
30
+ account:
31
+ T.nilable(
32
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Account::OrHash
33
+ )
34
+ ).void
35
+ end
36
+ attr_writer :account
37
+
38
+ sig do
39
+ returns(
40
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
41
+ )
42
+ end
43
+ attr_accessor :action
44
+
45
+ # plannedCredits is the approved maximum. chargedCredits comes from the settled
46
+ # credit ledger. Pending or failed writes are not charged.
47
+ sig do
48
+ returns(
49
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing
50
+ )
51
+ end
52
+ attr_reader :billing
53
+
54
+ sig do
55
+ params(
56
+ billing:
57
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::OrHash
58
+ ).void
59
+ end
60
+ attr_writer :billing
61
+
62
+ sig { returns(T::Boolean) }
63
+ attr_accessor :charged
64
+
65
+ sig { returns(String) }
66
+ attr_accessor :charged_credits
67
+
68
+ # Exact follow-up an API client or agent should perform.
69
+ sig do
70
+ returns(
71
+ T.nilable(
72
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction
73
+ )
74
+ )
75
+ end
76
+ attr_reader :next_action
77
+
78
+ sig do
79
+ params(
80
+ next_action:
81
+ T.nilable(
82
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::OrHash
83
+ )
84
+ ).void
85
+ end
86
+ attr_writer :next_action
87
+
88
+ sig { returns(Symbol) }
89
+ attr_accessor :object
90
+
91
+ sig { returns(T.nilable(Integer)) }
92
+ attr_accessor :poll_after_ms
93
+
94
+ # Stable fingerprint and sanitized payload for replay checks.
95
+ sig do
96
+ returns(
97
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Request
98
+ )
99
+ end
100
+ attr_reader :request
101
+
102
+ sig do
103
+ params(
104
+ request:
105
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Request::OrHash
106
+ ).void
107
+ end
108
+ attr_writer :request
109
+
110
+ # Confirmed result produced by the write, when available.
111
+ sig do
112
+ returns(
113
+ T.nilable(
114
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result
115
+ )
116
+ )
117
+ end
118
+ attr_reader :result
119
+
120
+ sig do
121
+ params(
122
+ result:
123
+ T.nilable(
124
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::OrHash
125
+ )
126
+ ).void
127
+ end
128
+ attr_writer :result
129
+
130
+ # True only when a new attempt can reasonably succeed.
131
+ sig { returns(T::Boolean) }
132
+ attr_accessor :retryable
133
+
134
+ # True only when no write was dispatched and a new idempotency key may be used.
135
+ sig { returns(T::Boolean) }
136
+ attr_accessor :safe_to_retry
137
+
138
+ sig { returns(T::Boolean) }
139
+ attr_accessor :send_dispatched
140
+
141
+ sig do
142
+ returns(
143
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
144
+ )
145
+ end
146
+ attr_accessor :status
147
+
148
+ sig { returns(String) }
149
+ attr_accessor :status_url
150
+
15
151
  sig { returns(T::Boolean) }
16
152
  attr_accessor :success
17
153
 
18
- sig { params(success: T::Boolean).returns(T.attached_class) }
19
- def self.new(success: true)
154
+ # Existing X resource targeted by the write, when applicable.
155
+ sig do
156
+ returns(
157
+ T.nilable(
158
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target
159
+ )
160
+ )
20
161
  end
162
+ attr_reader :target
163
+
164
+ sig do
165
+ params(
166
+ target:
167
+ T.nilable(
168
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::OrHash
169
+ )
170
+ ).void
171
+ end
172
+ attr_writer :target
173
+
174
+ sig { returns(T.nilable(String)) }
175
+ attr_accessor :target_id
176
+
177
+ sig { returns(T::Boolean) }
178
+ attr_accessor :terminal
179
+
180
+ sig { returns(String) }
181
+ attr_accessor :write_action_id
182
+
183
+ # Compatibility field for a confirmed community ID.
184
+ sig { returns(T.nilable(String)) }
185
+ attr_reader :community_id
186
+
187
+ sig { params(community_id: String).void }
188
+ attr_writer :community_id
189
+
190
+ # Confirmed community name when available.
191
+ sig { returns(T.nilable(String)) }
192
+ attr_reader :community_name
193
+
194
+ sig { params(community_name: String).void }
195
+ attr_writer :community_name
196
+
197
+ sig { returns(T.nilable(Time)) }
198
+ attr_reader :completed_at
199
+
200
+ sig { params(completed_at: Time).void }
201
+ attr_writer :completed_at
202
+
203
+ sig { returns(T.nilable(Integer)) }
204
+ attr_reader :confirmation_attempts
205
+
206
+ sig { params(confirmation_attempts: Integer).void }
207
+ attr_writer :confirmation_attempts
208
+
209
+ sig { returns(T.nilable(Time)) }
210
+ attr_reader :confirmation_checked_at
211
+
212
+ sig { params(confirmation_checked_at: Time).void }
213
+ attr_writer :confirmation_checked_at
214
+
215
+ sig { returns(T.nilable(Time)) }
216
+ attr_reader :confirmed_at
217
+
218
+ sig { params(confirmed_at: Time).void }
219
+ attr_writer :confirmed_at
220
+
221
+ sig { returns(T.nilable(Time)) }
222
+ attr_reader :created_at
21
223
 
22
- sig { override.returns({ success: T::Boolean }) }
224
+ sig { params(created_at: Time).void }
225
+ attr_writer :created_at
226
+
227
+ # Structured recovery context for a failed write.
228
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
229
+ attr_reader :details
230
+
231
+ sig { params(details: T::Hash[Symbol, T.anything]).void }
232
+ attr_writer :details
233
+
234
+ sig { returns(T.nilable(String)) }
235
+ attr_reader :error
236
+
237
+ sig { params(error: String).void }
238
+ attr_writer :error
239
+
240
+ # Deadline for resolving a non-terminal write. This is not the Idempotency-Key
241
+ # retention deadline.
242
+ sig { returns(T.nilable(Time)) }
243
+ attr_reader :expires_at
244
+
245
+ sig { params(expires_at: Time).void }
246
+ attr_writer :expires_at
247
+
248
+ sig { returns(T.nilable(T::Boolean)) }
249
+ attr_reader :idempotent
250
+
251
+ sig { params(idempotent: T::Boolean).void }
252
+ attr_writer :idempotent
253
+
254
+ # Media count, kind, size, and billing details when used.
255
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
256
+ attr_reader :media
257
+
258
+ sig { params(media: T::Hash[Symbol, T.anything]).void }
259
+ attr_writer :media
260
+
261
+ # Compatibility field for a confirmed media upload ID.
262
+ sig { returns(T.nilable(String)) }
263
+ attr_reader :media_id
264
+
265
+ sig { params(media_id: String).void }
266
+ attr_writer :media_id
267
+
268
+ # Public media URL when the upload creates one.
269
+ sig { returns(T.nilable(String)) }
270
+ attr_reader :media_url
271
+
272
+ sig { params(media_url: String).void }
273
+ attr_writer :media_url
274
+
275
+ sig { returns(T.nilable(String)) }
276
+ attr_reader :message
277
+
278
+ sig { params(message: String).void }
279
+ attr_writer :message
280
+
281
+ # Compatibility field for a confirmed direct message ID.
282
+ sig { returns(T.nilable(String)) }
283
+ attr_reader :message_id
284
+
285
+ sig { params(message_id: String).void }
286
+ attr_writer :message_id
287
+
288
+ sig { returns(T.nilable(String)) }
289
+ attr_reader :request_hash
290
+
291
+ sig { params(request_hash: String).void }
292
+ attr_writer :request_hash
293
+
294
+ sig { returns(T.nilable(String)) }
295
+ attr_reader :request_id
296
+
297
+ sig { params(request_id: String).void }
298
+ attr_writer :request_id
299
+
300
+ # Compatibility result ID for other write actions.
301
+ sig { returns(T.nilable(String)) }
302
+ attr_reader :result_id
303
+
304
+ sig { params(result_id: String).void }
305
+ attr_writer :result_id
306
+
307
+ # Dispatch timestamp when the write reached execution.
308
+ sig { returns(T.nilable(Time)) }
309
+ attr_reader :send_dispatched_at
310
+
311
+ sig { params(send_dispatched_at: Time).void }
312
+ attr_writer :send_dispatched_at
313
+
314
+ # Compatibility field for a confirmed tweet result ID.
315
+ sig { returns(T.nilable(String)) }
316
+ attr_reader :tweet_id
317
+
318
+ sig { params(tweet_id: String).void }
319
+ attr_writer :tweet_id
320
+
321
+ sig { returns(T.nilable(Time)) }
322
+ attr_reader :updated_at
323
+
324
+ sig { params(updated_at: Time).void }
325
+ attr_writer :updated_at
326
+
327
+ # Durable write lifecycle record. Poll statusUrl until terminal is true. Reusing
328
+ # the original Idempotency-Key returns this same record. Submit a new write only
329
+ # when safeToRetry is true, using a new key.
330
+ sig do
331
+ params(
332
+ id: String,
333
+ account:
334
+ T.nilable(
335
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Account::OrHash
336
+ ),
337
+ action:
338
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::OrSymbol,
339
+ billing:
340
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::OrHash,
341
+ charged: T::Boolean,
342
+ charged_credits: String,
343
+ next_action:
344
+ T.nilable(
345
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::OrHash
346
+ ),
347
+ poll_after_ms: T.nilable(Integer),
348
+ request:
349
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Request::OrHash,
350
+ result:
351
+ T.nilable(
352
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::OrHash
353
+ ),
354
+ retryable: T::Boolean,
355
+ safe_to_retry: T::Boolean,
356
+ send_dispatched: T::Boolean,
357
+ status:
358
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::OrSymbol,
359
+ status_url: String,
360
+ success: T::Boolean,
361
+ target:
362
+ T.nilable(
363
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::OrHash
364
+ ),
365
+ target_id: T.nilable(String),
366
+ terminal: T::Boolean,
367
+ write_action_id: String,
368
+ community_id: String,
369
+ community_name: String,
370
+ completed_at: Time,
371
+ confirmation_attempts: Integer,
372
+ confirmation_checked_at: Time,
373
+ confirmed_at: Time,
374
+ created_at: Time,
375
+ details: T::Hash[Symbol, T.anything],
376
+ error: String,
377
+ expires_at: Time,
378
+ idempotent: T::Boolean,
379
+ media: T::Hash[Symbol, T.anything],
380
+ media_id: String,
381
+ media_url: String,
382
+ message: String,
383
+ message_id: String,
384
+ request_hash: String,
385
+ request_id: String,
386
+ result_id: String,
387
+ send_dispatched_at: Time,
388
+ tweet_id: String,
389
+ updated_at: Time,
390
+ object: Symbol
391
+ ).returns(T.attached_class)
392
+ end
393
+ def self.new(
394
+ id:,
395
+ # Connected account selected for the write.
396
+ account:,
397
+ action:,
398
+ # plannedCredits is the approved maximum. chargedCredits comes from the settled
399
+ # credit ledger. Pending or failed writes are not charged.
400
+ billing:,
401
+ charged:,
402
+ charged_credits:,
403
+ # Exact follow-up an API client or agent should perform.
404
+ next_action:,
405
+ poll_after_ms:,
406
+ # Stable fingerprint and sanitized payload for replay checks.
407
+ request:,
408
+ # Confirmed result produced by the write, when available.
409
+ result:,
410
+ # True only when a new attempt can reasonably succeed.
411
+ retryable:,
412
+ # True only when no write was dispatched and a new idempotency key may be used.
413
+ safe_to_retry:,
414
+ send_dispatched:,
415
+ status:,
416
+ status_url:,
417
+ success:,
418
+ # Existing X resource targeted by the write, when applicable.
419
+ target:,
420
+ target_id:,
421
+ terminal:,
422
+ write_action_id:,
423
+ # Compatibility field for a confirmed community ID.
424
+ community_id: nil,
425
+ # Confirmed community name when available.
426
+ community_name: nil,
427
+ completed_at: nil,
428
+ confirmation_attempts: nil,
429
+ confirmation_checked_at: nil,
430
+ confirmed_at: nil,
431
+ created_at: nil,
432
+ # Structured recovery context for a failed write.
433
+ details: nil,
434
+ error: nil,
435
+ # Deadline for resolving a non-terminal write. This is not the Idempotency-Key
436
+ # retention deadline.
437
+ expires_at: nil,
438
+ idempotent: nil,
439
+ # Media count, kind, size, and billing details when used.
440
+ media: nil,
441
+ # Compatibility field for a confirmed media upload ID.
442
+ media_id: nil,
443
+ # Public media URL when the upload creates one.
444
+ media_url: nil,
445
+ message: nil,
446
+ # Compatibility field for a confirmed direct message ID.
447
+ message_id: nil,
448
+ request_hash: nil,
449
+ request_id: nil,
450
+ # Compatibility result ID for other write actions.
451
+ result_id: nil,
452
+ # Dispatch timestamp when the write reached execution.
453
+ send_dispatched_at: nil,
454
+ # Compatibility field for a confirmed tweet result ID.
455
+ tweet_id: nil,
456
+ updated_at: nil,
457
+ object: :x_write_action
458
+ )
459
+ end
460
+
461
+ sig do
462
+ override.returns(
463
+ {
464
+ id: String,
465
+ account:
466
+ T.nilable(
467
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Account
468
+ ),
469
+ action:
470
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol,
471
+ billing:
472
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing,
473
+ charged: T::Boolean,
474
+ charged_credits: String,
475
+ next_action:
476
+ T.nilable(
477
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction
478
+ ),
479
+ object: Symbol,
480
+ poll_after_ms: T.nilable(Integer),
481
+ request:
482
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Request,
483
+ result:
484
+ T.nilable(
485
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result
486
+ ),
487
+ retryable: T::Boolean,
488
+ safe_to_retry: T::Boolean,
489
+ send_dispatched: T::Boolean,
490
+ status:
491
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol,
492
+ status_url: String,
493
+ success: T::Boolean,
494
+ target:
495
+ T.nilable(
496
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target
497
+ ),
498
+ target_id: T.nilable(String),
499
+ terminal: T::Boolean,
500
+ write_action_id: String,
501
+ community_id: String,
502
+ community_name: String,
503
+ completed_at: Time,
504
+ confirmation_attempts: Integer,
505
+ confirmation_checked_at: Time,
506
+ confirmed_at: Time,
507
+ created_at: Time,
508
+ details: T::Hash[Symbol, T.anything],
509
+ error: String,
510
+ expires_at: Time,
511
+ idempotent: T::Boolean,
512
+ media: T::Hash[Symbol, T.anything],
513
+ media_id: String,
514
+ media_url: String,
515
+ message: String,
516
+ message_id: String,
517
+ request_hash: String,
518
+ request_id: String,
519
+ result_id: String,
520
+ send_dispatched_at: Time,
521
+ tweet_id: String,
522
+ updated_at: Time
523
+ }
524
+ )
525
+ end
23
526
  def to_hash
24
527
  end
528
+
529
+ class Account < XTwitterScraper::Internal::Type::BaseModel
530
+ OrHash =
531
+ T.type_alias do
532
+ T.any(
533
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Account,
534
+ XTwitterScraper::Internal::AnyHash
535
+ )
536
+ end
537
+
538
+ sig { returns(String) }
539
+ attr_accessor :id
540
+
541
+ sig { returns(String) }
542
+ attr_accessor :username
543
+
544
+ # Connected account selected for the write.
545
+ sig { params(id: String, username: String).returns(T.attached_class) }
546
+ def self.new(id:, username:)
547
+ end
548
+
549
+ sig { override.returns({ id: String, username: String }) }
550
+ def to_hash
551
+ end
552
+ end
553
+
554
+ module Action
555
+ extend XTwitterScraper::Internal::Type::Enum
556
+
557
+ TaggedSymbol =
558
+ T.type_alias do
559
+ T.all(
560
+ Symbol,
561
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action
562
+ )
563
+ end
564
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
565
+
566
+ CREATE_TWEET =
567
+ T.let(
568
+ :create_tweet,
569
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
570
+ )
571
+ DELETE_TWEET =
572
+ T.let(
573
+ :delete_tweet,
574
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
575
+ )
576
+ LIKE =
577
+ T.let(
578
+ :like,
579
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
580
+ )
581
+ UNLIKE =
582
+ T.let(
583
+ :unlike,
584
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
585
+ )
586
+ RETWEET =
587
+ T.let(
588
+ :retweet,
589
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
590
+ )
591
+ UNRETWEET =
592
+ T.let(
593
+ :unretweet,
594
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
595
+ )
596
+ FOLLOW =
597
+ T.let(
598
+ :follow,
599
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
600
+ )
601
+ UNFOLLOW =
602
+ T.let(
603
+ :unfollow,
604
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
605
+ )
606
+ REMOVE_FOLLOWER =
607
+ T.let(
608
+ :remove_follower,
609
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
610
+ )
611
+ SEND_DM =
612
+ T.let(
613
+ :send_dm,
614
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
615
+ )
616
+ UPLOAD_MEDIA =
617
+ T.let(
618
+ :upload_media,
619
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
620
+ )
621
+ UPDATE_PROFILE =
622
+ T.let(
623
+ :update_profile,
624
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
625
+ )
626
+ UPDATE_AVATAR =
627
+ T.let(
628
+ :update_avatar,
629
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
630
+ )
631
+ UPDATE_BANNER =
632
+ T.let(
633
+ :update_banner,
634
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
635
+ )
636
+ CREATE_COMMUNITY =
637
+ T.let(
638
+ :create_community,
639
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
640
+ )
641
+ DELETE_COMMUNITY =
642
+ T.let(
643
+ :delete_community,
644
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
645
+ )
646
+ JOIN_COMMUNITY =
647
+ T.let(
648
+ :join_community,
649
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
650
+ )
651
+ LEAVE_COMMUNITY =
652
+ T.let(
653
+ :leave_community,
654
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
655
+ )
656
+
657
+ sig do
658
+ override.returns(
659
+ T::Array[
660
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Action::TaggedSymbol
661
+ ]
662
+ )
663
+ end
664
+ def self.values
665
+ end
666
+ end
667
+
668
+ class Billing < XTwitterScraper::Internal::Type::BaseModel
669
+ OrHash =
670
+ T.type_alias do
671
+ T.any(
672
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing,
673
+ XTwitterScraper::Internal::AnyHash
674
+ )
675
+ end
676
+
677
+ sig { returns(T::Boolean) }
678
+ attr_accessor :charged
679
+
680
+ sig { returns(String) }
681
+ attr_accessor :charged_credits
682
+
683
+ sig { returns(String) }
684
+ attr_accessor :planned_credits
685
+
686
+ sig do
687
+ returns(
688
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
689
+ )
690
+ end
691
+ attr_accessor :status
692
+
693
+ # plannedCredits is the approved maximum. chargedCredits comes from the settled
694
+ # credit ledger. Pending or failed writes are not charged.
695
+ sig do
696
+ params(
697
+ charged: T::Boolean,
698
+ charged_credits: String,
699
+ planned_credits: String,
700
+ status:
701
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::OrSymbol
702
+ ).returns(T.attached_class)
703
+ end
704
+ def self.new(charged:, charged_credits:, planned_credits:, status:)
705
+ end
706
+
707
+ sig do
708
+ override.returns(
709
+ {
710
+ charged: T::Boolean,
711
+ charged_credits: String,
712
+ planned_credits: String,
713
+ status:
714
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
715
+ }
716
+ )
717
+ end
718
+ def to_hash
719
+ end
720
+
721
+ module Status
722
+ extend XTwitterScraper::Internal::Type::Enum
723
+
724
+ TaggedSymbol =
725
+ T.type_alias do
726
+ T.all(
727
+ Symbol,
728
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status
729
+ )
730
+ end
731
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
732
+
733
+ NOT_CHARGED =
734
+ T.let(
735
+ :not_charged,
736
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
737
+ )
738
+ PENDING =
739
+ T.let(
740
+ :pending,
741
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
742
+ )
743
+ CHARGED =
744
+ T.let(
745
+ :charged,
746
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
747
+ )
748
+ CHARGE_FAILED =
749
+ T.let(
750
+ :charge_failed,
751
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
752
+ )
753
+ REFUNDED =
754
+ T.let(
755
+ :refunded,
756
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
757
+ )
758
+
759
+ sig do
760
+ override.returns(
761
+ T::Array[
762
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Billing::Status::TaggedSymbol
763
+ ]
764
+ )
765
+ end
766
+ def self.values
767
+ end
768
+ end
769
+ end
770
+
771
+ class NextAction < XTwitterScraper::Internal::Type::BaseModel
772
+ OrHash =
773
+ T.type_alias do
774
+ T.any(
775
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction,
776
+ XTwitterScraper::Internal::AnyHash
777
+ )
778
+ end
779
+
780
+ sig do
781
+ returns(
782
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
783
+ )
784
+ end
785
+ attr_accessor :type
786
+
787
+ sig { returns(T.nilable(Integer)) }
788
+ attr_reader :after_ms
789
+
790
+ sig { params(after_ms: Integer).void }
791
+ attr_writer :after_ms
792
+
793
+ sig { returns(T.nilable(T::Boolean)) }
794
+ attr_reader :requires_new_idempotency_key
795
+
796
+ sig { params(requires_new_idempotency_key: T::Boolean).void }
797
+ attr_writer :requires_new_idempotency_key
798
+
799
+ sig { returns(T.nilable(String)) }
800
+ attr_reader :url
801
+
802
+ sig { params(url: String).void }
803
+ attr_writer :url
804
+
805
+ # Exact follow-up an API client or agent should perform.
806
+ sig do
807
+ params(
808
+ type:
809
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::OrSymbol,
810
+ after_ms: Integer,
811
+ requires_new_idempotency_key: T::Boolean,
812
+ url: String
813
+ ).returns(T.attached_class)
814
+ end
815
+ def self.new(
816
+ type:,
817
+ after_ms: nil,
818
+ requires_new_idempotency_key: nil,
819
+ url: nil
820
+ )
821
+ end
822
+
823
+ sig do
824
+ override.returns(
825
+ {
826
+ type:
827
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol,
828
+ after_ms: Integer,
829
+ requires_new_idempotency_key: T::Boolean,
830
+ url: String
831
+ }
832
+ )
833
+ end
834
+ def to_hash
835
+ end
836
+
837
+ module Type
838
+ extend XTwitterScraper::Internal::Type::Enum
839
+
840
+ TaggedSymbol =
841
+ T.type_alias do
842
+ T.all(
843
+ Symbol,
844
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type
845
+ )
846
+ end
847
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
848
+
849
+ POLL =
850
+ T.let(
851
+ :poll,
852
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
853
+ )
854
+ RETRY =
855
+ T.let(
856
+ :retry,
857
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
858
+ )
859
+ VERIFY_RESULT =
860
+ T.let(
861
+ :verify_result,
862
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
863
+ )
864
+ FIX_REQUEST =
865
+ T.let(
866
+ :fix_request,
867
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
868
+ )
869
+
870
+ sig do
871
+ override.returns(
872
+ T::Array[
873
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::NextAction::Type::TaggedSymbol
874
+ ]
875
+ )
876
+ end
877
+ def self.values
878
+ end
879
+ end
880
+ end
881
+
882
+ class Request < XTwitterScraper::Internal::Type::BaseModel
883
+ OrHash =
884
+ T.type_alias do
885
+ T.any(
886
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Request,
887
+ XTwitterScraper::Internal::AnyHash
888
+ )
889
+ end
890
+
891
+ # Stable hash of account, action, target, and payload.
892
+ sig { returns(T.nilable(String)) }
893
+ attr_accessor :hash_
894
+
895
+ # Exact sanitized payload dispatched for this action.
896
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
897
+ attr_accessor :payload
898
+
899
+ # Stable fingerprint and sanitized payload for replay checks.
900
+ sig do
901
+ params(
902
+ hash_: T.nilable(String),
903
+ payload: T.nilable(T::Hash[Symbol, T.anything])
904
+ ).returns(T.attached_class)
905
+ end
906
+ def self.new(
907
+ # Stable hash of account, action, target, and payload.
908
+ hash_:,
909
+ # Exact sanitized payload dispatched for this action.
910
+ payload:
911
+ )
912
+ end
913
+
914
+ sig do
915
+ override.returns(
916
+ {
917
+ hash_: T.nilable(String),
918
+ payload: T.nilable(T::Hash[Symbol, T.anything])
919
+ }
920
+ )
921
+ end
922
+ def to_hash
923
+ end
924
+ end
925
+
926
+ class Result < XTwitterScraper::Internal::Type::BaseModel
927
+ OrHash =
928
+ T.type_alias do
929
+ T.any(
930
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result,
931
+ XTwitterScraper::Internal::AnyHash
932
+ )
933
+ end
934
+
935
+ sig { returns(T.nilable(String)) }
936
+ attr_reader :id
937
+
938
+ sig { params(id: String).void }
939
+ attr_writer :id
940
+
941
+ sig { returns(T.nilable(String)) }
942
+ attr_reader :state
943
+
944
+ sig { params(state: String).void }
945
+ attr_writer :state
946
+
947
+ sig do
948
+ returns(
949
+ T.nilable(
950
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
951
+ )
952
+ )
953
+ end
954
+ attr_reader :type
955
+
956
+ sig do
957
+ params(
958
+ type:
959
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::OrSymbol
960
+ ).void
961
+ end
962
+ attr_writer :type
963
+
964
+ # Confirmed result produced by the write, when available.
965
+ sig do
966
+ params(
967
+ id: String,
968
+ state: String,
969
+ type:
970
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::OrSymbol
971
+ ).returns(T.attached_class)
972
+ end
973
+ def self.new(id: nil, state: nil, type: nil)
974
+ end
975
+
976
+ sig do
977
+ override.returns(
978
+ {
979
+ id: String,
980
+ state: String,
981
+ type:
982
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
983
+ }
984
+ )
985
+ end
986
+ def to_hash
987
+ end
988
+
989
+ module Type
990
+ extend XTwitterScraper::Internal::Type::Enum
991
+
992
+ TaggedSymbol =
993
+ T.type_alias do
994
+ T.all(
995
+ Symbol,
996
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type
997
+ )
998
+ end
999
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1000
+
1001
+ TWEET =
1002
+ T.let(
1003
+ :tweet,
1004
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1005
+ )
1006
+ DIRECT_MESSAGE =
1007
+ T.let(
1008
+ :direct_message,
1009
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1010
+ )
1011
+ MEDIA =
1012
+ T.let(
1013
+ :media,
1014
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1015
+ )
1016
+ COMMUNITY =
1017
+ T.let(
1018
+ :community,
1019
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1020
+ )
1021
+ STATE_CHANGE =
1022
+ T.let(
1023
+ :state_change,
1024
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1025
+ )
1026
+
1027
+ sig do
1028
+ override.returns(
1029
+ T::Array[
1030
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Result::Type::TaggedSymbol
1031
+ ]
1032
+ )
1033
+ end
1034
+ def self.values
1035
+ end
1036
+ end
1037
+ end
1038
+
1039
+ module Status
1040
+ extend XTwitterScraper::Internal::Type::Enum
1041
+
1042
+ TaggedSymbol =
1043
+ T.type_alias do
1044
+ T.all(
1045
+ Symbol,
1046
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status
1047
+ )
1048
+ end
1049
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1050
+
1051
+ ACCEPTED =
1052
+ T.let(
1053
+ :accepted,
1054
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1055
+ )
1056
+ DISPATCHING =
1057
+ T.let(
1058
+ :dispatching,
1059
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1060
+ )
1061
+ PENDING_CONFIRMATION =
1062
+ T.let(
1063
+ :pending_confirmation,
1064
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1065
+ )
1066
+ SUCCESS =
1067
+ T.let(
1068
+ :success,
1069
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1070
+ )
1071
+ FAILED =
1072
+ T.let(
1073
+ :failed,
1074
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1075
+ )
1076
+ EXPIRED =
1077
+ T.let(
1078
+ :expired,
1079
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1080
+ )
1081
+
1082
+ sig do
1083
+ override.returns(
1084
+ T::Array[
1085
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Status::TaggedSymbol
1086
+ ]
1087
+ )
1088
+ end
1089
+ def self.values
1090
+ end
1091
+ end
1092
+
1093
+ class Target < XTwitterScraper::Internal::Type::BaseModel
1094
+ OrHash =
1095
+ T.type_alias do
1096
+ T.any(
1097
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target,
1098
+ XTwitterScraper::Internal::AnyHash
1099
+ )
1100
+ end
1101
+
1102
+ sig { returns(String) }
1103
+ attr_accessor :id
1104
+
1105
+ sig do
1106
+ returns(
1107
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1108
+ )
1109
+ end
1110
+ attr_accessor :type
1111
+
1112
+ # Existing X resource targeted by the write, when applicable.
1113
+ sig do
1114
+ params(
1115
+ id: String,
1116
+ type:
1117
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::OrSymbol
1118
+ ).returns(T.attached_class)
1119
+ end
1120
+ def self.new(id:, type:)
1121
+ end
1122
+
1123
+ sig do
1124
+ override.returns(
1125
+ {
1126
+ id: String,
1127
+ type:
1128
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1129
+ }
1130
+ )
1131
+ end
1132
+ def to_hash
1133
+ end
1134
+
1135
+ module Type
1136
+ extend XTwitterScraper::Internal::Type::Enum
1137
+
1138
+ TaggedSymbol =
1139
+ T.type_alias do
1140
+ T.all(
1141
+ Symbol,
1142
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type
1143
+ )
1144
+ end
1145
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
1146
+
1147
+ TWEET =
1148
+ T.let(
1149
+ :tweet,
1150
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1151
+ )
1152
+ USER =
1153
+ T.let(
1154
+ :user,
1155
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1156
+ )
1157
+ COMMUNITY =
1158
+ T.let(
1159
+ :community,
1160
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1161
+ )
1162
+
1163
+ sig do
1164
+ override.returns(
1165
+ T::Array[
1166
+ XTwitterScraper::Models::X::ProfileUpdateAvatarResponse::Target::Type::TaggedSymbol
1167
+ ]
1168
+ )
1169
+ end
1170
+ def self.values
1171
+ end
1172
+ end
1173
+ end
25
1174
  end
26
1175
  end
27
1176
  end