Skip to content

Commit aa06dd7

Browse files
feat(api): api update
1 parent 64b4b5b commit aa06dd7

107 files changed

Lines changed: 45958 additions & 5896 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 123
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/xquik/x-twitter-scraper-5f26f3694399b4ac5a4431c66f7d27c4024f9d0dcd899702de5fde1150e28330.yml
3-
openapi_spec_hash: 362e24e622f9a74ded8b38018e50460c
4-
config_hash: dab26921eb273c16e5570c0485c9ac2c
1+
configured_endpoints: 124
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/xquik/x-twitter-scraper-7bcac1557175956021a62532c55ce29b8822b5a41d0d59ae67787a6326c0ef8a.yml
3+
openapi_spec_hash: 04e28f19097d9b59119101492100c4ab
4+
config_hash: 217d68ca6999ad03cfc4922e9658297e

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,15 +136,15 @@ System properties override environment variables.
136136
## Search Posts
137137

138138
```java
139-
import com.x_twitter_scraper.api.models.PaginatedTweets;
140139
import com.x_twitter_scraper.api.models.x.tweets.TweetSearchParams;
140+
import com.x_twitter_scraper.api.models.x.tweets.TweetSearchResponse;
141141

142142
TweetSearchParams params = TweetSearchParams.builder()
143143
.q("from:elonmusk")
144144
.limit(10L)
145145
.build();
146146

147-
PaginatedTweets result = client.x().tweets().search(params);
147+
TweetSearchResponse result = client.x().tweets().search(params);
148148
```
149149

150150
Close the client when your application stops:
@@ -160,7 +160,7 @@ Call `async()` to receive `CompletableFuture` results:
160160
```java
161161
import java.util.concurrent.CompletableFuture;
162162

163-
CompletableFuture<PaginatedTweets> result =
163+
CompletableFuture<TweetSearchResponse> result =
164164
client.async().x().tweets().search(params);
165165
```
166166

x-twitter-scraper-java-core/src/main/kotlin/com/x_twitter_scraper/api/models/Error.kt

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,8 @@ private constructor(
616616

617617
@JvmField val MONITOR_ALREADY_EXISTS = of("monitor_already_exists")
618618

619+
@JvmField val MONITOR_PROFILE_UNAVAILABLE = of("monitor_profile_unavailable")
620+
619621
@JvmField val NO_MEDIA = of("no_media")
620622

621623
@JvmField val NO_CREDITS = of("no_credits")
@@ -650,6 +652,10 @@ private constructor(
650652

651653
@JvmField val CONNECTION_CHALLENGE_INACTIVE = of("connection_challenge_inactive")
652654

655+
@JvmField val COVERAGE_CURSOR_GONE = of("coverage_cursor_gone")
656+
657+
@JvmField val COVERAGE_CURSOR_UNAVAILABLE = of("coverage_cursor_unavailable")
658+
653659
@JvmField val DRAFT_NOT_FOUND = of("draft_not_found")
654660

655661
@JvmField val FAVORITERS_UNAVAILABLE = of("favoriters_unavailable")
@@ -668,6 +674,8 @@ private constructor(
668674

669675
@JvmField val INVALID_COMMUNITY_ID = of("invalid_community_id")
670676

677+
@JvmField val INVALID_COVERAGE_CURSOR = of("invalid_coverage_cursor")
678+
671679
@JvmField val INVALID_IDEMPOTENCY_KEY = of("invalid_idempotency_key")
672680

673681
@JvmField val INVALID_LIST_ID = of("invalid_list_id")
@@ -792,6 +800,7 @@ private constructor(
792800
MISSING_PARAMS,
793801
MISSING_QUERY,
794802
MONITOR_ALREADY_EXISTS,
803+
MONITOR_PROFILE_UNAVAILABLE,
795804
NO_MEDIA,
796805
NO_CREDITS,
797806
NO_SUBSCRIPTION,
@@ -809,6 +818,8 @@ private constructor(
809818
CHECKOUT_UNAVAILABLE,
810819
CONNECTION_CHALLENGE_EXPIRED,
811820
CONNECTION_CHALLENGE_INACTIVE,
821+
COVERAGE_CURSOR_GONE,
822+
COVERAGE_CURSOR_UNAVAILABLE,
812823
DRAFT_NOT_FOUND,
813824
FAVORITERS_UNAVAILABLE,
814825
FORBIDDEN,
@@ -818,6 +829,7 @@ private constructor(
818829
IDEMPOTENCY_CONFLICT,
819830
IDEMPOTENCY_KEY_CONFLICT,
820831
INVALID_COMMUNITY_ID,
832+
INVALID_COVERAGE_CURSOR,
821833
INVALID_IDEMPOTENCY_KEY,
822834
INVALID_LIST_ID,
823835
INVALID_PAYMENT_AMOUNT,
@@ -903,6 +915,7 @@ private constructor(
903915
MISSING_PARAMS,
904916
MISSING_QUERY,
905917
MONITOR_ALREADY_EXISTS,
918+
MONITOR_PROFILE_UNAVAILABLE,
906919
NO_MEDIA,
907920
NO_CREDITS,
908921
NO_SUBSCRIPTION,
@@ -920,6 +933,8 @@ private constructor(
920933
CHECKOUT_UNAVAILABLE,
921934
CONNECTION_CHALLENGE_EXPIRED,
922935
CONNECTION_CHALLENGE_INACTIVE,
936+
COVERAGE_CURSOR_GONE,
937+
COVERAGE_CURSOR_UNAVAILABLE,
923938
DRAFT_NOT_FOUND,
924939
FAVORITERS_UNAVAILABLE,
925940
FORBIDDEN,
@@ -929,6 +944,7 @@ private constructor(
929944
IDEMPOTENCY_CONFLICT,
930945
IDEMPOTENCY_KEY_CONFLICT,
931946
INVALID_COMMUNITY_ID,
947+
INVALID_COVERAGE_CURSOR,
932948
INVALID_IDEMPOTENCY_KEY,
933949
INVALID_LIST_ID,
934950
INVALID_PAYMENT_AMOUNT,
@@ -1018,6 +1034,7 @@ private constructor(
10181034
MISSING_PARAMS -> Value.MISSING_PARAMS
10191035
MISSING_QUERY -> Value.MISSING_QUERY
10201036
MONITOR_ALREADY_EXISTS -> Value.MONITOR_ALREADY_EXISTS
1037+
MONITOR_PROFILE_UNAVAILABLE -> Value.MONITOR_PROFILE_UNAVAILABLE
10211038
NO_MEDIA -> Value.NO_MEDIA
10221039
NO_CREDITS -> Value.NO_CREDITS
10231040
NO_SUBSCRIPTION -> Value.NO_SUBSCRIPTION
@@ -1035,6 +1052,8 @@ private constructor(
10351052
CHECKOUT_UNAVAILABLE -> Value.CHECKOUT_UNAVAILABLE
10361053
CONNECTION_CHALLENGE_EXPIRED -> Value.CONNECTION_CHALLENGE_EXPIRED
10371054
CONNECTION_CHALLENGE_INACTIVE -> Value.CONNECTION_CHALLENGE_INACTIVE
1055+
COVERAGE_CURSOR_GONE -> Value.COVERAGE_CURSOR_GONE
1056+
COVERAGE_CURSOR_UNAVAILABLE -> Value.COVERAGE_CURSOR_UNAVAILABLE
10381057
DRAFT_NOT_FOUND -> Value.DRAFT_NOT_FOUND
10391058
FAVORITERS_UNAVAILABLE -> Value.FAVORITERS_UNAVAILABLE
10401059
FORBIDDEN -> Value.FORBIDDEN
@@ -1044,6 +1063,7 @@ private constructor(
10441063
IDEMPOTENCY_CONFLICT -> Value.IDEMPOTENCY_CONFLICT
10451064
IDEMPOTENCY_KEY_CONFLICT -> Value.IDEMPOTENCY_KEY_CONFLICT
10461065
INVALID_COMMUNITY_ID -> Value.INVALID_COMMUNITY_ID
1066+
INVALID_COVERAGE_CURSOR -> Value.INVALID_COVERAGE_CURSOR
10471067
INVALID_IDEMPOTENCY_KEY -> Value.INVALID_IDEMPOTENCY_KEY
10481068
INVALID_LIST_ID -> Value.INVALID_LIST_ID
10491069
INVALID_PAYMENT_AMOUNT -> Value.INVALID_PAYMENT_AMOUNT
@@ -1131,6 +1151,7 @@ private constructor(
11311151
MISSING_PARAMS -> Known.MISSING_PARAMS
11321152
MISSING_QUERY -> Known.MISSING_QUERY
11331153
MONITOR_ALREADY_EXISTS -> Known.MONITOR_ALREADY_EXISTS
1154+
MONITOR_PROFILE_UNAVAILABLE -> Known.MONITOR_PROFILE_UNAVAILABLE
11341155
NO_MEDIA -> Known.NO_MEDIA
11351156
NO_CREDITS -> Known.NO_CREDITS
11361157
NO_SUBSCRIPTION -> Known.NO_SUBSCRIPTION
@@ -1148,6 +1169,8 @@ private constructor(
11481169
CHECKOUT_UNAVAILABLE -> Known.CHECKOUT_UNAVAILABLE
11491170
CONNECTION_CHALLENGE_EXPIRED -> Known.CONNECTION_CHALLENGE_EXPIRED
11501171
CONNECTION_CHALLENGE_INACTIVE -> Known.CONNECTION_CHALLENGE_INACTIVE
1172+
COVERAGE_CURSOR_GONE -> Known.COVERAGE_CURSOR_GONE
1173+
COVERAGE_CURSOR_UNAVAILABLE -> Known.COVERAGE_CURSOR_UNAVAILABLE
11511174
DRAFT_NOT_FOUND -> Known.DRAFT_NOT_FOUND
11521175
FAVORITERS_UNAVAILABLE -> Known.FAVORITERS_UNAVAILABLE
11531176
FORBIDDEN -> Known.FORBIDDEN
@@ -1157,6 +1180,7 @@ private constructor(
11571180
IDEMPOTENCY_CONFLICT -> Known.IDEMPOTENCY_CONFLICT
11581181
IDEMPOTENCY_KEY_CONFLICT -> Known.IDEMPOTENCY_KEY_CONFLICT
11591182
INVALID_COMMUNITY_ID -> Known.INVALID_COMMUNITY_ID
1183+
INVALID_COVERAGE_CURSOR -> Known.INVALID_COVERAGE_CURSOR
11601184
INVALID_IDEMPOTENCY_KEY -> Known.INVALID_IDEMPOTENCY_KEY
11611185
INVALID_LIST_ID -> Known.INVALID_LIST_ID
11621186
INVALID_PAYMENT_AMOUNT -> Known.INVALID_PAYMENT_AMOUNT
@@ -1564,6 +1588,8 @@ private constructor(
15641588

15651589
@JvmField val MONITOR_ALREADY_EXISTS = of("monitor_already_exists")
15661590

1591+
@JvmField val MONITOR_PROFILE_UNAVAILABLE = of("monitor_profile_unavailable")
1592+
15671593
@JvmField val NO_MEDIA = of("no_media")
15681594

15691595
@JvmField val NO_CREDITS = of("no_credits")
@@ -1599,6 +1625,10 @@ private constructor(
15991625
@JvmField
16001626
val CONNECTION_CHALLENGE_INACTIVE = of("connection_challenge_inactive")
16011627

1628+
@JvmField val COVERAGE_CURSOR_GONE = of("coverage_cursor_gone")
1629+
1630+
@JvmField val COVERAGE_CURSOR_UNAVAILABLE = of("coverage_cursor_unavailable")
1631+
16021632
@JvmField val DRAFT_NOT_FOUND = of("draft_not_found")
16031633

16041634
@JvmField val FAVORITERS_UNAVAILABLE = of("favoriters_unavailable")
@@ -1617,6 +1647,8 @@ private constructor(
16171647

16181648
@JvmField val INVALID_COMMUNITY_ID = of("invalid_community_id")
16191649

1650+
@JvmField val INVALID_COVERAGE_CURSOR = of("invalid_coverage_cursor")
1651+
16201652
@JvmField val INVALID_IDEMPOTENCY_KEY = of("invalid_idempotency_key")
16211653

16221654
@JvmField val INVALID_LIST_ID = of("invalid_list_id")
@@ -1741,6 +1773,7 @@ private constructor(
17411773
MISSING_PARAMS,
17421774
MISSING_QUERY,
17431775
MONITOR_ALREADY_EXISTS,
1776+
MONITOR_PROFILE_UNAVAILABLE,
17441777
NO_MEDIA,
17451778
NO_CREDITS,
17461779
NO_SUBSCRIPTION,
@@ -1758,6 +1791,8 @@ private constructor(
17581791
CHECKOUT_UNAVAILABLE,
17591792
CONNECTION_CHALLENGE_EXPIRED,
17601793
CONNECTION_CHALLENGE_INACTIVE,
1794+
COVERAGE_CURSOR_GONE,
1795+
COVERAGE_CURSOR_UNAVAILABLE,
17611796
DRAFT_NOT_FOUND,
17621797
FAVORITERS_UNAVAILABLE,
17631798
FORBIDDEN,
@@ -1767,6 +1802,7 @@ private constructor(
17671802
IDEMPOTENCY_CONFLICT,
17681803
IDEMPOTENCY_KEY_CONFLICT,
17691804
INVALID_COMMUNITY_ID,
1805+
INVALID_COVERAGE_CURSOR,
17701806
INVALID_IDEMPOTENCY_KEY,
17711807
INVALID_LIST_ID,
17721808
INVALID_PAYMENT_AMOUNT,
@@ -1852,6 +1888,7 @@ private constructor(
18521888
MISSING_PARAMS,
18531889
MISSING_QUERY,
18541890
MONITOR_ALREADY_EXISTS,
1891+
MONITOR_PROFILE_UNAVAILABLE,
18551892
NO_MEDIA,
18561893
NO_CREDITS,
18571894
NO_SUBSCRIPTION,
@@ -1869,6 +1906,8 @@ private constructor(
18691906
CHECKOUT_UNAVAILABLE,
18701907
CONNECTION_CHALLENGE_EXPIRED,
18711908
CONNECTION_CHALLENGE_INACTIVE,
1909+
COVERAGE_CURSOR_GONE,
1910+
COVERAGE_CURSOR_UNAVAILABLE,
18721911
DRAFT_NOT_FOUND,
18731912
FAVORITERS_UNAVAILABLE,
18741913
FORBIDDEN,
@@ -1878,6 +1917,7 @@ private constructor(
18781917
IDEMPOTENCY_CONFLICT,
18791918
IDEMPOTENCY_KEY_CONFLICT,
18801919
INVALID_COMMUNITY_ID,
1920+
INVALID_COVERAGE_CURSOR,
18811921
INVALID_IDEMPOTENCY_KEY,
18821922
INVALID_LIST_ID,
18831923
INVALID_PAYMENT_AMOUNT,
@@ -1966,6 +2006,7 @@ private constructor(
19662006
MISSING_PARAMS -> Value.MISSING_PARAMS
19672007
MISSING_QUERY -> Value.MISSING_QUERY
19682008
MONITOR_ALREADY_EXISTS -> Value.MONITOR_ALREADY_EXISTS
2009+
MONITOR_PROFILE_UNAVAILABLE -> Value.MONITOR_PROFILE_UNAVAILABLE
19692010
NO_MEDIA -> Value.NO_MEDIA
19702011
NO_CREDITS -> Value.NO_CREDITS
19712012
NO_SUBSCRIPTION -> Value.NO_SUBSCRIPTION
@@ -1983,6 +2024,8 @@ private constructor(
19832024
CHECKOUT_UNAVAILABLE -> Value.CHECKOUT_UNAVAILABLE
19842025
CONNECTION_CHALLENGE_EXPIRED -> Value.CONNECTION_CHALLENGE_EXPIRED
19852026
CONNECTION_CHALLENGE_INACTIVE -> Value.CONNECTION_CHALLENGE_INACTIVE
2027+
COVERAGE_CURSOR_GONE -> Value.COVERAGE_CURSOR_GONE
2028+
COVERAGE_CURSOR_UNAVAILABLE -> Value.COVERAGE_CURSOR_UNAVAILABLE
19862029
DRAFT_NOT_FOUND -> Value.DRAFT_NOT_FOUND
19872030
FAVORITERS_UNAVAILABLE -> Value.FAVORITERS_UNAVAILABLE
19882031
FORBIDDEN -> Value.FORBIDDEN
@@ -1992,6 +2035,7 @@ private constructor(
19922035
IDEMPOTENCY_CONFLICT -> Value.IDEMPOTENCY_CONFLICT
19932036
IDEMPOTENCY_KEY_CONFLICT -> Value.IDEMPOTENCY_KEY_CONFLICT
19942037
INVALID_COMMUNITY_ID -> Value.INVALID_COMMUNITY_ID
2038+
INVALID_COVERAGE_CURSOR -> Value.INVALID_COVERAGE_CURSOR
19952039
INVALID_IDEMPOTENCY_KEY -> Value.INVALID_IDEMPOTENCY_KEY
19962040
INVALID_LIST_ID -> Value.INVALID_LIST_ID
19972041
INVALID_PAYMENT_AMOUNT -> Value.INVALID_PAYMENT_AMOUNT
@@ -2079,6 +2123,7 @@ private constructor(
20792123
MISSING_PARAMS -> Known.MISSING_PARAMS
20802124
MISSING_QUERY -> Known.MISSING_QUERY
20812125
MONITOR_ALREADY_EXISTS -> Known.MONITOR_ALREADY_EXISTS
2126+
MONITOR_PROFILE_UNAVAILABLE -> Known.MONITOR_PROFILE_UNAVAILABLE
20822127
NO_MEDIA -> Known.NO_MEDIA
20832128
NO_CREDITS -> Known.NO_CREDITS
20842129
NO_SUBSCRIPTION -> Known.NO_SUBSCRIPTION
@@ -2096,6 +2141,8 @@ private constructor(
20962141
CHECKOUT_UNAVAILABLE -> Known.CHECKOUT_UNAVAILABLE
20972142
CONNECTION_CHALLENGE_EXPIRED -> Known.CONNECTION_CHALLENGE_EXPIRED
20982143
CONNECTION_CHALLENGE_INACTIVE -> Known.CONNECTION_CHALLENGE_INACTIVE
2144+
COVERAGE_CURSOR_GONE -> Known.COVERAGE_CURSOR_GONE
2145+
COVERAGE_CURSOR_UNAVAILABLE -> Known.COVERAGE_CURSOR_UNAVAILABLE
20992146
DRAFT_NOT_FOUND -> Known.DRAFT_NOT_FOUND
21002147
FAVORITERS_UNAVAILABLE -> Known.FAVORITERS_UNAVAILABLE
21012148
FORBIDDEN -> Known.FORBIDDEN
@@ -2105,6 +2152,7 @@ private constructor(
21052152
IDEMPOTENCY_CONFLICT -> Known.IDEMPOTENCY_CONFLICT
21062153
IDEMPOTENCY_KEY_CONFLICT -> Known.IDEMPOTENCY_KEY_CONFLICT
21072154
INVALID_COMMUNITY_ID -> Known.INVALID_COMMUNITY_ID
2155+
INVALID_COVERAGE_CURSOR -> Known.INVALID_COVERAGE_CURSOR
21082156
INVALID_IDEMPOTENCY_KEY -> Known.INVALID_IDEMPOTENCY_KEY
21092157
INVALID_LIST_ID -> Known.INVALID_LIST_ID
21102158
INVALID_PAYMENT_AMOUNT -> Known.INVALID_PAYMENT_AMOUNT

x-twitter-scraper-java-core/src/main/kotlin/com/x_twitter_scraper/api/models/PaginatedTweets.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,10 @@ import java.util.Objects
2323
import kotlin.jvm.optionals.getOrNull
2424

2525
/**
26-
* Paginated tweets. Source visibility, filters, or remaining credits can reduce results. An empty
27-
* filtered page can still have has_next_page true. Follow next_cursor while has_next_page is true.
28-
* Zero affordable results returns 402 insufficient_credits.
26+
* No-mode search, user Tweet, user reply, and direct reply reads use automatic coverage. Shape,
27+
* filters, aliases, and billing stay compatible. Unprefixed cursors remain legacy. Follow
28+
* next_cursor while has_next_page is true. An empty filtered page can still have has_next_page
29+
* true.
2930
*/
3031
class PaginatedTweets
3132
@JsonCreator(mode = JsonCreator.Mode.DISABLED)

x-twitter-scraper-java-core/src/main/kotlin/com/x_twitter_scraper/api/models/PaginatedUsers.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ import java.util.Objects
2323
import kotlin.jvm.optionals.getOrNull
2424

2525
/**
26-
* Paginated user profiles. The item count can be lower than pageSize when the source returns fewer
27-
* profiles or remaining credits cover fewer results. Follow next_cursor while has_next_page is
28-
* true. A relationship can naturally contain fewer profiles than requested. Zero affordable results
29-
* returns 402 insufficient_credits.
26+
* Paginated user profiles. No-mode follower, following, and verified follower requests merge
27+
* independent views automatically. Response fields, page size, aliases, filters, and
28+
* per-returned-profile billing stay unchanged. Existing unprefixed cursors retain legacy behavior.
29+
* Follow next_cursor while has_next_page is true.
3030
*/
3131
class PaginatedUsers
3232
@JsonCreator(mode = JsonCreator.Mode.DISABLED)

x-twitter-scraper-java-core/src/main/kotlin/com/x_twitter_scraper/api/models/draws/DrawExportParams.kt

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,10 @@ private constructor(
3030

3131
fun id(): Optional<String> = Optional.ofNullable(id)
3232

33-
/** Export output format */
33+
/**
34+
* Export output format. PDF entry exports include up to 10,000 rows. Other entry formats
35+
* include up to 100,000 rows.
36+
*/
3437
fun format(): Format = format
3538

3639
/** Export winners or all entries */
@@ -80,7 +83,10 @@ private constructor(
8083
/** Alias for calling [Builder.id] with `id.orElse(null)`. */
8184
fun id(id: Optional<String>) = id(id.getOrNull())
8285

83-
/** Export output format */
86+
/**
87+
* Export output format. PDF entry exports include up to 10,000 rows. Other entry formats
88+
* include up to 100,000 rows.
89+
*/
8490
fun format(format: Format) = apply { this.format = format }
8591

8692
/** Export winners or all entries */
@@ -226,7 +232,10 @@ private constructor(
226232
}
227233
.build()
228234

229-
/** Export output format */
235+
/**
236+
* Export output format. PDF entry exports include up to 10,000 rows. Other entry formats
237+
* include up to 100,000 rows.
238+
*/
230239
class Format @JsonCreator private constructor(private val value: JsonField<String>) : Enum {
231240

232241
/**

x-twitter-scraper-java-core/src/main/kotlin/com/x_twitter_scraper/api/models/draws/DrawListParams.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ private constructor(
2222
private val additionalQueryParams: QueryParams,
2323
) : Params {
2424

25-
/** Cursor for keyset pagination from prior response next_cursor */
25+
/** Previous nextCursor. */
2626
fun cursor(): Optional<String> = Optional.ofNullable(cursor)
2727

2828
/**
@@ -64,7 +64,7 @@ private constructor(
6464
additionalQueryParams = drawListParams.additionalQueryParams.toBuilder()
6565
}
6666

67-
/** Cursor for keyset pagination from prior response next_cursor */
67+
/** Previous nextCursor. */
6868
fun cursor(cursor: String?) = apply { this.cursor = cursor }
6969

7070
/** Alias for calling [Builder.cursor] with `cursor.orElse(null)`. */

0 commit comments

Comments
 (0)