Class: XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic

Inherits:
Internal::Type::BaseModel show all
Defined in:
lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb,
sig/x_twitter_scraper/models/x/tweet_get_replies_response.rbs

Defined Under Namespace

Classes: Richness, StrategiesAttempted

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Internal::Type::BaseModel

==, #==, #[], coerce, #deconstruct_keys, #deep_to_h, dump, fields, hash, #hash, inherited, inspect, #inspect, known_fields, optional, recursively_to_h, required, #to_h, #to_json, #to_s, to_sorbet_type, #to_yaml

Methods included from Internal::Type::Converter

#coerce, coerce, #dump, dump, #inspect, inspect, meta_info, new_coerce_state, type_info

Methods included from Internal::Util::SorbetRuntimeSupport

#const_missing, #define_sorbet_constant!, #sorbet_constant_defined?, #to_sorbet_type, to_sorbet_type

Constructor Details

#initialize(article:, author:, card:, community_note:, created_at:, engagement_counts:, entities:, language:, media:, quoted_or_reposted_tweet:, text:, total_replies:, url:) ⇒ Object

Field-presence counts across the collected direct replies.

Parameters:

  • article (Integer)

    Replies with article content.

  • author (Integer)

    Replies with author details.

  • card (Integer)

    Replies with card metadata.

  • community_note (Integer)

    Replies with community-note data.

  • created_at (Integer)

    Replies with a creation timestamp.

  • engagement_counts (Integer)

    Replies with engagement counts.

  • entities (Integer)

    Replies with entity metadata.

  • language (Integer)

    Replies with a language value.

  • media (Integer)

    Replies with media metadata.

  • quoted_or_reposted_tweet (Integer)

    Replies with quoted or reposted tweet data.

  • text (Integer)

    Replies with text.

  • total_replies (Integer)

    Total unique direct replies evaluated for richness.

  • url (Integer)

    Replies with a canonical URL.



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 28

class Diagnostic < XTwitterScraper::Internal::Type::BaseModel
  # @!attribute complete
  #   Whether coverage met the target without truncation.
  #
  #   @return [Boolean]
  required :complete, XTwitterScraper::Internal::Type::Boolean

  # @!attribute coverage_percentage
  #   Unique direct replies as a percentage of the reported count.
  #
  #   @return [Float]
  required :coverage_percentage, Float, api_name: :coveragePercentage

  # @!attribute cursor_failures
  #   Cursor requests that failed.
  #
  #   @return [Integer]
  required :cursor_failures, Integer, api_name: :cursorFailures

  # @!attribute duplicate_count
  #   Duplicate tweet IDs removed across pages and strategies.
  #
  #   @return [Integer]
  required :duplicate_count, Integer, api_name: :duplicateCount

  # @!attribute empty_false_progress_pages
  #   Empty pages rejected because they did not make progress.
  #
  #   @return [Integer]
  required :empty_false_progress_pages, Integer, api_name: :emptyFalseProgressPages

  # @!attribute malformed_count
  #   Malformed response items rejected.
  #
  #   @return [Integer]
  required :malformed_count, Integer, api_name: :malformedCount

  # @!attribute missing_response_modules_or_fields
  #   Expected response modules or fields missing from X.
  #
  #   @return [Array<String>]
  required :missing_response_modules_or_fields,
           XTwitterScraper::Internal::Type::ArrayOf[String],
           api_name: :missingResponseModulesOrFields

  # @!attribute nested_reply_count
  #   Unique nested replies kept outside direct coverage.
  #
  #   @return [Integer]
  required :nested_reply_count, Integer, api_name: :nestedReplyCount

  # @!attribute pages_attempted
  #   Total pages attempted across all strategies.
  #
  #   @return [Integer]
  required :pages_attempted, Integer, api_name: :pagesAttempted

  # @!attribute recommended_fallback
  #   Recommended next action when coverage is incomplete.
  #
  #   @return [String]
  required :recommended_fallback, String, api_name: :recommendedFallback

  # @!attribute repeated_cursor_count
  #   Repeated cursors rejected to prevent loops.
  #
  #   @return [Integer]
  required :repeated_cursor_count, Integer, api_name: :repeatedCursorCount

  # @!attribute reported_reply_count
  #   Reply count reported on the source post.
  #
  #   @return [Integer]
  required :reported_reply_count, Integer, api_name: :reportedReplyCount

  # @!attribute response_truncated
  #   Whether the requested row limit truncated safe results.
  #
  #   @return [Boolean]
  required :response_truncated, XTwitterScraper::Internal::Type::Boolean, api_name: :responseTruncated

  # @!attribute richness
  #   Field-presence counts across the collected direct replies.
  #
  #   @return [XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::Richness]
  required :richness, -> { XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::Richness }

  # @!attribute strategies_attempted
  #   Per-strategy pagination and contribution evidence.
  #
  #   @return [Array<XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted>]
  required :strategies_attempted,
           -> { XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted] },
           api_name: :strategiesAttempted

  # @!attribute target_direct_replies
  #   Minimum direct replies required for the coverage target.
  #
  #   @return [Integer]
  required :target_direct_replies, Integer, api_name: :targetDirectReplies

  # @!attribute unique_direct_replies
  #   Unique replies whose parent ID equals the source post ID.
  #
  #   @return [Integer]
  required :unique_direct_replies, Integer, api_name: :uniqueDirectReplies

  # @!attribute unrelated_count
  #   Tweets rejected because they belonged elsewhere.
  #
  #   @return [Integer]
  required :unrelated_count, Integer, api_name: :unrelatedCount

  # @!method initialize(complete:, coverage_percentage:, cursor_failures:, duplicate_count:, empty_false_progress_pages:, malformed_count:, missing_response_modules_or_fields:, nested_reply_count:, pages_attempted:, recommended_fallback:, repeated_cursor_count:, reported_reply_count:, response_truncated:, richness:, strategies_attempted:, target_direct_replies:, unique_direct_replies:, unrelated_count:)
  #   Evidence for direct-reply coverage and collector behavior.
  #
  #   @param complete [Boolean] Whether coverage met the target without truncation.
  #
  #   @param coverage_percentage [Float] Unique direct replies as a percentage of the reported count.
  #
  #   @param cursor_failures [Integer] Cursor requests that failed.
  #
  #   @param duplicate_count [Integer] Duplicate tweet IDs removed across pages and strategies.
  #
  #   @param empty_false_progress_pages [Integer] Empty pages rejected because they did not make progress.
  #
  #   @param malformed_count [Integer] Malformed response items rejected.
  #
  #   @param missing_response_modules_or_fields [Array<String>] Expected response modules or fields missing from X.
  #
  #   @param nested_reply_count [Integer] Unique nested replies kept outside direct coverage.
  #
  #   @param pages_attempted [Integer] Total pages attempted across all strategies.
  #
  #   @param recommended_fallback [String] Recommended next action when coverage is incomplete.
  #
  #   @param repeated_cursor_count [Integer] Repeated cursors rejected to prevent loops.
  #
  #   @param reported_reply_count [Integer] Reply count reported on the source post.
  #
  #   @param response_truncated [Boolean] Whether the requested row limit truncated safe results.
  #
  #   @param richness [XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::Richness] Field-presence counts across the collected direct replies.
  #
  #   @param strategies_attempted [Array<XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted>] Per-strategy pagination and contribution evidence.
  #
  #   @param target_direct_replies [Integer] Minimum direct replies required for the coverage target.
  #
  #   @param unique_direct_replies [Integer] Unique replies whose parent ID equals the source post ID.
  #
  #   @param unrelated_count [Integer] Tweets rejected because they belonged elsewhere.

  # @see XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic#richness
  class Richness < XTwitterScraper::Internal::Type::BaseModel
    # @!attribute article
    #   Replies with article content.
    #
    #   @return [Integer]
    required :article, Integer

    # @!attribute author
    #   Replies with author details.
    #
    #   @return [Integer]
    required :author, Integer

    # @!attribute card
    #   Replies with card metadata.
    #
    #   @return [Integer]
    required :card, Integer

    # @!attribute community_note
    #   Replies with community-note data.
    #
    #   @return [Integer]
    required :community_note, Integer, api_name: :communityNote

    # @!attribute created_at
    #   Replies with a creation timestamp.
    #
    #   @return [Integer]
    required :created_at, Integer, api_name: :createdAt

    # @!attribute engagement_counts
    #   Replies with engagement counts.
    #
    #   @return [Integer]
    required :engagement_counts, Integer, api_name: :engagementCounts

    # @!attribute entities
    #   Replies with entity metadata.
    #
    #   @return [Integer]
    required :entities, Integer

    # @!attribute language
    #   Replies with a language value.
    #
    #   @return [Integer]
    required :language, Integer

    # @!attribute media
    #   Replies with media metadata.
    #
    #   @return [Integer]
    required :media, Integer

    # @!attribute quoted_or_reposted_tweet
    #   Replies with quoted or reposted tweet data.
    #
    #   @return [Integer]
    required :quoted_or_reposted_tweet, Integer, api_name: :quotedOrRepostedTweet

    # @!attribute text
    #   Replies with text.
    #
    #   @return [Integer]
    required :text, Integer

    # @!attribute total_replies
    #   Total unique direct replies evaluated for richness.
    #
    #   @return [Integer]
    required :total_replies, Integer, api_name: :totalReplies

    # @!attribute url
    #   Replies with a canonical URL.
    #
    #   @return [Integer]
    required :url, Integer

    # @!method initialize(article:, author:, card:, community_note:, created_at:, engagement_counts:, entities:, language:, media:, quoted_or_reposted_tweet:, text:, total_replies:, url:)
    #   Field-presence counts across the collected direct replies.
    #
    #   @param article [Integer] Replies with article content.
    #
    #   @param author [Integer] Replies with author details.
    #
    #   @param card [Integer] Replies with card metadata.
    #
    #   @param community_note [Integer] Replies with community-note data.
    #
    #   @param created_at [Integer] Replies with a creation timestamp.
    #
    #   @param engagement_counts [Integer] Replies with engagement counts.
    #
    #   @param entities [Integer] Replies with entity metadata.
    #
    #   @param language [Integer] Replies with a language value.
    #
    #   @param media [Integer] Replies with media metadata.
    #
    #   @param quoted_or_reposted_tweet [Integer] Replies with quoted or reposted tweet data.
    #
    #   @param text [Integer] Replies with text.
    #
    #   @param total_replies [Integer] Total unique direct replies evaluated for richness.
    #
    #   @param url [Integer] Replies with a canonical URL.
  end

  class StrategiesAttempted < XTwitterScraper::Internal::Type::BaseModel
    # @!attribute name
    #
    #   @return [String]
    required :name, String

    # @!attribute new_direct_replies
    #
    #   @return [Integer]
    required :new_direct_replies, Integer, api_name: :newDirectReplies

    # @!attribute new_nested_replies
    #
    #   @return [Integer]
    required :new_nested_replies, Integer, api_name: :newNestedReplies

    # @!attribute pages_attempted
    #
    #   @return [Integer]
    required :pages_attempted, Integer, api_name: :pagesAttempted

    # @!attribute stop_reason
    #
    #   @return [Symbol, XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted::StopReason]
    required :stop_reason,
             enum: -> { XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted::StopReason },
             api_name: :stopReason

    # @!method initialize(name:, new_direct_replies:, new_nested_replies:, pages_attempted:, stop_reason:)
    #   @param name [String]
    #   @param new_direct_replies [Integer]
    #   @param new_nested_replies [Integer]
    #   @param pages_attempted [Integer]
    #   @param stop_reason [Symbol, XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted::StopReason]

    # @see XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted#stop_reason
    module StopReason
      extend XTwitterScraper::Internal::Type::Enum

      DEADLINE = :deadline
      EMPTY_PAGES = :empty_pages
      ERROR = :error
      MISSING_CURSOR = :missing_cursor
      NO_NEXT_PAGE = :no_next_page
      PAGE_CAP = :page_cap
      REPEATED_CURSOR = :repeated_cursor

      # @!method self.values
      #   @return [Array<Symbol>]
    end
  end
end

Instance Attribute Details

#completeBoolean

Whether coverage met the target without truncation.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


33
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 33

required :complete, XTwitterScraper::Internal::Type::Boolean

#coverage_percentageFloat

Unique direct replies as a percentage of the reported count.

Parameters:

  • value (Float)

Returns:

  • (Float)


39
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 39

required :coverage_percentage, Float, api_name: :coveragePercentage

#cursor_failuresInteger

Cursor requests that failed.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


45
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 45

required :cursor_failures, Integer, api_name: :cursorFailures

#duplicate_countInteger

Duplicate tweet IDs removed across pages and strategies.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


51
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 51

required :duplicate_count, Integer, api_name: :duplicateCount

#empty_false_progress_pagesInteger

Empty pages rejected because they did not make progress.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


57
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 57

required :empty_false_progress_pages, Integer, api_name: :emptyFalseProgressPages

#malformed_countInteger

Malformed response items rejected.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


63
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 63

required :malformed_count, Integer, api_name: :malformedCount

#missing_response_modules_or_fieldsArray<String>

Expected response modules or fields missing from X.

Parameters:

  • value (::Array[String])

Returns:

  • (Array<String>)


69
70
71
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 69

required :missing_response_modules_or_fields,
XTwitterScraper::Internal::Type::ArrayOf[String],
api_name: :missingResponseModulesOrFields

#nested_reply_countInteger

Unique nested replies kept outside direct coverage.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


77
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 77

required :nested_reply_count, Integer, api_name: :nestedReplyCount

#pages_attemptedInteger

Total pages attempted across all strategies.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


83
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 83

required :pages_attempted, Integer, api_name: :pagesAttempted

Recommended next action when coverage is incomplete.

Parameters:

  • value (String)

Returns:

  • (String)


89
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 89

required :recommended_fallback, String, api_name: :recommendedFallback

#repeated_cursor_countInteger

Repeated cursors rejected to prevent loops.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


95
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 95

required :repeated_cursor_count, Integer, api_name: :repeatedCursorCount

#reported_reply_countInteger

Reply count reported on the source post.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


101
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 101

required :reported_reply_count, Integer, api_name: :reportedReplyCount

#response_truncatedBoolean

Whether the requested row limit truncated safe results.

Parameters:

  • value (Boolean)

Returns:

  • (Boolean)


107
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 107

required :response_truncated, XTwitterScraper::Internal::Type::Boolean, api_name: :responseTruncated

#richnessXTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::Richness

Field-presence counts across the collected direct replies.



113
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 113

required :richness, -> { XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::Richness }

#strategies_attemptedArray<XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted>

Per-strategy pagination and contribution evidence.



119
120
121
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 119

required :strategies_attempted,
-> { XTwitterScraper::Internal::Type::ArrayOf[XTwitterScraper::Models::X::TweetGetRepliesResponse::Diagnostic::StrategiesAttempted] },
api_name: :strategiesAttempted

#target_direct_repliesInteger

Minimum direct replies required for the coverage target.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


127
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 127

required :target_direct_replies, Integer, api_name: :targetDirectReplies

#unique_direct_repliesInteger

Unique replies whose parent ID equals the source post ID.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


133
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 133

required :unique_direct_replies, Integer, api_name: :uniqueDirectReplies

#unrelated_countInteger

Tweets rejected because they belonged elsewhere.

Parameters:

  • value (Integer)

Returns:

  • (Integer)


139
# File 'lib/x_twitter_scraper/models/x/tweet_get_replies_response.rb', line 139

required :unrelated_count, Integer, api_name: :unrelatedCount

Instance Method Details

#to_hash{

Returns:

  • ({)


113
# File 'sig/x_twitter_scraper/models/x/tweet_get_replies_response.rbs', line 113

def to_hash: -> {