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
@@ -6,13 +6,586 @@ module XTwitterScraper
6
6
  module Communities
7
7
  # @see XTwitterScraper::Resources::X::Communities::Join#create
8
8
  class JoinCreateResponse < XTwitterScraper::Internal::Type::BaseModel
9
+ # @!attribute id
10
+ #
11
+ # @return [String]
12
+ required :id, String
13
+
14
+ # @!attribute account
15
+ # Connected account selected for the write.
16
+ #
17
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Account, nil]
18
+ required :account, -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Account }, nil?: true
19
+
20
+ # @!attribute action
21
+ #
22
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Action]
23
+ required :action, enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Action }
24
+
25
+ # @!attribute billing
26
+ # plannedCredits is the approved maximum. chargedCredits comes from the settled
27
+ # credit ledger. Pending or failed writes are not charged.
28
+ #
29
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing]
30
+ required :billing, -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing }
31
+
32
+ # @!attribute charged
33
+ #
34
+ # @return [Boolean]
35
+ required :charged, XTwitterScraper::Internal::Type::Boolean
36
+
37
+ # @!attribute charged_credits
38
+ #
39
+ # @return [String]
40
+ required :charged_credits, String, api_name: :chargedCredits
41
+
42
+ # @!attribute next_action
43
+ # Exact follow-up an API client or agent should perform.
44
+ #
45
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction, nil]
46
+ required :next_action,
47
+ -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction },
48
+ api_name: :nextAction,
49
+ nil?: true
50
+
51
+ # @!attribute object
52
+ #
53
+ # @return [Symbol, :x_write_action]
54
+ required :object, const: :x_write_action
55
+
56
+ # @!attribute poll_after_ms
57
+ #
58
+ # @return [Integer, nil]
59
+ required :poll_after_ms, Integer, api_name: :pollAfterMs, nil?: true
60
+
61
+ # @!attribute request
62
+ # Stable fingerprint and sanitized payload for replay checks.
63
+ #
64
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Request]
65
+ required :request, -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Request }
66
+
67
+ # @!attribute result
68
+ # Confirmed result produced by the write, when available.
69
+ #
70
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result, nil]
71
+ required :result, -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result }, nil?: true
72
+
73
+ # @!attribute retryable
74
+ # True only when a new attempt can reasonably succeed.
75
+ #
76
+ # @return [Boolean]
77
+ required :retryable, XTwitterScraper::Internal::Type::Boolean
78
+
79
+ # @!attribute safe_to_retry
80
+ # True only when no write was dispatched and a new idempotency key may be used.
81
+ #
82
+ # @return [Boolean]
83
+ required :safe_to_retry, XTwitterScraper::Internal::Type::Boolean, api_name: :safeToRetry
84
+
85
+ # @!attribute send_dispatched
86
+ #
87
+ # @return [Boolean]
88
+ required :send_dispatched, XTwitterScraper::Internal::Type::Boolean, api_name: :sendDispatched
89
+
90
+ # @!attribute status
91
+ #
92
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Status]
93
+ required :status, enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Status }
94
+
95
+ # @!attribute status_url
96
+ #
97
+ # @return [String]
98
+ required :status_url, String, api_name: :statusUrl
99
+
9
100
  # @!attribute success
10
101
  #
11
- # @return [Boolean, true]
12
- required :success, const: true
102
+ # @return [Boolean]
103
+ required :success, XTwitterScraper::Internal::Type::Boolean
104
+
105
+ # @!attribute target
106
+ # Existing X resource targeted by the write, when applicable.
107
+ #
108
+ # @return [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target, nil]
109
+ required :target, -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target }, nil?: true
110
+
111
+ # @!attribute target_id
112
+ #
113
+ # @return [String, nil]
114
+ required :target_id, String, api_name: :targetId, nil?: true
115
+
116
+ # @!attribute terminal
117
+ #
118
+ # @return [Boolean]
119
+ required :terminal, XTwitterScraper::Internal::Type::Boolean
120
+
121
+ # @!attribute write_action_id
122
+ #
123
+ # @return [String]
124
+ required :write_action_id, String, api_name: :writeActionId
125
+
126
+ # @!attribute community_id
127
+ # Compatibility field for a confirmed community ID.
128
+ #
129
+ # @return [String, nil]
130
+ optional :community_id, String, api_name: :communityId
131
+
132
+ # @!attribute community_name
133
+ # Confirmed community name when available.
134
+ #
135
+ # @return [String, nil]
136
+ optional :community_name, String, api_name: :communityName
137
+
138
+ # @!attribute completed_at
139
+ #
140
+ # @return [Time, nil]
141
+ optional :completed_at, Time, api_name: :completedAt
142
+
143
+ # @!attribute confirmation_attempts
144
+ #
145
+ # @return [Integer, nil]
146
+ optional :confirmation_attempts, Integer, api_name: :confirmationAttempts
147
+
148
+ # @!attribute confirmation_checked_at
149
+ #
150
+ # @return [Time, nil]
151
+ optional :confirmation_checked_at, Time, api_name: :confirmationCheckedAt
152
+
153
+ # @!attribute confirmed_at
154
+ #
155
+ # @return [Time, nil]
156
+ optional :confirmed_at, Time, api_name: :confirmedAt
157
+
158
+ # @!attribute created_at
159
+ #
160
+ # @return [Time, nil]
161
+ optional :created_at, Time, api_name: :createdAt
162
+
163
+ # @!attribute details
164
+ # Structured recovery context for a failed write.
165
+ #
166
+ # @return [Hash{Symbol=>Object}, nil]
167
+ optional :details, XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown]
168
+
169
+ # @!attribute error
170
+ #
171
+ # @return [String, nil]
172
+ optional :error, String
173
+
174
+ # @!attribute expires_at
175
+ # Deadline for resolving a non-terminal write. This is not the Idempotency-Key
176
+ # retention deadline.
177
+ #
178
+ # @return [Time, nil]
179
+ optional :expires_at, Time, api_name: :expiresAt
180
+
181
+ # @!attribute idempotent
182
+ #
183
+ # @return [Boolean, nil]
184
+ optional :idempotent, XTwitterScraper::Internal::Type::Boolean
185
+
186
+ # @!attribute media
187
+ # Media count, kind, size, and billing details when used.
188
+ #
189
+ # @return [Hash{Symbol=>Object}, nil]
190
+ optional :media, XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown]
191
+
192
+ # @!attribute media_id
193
+ # Compatibility field for a confirmed media upload ID.
194
+ #
195
+ # @return [String, nil]
196
+ optional :media_id, String, api_name: :mediaId
197
+
198
+ # @!attribute media_url
199
+ # Public media URL when the upload creates one.
200
+ #
201
+ # @return [String, nil]
202
+ optional :media_url, String, api_name: :mediaUrl
203
+
204
+ # @!attribute message
205
+ #
206
+ # @return [String, nil]
207
+ optional :message, String
208
+
209
+ # @!attribute message_id
210
+ # Compatibility field for a confirmed direct message ID.
211
+ #
212
+ # @return [String, nil]
213
+ optional :message_id, String, api_name: :messageId
214
+
215
+ # @!attribute request_hash
216
+ #
217
+ # @return [String, nil]
218
+ optional :request_hash, String, api_name: :requestHash
219
+
220
+ # @!attribute request_id
221
+ #
222
+ # @return [String, nil]
223
+ optional :request_id, String, api_name: :requestId
224
+
225
+ # @!attribute result_id
226
+ # Compatibility result ID for other write actions.
227
+ #
228
+ # @return [String, nil]
229
+ optional :result_id, String, api_name: :resultId
230
+
231
+ # @!attribute send_dispatched_at
232
+ # Dispatch timestamp when the write reached execution.
233
+ #
234
+ # @return [Time, nil]
235
+ optional :send_dispatched_at, Time, api_name: :sendDispatchedAt
236
+
237
+ # @!attribute tweet_id
238
+ # Compatibility field for a confirmed tweet result ID.
239
+ #
240
+ # @return [String, nil]
241
+ optional :tweet_id, String, api_name: :tweetId
242
+
243
+ # @!attribute updated_at
244
+ #
245
+ # @return [Time, nil]
246
+ optional :updated_at, Time, api_name: :updatedAt
247
+
248
+ # @!method initialize(id:, account:, action:, billing:, charged:, charged_credits:, next_action:, poll_after_ms:, request:, result:, retryable:, safe_to_retry:, send_dispatched:, status:, status_url:, success:, target:, target_id:, terminal:, write_action_id:, community_id: nil, community_name: nil, completed_at: nil, confirmation_attempts: nil, confirmation_checked_at: nil, confirmed_at: nil, created_at: nil, details: nil, error: nil, expires_at: nil, idempotent: nil, media: nil, media_id: nil, media_url: nil, message: nil, message_id: nil, request_hash: nil, request_id: nil, result_id: nil, send_dispatched_at: nil, tweet_id: nil, updated_at: nil, object: :x_write_action)
249
+ # Some parameter documentations has been truncated, see
250
+ # {XTwitterScraper::Models::X::Communities::JoinCreateResponse} for more details.
251
+ #
252
+ # Durable write lifecycle record. Poll statusUrl until terminal is true. Reusing
253
+ # the original Idempotency-Key returns this same record. Submit a new write only
254
+ # when safeToRetry is true, using a new key.
255
+ #
256
+ # @param id [String]
257
+ #
258
+ # @param account [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Account, nil] Connected account selected for the write.
259
+ #
260
+ # @param action [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Action]
261
+ #
262
+ # @param billing [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing] plannedCredits is the approved maximum. chargedCredits comes from the settled cr
263
+ #
264
+ # @param charged [Boolean]
265
+ #
266
+ # @param charged_credits [String]
267
+ #
268
+ # @param next_action [XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction, nil] Exact follow-up an API client or agent should perform.
269
+ #
270
+ # @param poll_after_ms [Integer, nil]
271
+ #
272
+ # @param request [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Request] Stable fingerprint and sanitized payload for replay checks.
273
+ #
274
+ # @param result [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result, nil] Confirmed result produced by the write, when available.
275
+ #
276
+ # @param retryable [Boolean] True only when a new attempt can reasonably succeed.
277
+ #
278
+ # @param safe_to_retry [Boolean] True only when no write was dispatched and a new idempotency key may be used.
279
+ #
280
+ # @param send_dispatched [Boolean]
281
+ #
282
+ # @param status [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Status]
283
+ #
284
+ # @param status_url [String]
285
+ #
286
+ # @param success [Boolean]
287
+ #
288
+ # @param target [XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target, nil] Existing X resource targeted by the write, when applicable.
289
+ #
290
+ # @param target_id [String, nil]
291
+ #
292
+ # @param terminal [Boolean]
293
+ #
294
+ # @param write_action_id [String]
295
+ #
296
+ # @param community_id [String] Compatibility field for a confirmed community ID.
297
+ #
298
+ # @param community_name [String] Confirmed community name when available.
299
+ #
300
+ # @param completed_at [Time]
301
+ #
302
+ # @param confirmation_attempts [Integer]
303
+ #
304
+ # @param confirmation_checked_at [Time]
305
+ #
306
+ # @param confirmed_at [Time]
307
+ #
308
+ # @param created_at [Time]
309
+ #
310
+ # @param details [Hash{Symbol=>Object}] Structured recovery context for a failed write.
311
+ #
312
+ # @param error [String]
313
+ #
314
+ # @param expires_at [Time] Deadline for resolving a non-terminal write. This is not the Idempotency-Key ret
315
+ #
316
+ # @param idempotent [Boolean]
317
+ #
318
+ # @param media [Hash{Symbol=>Object}] Media count, kind, size, and billing details when used.
319
+ #
320
+ # @param media_id [String] Compatibility field for a confirmed media upload ID.
321
+ #
322
+ # @param media_url [String] Public media URL when the upload creates one.
323
+ #
324
+ # @param message [String]
325
+ #
326
+ # @param message_id [String] Compatibility field for a confirmed direct message ID.
327
+ #
328
+ # @param request_hash [String]
329
+ #
330
+ # @param request_id [String]
331
+ #
332
+ # @param result_id [String] Compatibility result ID for other write actions.
333
+ #
334
+ # @param send_dispatched_at [Time] Dispatch timestamp when the write reached execution.
335
+ #
336
+ # @param tweet_id [String] Compatibility field for a confirmed tweet result ID.
337
+ #
338
+ # @param updated_at [Time]
339
+ #
340
+ # @param object [Symbol, :x_write_action]
341
+
342
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#account
343
+ class Account < XTwitterScraper::Internal::Type::BaseModel
344
+ # @!attribute id
345
+ #
346
+ # @return [String]
347
+ required :id, String
348
+
349
+ # @!attribute username
350
+ #
351
+ # @return [String]
352
+ required :username, String
353
+
354
+ # @!method initialize(id:, username:)
355
+ # Connected account selected for the write.
356
+ #
357
+ # @param id [String]
358
+ # @param username [String]
359
+ end
360
+
361
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#action
362
+ module Action
363
+ extend XTwitterScraper::Internal::Type::Enum
364
+
365
+ CREATE_TWEET = :create_tweet
366
+ DELETE_TWEET = :delete_tweet
367
+ LIKE = :like
368
+ UNLIKE = :unlike
369
+ RETWEET = :retweet
370
+ UNRETWEET = :unretweet
371
+ FOLLOW = :follow
372
+ UNFOLLOW = :unfollow
373
+ REMOVE_FOLLOWER = :remove_follower
374
+ SEND_DM = :send_dm
375
+ UPLOAD_MEDIA = :upload_media
376
+ UPDATE_PROFILE = :update_profile
377
+ UPDATE_AVATAR = :update_avatar
378
+ UPDATE_BANNER = :update_banner
379
+ CREATE_COMMUNITY = :create_community
380
+ DELETE_COMMUNITY = :delete_community
381
+ JOIN_COMMUNITY = :join_community
382
+ LEAVE_COMMUNITY = :leave_community
383
+
384
+ # @!method self.values
385
+ # @return [Array<Symbol>]
386
+ end
387
+
388
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#billing
389
+ class Billing < XTwitterScraper::Internal::Type::BaseModel
390
+ # @!attribute charged
391
+ #
392
+ # @return [Boolean]
393
+ required :charged, XTwitterScraper::Internal::Type::Boolean
394
+
395
+ # @!attribute charged_credits
396
+ #
397
+ # @return [String]
398
+ required :charged_credits, String, api_name: :chargedCredits
399
+
400
+ # @!attribute planned_credits
401
+ #
402
+ # @return [String]
403
+ required :planned_credits, String, api_name: :plannedCredits
404
+
405
+ # @!attribute status
406
+ #
407
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing::Status]
408
+ required :status,
409
+ enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing::Status }
410
+
411
+ # @!method initialize(charged:, charged_credits:, planned_credits:, status:)
412
+ # plannedCredits is the approved maximum. chargedCredits comes from the settled
413
+ # credit ledger. Pending or failed writes are not charged.
414
+ #
415
+ # @param charged [Boolean]
416
+ # @param charged_credits [String]
417
+ # @param planned_credits [String]
418
+ # @param status [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing::Status]
419
+
420
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse::Billing#status
421
+ module Status
422
+ extend XTwitterScraper::Internal::Type::Enum
423
+
424
+ NOT_CHARGED = :not_charged
425
+ PENDING = :pending
426
+ CHARGED = :charged
427
+ CHARGE_FAILED = :charge_failed
428
+ REFUNDED = :refunded
429
+
430
+ # @!method self.values
431
+ # @return [Array<Symbol>]
432
+ end
433
+ end
434
+
435
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#next_action
436
+ class NextAction < XTwitterScraper::Internal::Type::BaseModel
437
+ # @!attribute type
438
+ #
439
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction::Type]
440
+ required :type, enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction::Type }
441
+
442
+ # @!attribute after_ms
443
+ #
444
+ # @return [Integer, nil]
445
+ optional :after_ms, Integer, api_name: :afterMs
446
+
447
+ # @!attribute requires_new_idempotency_key
448
+ #
449
+ # @return [Boolean, nil]
450
+ optional :requires_new_idempotency_key,
451
+ XTwitterScraper::Internal::Type::Boolean,
452
+ api_name: :requiresNewIdempotencyKey
453
+
454
+ # @!attribute url
455
+ #
456
+ # @return [String, nil]
457
+ optional :url, String
458
+
459
+ # @!method initialize(type:, after_ms: nil, requires_new_idempotency_key: nil, url: nil)
460
+ # Exact follow-up an API client or agent should perform.
461
+ #
462
+ # @param type [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction::Type]
463
+ # @param after_ms [Integer]
464
+ # @param requires_new_idempotency_key [Boolean]
465
+ # @param url [String]
466
+
467
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse::NextAction#type
468
+ module Type
469
+ extend XTwitterScraper::Internal::Type::Enum
470
+
471
+ POLL = :poll
472
+ RETRY = :retry
473
+ VERIFY_RESULT = :verify_result
474
+ FIX_REQUEST = :fix_request
475
+
476
+ # @!method self.values
477
+ # @return [Array<Symbol>]
478
+ end
479
+ end
480
+
481
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#request
482
+ class Request < XTwitterScraper::Internal::Type::BaseModel
483
+ # @!attribute hash_
484
+ # Stable hash of account, action, target, and payload.
485
+ #
486
+ # @return [String, nil]
487
+ required :hash_, String, api_name: :hash, nil?: true
488
+
489
+ # @!attribute payload
490
+ # Exact sanitized payload dispatched for this action.
491
+ #
492
+ # @return [Hash{Symbol=>Object}, nil]
493
+ required :payload,
494
+ XTwitterScraper::Internal::Type::HashOf[XTwitterScraper::Internal::Type::Unknown],
495
+ nil?: true
496
+
497
+ # @!method initialize(hash_:, payload:)
498
+ # Stable fingerprint and sanitized payload for replay checks.
499
+ #
500
+ # @param hash_ [String, nil] Stable hash of account, action, target, and payload.
501
+ #
502
+ # @param payload [Hash{Symbol=>Object}, nil] Exact sanitized payload dispatched for this action.
503
+ end
504
+
505
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#result
506
+ class Result < XTwitterScraper::Internal::Type::BaseModel
507
+ # @!attribute id
508
+ #
509
+ # @return [String, nil]
510
+ optional :id, String
511
+
512
+ # @!attribute state
513
+ #
514
+ # @return [String, nil]
515
+ optional :state, String
516
+
517
+ # @!attribute type
518
+ #
519
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result::Type, nil]
520
+ optional :type, enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result::Type }
521
+
522
+ # @!method initialize(id: nil, state: nil, type: nil)
523
+ # Confirmed result produced by the write, when available.
524
+ #
525
+ # @param id [String]
526
+ # @param state [String]
527
+ # @param type [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result::Type]
528
+
529
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse::Result#type
530
+ module Type
531
+ extend XTwitterScraper::Internal::Type::Enum
532
+
533
+ TWEET = :tweet
534
+ DIRECT_MESSAGE = :direct_message
535
+ MEDIA = :media
536
+ COMMUNITY = :community
537
+ STATE_CHANGE = :state_change
538
+
539
+ # @!method self.values
540
+ # @return [Array<Symbol>]
541
+ end
542
+ end
543
+
544
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#status
545
+ module Status
546
+ extend XTwitterScraper::Internal::Type::Enum
547
+
548
+ ACCEPTED = :accepted
549
+ DISPATCHING = :dispatching
550
+ PENDING_CONFIRMATION = :pending_confirmation
551
+ SUCCESS = :success
552
+ FAILED = :failed
553
+ EXPIRED = :expired
554
+
555
+ # @!method self.values
556
+ # @return [Array<Symbol>]
557
+ end
558
+
559
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse#target
560
+ class Target < XTwitterScraper::Internal::Type::BaseModel
561
+ # @!attribute id
562
+ #
563
+ # @return [String]
564
+ required :id, String
565
+
566
+ # @!attribute type
567
+ #
568
+ # @return [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target::Type]
569
+ required :type, enum: -> { XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target::Type }
570
+
571
+ # @!method initialize(id:, type:)
572
+ # Existing X resource targeted by the write, when applicable.
573
+ #
574
+ # @param id [String]
575
+ # @param type [Symbol, XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target::Type]
576
+
577
+ # @see XTwitterScraper::Models::X::Communities::JoinCreateResponse::Target#type
578
+ module Type
579
+ extend XTwitterScraper::Internal::Type::Enum
580
+
581
+ TWEET = :tweet
582
+ USER = :user
583
+ COMMUNITY = :community
13
584
 
14
- # @!method initialize(success: true)
15
- # @param success [Boolean, true]
585
+ # @!method self.values
586
+ # @return [Array<Symbol>]
587
+ end
588
+ end
16
589
  end
17
590
  end
18
591
  end
@@ -20,11 +20,18 @@ module XTwitterScraper
20
20
  # @return [String]
21
21
  required :account, String
22
22
 
23
- # @!method initialize(id:, account:, request_options: {})
23
+ # @!attribute idempotency_key
24
+ #
25
+ # @return [String]
26
+ required :idempotency_key, String
27
+
28
+ # @!method initialize(id:, account:, idempotency_key:, request_options: {})
24
29
  # @param id [String]
25
30
  #
26
31
  # @param account [String] X account identifier (@username or account ID)
27
32
  #
33
+ # @param idempotency_key [String]
34
+ #
28
35
  # @param request_options [XTwitterScraper::RequestOptions, Hash{Symbol=>Object}]
29
36
  end
30
37
  end