x-twitter-scraper 0.12.4 → 0.13.0
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.
- package/CHANGELOG.md +65 -0
- package/README.md +30 -9
- package/client.d.mts +18 -15
- package/client.d.mts.map +1 -1
- package/client.d.ts +18 -15
- package/client.d.ts.map +1 -1
- package/client.js +3 -3
- package/client.js.map +1 -1
- package/client.mjs +4 -4
- package/client.mjs.map +1 -1
- package/core/streaming.d.mts +33 -0
- package/core/streaming.d.mts.map +1 -0
- package/core/streaming.d.ts +33 -0
- package/core/streaming.d.ts.map +1 -0
- package/core/streaming.js +270 -0
- package/core/streaming.js.map +1 -0
- package/core/streaming.mjs +265 -0
- package/core/streaming.mjs.map +1 -0
- package/internal/decoders/line.d.mts +17 -0
- package/internal/decoders/line.d.mts.map +1 -0
- package/internal/decoders/line.d.ts +17 -0
- package/internal/decoders/line.d.ts.map +1 -0
- package/internal/decoders/line.js +116 -0
- package/internal/decoders/line.js.map +1 -0
- package/internal/decoders/line.mjs +111 -0
- package/internal/decoders/line.mjs.map +1 -0
- package/internal/parse.d.mts.map +1 -1
- package/internal/parse.d.ts.map +1 -1
- package/internal/parse.js +7 -0
- package/internal/parse.js.map +1 -1
- package/internal/parse.mjs +7 -0
- package/internal/parse.mjs.map +1 -1
- package/internal/tslib.js +18 -18
- package/package.json +23 -5
- package/resources/account.d.mts +35 -12
- package/resources/account.d.mts.map +1 -1
- package/resources/account.d.ts +35 -12
- package/resources/account.d.ts.map +1 -1
- package/resources/account.js +4 -3
- package/resources/account.js.map +1 -1
- package/resources/account.mjs +4 -3
- package/resources/account.mjs.map +1 -1
- package/resources/compose.d.mts +77 -21
- package/resources/compose.d.mts.map +1 -1
- package/resources/compose.d.ts +77 -21
- package/resources/compose.d.ts.map +1 -1
- package/resources/compose.js +3 -4
- package/resources/compose.js.map +1 -1
- package/resources/compose.mjs +3 -4
- package/resources/compose.mjs.map +1 -1
- package/resources/credits.d.mts +18 -10
- package/resources/credits.d.mts.map +1 -1
- package/resources/credits.d.ts +18 -10
- package/resources/credits.d.ts.map +1 -1
- package/resources/credits.js +5 -4
- package/resources/credits.js.map +1 -1
- package/resources/credits.mjs +5 -4
- package/resources/credits.mjs.map +1 -1
- package/resources/drafts.d.mts +13 -17
- package/resources/drafts.d.mts.map +1 -1
- package/resources/drafts.d.ts +13 -17
- package/resources/drafts.d.ts.map +1 -1
- package/resources/drafts.js +4 -4
- package/resources/drafts.mjs +4 -4
- package/resources/draws.d.mts +84 -28
- package/resources/draws.d.mts.map +1 -1
- package/resources/draws.d.ts +84 -28
- package/resources/draws.d.ts.map +1 -1
- package/resources/draws.js +24 -9
- package/resources/draws.js.map +1 -1
- package/resources/draws.mjs +24 -9
- package/resources/draws.mjs.map +1 -1
- package/resources/events.d.mts +2564 -21
- package/resources/events.d.mts.map +1 -1
- package/resources/events.d.ts +2564 -21
- package/resources/events.d.ts.map +1 -1
- package/resources/events.js +34 -2
- package/resources/events.js.map +1 -1
- package/resources/events.mjs +34 -2
- package/resources/events.mjs.map +1 -1
- package/resources/extractions.d.mts +410 -128
- package/resources/extractions.d.mts.map +1 -1
- package/resources/extractions.d.ts +410 -128
- package/resources/extractions.d.ts.map +1 -1
- package/resources/extractions.js +74 -12
- package/resources/extractions.js.map +1 -1
- package/resources/extractions.mjs +74 -12
- package/resources/extractions.mjs.map +1 -1
- package/resources/guest-wallets.d.mts +6 -5
- package/resources/guest-wallets.d.mts.map +1 -1
- package/resources/guest-wallets.d.ts +6 -5
- package/resources/guest-wallets.d.ts.map +1 -1
- package/resources/guest-wallets.js +2 -1
- package/resources/guest-wallets.js.map +1 -1
- package/resources/guest-wallets.mjs +2 -1
- package/resources/guest-wallets.mjs.map +1 -1
- package/resources/index.d.mts +6 -6
- package/resources/index.d.mts.map +1 -1
- package/resources/index.d.ts +6 -6
- package/resources/index.d.ts.map +1 -1
- package/resources/index.js.map +1 -1
- package/resources/index.mjs +1 -1
- package/resources/index.mjs.map +1 -1
- package/resources/monitors/index.d.mts +2 -2
- package/resources/monitors/index.d.mts.map +1 -1
- package/resources/monitors/index.d.ts +2 -2
- package/resources/monitors/index.d.ts.map +1 -1
- package/resources/monitors/index.js.map +1 -1
- package/resources/monitors/index.mjs.map +1 -1
- package/resources/monitors/keywords.d.mts +66 -14
- package/resources/monitors/keywords.d.mts.map +1 -1
- package/resources/monitors/keywords.d.ts +66 -14
- package/resources/monitors/keywords.d.ts.map +1 -1
- package/resources/monitors/keywords.js +16 -10
- package/resources/monitors/keywords.js.map +1 -1
- package/resources/monitors/keywords.mjs +16 -10
- package/resources/monitors/keywords.mjs.map +1 -1
- package/resources/monitors/monitors.d.mts +53 -16
- package/resources/monitors/monitors.d.mts.map +1 -1
- package/resources/monitors/monitors.d.ts +53 -16
- package/resources/monitors/monitors.d.ts.map +1 -1
- package/resources/monitors/monitors.js +12 -10
- package/resources/monitors/monitors.js.map +1 -1
- package/resources/monitors/monitors.mjs +12 -10
- package/resources/monitors/monitors.mjs.map +1 -1
- package/resources/radar.d.mts +32 -36
- package/resources/radar.d.mts.map +1 -1
- package/resources/radar.d.ts +32 -36
- package/resources/radar.d.ts.map +1 -1
- package/resources/radar.js +1 -1
- package/resources/radar.mjs +1 -1
- package/resources/shared.d.mts +1726 -233
- package/resources/shared.d.mts.map +1 -1
- package/resources/shared.d.ts +1726 -233
- package/resources/shared.d.ts.map +1 -1
- package/resources/styles.d.mts +34 -23
- package/resources/styles.d.mts.map +1 -1
- package/resources/styles.d.ts +34 -23
- package/resources/styles.d.ts.map +1 -1
- package/resources/styles.js +11 -13
- package/resources/styles.js.map +1 -1
- package/resources/styles.mjs +11 -13
- package/resources/styles.mjs.map +1 -1
- package/resources/subscribe.d.mts +1 -1
- package/resources/subscribe.d.ts +1 -1
- package/resources/subscribe.js +1 -1
- package/resources/subscribe.mjs +1 -1
- package/resources/support/index.d.mts +1 -1
- package/resources/support/index.d.mts.map +1 -1
- package/resources/support/index.d.ts +1 -1
- package/resources/support/index.d.ts.map +1 -1
- package/resources/support/index.js.map +1 -1
- package/resources/support/index.mjs.map +1 -1
- package/resources/support/support.d.mts +2 -2
- package/resources/support/support.d.mts.map +1 -1
- package/resources/support/support.d.ts +2 -2
- package/resources/support/support.d.ts.map +1 -1
- package/resources/support/support.js.map +1 -1
- package/resources/support/support.mjs.map +1 -1
- package/resources/support/tickets.d.mts +30 -10
- package/resources/support/tickets.d.mts.map +1 -1
- package/resources/support/tickets.d.ts +30 -10
- package/resources/support/tickets.d.ts.map +1 -1
- package/resources/support/tickets.js +7 -7
- package/resources/support/tickets.js.map +1 -1
- package/resources/support/tickets.mjs +7 -7
- package/resources/support/tickets.mjs.map +1 -1
- package/resources/trends.d.mts +21 -5
- package/resources/trends.d.mts.map +1 -1
- package/resources/trends.d.ts +21 -5
- package/resources/trends.d.ts.map +1 -1
- package/resources/trends.js +2 -1
- package/resources/trends.js.map +1 -1
- package/resources/trends.mjs +2 -1
- package/resources/trends.mjs.map +1 -1
- package/resources/webhooks.d.mts +80 -14
- package/resources/webhooks.d.mts.map +1 -1
- package/resources/webhooks.d.ts +80 -14
- package/resources/webhooks.d.ts.map +1 -1
- package/resources/webhooks.js +30 -11
- package/resources/webhooks.js.map +1 -1
- package/resources/webhooks.mjs +30 -11
- package/resources/webhooks.mjs.map +1 -1
- package/resources/x/account-connection-attempts.d.mts +1 -1
- package/resources/x/account-connection-attempts.d.ts +1 -1
- package/resources/x/account-connection-attempts.js +1 -1
- package/resources/x/account-connection-attempts.mjs +1 -1
- package/resources/x/account-connection-challenges.d.mts +30 -11
- package/resources/x/account-connection-challenges.d.mts.map +1 -1
- package/resources/x/account-connection-challenges.d.ts +30 -11
- package/resources/x/account-connection-challenges.d.ts.map +1 -1
- package/resources/x/account-connection-challenges.js +5 -4
- package/resources/x/account-connection-challenges.js.map +1 -1
- package/resources/x/account-connection-challenges.mjs +5 -4
- package/resources/x/account-connection-challenges.mjs.map +1 -1
- package/resources/x/accounts.d.mts +38 -10
- package/resources/x/accounts.d.mts.map +1 -1
- package/resources/x/accounts.d.ts +38 -10
- package/resources/x/accounts.d.ts.map +1 -1
- package/resources/x/accounts.js +8 -7
- package/resources/x/accounts.js.map +1 -1
- package/resources/x/accounts.mjs +8 -7
- package/resources/x/accounts.mjs.map +1 -1
- package/resources/x/analysis.d.mts +3274 -0
- package/resources/x/analysis.d.mts.map +1 -0
- package/resources/x/analysis.d.ts +3274 -0
- package/resources/x/analysis.d.ts.map +1 -0
- package/resources/x/analysis.js +132 -0
- package/resources/x/analysis.js.map +1 -0
- package/resources/x/analysis.mjs +128 -0
- package/resources/x/analysis.mjs.map +1 -0
- package/resources/x/bookmarks.d.mts +84 -9
- package/resources/x/bookmarks.d.mts.map +1 -1
- package/resources/x/bookmarks.d.ts +84 -9
- package/resources/x/bookmarks.d.ts.map +1 -1
- package/resources/x/bookmarks.js +6 -4
- package/resources/x/bookmarks.js.map +1 -1
- package/resources/x/bookmarks.mjs +6 -4
- package/resources/x/bookmarks.mjs.map +1 -1
- package/resources/x/broadcasts.d.mts +176 -0
- package/resources/x/broadcasts.d.mts.map +1 -0
- package/resources/x/broadcasts.d.ts +176 -0
- package/resources/x/broadcasts.d.ts.map +1 -0
- package/resources/x/broadcasts.js +29 -0
- package/resources/x/broadcasts.js.map +1 -0
- package/resources/x/broadcasts.mjs +25 -0
- package/resources/x/broadcasts.mjs.map +1 -0
- package/resources/x/communities/communities.d.mts +612 -128
- package/resources/x/communities/communities.d.mts.map +1 -1
- package/resources/x/communities/communities.d.ts +612 -128
- package/resources/x/communities/communities.d.ts.map +1 -1
- package/resources/x/communities/communities.js +96 -17
- package/resources/x/communities/communities.js.map +1 -1
- package/resources/x/communities/communities.mjs +96 -17
- package/resources/x/communities/communities.mjs.map +1 -1
- package/resources/x/communities/index.d.mts +2 -1
- package/resources/x/communities/index.d.mts.map +1 -1
- package/resources/x/communities/index.d.ts +2 -1
- package/resources/x/communities/index.d.ts.map +1 -1
- package/resources/x/communities/index.js +3 -1
- package/resources/x/communities/index.js.map +1 -1
- package/resources/x/communities/index.mjs +1 -0
- package/resources/x/communities/index.mjs.map +1 -1
- package/resources/x/communities/join.d.mts +46 -25
- package/resources/x/communities/join.d.mts.map +1 -1
- package/resources/x/communities/join.d.ts +46 -25
- package/resources/x/communities/join.d.ts.map +1 -1
- package/resources/x/communities/join.js +10 -7
- package/resources/x/communities/join.js.map +1 -1
- package/resources/x/communities/join.mjs +10 -7
- package/resources/x/communities/join.mjs.map +1 -1
- package/resources/x/communities/media.d.mts +197 -0
- package/resources/x/communities/media.d.mts.map +1 -0
- package/resources/x/communities/media.d.ts +197 -0
- package/resources/x/communities/media.d.ts.map +1 -0
- package/resources/x/communities/media.js +29 -0
- package/resources/x/communities/media.js.map +1 -0
- package/resources/x/communities/media.mjs +25 -0
- package/resources/x/communities/media.mjs.map +1 -0
- package/resources/x/communities/tweets.d.mts +350 -20
- package/resources/x/communities/tweets.d.mts.map +1 -1
- package/resources/x/communities/tweets.d.ts +350 -20
- package/resources/x/communities/tweets.d.ts.map +1 -1
- package/resources/x/communities/tweets.js +8 -7
- package/resources/x/communities/tweets.js.map +1 -1
- package/resources/x/communities/tweets.mjs +8 -7
- package/resources/x/communities/tweets.mjs.map +1 -1
- package/resources/x/dm.d.mts +245 -13
- package/resources/x/dm.d.mts.map +1 -1
- package/resources/x/dm.d.ts +245 -13
- package/resources/x/dm.d.ts.map +1 -1
- package/resources/x/dm.js +29 -2
- package/resources/x/dm.js.map +1 -1
- package/resources/x/dm.mjs +29 -2
- package/resources/x/dm.mjs.map +1 -1
- package/resources/x/followers.d.mts +31 -3
- package/resources/x/followers.d.mts.map +1 -1
- package/resources/x/followers.d.ts +31 -3
- package/resources/x/followers.d.ts.map +1 -1
- package/resources/x/followers.js +2 -1
- package/resources/x/followers.js.map +1 -1
- package/resources/x/followers.mjs +2 -1
- package/resources/x/followers.mjs.map +1 -1
- package/resources/x/index.d.mts +12 -8
- package/resources/x/index.d.mts.map +1 -1
- package/resources/x/index.d.ts +12 -8
- package/resources/x/index.d.ts.map +1 -1
- package/resources/x/index.js +9 -1
- package/resources/x/index.js.map +1 -1
- package/resources/x/index.mjs +5 -1
- package/resources/x/index.mjs.map +1 -1
- package/resources/x/jobs.d.mts +506 -0
- package/resources/x/jobs.d.mts.map +1 -0
- package/resources/x/jobs.d.ts +506 -0
- package/resources/x/jobs.d.ts.map +1 -0
- package/resources/x/jobs.js +60 -0
- package/resources/x/jobs.js.map +1 -0
- package/resources/x/jobs.mjs +56 -0
- package/resources/x/jobs.mjs.map +1 -0
- package/resources/x/lists.d.mts +1058 -27
- package/resources/x/lists.d.mts.map +1 -1
- package/resources/x/lists.d.ts +1058 -27
- package/resources/x/lists.d.ts.map +1 -1
- package/resources/x/lists.js +39 -9
- package/resources/x/lists.js.map +1 -1
- package/resources/x/lists.mjs +39 -9
- package/resources/x/lists.mjs.map +1 -1
- package/resources/x/media.d.mts +24 -13
- package/resources/x/media.d.mts.map +1 -1
- package/resources/x/media.d.ts +24 -13
- package/resources/x/media.d.ts.map +1 -1
- package/resources/x/media.js +2 -2
- package/resources/x/media.mjs +2 -2
- package/resources/x/profile.d.mts +60 -33
- package/resources/x/profile.d.mts.map +1 -1
- package/resources/x/profile.d.ts +60 -33
- package/resources/x/profile.d.ts.map +1 -1
- package/resources/x/profile.js +3 -3
- package/resources/x/profile.mjs +3 -3
- package/resources/x/spaces.d.mts +857 -0
- package/resources/x/spaces.d.mts.map +1 -0
- package/resources/x/spaces.d.ts +857 -0
- package/resources/x/spaces.d.ts.map +1 -0
- package/resources/x/spaces.js +58 -0
- package/resources/x/spaces.js.map +1 -0
- package/resources/x/spaces.mjs +54 -0
- package/resources/x/spaces.mjs.map +1 -0
- package/resources/x/tweets/index.d.mts +1 -1
- package/resources/x/tweets/index.d.mts.map +1 -1
- package/resources/x/tweets/index.d.ts +1 -1
- package/resources/x/tweets/index.d.ts.map +1 -1
- package/resources/x/tweets/index.js.map +1 -1
- package/resources/x/tweets/index.mjs.map +1 -1
- package/resources/x/tweets/like.d.mts +38 -20
- package/resources/x/tweets/like.d.mts.map +1 -1
- package/resources/x/tweets/like.d.ts +38 -20
- package/resources/x/tweets/like.d.ts.map +1 -1
- package/resources/x/tweets/like.js +2 -2
- package/resources/x/tweets/like.mjs +2 -2
- package/resources/x/tweets/retweet.d.mts +38 -20
- package/resources/x/tweets/retweet.d.mts.map +1 -1
- package/resources/x/tweets/retweet.d.ts +38 -20
- package/resources/x/tweets/retweet.d.ts.map +1 -1
- package/resources/x/tweets/retweet.js +2 -2
- package/resources/x/tweets/retweet.mjs +2 -2
- package/resources/x/tweets/tweets.d.mts +2639 -326
- package/resources/x/tweets/tweets.d.mts.map +1 -1
- package/resources/x/tweets/tweets.d.ts +2639 -326
- package/resources/x/tweets/tweets.d.ts.map +1 -1
- package/resources/x/tweets/tweets.js +147 -21
- package/resources/x/tweets/tweets.js.map +1 -1
- package/resources/x/tweets/tweets.mjs +147 -21
- package/resources/x/tweets/tweets.mjs.map +1 -1
- package/resources/x/users/follow.d.mts +38 -20
- package/resources/x/users/follow.d.mts.map +1 -1
- package/resources/x/users/follow.d.ts +38 -20
- package/resources/x/users/follow.d.ts.map +1 -1
- package/resources/x/users/follow.js +2 -2
- package/resources/x/users/follow.mjs +2 -2
- package/resources/x/users/index.d.mts +1 -1
- package/resources/x/users/index.d.mts.map +1 -1
- package/resources/x/users/index.d.ts +1 -1
- package/resources/x/users/index.d.ts.map +1 -1
- package/resources/x/users/index.js.map +1 -1
- package/resources/x/users/index.mjs.map +1 -1
- package/resources/x/users/users.d.mts +3068 -457
- package/resources/x/users/users.d.mts.map +1 -1
- package/resources/x/users/users.d.ts +3068 -457
- package/resources/x/users/users.d.ts.map +1 -1
- package/resources/x/users/users.js +205 -22
- package/resources/x/users/users.js.map +1 -1
- package/resources/x/users/users.mjs +205 -22
- package/resources/x/users/users.mjs.map +1 -1
- package/resources/x/write-actions.d.mts +13 -6
- package/resources/x/write-actions.d.mts.map +1 -1
- package/resources/x/write-actions.d.ts +13 -6
- package/resources/x/write-actions.d.ts.map +1 -1
- package/resources/x/write-actions.js +1 -1
- package/resources/x/write-actions.mjs +1 -1
- package/resources/x/x.d.mts +864 -27
- package/resources/x/x.d.mts.map +1 -1
- package/resources/x/x.d.ts +864 -27
- package/resources/x/x.d.ts.map +1 -1
- package/resources/x/x.js +78 -5
- package/resources/x/x.js.map +1 -1
- package/resources/x/x.mjs +80 -7
- package/resources/x/x.mjs.map +1 -1
- package/skills/x-twitter-scraper/SKILL.md +99 -344
- package/skills/x-twitter-scraper/metadata.json +2 -2
- package/skills/x-twitter-scraper/references/mcp-setup.md +12 -15
- package/skills/x-twitter-scraper/references/mcp-tools.md +105 -166
- package/skills/x-twitter-scraper/references/types-mcp-output-schemas.md +4 -4
- package/skills/x-twitter-scraper/references/types.md +0 -1
- package/skills/x-twitter-scraper/skill-card.md +5 -6
- package/skills/x-twitter-scraper/skillspector-report.md +6 -3
- package/skills/xquik-account-automation/LICENSE +21 -0
- package/skills/xquik-account-automation/SKILL.md +91 -0
- package/skills/xquik-social-research/SKILL.md +48 -55
- package/src/client.ts +47 -4
- package/src/core/streaming.ts +328 -0
- package/src/internal/decoders/line.ts +140 -0
- package/src/internal/parse.ts +9 -0
- package/src/resources/account.ts +41 -12
- package/src/resources/compose.ts +77 -21
- package/src/resources/credits.ts +19 -10
- package/src/resources/drafts.ts +13 -22
- package/src/resources/draws.ts +94 -36
- package/src/resources/events.ts +3225 -68
- package/src/resources/extractions.ts +512 -125
- package/src/resources/guest-wallets.ts +6 -5
- package/src/resources/index.ts +24 -1
- package/src/resources/monitors/index.ts +2 -0
- package/src/resources/monitors/keywords.ts +82 -14
- package/src/resources/monitors/monitors.ts +66 -14
- package/src/resources/radar.ts +32 -36
- package/src/resources/shared.ts +2227 -351
- package/src/resources/styles.ts +43 -27
- package/src/resources/subscribe.ts +1 -1
- package/src/resources/support/index.ts +1 -0
- package/src/resources/support/support.ts +2 -0
- package/src/resources/support/tickets.ts +38 -10
- package/src/resources/trends.ts +23 -5
- package/src/resources/webhooks.ts +109 -15
- package/src/resources/x/account-connection-attempts.ts +1 -1
- package/src/resources/x/account-connection-challenges.ts +39 -11
- package/src/resources/x/accounts.ts +46 -10
- package/src/resources/x/analysis.ts +3947 -0
- package/src/resources/x/bookmarks.ts +103 -9
- package/src/resources/x/broadcasts.ts +225 -0
- package/src/resources/x/communities/communities.ts +743 -141
- package/src/resources/x/communities/index.ts +9 -0
- package/src/resources/x/communities/join.ts +46 -23
- package/src/resources/x/communities/media.ts +251 -0
- package/src/resources/x/communities/tweets.ts +427 -20
- package/src/resources/x/dm.ts +334 -11
- package/src/resources/x/followers.ts +35 -3
- package/src/resources/x/index.ts +106 -1
- package/src/resources/x/jobs.ts +627 -0
- package/src/resources/x/lists.ts +1307 -28
- package/src/resources/x/media.ts +24 -12
- package/src/resources/x/profile.ts +60 -30
- package/src/resources/x/spaces.ts +1076 -0
- package/src/resources/x/tweets/index.ts +18 -0
- package/src/resources/x/tweets/like.ts +38 -18
- package/src/resources/x/tweets/retweet.ts +38 -18
- package/src/resources/x/tweets/tweets.ts +3695 -843
- package/src/resources/x/users/follow.ts +38 -18
- package/src/resources/x/users/index.ts +22 -0
- package/src/resources/x/users/users.ts +3687 -465
- package/src/resources/x/write-actions.ts +13 -5
- package/src/resources/x/x.ts +1227 -15
- package/src/streaming.ts +6 -0
- package/src/version.ts +1 -1
- package/streaming.d.mts +3 -0
- package/streaming.d.mts.map +1 -0
- package/streaming.d.ts +3 -0
- package/streaming.d.ts.map +1 -0
- package/streaming.js +9 -0
- package/streaming.js.map +1 -0
- package/streaming.mjs +6 -0
- package/streaming.mjs.map +1 -0
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
- package/skills/x-twitter-scraper/references/types-rest-api-vs-mcp-field-naming.md +0 -15
package/src/resources/shared.ts
CHANGED
|
@@ -4,294 +4,387 @@
|
|
|
4
4
|
|
|
5
5
|
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
* Content disclosure metadata shown by X when a tweet is labeled as paid
|
|
9
|
-
* partnership content or AI-generated media.
|
|
10
|
-
*/
|
|
11
|
-
export interface ContentDisclosure {
|
|
12
|
-
advertising?: ContentDisclosure.Advertising;
|
|
13
|
-
|
|
14
|
-
aiGenerated?: ContentDisclosure.AIGenerated;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export namespace ContentDisclosure {
|
|
18
|
-
export interface Advertising {
|
|
19
|
-
/**
|
|
20
|
-
* True when X labels the tweet as paid promotion content.
|
|
21
|
-
*/
|
|
22
|
-
isPaidPromotion?: boolean;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export interface AIGenerated {
|
|
26
|
-
/**
|
|
27
|
-
* Source of the AI-generated media disclosure.
|
|
28
|
-
*/
|
|
29
|
-
detectionSource?: string;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* True when X labels the tweet as containing AI-generated media.
|
|
33
|
-
*/
|
|
34
|
-
hasAiGeneratedMedia?: boolean;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
7
|
+
import * as Shared from './shared';
|
|
37
8
|
|
|
38
9
|
/**
|
|
39
|
-
*
|
|
40
|
-
* engagement metrics. A zero metric can mean X did not report the count. Author,
|
|
41
|
-
* media, and conversation fields appear when available.
|
|
10
|
+
* Public X Community, as every Community read returns it.
|
|
42
11
|
*/
|
|
43
|
-
export interface
|
|
12
|
+
export interface Community {
|
|
13
|
+
/**
|
|
14
|
+
* Unique community identifier
|
|
15
|
+
*/
|
|
44
16
|
id: string;
|
|
45
17
|
|
|
46
|
-
bookmarkCount: number;
|
|
47
|
-
|
|
48
|
-
likeCount: number;
|
|
49
|
-
|
|
50
|
-
quoteCount: number;
|
|
51
|
-
|
|
52
|
-
replyCount: number;
|
|
53
|
-
|
|
54
|
-
retweetCount: number;
|
|
55
|
-
|
|
56
|
-
text: string;
|
|
57
|
-
|
|
58
|
-
viewCount: number;
|
|
59
|
-
|
|
60
18
|
/**
|
|
61
|
-
*
|
|
19
|
+
* Whether the community is marked sensitive
|
|
62
20
|
*/
|
|
63
|
-
|
|
21
|
+
is_nsfw: boolean;
|
|
64
22
|
|
|
65
23
|
/**
|
|
66
|
-
*
|
|
24
|
+
* Total member count
|
|
67
25
|
*/
|
|
68
|
-
|
|
26
|
+
member_count: number;
|
|
69
27
|
|
|
70
28
|
/**
|
|
71
|
-
*
|
|
29
|
+
* Display name of the community
|
|
72
30
|
*/
|
|
73
|
-
|
|
31
|
+
name: string;
|
|
74
32
|
|
|
75
33
|
/**
|
|
76
|
-
*
|
|
34
|
+
* Public X profile.
|
|
77
35
|
*/
|
|
78
|
-
|
|
36
|
+
admin?: UserProfile;
|
|
79
37
|
|
|
80
38
|
/**
|
|
81
|
-
*
|
|
82
|
-
* partnership content or AI-generated media.
|
|
39
|
+
* The banner X shows for a community, with its size & colors.
|
|
83
40
|
*/
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
conversationId?: string;
|
|
87
|
-
|
|
88
|
-
createdAt?: string;
|
|
89
|
-
|
|
90
|
-
displayTextRange?: Array<number>;
|
|
41
|
+
banner?: Community.Banner;
|
|
91
42
|
|
|
92
43
|
/**
|
|
93
|
-
*
|
|
44
|
+
* Community banner image URL
|
|
94
45
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
entities?: { [key: string]: unknown };
|
|
98
|
-
|
|
99
|
-
inReplyToId?: string;
|
|
100
|
-
|
|
101
|
-
inReplyToUserId?: string;
|
|
102
|
-
|
|
103
|
-
inReplyToUsername?: string;
|
|
104
|
-
|
|
105
|
-
isLimitedReply?: boolean;
|
|
106
|
-
|
|
107
|
-
isNoteTweet?: boolean;
|
|
108
|
-
|
|
109
|
-
isQuoteStatus?: boolean;
|
|
110
|
-
|
|
111
|
-
isReply?: boolean;
|
|
112
|
-
|
|
113
|
-
isTranslatable?: boolean;
|
|
114
|
-
|
|
115
|
-
lang?: string;
|
|
116
|
-
|
|
117
|
-
media?: Array<TweetMedia>;
|
|
46
|
+
banner_url?: string;
|
|
118
47
|
|
|
119
48
|
/**
|
|
120
|
-
*
|
|
49
|
+
* Community creation timestamp
|
|
121
50
|
*/
|
|
122
|
-
|
|
51
|
+
created_at?: string;
|
|
123
52
|
|
|
124
53
|
/**
|
|
125
|
-
*
|
|
54
|
+
* The creator's public profile, or the ID, username and badge alone when X sends
|
|
55
|
+
* no profile
|
|
126
56
|
*/
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
possiblySensitive?: boolean;
|
|
57
|
+
creator?: UserProfile | Community.UnionMember1;
|
|
130
58
|
|
|
131
59
|
/**
|
|
132
|
-
*
|
|
60
|
+
* About text for the community
|
|
133
61
|
*/
|
|
134
|
-
|
|
62
|
+
description?: string;
|
|
135
63
|
|
|
136
64
|
/**
|
|
137
|
-
*
|
|
138
|
-
* engagement metrics. A zero metric can mean X did not report the count. Author,
|
|
139
|
-
* media, and conversation fields appear when available.
|
|
65
|
+
* Invitation policy
|
|
140
66
|
*/
|
|
141
|
-
|
|
67
|
+
invites_policy?: string;
|
|
142
68
|
|
|
143
69
|
/**
|
|
144
|
-
*
|
|
145
|
-
* engagement metrics. A zero metric can mean X did not report the count. Author,
|
|
146
|
-
* media, and conversation fields appear when available.
|
|
70
|
+
* Join policy (open or restricted)
|
|
147
71
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
source?: string;
|
|
72
|
+
join_policy?: string;
|
|
151
73
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
}
|
|
74
|
+
/**
|
|
75
|
+
* The members X previews beside the member count. A keyword or topic result gives
|
|
76
|
+
* each member's ID & picture only.
|
|
77
|
+
*/
|
|
78
|
+
membersFacepile?: Array<UserProfile | Community.CommunityMemberPreview>;
|
|
158
79
|
|
|
159
|
-
export namespace EmbeddedTweet {
|
|
160
80
|
/**
|
|
161
|
-
*
|
|
81
|
+
* Total moderator count
|
|
162
82
|
*/
|
|
163
|
-
|
|
164
|
-
id?: string;
|
|
83
|
+
moderator_count?: number;
|
|
165
84
|
|
|
166
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Primary topic. Its id is absent when X lists the community in a keyword or topic
|
|
87
|
+
* result.
|
|
88
|
+
*/
|
|
89
|
+
primary_topic?: Community.PrimaryTopic;
|
|
167
90
|
|
|
168
|
-
|
|
91
|
+
/**
|
|
92
|
+
* What the community asks a user who joins
|
|
93
|
+
*/
|
|
94
|
+
question?: string;
|
|
169
95
|
|
|
170
|
-
|
|
171
|
-
|
|
96
|
+
/**
|
|
97
|
+
* Community rules
|
|
98
|
+
*/
|
|
99
|
+
rules?: Array<Community.Rule>;
|
|
172
100
|
|
|
173
101
|
/**
|
|
174
|
-
*
|
|
102
|
+
* Tags X finds the community by
|
|
175
103
|
*/
|
|
176
|
-
|
|
177
|
-
|
|
104
|
+
searchTags?: Array<string>;
|
|
105
|
+
}
|
|
178
106
|
|
|
179
|
-
|
|
107
|
+
export namespace Community {
|
|
108
|
+
/**
|
|
109
|
+
* The banner X shows for a community, with its size & colors.
|
|
110
|
+
*/
|
|
111
|
+
export interface Banner {
|
|
112
|
+
/**
|
|
113
|
+
* Banner image URL at its original size
|
|
114
|
+
*/
|
|
115
|
+
url: string;
|
|
180
116
|
|
|
181
|
-
|
|
117
|
+
/**
|
|
118
|
+
* Main colors of the banner, largest share first
|
|
119
|
+
*/
|
|
120
|
+
colors?: Array<Banner.Color>;
|
|
182
121
|
|
|
183
|
-
|
|
184
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Area X keeps in view when it crops the banner, in pixels from the top left
|
|
124
|
+
*/
|
|
125
|
+
focus?: Banner.Focus;
|
|
185
126
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
id?: string;
|
|
127
|
+
/**
|
|
128
|
+
* Banner height in pixels
|
|
129
|
+
*/
|
|
130
|
+
height?: number;
|
|
191
131
|
|
|
192
|
-
|
|
132
|
+
/**
|
|
133
|
+
* Banner width in pixels
|
|
134
|
+
*/
|
|
135
|
+
width?: number;
|
|
136
|
+
}
|
|
193
137
|
|
|
194
|
-
|
|
138
|
+
export namespace Banner {
|
|
139
|
+
export interface Color {
|
|
140
|
+
/**
|
|
141
|
+
* Blue value of the color
|
|
142
|
+
*/
|
|
143
|
+
blue: number;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Green value of the color
|
|
147
|
+
*/
|
|
148
|
+
green: number;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Share of the banner in this color
|
|
152
|
+
*/
|
|
153
|
+
percentage: number;
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Red value of the color
|
|
157
|
+
*/
|
|
158
|
+
red: number;
|
|
159
|
+
}
|
|
195
160
|
|
|
196
|
-
|
|
161
|
+
/**
|
|
162
|
+
* Area X keeps in view when it crops the banner, in pixels from the top left
|
|
163
|
+
*/
|
|
164
|
+
export interface Focus {
|
|
165
|
+
/**
|
|
166
|
+
* Height of the area
|
|
167
|
+
*/
|
|
168
|
+
height?: number;
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Distance from the left edge
|
|
172
|
+
*/
|
|
173
|
+
left?: number;
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Distance from the top edge
|
|
177
|
+
*/
|
|
178
|
+
top?: number;
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* Width of the area
|
|
182
|
+
*/
|
|
183
|
+
width?: number;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
197
186
|
|
|
198
|
-
|
|
187
|
+
export interface UnionMember1 {
|
|
188
|
+
/**
|
|
189
|
+
* Numeric X user ID of the creator
|
|
190
|
+
*/
|
|
191
|
+
id: string;
|
|
199
192
|
|
|
200
|
-
|
|
193
|
+
/**
|
|
194
|
+
* X username of the creator
|
|
195
|
+
*/
|
|
196
|
+
username: string;
|
|
201
197
|
|
|
202
|
-
|
|
198
|
+
/**
|
|
199
|
+
* Whether X shows the creator a badge
|
|
200
|
+
*/
|
|
201
|
+
verified: boolean;
|
|
203
202
|
}
|
|
204
203
|
|
|
205
204
|
/**
|
|
206
|
-
*
|
|
205
|
+
* A member X previews by ID & profile picture only.
|
|
207
206
|
*/
|
|
208
|
-
export interface
|
|
209
|
-
|
|
207
|
+
export interface CommunityMemberPreview {
|
|
208
|
+
/**
|
|
209
|
+
* Numeric X user ID of the member
|
|
210
|
+
*/
|
|
211
|
+
id: string;
|
|
210
212
|
|
|
211
|
-
|
|
213
|
+
/**
|
|
214
|
+
* Profile picture URL of the member
|
|
215
|
+
*/
|
|
216
|
+
profilePicture?: string;
|
|
212
217
|
}
|
|
213
218
|
|
|
214
219
|
/**
|
|
215
|
-
*
|
|
220
|
+
* Primary topic. Its id is absent when X lists the community in a keyword or topic
|
|
221
|
+
* result.
|
|
216
222
|
*/
|
|
217
|
-
export interface
|
|
218
|
-
|
|
223
|
+
export interface PrimaryTopic {
|
|
224
|
+
/**
|
|
225
|
+
* Topic name X shows on the community
|
|
226
|
+
*/
|
|
227
|
+
name: string;
|
|
219
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Topic ID that /x/communities/popular takes
|
|
231
|
+
*/
|
|
220
232
|
id?: string;
|
|
221
|
-
|
|
222
|
-
entities?: { [key: string]: unknown };
|
|
223
|
-
|
|
224
|
-
isExpandable?: boolean;
|
|
225
|
-
|
|
226
|
-
richtextTags?: Array<NoteTweet.RichtextTag>;
|
|
227
233
|
}
|
|
228
234
|
|
|
229
|
-
export
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
export interface Rule {
|
|
236
|
+
/**
|
|
237
|
+
* Rule ID
|
|
238
|
+
*/
|
|
239
|
+
id?: string;
|
|
232
240
|
|
|
233
|
-
|
|
241
|
+
/**
|
|
242
|
+
* What the rule asks of members
|
|
243
|
+
*/
|
|
244
|
+
description?: string;
|
|
234
245
|
|
|
235
|
-
|
|
236
|
-
|
|
246
|
+
/**
|
|
247
|
+
* Rule title
|
|
248
|
+
*/
|
|
249
|
+
name?: string;
|
|
237
250
|
}
|
|
251
|
+
}
|
|
238
252
|
|
|
253
|
+
/**
|
|
254
|
+
* 1 page of X Communities, in X's order.
|
|
255
|
+
*/
|
|
256
|
+
export interface CommunityPage {
|
|
239
257
|
/**
|
|
240
|
-
*
|
|
258
|
+
* Communities in X's order
|
|
241
259
|
*/
|
|
242
|
-
|
|
243
|
-
id?: string;
|
|
260
|
+
communities: Array<Community>;
|
|
244
261
|
|
|
245
|
-
|
|
262
|
+
/**
|
|
263
|
+
* Whether another page of communities follows
|
|
264
|
+
*/
|
|
265
|
+
has_next_page: boolean;
|
|
246
266
|
|
|
247
|
-
|
|
267
|
+
/**
|
|
268
|
+
* Cursor for the next page of communities. Empty at the end.
|
|
269
|
+
*/
|
|
270
|
+
next_cursor: string;
|
|
271
|
+
}
|
|
248
272
|
|
|
249
|
-
|
|
273
|
+
/**
|
|
274
|
+
* A topic X groups communities under, with its subtopics.
|
|
275
|
+
*/
|
|
276
|
+
export interface CommunityTopic {
|
|
277
|
+
/**
|
|
278
|
+
* Topic ID. Pass it as topicId to /x/communities/popular.
|
|
279
|
+
*/
|
|
280
|
+
id: string;
|
|
250
281
|
|
|
251
|
-
|
|
282
|
+
/**
|
|
283
|
+
* Topic name, which topic on /x/communities/popular takes
|
|
284
|
+
*/
|
|
285
|
+
name: string;
|
|
252
286
|
|
|
253
|
-
|
|
287
|
+
/**
|
|
288
|
+
* Narrower topics inside this topic
|
|
289
|
+
*/
|
|
290
|
+
subtopics: Array<CommunityTopic.Subtopic>;
|
|
291
|
+
}
|
|
254
292
|
|
|
255
|
-
|
|
293
|
+
export namespace CommunityTopic {
|
|
294
|
+
export interface Subtopic {
|
|
295
|
+
/**
|
|
296
|
+
* Subtopic ID, which topicId also takes
|
|
297
|
+
*/
|
|
298
|
+
id: string;
|
|
256
299
|
|
|
257
|
-
|
|
300
|
+
/**
|
|
301
|
+
* Subtopic name, which topic also takes
|
|
302
|
+
*/
|
|
303
|
+
name: string;
|
|
258
304
|
}
|
|
305
|
+
}
|
|
259
306
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
307
|
+
/**
|
|
308
|
+
* Content disclosure metadata shown by X when a tweet is labeled as paid
|
|
309
|
+
* partnership content or AI-generated media.
|
|
310
|
+
*/
|
|
311
|
+
export interface ContentDisclosure {
|
|
312
|
+
advertising?: ContentDisclosure.Advertising;
|
|
265
313
|
|
|
266
|
-
|
|
314
|
+
aiGenerated?: ContentDisclosure.AIGenerated;
|
|
315
|
+
}
|
|
267
316
|
|
|
268
|
-
|
|
317
|
+
export namespace ContentDisclosure {
|
|
318
|
+
export interface Advertising {
|
|
319
|
+
/**
|
|
320
|
+
* True when X labels the tweet as paid promotion content.
|
|
321
|
+
*/
|
|
322
|
+
isPaidPromotion?: boolean;
|
|
323
|
+
}
|
|
269
324
|
|
|
270
|
-
|
|
325
|
+
export interface AIGenerated {
|
|
326
|
+
/**
|
|
327
|
+
* How X detected AI media. X omits it for self-declared posts.
|
|
328
|
+
*/
|
|
329
|
+
detectionSource?: string;
|
|
271
330
|
|
|
272
|
-
|
|
331
|
+
/**
|
|
332
|
+
* True when X labels the tweet as containing AI-generated media.
|
|
333
|
+
*/
|
|
334
|
+
hasAiGeneratedMedia?: boolean;
|
|
273
335
|
}
|
|
274
336
|
}
|
|
275
337
|
|
|
276
338
|
/**
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
* object.
|
|
339
|
+
* A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
|
|
340
|
+
* author. Nesting stops after 4 levels.
|
|
280
341
|
*/
|
|
281
|
-
export interface
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
342
|
+
export interface EmbeddedTweet {
|
|
343
|
+
id: string;
|
|
344
|
+
|
|
345
|
+
bookmarkCount: number;
|
|
346
|
+
|
|
347
|
+
likeCount: number;
|
|
348
|
+
|
|
349
|
+
quoteCount: number;
|
|
350
|
+
|
|
351
|
+
replyCount: number;
|
|
352
|
+
|
|
353
|
+
retweetCount: number;
|
|
354
|
+
|
|
355
|
+
text: string;
|
|
356
|
+
|
|
357
|
+
viewCount: number;
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Public X profile.
|
|
361
|
+
*/
|
|
362
|
+
author?: UserProfile;
|
|
363
|
+
|
|
364
|
+
[k: string]: unknown;
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Error response. Default v1 returns a legacy string code. Send
|
|
369
|
+
* `xquik-api-contract: 2026-04-29` for the structured best-practice error object.
|
|
370
|
+
*/
|
|
371
|
+
export interface Error {
|
|
372
|
+
error:
|
|
373
|
+
| 'internal_error'
|
|
374
|
+
| 'account_already_connected'
|
|
285
375
|
| 'account_needs_reauth'
|
|
286
376
|
| 'account_not_found'
|
|
287
377
|
| 'account_required'
|
|
288
378
|
| 'account_restricted'
|
|
289
379
|
| 'api_key_limit_reached'
|
|
290
380
|
| 'article_not_found'
|
|
381
|
+
| 'closed'
|
|
291
382
|
| 'dm_not_permitted'
|
|
292
383
|
| 'invalid_format'
|
|
293
384
|
| 'invalid_id'
|
|
294
385
|
| 'invalid_input'
|
|
386
|
+
| 'invalid_media_url'
|
|
387
|
+
| 'invalid_message_id'
|
|
295
388
|
| 'invalid_params'
|
|
296
389
|
| 'invalid_tool_type'
|
|
297
390
|
| 'invalid_tweet_id'
|
|
@@ -301,9 +394,11 @@ export interface Error {
|
|
|
301
394
|
| 'invalid_username'
|
|
302
395
|
| 'invalid_json'
|
|
303
396
|
| 'insufficient_credits'
|
|
397
|
+
| 'job_not_found'
|
|
304
398
|
| 'login_cooldown'
|
|
305
399
|
| 'login_failed'
|
|
306
400
|
| 'media_download_failed'
|
|
401
|
+
| 'media_too_large'
|
|
307
402
|
| 'missing_params'
|
|
308
403
|
| 'missing_query'
|
|
309
404
|
| 'monitor_already_exists'
|
|
@@ -322,43 +417,67 @@ export interface Error {
|
|
|
322
417
|
| 'unsupported_field'
|
|
323
418
|
| 'user_not_found'
|
|
324
419
|
| 'body_too_large'
|
|
420
|
+
| 'bookmark_folders_unavailable'
|
|
421
|
+
| 'broadcast_not_found'
|
|
325
422
|
| 'checkout_unavailable'
|
|
326
423
|
| 'connection_challenge_expired'
|
|
327
424
|
| 'connection_challenge_inactive'
|
|
328
425
|
| 'coverage_cursor_gone'
|
|
329
426
|
| 'coverage_cursor_unavailable'
|
|
427
|
+
| 'cursor_account_unavailable'
|
|
330
428
|
| 'draft_not_found'
|
|
429
|
+
| 'draw_too_large'
|
|
430
|
+
| 'expired'
|
|
331
431
|
| 'favoriters_unavailable'
|
|
332
432
|
| 'forbidden'
|
|
333
433
|
| 'guest_wallet_unavailable'
|
|
334
434
|
| 'guest_wallets_disabled'
|
|
335
435
|
| 'guest_wallets_unavailable'
|
|
336
436
|
| 'idempotency_conflict'
|
|
437
|
+
| 'idempotency_in_progress'
|
|
337
438
|
| 'idempotency_key_conflict'
|
|
439
|
+
| 'invalid_broadcast_id'
|
|
338
440
|
| 'invalid_community_id'
|
|
441
|
+
| 'invalid_community_topic'
|
|
339
442
|
| 'invalid_complete_replies_request'
|
|
340
443
|
| 'invalid_coverage_cursor'
|
|
341
444
|
| 'invalid_coverage_request'
|
|
445
|
+
| 'invalid_cursor'
|
|
342
446
|
| 'invalid_idempotency_key'
|
|
447
|
+
| 'invalid_job_filter'
|
|
448
|
+
| 'invalid_job_id'
|
|
343
449
|
| 'invalid_list_id'
|
|
344
450
|
| 'invalid_output_options'
|
|
345
451
|
| 'invalid_payment_amount'
|
|
346
452
|
| 'invalid_range'
|
|
347
453
|
| 'invalid_reply_options'
|
|
454
|
+
| 'invalid_space_id'
|
|
455
|
+
| 'likes_unavailable'
|
|
456
|
+
| 'list_not_found'
|
|
348
457
|
| 'login_rate_limited'
|
|
349
458
|
| 'login_service_unavailable'
|
|
350
459
|
| 'missing_idempotency_key'
|
|
351
460
|
| 'missing_ids'
|
|
461
|
+
| 'missing_url'
|
|
352
462
|
| 'no_cached_style'
|
|
463
|
+
| 'pagination_stalled'
|
|
353
464
|
| 'passkey_required'
|
|
354
465
|
| 'rate_limited'
|
|
355
466
|
| 'read_request_timeout'
|
|
467
|
+
| 'replay_unavailable'
|
|
356
468
|
| 'replies_incomplete'
|
|
469
|
+
| 'retweeters_incomplete'
|
|
470
|
+
| 'search_unavailable'
|
|
471
|
+
| 'space_canceled'
|
|
472
|
+
| 'space_not_ended'
|
|
357
473
|
| 'support_media_rate_limit'
|
|
358
474
|
| 'support_request_rate_limit'
|
|
475
|
+
| 'telegram_unavailable'
|
|
359
476
|
| 'too_many_ids'
|
|
477
|
+
| 'too_many_streams'
|
|
360
478
|
| 'too_many_tweets'
|
|
361
479
|
| 'unknown_field'
|
|
480
|
+
| 'unsupported_media_combination'
|
|
362
481
|
| 'unsupported_media_type'
|
|
363
482
|
| 'webhook_inactive'
|
|
364
483
|
| 'write_tracking_unavailable'
|
|
@@ -370,20 +489,31 @@ export interface Error {
|
|
|
370
489
|
| 'x_api_unavailable'
|
|
371
490
|
| 'x_api_unauthorized'
|
|
372
491
|
| 'x_auth_failure'
|
|
492
|
+
| 'x_automation_refused'
|
|
493
|
+
| 'x_community_not_joined'
|
|
494
|
+
| 'x_community_not_selectable'
|
|
495
|
+
| 'x_community_post_public'
|
|
496
|
+
| 'x_community_post_removed'
|
|
373
497
|
| 'x_content_too_long'
|
|
374
498
|
| 'x_daily_limit'
|
|
375
499
|
| 'x_dm_not_allowed'
|
|
500
|
+
| 'x_dm_not_deleted'
|
|
501
|
+
| 'x_dm_not_sent'
|
|
376
502
|
| 'x_duplicate_action'
|
|
377
503
|
| 'x_login_auth_failed'
|
|
378
504
|
| 'x_login_challenge'
|
|
379
505
|
| 'x_login_denied'
|
|
380
506
|
| 'x_login_failed'
|
|
381
|
-
| 'x_login_proxy_error'
|
|
382
507
|
| 'x_login_rate_limited'
|
|
383
508
|
| 'x_login_service_unavailable'
|
|
384
509
|
| 'x_login_suspended'
|
|
510
|
+
| 'x_image_invalid'
|
|
511
|
+
| 'x_media_rejected'
|
|
512
|
+
| 'x_post_not_sent'
|
|
385
513
|
| 'x_rate_limited'
|
|
386
514
|
| 'x_rejected'
|
|
515
|
+
| 'x_reply_not_allowed'
|
|
516
|
+
| 'x_reply_target_unavailable'
|
|
387
517
|
| 'x_target_not_found'
|
|
388
518
|
| 'x_transient_error'
|
|
389
519
|
| 'x_user_lookup_failed'
|
|
@@ -391,13 +521,28 @@ export interface Error {
|
|
|
391
521
|
| 'x_write_failed'
|
|
392
522
|
| Error.StructuredError;
|
|
393
523
|
|
|
524
|
+
/**
|
|
525
|
+
* With unknown_field: the valid names where the first unknown name in fields or
|
|
526
|
+
* omit stopped.
|
|
527
|
+
*/
|
|
528
|
+
allowedFields?: Array<string>;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* With unknown_field: each unknown name in fields or omit, with the name it most
|
|
532
|
+
* likely meant.
|
|
533
|
+
*/
|
|
534
|
+
fieldErrors?: Array<Error.FieldError>;
|
|
535
|
+
|
|
394
536
|
/**
|
|
395
537
|
* Human-readable error guidance.
|
|
396
538
|
*/
|
|
397
539
|
message?: string;
|
|
398
540
|
|
|
399
541
|
/**
|
|
400
|
-
* Machine-readable reason
|
|
542
|
+
* Machine-readable reason. A login failure names its cause, such as
|
|
543
|
+
* temporary_issue. A user_not_found answer names why X shows no profile: not_found
|
|
544
|
+
* or suspended. A tweet_not_found answer names why X shows no post, when X said:
|
|
545
|
+
* deleted, author_suspended or protected.
|
|
401
546
|
*/
|
|
402
547
|
reason?: string;
|
|
403
548
|
|
|
@@ -423,10 +568,13 @@ export namespace Error {
|
|
|
423
568
|
| 'account_restricted'
|
|
424
569
|
| 'api_key_limit_reached'
|
|
425
570
|
| 'article_not_found'
|
|
571
|
+
| 'closed'
|
|
426
572
|
| 'dm_not_permitted'
|
|
427
573
|
| 'invalid_format'
|
|
428
574
|
| 'invalid_id'
|
|
429
575
|
| 'invalid_input'
|
|
576
|
+
| 'invalid_media_url'
|
|
577
|
+
| 'invalid_message_id'
|
|
430
578
|
| 'invalid_params'
|
|
431
579
|
| 'invalid_tool_type'
|
|
432
580
|
| 'invalid_tweet_id'
|
|
@@ -436,9 +584,11 @@ export namespace Error {
|
|
|
436
584
|
| 'invalid_username'
|
|
437
585
|
| 'invalid_json'
|
|
438
586
|
| 'insufficient_credits'
|
|
587
|
+
| 'job_not_found'
|
|
439
588
|
| 'login_cooldown'
|
|
440
589
|
| 'login_failed'
|
|
441
590
|
| 'media_download_failed'
|
|
591
|
+
| 'media_too_large'
|
|
442
592
|
| 'missing_params'
|
|
443
593
|
| 'missing_query'
|
|
444
594
|
| 'monitor_already_exists'
|
|
@@ -457,43 +607,67 @@ export namespace Error {
|
|
|
457
607
|
| 'unsupported_field'
|
|
458
608
|
| 'user_not_found'
|
|
459
609
|
| 'body_too_large'
|
|
610
|
+
| 'bookmark_folders_unavailable'
|
|
611
|
+
| 'broadcast_not_found'
|
|
460
612
|
| 'checkout_unavailable'
|
|
461
613
|
| 'connection_challenge_expired'
|
|
462
614
|
| 'connection_challenge_inactive'
|
|
463
615
|
| 'coverage_cursor_gone'
|
|
464
616
|
| 'coverage_cursor_unavailable'
|
|
617
|
+
| 'cursor_account_unavailable'
|
|
465
618
|
| 'draft_not_found'
|
|
619
|
+
| 'draw_too_large'
|
|
620
|
+
| 'expired'
|
|
466
621
|
| 'favoriters_unavailable'
|
|
467
622
|
| 'forbidden'
|
|
468
623
|
| 'guest_wallet_unavailable'
|
|
469
624
|
| 'guest_wallets_disabled'
|
|
470
625
|
| 'guest_wallets_unavailable'
|
|
471
626
|
| 'idempotency_conflict'
|
|
627
|
+
| 'idempotency_in_progress'
|
|
472
628
|
| 'idempotency_key_conflict'
|
|
629
|
+
| 'invalid_broadcast_id'
|
|
473
630
|
| 'invalid_community_id'
|
|
631
|
+
| 'invalid_community_topic'
|
|
474
632
|
| 'invalid_complete_replies_request'
|
|
475
633
|
| 'invalid_coverage_cursor'
|
|
476
634
|
| 'invalid_coverage_request'
|
|
635
|
+
| 'invalid_cursor'
|
|
477
636
|
| 'invalid_idempotency_key'
|
|
637
|
+
| 'invalid_job_filter'
|
|
638
|
+
| 'invalid_job_id'
|
|
478
639
|
| 'invalid_list_id'
|
|
479
640
|
| 'invalid_output_options'
|
|
480
641
|
| 'invalid_payment_amount'
|
|
481
642
|
| 'invalid_range'
|
|
482
643
|
| 'invalid_reply_options'
|
|
644
|
+
| 'invalid_space_id'
|
|
645
|
+
| 'likes_unavailable'
|
|
646
|
+
| 'list_not_found'
|
|
483
647
|
| 'login_rate_limited'
|
|
484
648
|
| 'login_service_unavailable'
|
|
485
649
|
| 'missing_idempotency_key'
|
|
486
650
|
| 'missing_ids'
|
|
651
|
+
| 'missing_url'
|
|
487
652
|
| 'no_cached_style'
|
|
653
|
+
| 'pagination_stalled'
|
|
488
654
|
| 'passkey_required'
|
|
489
655
|
| 'rate_limited'
|
|
490
656
|
| 'read_request_timeout'
|
|
657
|
+
| 'replay_unavailable'
|
|
491
658
|
| 'replies_incomplete'
|
|
659
|
+
| 'retweeters_incomplete'
|
|
660
|
+
| 'search_unavailable'
|
|
661
|
+
| 'space_canceled'
|
|
662
|
+
| 'space_not_ended'
|
|
492
663
|
| 'support_media_rate_limit'
|
|
493
664
|
| 'support_request_rate_limit'
|
|
665
|
+
| 'telegram_unavailable'
|
|
494
666
|
| 'too_many_ids'
|
|
667
|
+
| 'too_many_streams'
|
|
495
668
|
| 'too_many_tweets'
|
|
496
669
|
| 'unknown_field'
|
|
670
|
+
| 'unsupported_media_combination'
|
|
497
671
|
| 'unsupported_media_type'
|
|
498
672
|
| 'webhook_inactive'
|
|
499
673
|
| 'write_tracking_unavailable'
|
|
@@ -505,20 +679,31 @@ export namespace Error {
|
|
|
505
679
|
| 'x_api_unavailable'
|
|
506
680
|
| 'x_api_unauthorized'
|
|
507
681
|
| 'x_auth_failure'
|
|
682
|
+
| 'x_automation_refused'
|
|
683
|
+
| 'x_community_not_joined'
|
|
684
|
+
| 'x_community_not_selectable'
|
|
685
|
+
| 'x_community_post_public'
|
|
686
|
+
| 'x_community_post_removed'
|
|
508
687
|
| 'x_content_too_long'
|
|
509
688
|
| 'x_daily_limit'
|
|
510
689
|
| 'x_dm_not_allowed'
|
|
690
|
+
| 'x_dm_not_deleted'
|
|
691
|
+
| 'x_dm_not_sent'
|
|
511
692
|
| 'x_duplicate_action'
|
|
512
693
|
| 'x_login_auth_failed'
|
|
513
694
|
| 'x_login_challenge'
|
|
514
695
|
| 'x_login_denied'
|
|
515
696
|
| 'x_login_failed'
|
|
516
|
-
| 'x_login_proxy_error'
|
|
517
697
|
| 'x_login_rate_limited'
|
|
518
698
|
| 'x_login_service_unavailable'
|
|
519
699
|
| 'x_login_suspended'
|
|
700
|
+
| 'x_image_invalid'
|
|
701
|
+
| 'x_media_rejected'
|
|
702
|
+
| 'x_post_not_sent'
|
|
520
703
|
| 'x_rate_limited'
|
|
521
704
|
| 'x_rejected'
|
|
705
|
+
| 'x_reply_not_allowed'
|
|
706
|
+
| 'x_reply_target_unavailable'
|
|
522
707
|
| 'x_target_not_found'
|
|
523
708
|
| 'x_transient_error'
|
|
524
709
|
| 'x_user_lookup_failed'
|
|
@@ -536,10 +721,40 @@ export namespace Error {
|
|
|
536
721
|
| 'permission_error'
|
|
537
722
|
| 'rate_limit_error';
|
|
538
723
|
}
|
|
724
|
+
|
|
725
|
+
export interface FieldError {
|
|
726
|
+
code: 'unknown_field';
|
|
727
|
+
|
|
728
|
+
/**
|
|
729
|
+
* The name as the request wrote it.
|
|
730
|
+
*/
|
|
731
|
+
field: string;
|
|
732
|
+
|
|
733
|
+
/**
|
|
734
|
+
* What to send instead.
|
|
735
|
+
*/
|
|
736
|
+
message: string;
|
|
737
|
+
|
|
738
|
+
/**
|
|
739
|
+
* The parameter that held the name.
|
|
740
|
+
*/
|
|
741
|
+
path: 'query.fields' | 'query.omit';
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* The closest valid name, when 1 is close.
|
|
745
|
+
*/
|
|
746
|
+
suggestion?: string;
|
|
747
|
+
}
|
|
539
748
|
}
|
|
540
749
|
|
|
541
750
|
/**
|
|
542
|
-
* Type of monitor event fired when account activity occurs.
|
|
751
|
+
* Type of monitor event fired when account activity occurs. tweet.deleted fires
|
|
752
|
+
* once X confirms the account deleted a post the monitor saw. Its data is the post
|
|
753
|
+
* as last seen. broadcast.started & space.started fire when the account posts its
|
|
754
|
+
* running live video or Space. Their data is that post. A live the account does
|
|
755
|
+
* not post is not seen. following.added & following.removed fire when the account
|
|
756
|
+
* follows or unfollows someone, with that account's profile. Keyword monitors take
|
|
757
|
+
* the 10 post types only.
|
|
543
758
|
*/
|
|
544
759
|
export type EventType =
|
|
545
760
|
| 'tweet.new'
|
|
@@ -562,13 +777,19 @@ export type EventType =
|
|
|
562
777
|
| 'profile.verified.changed'
|
|
563
778
|
| 'profile.protected.changed'
|
|
564
779
|
| 'profile.pinned_tweet.changed'
|
|
565
|
-
| 'profile.unavailable.changed'
|
|
780
|
+
| 'profile.unavailable.changed'
|
|
781
|
+
| 'tweet.deleted'
|
|
782
|
+
| 'broadcast.started'
|
|
783
|
+
| 'space.started'
|
|
784
|
+
| 'following.added'
|
|
785
|
+
| 'following.removed';
|
|
566
786
|
|
|
567
787
|
/**
|
|
568
|
-
*
|
|
569
|
-
*
|
|
570
|
-
*
|
|
571
|
-
*
|
|
788
|
+
* Follow next_cursor while the response reports more pages. A page can hold fewer
|
|
789
|
+
* rows than its limit & still report more. That report decides, not the row count.
|
|
790
|
+
* A page can be empty & still report more, filtered or not. Automatic search, user
|
|
791
|
+
* Tweet & reply coverage keeps shape, filters, aliases & billing. Unprefixed
|
|
792
|
+
* cursors are legacy.
|
|
572
793
|
*/
|
|
573
794
|
export interface PaginatedTweets {
|
|
574
795
|
has_next_page: boolean;
|
|
@@ -576,14 +797,74 @@ export interface PaginatedTweets {
|
|
|
576
797
|
next_cursor: string;
|
|
577
798
|
|
|
578
799
|
tweets: Array<SearchTweet>;
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* Whole number from 0.
|
|
803
|
+
*/
|
|
804
|
+
filtered_count?: number;
|
|
805
|
+
|
|
806
|
+
/**
|
|
807
|
+
* How far back a filtered Latest search has read, in UTC. Every newer post was
|
|
808
|
+
* checked, so an empty page still moves this time back.
|
|
809
|
+
*/
|
|
810
|
+
readBackTo?: string;
|
|
811
|
+
|
|
812
|
+
/**
|
|
813
|
+
* What X shows beside a search's posts that is the same for every reader. Present
|
|
814
|
+
* on a search for a cashtag X has a card for, such as $BTC.
|
|
815
|
+
*/
|
|
816
|
+
searchContext?: PaginatedTweets.SearchContext;
|
|
817
|
+
|
|
818
|
+
/**
|
|
819
|
+
* Search q as X ran it, when Xquik fixed it.
|
|
820
|
+
*/
|
|
821
|
+
searchedQuery?: string;
|
|
822
|
+
|
|
823
|
+
/**
|
|
824
|
+
* Present on a last page whose sources all read past its start time.
|
|
825
|
+
*/
|
|
826
|
+
windowComplete?: true;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
export namespace PaginatedTweets {
|
|
830
|
+
/**
|
|
831
|
+
* What X shows beside a search's posts that is the same for every reader. Present
|
|
832
|
+
* on a search for a cashtag X has a card for, such as $BTC.
|
|
833
|
+
*/
|
|
834
|
+
export interface SearchContext {
|
|
835
|
+
/**
|
|
836
|
+
* X's card for the cashtag the search names.
|
|
837
|
+
*/
|
|
838
|
+
smartTag: SearchContext.SmartTag;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
export namespace SearchContext {
|
|
842
|
+
/**
|
|
843
|
+
* X's card for the cashtag the search names.
|
|
844
|
+
*/
|
|
845
|
+
export interface SmartTag {
|
|
846
|
+
/**
|
|
847
|
+
* The ticker X matched.
|
|
848
|
+
*/
|
|
849
|
+
id: string;
|
|
850
|
+
|
|
851
|
+
/**
|
|
852
|
+
* Whether X lists the ticker as active.
|
|
853
|
+
*/
|
|
854
|
+
active?: boolean;
|
|
855
|
+
|
|
856
|
+
/**
|
|
857
|
+
* Whether X charts the ticker with open, high, low & close prices.
|
|
858
|
+
*/
|
|
859
|
+
supportsOhlc?: boolean;
|
|
860
|
+
}
|
|
861
|
+
}
|
|
579
862
|
}
|
|
580
863
|
|
|
581
864
|
/**
|
|
582
|
-
*
|
|
583
|
-
*
|
|
584
|
-
*
|
|
585
|
-
* unprefixed cursors retain legacy behavior. Follow next_cursor while
|
|
586
|
-
* has_next_page is true.
|
|
865
|
+
* Profile coverage preserves shape, billing, aliases, and filters. Follow
|
|
866
|
+
* next_cursor while the response reports more pages. Unprefixed cursors remain
|
|
867
|
+
* legacy.
|
|
587
868
|
*/
|
|
588
869
|
export interface PaginatedUsers {
|
|
589
870
|
has_next_page: boolean;
|
|
@@ -591,11 +872,15 @@ export interface PaginatedUsers {
|
|
|
591
872
|
next_cursor: string;
|
|
592
873
|
|
|
593
874
|
users: Array<UserProfile>;
|
|
875
|
+
|
|
876
|
+
/**
|
|
877
|
+
* Whole number from 0.
|
|
878
|
+
*/
|
|
879
|
+
filtered_count?: number;
|
|
594
880
|
}
|
|
595
881
|
|
|
596
882
|
/**
|
|
597
|
-
*
|
|
598
|
-
* mean X did not report the count.
|
|
883
|
+
* Search tweet with author. Zero metrics may mean X omitted counts.
|
|
599
884
|
*/
|
|
600
885
|
export interface SearchTweet {
|
|
601
886
|
id: string;
|
|
@@ -615,20 +900,43 @@ export interface SearchTweet {
|
|
|
615
900
|
viewCount: number;
|
|
616
901
|
|
|
617
902
|
/**
|
|
618
|
-
* Article
|
|
903
|
+
* Describes an X Article preview and its lifecycle metadata.
|
|
619
904
|
*/
|
|
620
905
|
article?: SearchTweet.Article;
|
|
621
906
|
|
|
622
907
|
/**
|
|
623
|
-
* X
|
|
908
|
+
* Public X profile.
|
|
624
909
|
*/
|
|
625
910
|
author?: UserProfile;
|
|
626
911
|
|
|
627
912
|
/**
|
|
628
|
-
*
|
|
913
|
+
* Why the tweet has no author. X serves a suspended or deleted account as an
|
|
914
|
+
* unavailable user with a reason such as Suspended or NotFound. Omitted when the
|
|
915
|
+
* author is available.
|
|
916
|
+
*/
|
|
917
|
+
authorUnavailable?: SearchTweet.AuthorUnavailable;
|
|
918
|
+
|
|
919
|
+
/**
|
|
920
|
+
* Describes a public card and its referenced profiles.
|
|
629
921
|
*/
|
|
630
922
|
card?: SearchTweet.Card;
|
|
631
923
|
|
|
924
|
+
/**
|
|
925
|
+
* Price charts the author attached under the post, 1 per cashtag. Absent when the
|
|
926
|
+
* post has none. X may send a cashtag without a chart window.
|
|
927
|
+
*/
|
|
928
|
+
cashtagAttachments?: Array<SearchTweet.CashtagAttachment>;
|
|
929
|
+
|
|
930
|
+
/**
|
|
931
|
+
* Community ID.
|
|
932
|
+
*/
|
|
933
|
+
communityId?: string;
|
|
934
|
+
|
|
935
|
+
/**
|
|
936
|
+
* Community name. Present when X sends it with the post.
|
|
937
|
+
*/
|
|
938
|
+
communityName?: string;
|
|
939
|
+
|
|
632
940
|
/**
|
|
633
941
|
* Community Note presentation metadata returned by X.
|
|
634
942
|
*/
|
|
@@ -640,175 +948,755 @@ export interface SearchTweet {
|
|
|
640
948
|
*/
|
|
641
949
|
contentDisclosure?: ContentDisclosure;
|
|
642
950
|
|
|
643
|
-
/**
|
|
644
|
-
*
|
|
645
|
-
*/
|
|
646
|
-
|
|
951
|
+
/**
|
|
952
|
+
* Reply policy & conversation owner.
|
|
953
|
+
*/
|
|
954
|
+
conversationControl?: SearchTweet.ConversationControl;
|
|
955
|
+
|
|
956
|
+
conversationId?: string;
|
|
957
|
+
|
|
958
|
+
/**
|
|
959
|
+
* Author-published point, with longitude before latitude.
|
|
960
|
+
*/
|
|
961
|
+
coordinates?: SearchTweet.Coordinates;
|
|
962
|
+
|
|
963
|
+
createdAt?: string;
|
|
964
|
+
|
|
965
|
+
displayTextRange?: Array<number>;
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* Lists edit-chain identifiers and the remaining edit window.
|
|
969
|
+
*/
|
|
970
|
+
edit?: SearchTweet.Edit;
|
|
971
|
+
|
|
972
|
+
/**
|
|
973
|
+
* Lists hashtags, symbols, links, and mentions from tweet text.
|
|
974
|
+
*/
|
|
975
|
+
entities?: SearchTweet.Entities;
|
|
976
|
+
|
|
977
|
+
/**
|
|
978
|
+
* Marks a subscriber-only post with the creator whose subscription unlocks it.
|
|
979
|
+
* Non-subscribers get the preview text & the subscribe link. Omitted on public
|
|
980
|
+
* posts.
|
|
981
|
+
*/
|
|
982
|
+
exclusiveContent?: SearchTweet.ExclusiveContent;
|
|
983
|
+
|
|
984
|
+
/**
|
|
985
|
+
* Author-published point, with latitude before longitude.
|
|
986
|
+
*/
|
|
987
|
+
geo?: SearchTweet.Geo;
|
|
988
|
+
|
|
989
|
+
/**
|
|
990
|
+
* Public metadata whose fields are defined by X.
|
|
991
|
+
*/
|
|
992
|
+
grokShareAttachment?: { [key: string]: unknown };
|
|
993
|
+
|
|
994
|
+
/**
|
|
995
|
+
* Grok's translation of the post, as X shows it.
|
|
996
|
+
*/
|
|
997
|
+
grokTranslatedPost?: { [key: string]: unknown };
|
|
998
|
+
|
|
999
|
+
/**
|
|
1000
|
+
* Whether X holds Community Notes on the post, shown or not.
|
|
1001
|
+
*/
|
|
1002
|
+
hasCommunityNotes?: boolean;
|
|
1003
|
+
|
|
1004
|
+
inReplyToId?: string;
|
|
1005
|
+
|
|
1006
|
+
inReplyToUserId?: string;
|
|
1007
|
+
|
|
1008
|
+
inReplyToUsername?: string;
|
|
1009
|
+
|
|
1010
|
+
/**
|
|
1011
|
+
* The notice x.com covers the post with until the reader views it, such as X's
|
|
1012
|
+
* public interest notice on a post that broke its rules but stays up.
|
|
1013
|
+
*/
|
|
1014
|
+
interstitial?: SearchTweet.Interstitial;
|
|
1015
|
+
|
|
1016
|
+
isLimitedReply?: boolean;
|
|
1017
|
+
|
|
1018
|
+
isNoteTweet?: boolean;
|
|
1019
|
+
|
|
1020
|
+
isPinned?: boolean;
|
|
1021
|
+
|
|
1022
|
+
isQuoteStatus?: boolean;
|
|
1023
|
+
|
|
1024
|
+
isReply?: boolean;
|
|
1025
|
+
|
|
1026
|
+
isRetweet?: boolean;
|
|
1027
|
+
|
|
1028
|
+
isTranslatable?: boolean;
|
|
1029
|
+
|
|
1030
|
+
/**
|
|
1031
|
+
* Public metadata whose fields are defined by X.
|
|
1032
|
+
*/
|
|
1033
|
+
jetfuelAttachment?: { [key: string]: unknown };
|
|
1034
|
+
|
|
1035
|
+
lang?: string;
|
|
1036
|
+
|
|
1037
|
+
/**
|
|
1038
|
+
* Public restrictions & prompts.
|
|
1039
|
+
*/
|
|
1040
|
+
limitedActions?: Array<SearchTweet.LimitedAction>;
|
|
1041
|
+
|
|
1042
|
+
/**
|
|
1043
|
+
* Media, omitted when unavailable.
|
|
1044
|
+
*/
|
|
1045
|
+
media?: Array<TweetMedia>;
|
|
1046
|
+
|
|
1047
|
+
/**
|
|
1048
|
+
* Complete Note Tweet content and rich-text metadata.
|
|
1049
|
+
*/
|
|
1050
|
+
noteTweet?: SearchTweet.NoteTweet;
|
|
1051
|
+
|
|
1052
|
+
/**
|
|
1053
|
+
* A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
|
|
1054
|
+
* author. Nesting stops after 4 levels.
|
|
1055
|
+
*/
|
|
1056
|
+
parentTweet?: EmbeddedTweet;
|
|
1057
|
+
|
|
1058
|
+
/**
|
|
1059
|
+
* Describes public place metadata on a geotagged tweet.
|
|
1060
|
+
*/
|
|
1061
|
+
place?: SearchTweet.Place;
|
|
1062
|
+
|
|
1063
|
+
possiblySensitive?: boolean;
|
|
1064
|
+
|
|
1065
|
+
/**
|
|
1066
|
+
* Public metadata whose fields are defined by X.
|
|
1067
|
+
*/
|
|
1068
|
+
postCta?: { [key: string]: unknown };
|
|
1069
|
+
|
|
1070
|
+
/**
|
|
1071
|
+
* Engagement counts retained from a prior tweet edit.
|
|
1072
|
+
*/
|
|
1073
|
+
previousCounts?: SearchTweet.PreviousCounts;
|
|
1074
|
+
|
|
1075
|
+
/**
|
|
1076
|
+
* A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
|
|
1077
|
+
* author. Nesting stops after 4 levels.
|
|
1078
|
+
*/
|
|
1079
|
+
quoted_tweet?: EmbeddedTweet;
|
|
1080
|
+
|
|
1081
|
+
quotedTweetId?: string;
|
|
1082
|
+
|
|
1083
|
+
/**
|
|
1084
|
+
* The quoted post's link, kept when X withholds that post.
|
|
1085
|
+
*/
|
|
1086
|
+
quotedTweetPermalink?: SearchTweet.QuotedTweetPermalink;
|
|
1087
|
+
|
|
1088
|
+
/**
|
|
1089
|
+
* Why X shows no quoted post. Omitted when X names no reason, as its legacy
|
|
1090
|
+
* answers never do.
|
|
1091
|
+
*/
|
|
1092
|
+
quotedTweetUnavailable?: SearchTweet.QuotedTweetUnavailable;
|
|
1093
|
+
|
|
1094
|
+
/**
|
|
1095
|
+
* Public post & user this reaction references.
|
|
1096
|
+
*/
|
|
1097
|
+
reactionContext?: SearchTweet.ReactionContext;
|
|
1098
|
+
|
|
1099
|
+
/**
|
|
1100
|
+
* A parent, quoted or retweeted tweet. It has the TweetPublicData fields and an
|
|
1101
|
+
* author. Nesting stops after 4 levels.
|
|
1102
|
+
*/
|
|
1103
|
+
retweeted_tweet?: EmbeddedTweet;
|
|
1104
|
+
|
|
1105
|
+
/**
|
|
1106
|
+
* Repost event time in UTC. Null when unavailable; omitted for other posts.
|
|
1107
|
+
*/
|
|
1108
|
+
retweetedAt?: string | null;
|
|
1109
|
+
|
|
1110
|
+
/**
|
|
1111
|
+
* Public metadata whose fields are defined by X.
|
|
1112
|
+
*/
|
|
1113
|
+
scopes?: { [key: string]: unknown };
|
|
1114
|
+
|
|
1115
|
+
/**
|
|
1116
|
+
* The app the post was sent from, as X labels it. X sends it for some posts only.
|
|
1117
|
+
*/
|
|
1118
|
+
source?: string;
|
|
1119
|
+
|
|
1120
|
+
/**
|
|
1121
|
+
* Game metadata attached to this post.
|
|
1122
|
+
*/
|
|
1123
|
+
sportsContext?: SearchTweet.SportsContext;
|
|
1124
|
+
|
|
1125
|
+
/**
|
|
1126
|
+
* The Subscriber badge X shows on a reply. The reply's author subscribes to the
|
|
1127
|
+
* creator who started the conversation. Omitted on a post without the badge.
|
|
1128
|
+
*/
|
|
1129
|
+
subscriberBadge?: SearchTweet.SubscriberBadge;
|
|
1130
|
+
|
|
1131
|
+
/**
|
|
1132
|
+
* Where `text` matches the search, on each row a search read. Offsets count code
|
|
1133
|
+
* points of `text`, as `displayTextRange` does. Empty when X marks nothing in the
|
|
1134
|
+
* post. X marks matches only in a post's first 280 characters.
|
|
1135
|
+
*/
|
|
1136
|
+
textHighlights?: Array<SearchTweet.TextHighlight>;
|
|
1137
|
+
|
|
1138
|
+
/**
|
|
1139
|
+
* Public visibility notice attached to an available tweet.
|
|
1140
|
+
*/
|
|
1141
|
+
tombstone?: SearchTweet.Tombstone;
|
|
1142
|
+
|
|
1143
|
+
type?: string;
|
|
1144
|
+
|
|
1145
|
+
/**
|
|
1146
|
+
* The author's ID when X withholds the author's profile.
|
|
1147
|
+
*/
|
|
1148
|
+
unavailableAuthorId?: string;
|
|
1149
|
+
|
|
1150
|
+
/**
|
|
1151
|
+
* User IDs that left this conversation.
|
|
1152
|
+
*/
|
|
1153
|
+
unmentionedUserIds?: Array<string>;
|
|
1154
|
+
|
|
1155
|
+
url?: string;
|
|
1156
|
+
|
|
1157
|
+
viewState?: string;
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
export namespace SearchTweet {
|
|
1161
|
+
/**
|
|
1162
|
+
* Describes an X Article preview and its lifecycle metadata.
|
|
1163
|
+
*/
|
|
1164
|
+
export interface Article {
|
|
1165
|
+
id?: string;
|
|
1166
|
+
|
|
1167
|
+
/**
|
|
1168
|
+
* Public metadata whose fields are defined by X.
|
|
1169
|
+
*/
|
|
1170
|
+
coverMedia?: { [key: string]: unknown };
|
|
1171
|
+
|
|
1172
|
+
coverMediaUrl?: string;
|
|
1173
|
+
|
|
1174
|
+
/**
|
|
1175
|
+
* Public metadata whose fields are defined by X.
|
|
1176
|
+
*/
|
|
1177
|
+
lifecycleState?: { [key: string]: unknown };
|
|
1178
|
+
|
|
1179
|
+
/**
|
|
1180
|
+
* Public metadata whose fields are defined by X.
|
|
1181
|
+
*/
|
|
1182
|
+
metadata?: { [key: string]: unknown };
|
|
1183
|
+
|
|
1184
|
+
previewText?: string;
|
|
1185
|
+
|
|
1186
|
+
title?: string;
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* Why the tweet has no author. X serves a suspended or deleted account as an
|
|
1191
|
+
* unavailable user with a reason such as Suspended or NotFound. Omitted when the
|
|
1192
|
+
* author is available.
|
|
1193
|
+
*/
|
|
1194
|
+
export interface AuthorUnavailable {
|
|
1195
|
+
/**
|
|
1196
|
+
* X's reason code.
|
|
1197
|
+
*/
|
|
1198
|
+
reason: string;
|
|
1199
|
+
|
|
1200
|
+
/**
|
|
1201
|
+
* X's notice text for the reason.
|
|
1202
|
+
*/
|
|
1203
|
+
message?: string;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
/**
|
|
1207
|
+
* Describes a public card and its referenced profiles.
|
|
1208
|
+
*/
|
|
1209
|
+
export interface Card {
|
|
1210
|
+
id?: string;
|
|
1211
|
+
|
|
1212
|
+
/**
|
|
1213
|
+
* Public metadata whose fields are defined by X.
|
|
1214
|
+
*/
|
|
1215
|
+
bindingValues?: { [key: string]: unknown };
|
|
1216
|
+
|
|
1217
|
+
name?: string;
|
|
1218
|
+
|
|
1219
|
+
/**
|
|
1220
|
+
* Public metadata whose fields are defined by X.
|
|
1221
|
+
*/
|
|
1222
|
+
platform?: { [key: string]: unknown };
|
|
1223
|
+
|
|
1224
|
+
url?: string;
|
|
1225
|
+
|
|
1226
|
+
/**
|
|
1227
|
+
* Unresolved card user references.
|
|
1228
|
+
*/
|
|
1229
|
+
userReferenceErrors?: Array<Card.UserReferenceError>;
|
|
1230
|
+
|
|
1231
|
+
userReferences?: Array<Shared.UserProfile>;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
export namespace Card {
|
|
1235
|
+
export interface UserReferenceError {
|
|
1236
|
+
message?: string;
|
|
1237
|
+
|
|
1238
|
+
reason?: string;
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1242
|
+
export interface CashtagAttachment {
|
|
1243
|
+
/**
|
|
1244
|
+
* The cashtag with its `$`.
|
|
1245
|
+
*/
|
|
1246
|
+
cashtag: string;
|
|
1247
|
+
|
|
1248
|
+
/**
|
|
1249
|
+
* Span of each candle.
|
|
1250
|
+
*/
|
|
1251
|
+
candleSize?: string;
|
|
1252
|
+
|
|
1253
|
+
/**
|
|
1254
|
+
* Time of the chart's last price.
|
|
1255
|
+
*/
|
|
1256
|
+
endTime?: string;
|
|
1257
|
+
|
|
1258
|
+
/**
|
|
1259
|
+
* X's size for the chart.
|
|
1260
|
+
*/
|
|
1261
|
+
sizeVariant?: number;
|
|
1262
|
+
|
|
1263
|
+
/**
|
|
1264
|
+
* Time of the chart's first candle.
|
|
1265
|
+
*/
|
|
1266
|
+
startTime?: string;
|
|
1267
|
+
|
|
1268
|
+
/**
|
|
1269
|
+
* Span the chart covers.
|
|
1270
|
+
*/
|
|
1271
|
+
timeframe?: string;
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
/**
|
|
1275
|
+
* Community Note presentation metadata returned by X.
|
|
1276
|
+
*/
|
|
1277
|
+
export interface CommunityNote {
|
|
1278
|
+
id?: string;
|
|
1279
|
+
|
|
1280
|
+
destinationUrl?: string;
|
|
1281
|
+
|
|
1282
|
+
footer?: string;
|
|
1283
|
+
|
|
1284
|
+
footerIconType?: string;
|
|
1285
|
+
|
|
1286
|
+
iconType?: string;
|
|
1287
|
+
|
|
1288
|
+
/**
|
|
1289
|
+
* Public metadata whose fields are defined by X.
|
|
1290
|
+
*/
|
|
1291
|
+
metadata?: { [key: string]: unknown };
|
|
1292
|
+
|
|
1293
|
+
shortTitle?: string;
|
|
1294
|
+
|
|
1295
|
+
subtitle?: string;
|
|
1296
|
+
|
|
1297
|
+
title?: string;
|
|
1298
|
+
|
|
1299
|
+
visualStyle?: string;
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
/**
|
|
1303
|
+
* Reply policy & conversation owner.
|
|
1304
|
+
*/
|
|
1305
|
+
export interface ConversationControl {
|
|
1306
|
+
/**
|
|
1307
|
+
* Regions whose accounts may reply, as country codes. Sent with the
|
|
1308
|
+
* `country_of_origin` mode.
|
|
1309
|
+
*/
|
|
1310
|
+
allowedCountryCodes?: Array<string>;
|
|
1311
|
+
|
|
1312
|
+
inviteViaMention?: boolean;
|
|
1313
|
+
|
|
1314
|
+
/**
|
|
1315
|
+
* Reply policy from X's newer field, such as `my_network`, `premium` or
|
|
1316
|
+
* `country_of_origin`. Omitted when X sends none.
|
|
1317
|
+
*/
|
|
1318
|
+
mode?: string;
|
|
1319
|
+
|
|
1320
|
+
/**
|
|
1321
|
+
* The conversation owner's account ID.
|
|
1322
|
+
*/
|
|
1323
|
+
ownerId?: string;
|
|
1324
|
+
|
|
1325
|
+
ownerUsername?: string;
|
|
1326
|
+
|
|
1327
|
+
policy?: string;
|
|
1328
|
+
}
|
|
1329
|
+
|
|
1330
|
+
/**
|
|
1331
|
+
* Author-published point, with longitude before latitude.
|
|
1332
|
+
*/
|
|
1333
|
+
export interface Coordinates {
|
|
1334
|
+
coordinates: Array<number>;
|
|
1335
|
+
|
|
1336
|
+
type: 'Point';
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
/**
|
|
1340
|
+
* Lists edit-chain identifiers and the remaining edit window.
|
|
1341
|
+
*/
|
|
1342
|
+
export interface Edit {
|
|
1343
|
+
editableUntilMsecs?: string;
|
|
1344
|
+
|
|
1345
|
+
editTweetIds?: Array<string>;
|
|
1346
|
+
|
|
1347
|
+
initialTweetId?: string;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
/**
|
|
1351
|
+
* Lists hashtags, symbols, links, and mentions from tweet text.
|
|
1352
|
+
*/
|
|
1353
|
+
export interface Entities {
|
|
1354
|
+
hashtags?: Array<Entities.Hashtag>;
|
|
1355
|
+
|
|
1356
|
+
smarttags?: Array<Entities.Smarttag>;
|
|
1357
|
+
|
|
1358
|
+
symbols?: Array<Entities.Symbol>;
|
|
1359
|
+
|
|
1360
|
+
timestamps?: Array<Entities.Timestamp>;
|
|
1361
|
+
|
|
1362
|
+
urls?: Array<Entities.URL>;
|
|
1363
|
+
|
|
1364
|
+
user_mentions?: Array<Entities.UserMention>;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
export namespace Entities {
|
|
1368
|
+
/**
|
|
1369
|
+
* Provides hashtag text and source offsets within a tweet.
|
|
1370
|
+
*/
|
|
1371
|
+
export interface Hashtag {
|
|
1372
|
+
text: string;
|
|
1373
|
+
|
|
1374
|
+
indices?: Array<number>;
|
|
1375
|
+
|
|
1376
|
+
/**
|
|
1377
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1378
|
+
* platforms, which differ by reader.
|
|
1379
|
+
*/
|
|
1380
|
+
tag?: Hashtag.Tag;
|
|
1381
|
+
}
|
|
647
1382
|
|
|
648
|
-
|
|
1383
|
+
export namespace Hashtag {
|
|
1384
|
+
/**
|
|
1385
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1386
|
+
* platforms, which differ by reader.
|
|
1387
|
+
*/
|
|
1388
|
+
export interface Tag {
|
|
1389
|
+
/**
|
|
1390
|
+
* X's ID for the SmartTag.
|
|
1391
|
+
*/
|
|
1392
|
+
id?: string;
|
|
1393
|
+
|
|
1394
|
+
info?: Tag.Info;
|
|
1395
|
+
}
|
|
1396
|
+
|
|
1397
|
+
export namespace Tag {
|
|
1398
|
+
export interface Info {
|
|
1399
|
+
info?: Info.Info;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
export namespace Info {
|
|
1403
|
+
export interface Info {
|
|
1404
|
+
/**
|
|
1405
|
+
* Whether X marks the SmartTag active.
|
|
1406
|
+
*/
|
|
1407
|
+
active?: boolean;
|
|
1408
|
+
|
|
1409
|
+
name?: string;
|
|
1410
|
+
|
|
1411
|
+
ticker?: string;
|
|
1412
|
+
}
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
649
1416
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
1417
|
+
/**
|
|
1418
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1419
|
+
*/
|
|
1420
|
+
export interface Smarttag {
|
|
1421
|
+
indices?: Array<number>;
|
|
654
1422
|
|
|
655
|
-
|
|
656
|
-
* Edit history metadata returned by X.
|
|
657
|
-
*/
|
|
658
|
-
edit?: SearchTweet.Edit;
|
|
1423
|
+
seconds?: number;
|
|
659
1424
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
1425
|
+
/**
|
|
1426
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1427
|
+
* platforms, which differ by reader.
|
|
1428
|
+
*/
|
|
1429
|
+
tag?: Smarttag.Tag;
|
|
665
1430
|
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
*/
|
|
669
|
-
inReplyToId?: string;
|
|
1431
|
+
text?: string;
|
|
1432
|
+
}
|
|
670
1433
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
1434
|
+
export namespace Smarttag {
|
|
1435
|
+
/**
|
|
1436
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1437
|
+
* platforms, which differ by reader.
|
|
1438
|
+
*/
|
|
1439
|
+
export interface Tag {
|
|
1440
|
+
/**
|
|
1441
|
+
* X's ID for the SmartTag.
|
|
1442
|
+
*/
|
|
1443
|
+
id?: string;
|
|
1444
|
+
|
|
1445
|
+
info?: Tag.Info;
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
export namespace Tag {
|
|
1449
|
+
export interface Info {
|
|
1450
|
+
info?: Info.Info;
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
export namespace Info {
|
|
1454
|
+
export interface Info {
|
|
1455
|
+
/**
|
|
1456
|
+
* Whether X marks the SmartTag active.
|
|
1457
|
+
*/
|
|
1458
|
+
active?: boolean;
|
|
1459
|
+
|
|
1460
|
+
name?: string;
|
|
1461
|
+
|
|
1462
|
+
ticker?: string;
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
675
1467
|
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
1468
|
+
/**
|
|
1469
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1470
|
+
*/
|
|
1471
|
+
export interface Symbol {
|
|
1472
|
+
indices?: Array<number>;
|
|
680
1473
|
|
|
681
|
-
|
|
682
|
-
* Whether the tweet has limited reply permissions
|
|
683
|
-
*/
|
|
684
|
-
isLimitedReply?: boolean;
|
|
1474
|
+
seconds?: number;
|
|
685
1475
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
1476
|
+
/**
|
|
1477
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1478
|
+
* platforms, which differ by reader.
|
|
1479
|
+
*/
|
|
1480
|
+
tag?: Symbol.Tag;
|
|
690
1481
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
*/
|
|
694
|
-
isQuoteStatus?: boolean;
|
|
1482
|
+
text?: string;
|
|
1483
|
+
}
|
|
695
1484
|
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
1485
|
+
export namespace Symbol {
|
|
1486
|
+
/**
|
|
1487
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1488
|
+
* platforms, which differ by reader.
|
|
1489
|
+
*/
|
|
1490
|
+
export interface Tag {
|
|
1491
|
+
/**
|
|
1492
|
+
* X's ID for the SmartTag.
|
|
1493
|
+
*/
|
|
1494
|
+
id?: string;
|
|
1495
|
+
|
|
1496
|
+
info?: Tag.Info;
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
export namespace Tag {
|
|
1500
|
+
export interface Info {
|
|
1501
|
+
info?: Info.Info;
|
|
1502
|
+
}
|
|
1503
|
+
|
|
1504
|
+
export namespace Info {
|
|
1505
|
+
export interface Info {
|
|
1506
|
+
/**
|
|
1507
|
+
* Whether X marks the SmartTag active.
|
|
1508
|
+
*/
|
|
1509
|
+
active?: boolean;
|
|
1510
|
+
|
|
1511
|
+
name?: string;
|
|
1512
|
+
|
|
1513
|
+
ticker?: string;
|
|
1514
|
+
}
|
|
1515
|
+
}
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
700
1518
|
|
|
701
|
-
|
|
1519
|
+
/**
|
|
1520
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1521
|
+
*/
|
|
1522
|
+
export interface Timestamp {
|
|
1523
|
+
indices?: Array<number>;
|
|
702
1524
|
|
|
703
|
-
|
|
704
|
-
* Search result language code.
|
|
705
|
-
*/
|
|
706
|
-
lang?: string;
|
|
1525
|
+
seconds?: number;
|
|
707
1526
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
1527
|
+
/**
|
|
1528
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1529
|
+
* platforms, which differ by reader.
|
|
1530
|
+
*/
|
|
1531
|
+
tag?: Timestamp.Tag;
|
|
712
1532
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
*/
|
|
716
|
-
noteTweet?: SearchTweet.NoteTweet;
|
|
1533
|
+
text?: string;
|
|
1534
|
+
}
|
|
717
1535
|
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
1536
|
+
export namespace Timestamp {
|
|
1537
|
+
/**
|
|
1538
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1539
|
+
* platforms, which differ by reader.
|
|
1540
|
+
*/
|
|
1541
|
+
export interface Tag {
|
|
1542
|
+
/**
|
|
1543
|
+
* X's ID for the SmartTag.
|
|
1544
|
+
*/
|
|
1545
|
+
id?: string;
|
|
1546
|
+
|
|
1547
|
+
info?: Tag.Info;
|
|
1548
|
+
}
|
|
1549
|
+
|
|
1550
|
+
export namespace Tag {
|
|
1551
|
+
export interface Info {
|
|
1552
|
+
info?: Info.Info;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
export namespace Info {
|
|
1556
|
+
export interface Info {
|
|
1557
|
+
/**
|
|
1558
|
+
* Whether X marks the SmartTag active.
|
|
1559
|
+
*/
|
|
1560
|
+
active?: boolean;
|
|
1561
|
+
|
|
1562
|
+
name?: string;
|
|
1563
|
+
|
|
1564
|
+
ticker?: string;
|
|
1565
|
+
}
|
|
1566
|
+
}
|
|
1567
|
+
}
|
|
1568
|
+
}
|
|
722
1569
|
|
|
723
|
-
|
|
1570
|
+
/**
|
|
1571
|
+
* Provides shortened, display, and expanded URLs from tweet text.
|
|
1572
|
+
*/
|
|
1573
|
+
export interface URL {
|
|
1574
|
+
display_url?: string;
|
|
724
1575
|
|
|
725
|
-
|
|
726
|
-
* Engagement counts retained from a prior tweet edit.
|
|
727
|
-
*/
|
|
728
|
-
previousCounts?: SearchTweet.PreviousCounts;
|
|
1576
|
+
expanded_url?: string;
|
|
729
1577
|
|
|
730
|
-
|
|
731
|
-
* Quoted or retweeted tweet context. Every object includes id, text, and
|
|
732
|
-
* engagement metrics. A zero metric can mean X did not report the count. Author,
|
|
733
|
-
* media, and conversation fields appear when available.
|
|
734
|
-
*/
|
|
735
|
-
quoted_tweet?: EmbeddedTweet;
|
|
1578
|
+
indices?: Array<number>;
|
|
736
1579
|
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
* engagement metrics. A zero metric can mean X did not report the count. Author,
|
|
740
|
-
* media, and conversation fields appear when available.
|
|
741
|
-
*/
|
|
742
|
-
retweeted_tweet?: EmbeddedTweet;
|
|
1580
|
+
url?: string;
|
|
1581
|
+
}
|
|
743
1582
|
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
1583
|
+
/**
|
|
1584
|
+
* Provides profile identity and source offsets for a mention.
|
|
1585
|
+
*/
|
|
1586
|
+
export interface UserMention {
|
|
1587
|
+
screen_name: string;
|
|
748
1588
|
|
|
749
|
-
|
|
1589
|
+
id_str?: string;
|
|
750
1590
|
|
|
751
|
-
|
|
752
|
-
* Search result permalink.
|
|
753
|
-
*/
|
|
754
|
-
url?: string;
|
|
1591
|
+
indices?: Array<number>;
|
|
755
1592
|
|
|
756
|
-
|
|
757
|
-
}
|
|
1593
|
+
name?: string;
|
|
1594
|
+
}
|
|
1595
|
+
}
|
|
758
1596
|
|
|
759
|
-
export namespace SearchTweet {
|
|
760
1597
|
/**
|
|
761
|
-
*
|
|
1598
|
+
* Marks a subscriber-only post with the creator whose subscription unlocks it.
|
|
1599
|
+
* Non-subscribers get the preview text & the subscribe link. Omitted on public
|
|
1600
|
+
* posts.
|
|
762
1601
|
*/
|
|
763
|
-
export interface
|
|
764
|
-
|
|
1602
|
+
export interface ExclusiveContent {
|
|
1603
|
+
/**
|
|
1604
|
+
* Username of the creator whose subscription unlocks the post.
|
|
1605
|
+
*/
|
|
1606
|
+
creatorUserName: string;
|
|
765
1607
|
|
|
766
|
-
|
|
1608
|
+
/**
|
|
1609
|
+
* Subscribe link X shows non-subscribers. Omitted when X serves the full post.
|
|
1610
|
+
*/
|
|
1611
|
+
subscribeUrl?: string;
|
|
1612
|
+
}
|
|
767
1613
|
|
|
768
|
-
|
|
1614
|
+
/**
|
|
1615
|
+
* Author-published point, with latitude before longitude.
|
|
1616
|
+
*/
|
|
1617
|
+
export interface Geo {
|
|
1618
|
+
coordinates: Array<number>;
|
|
769
1619
|
|
|
770
|
-
|
|
1620
|
+
type: 'Point';
|
|
771
1621
|
}
|
|
772
1622
|
|
|
773
1623
|
/**
|
|
774
|
-
*
|
|
1624
|
+
* The notice x.com covers the post with until the reader views it, such as X's
|
|
1625
|
+
* public interest notice on a post that broke its rules but stays up.
|
|
775
1626
|
*/
|
|
776
|
-
export interface
|
|
777
|
-
|
|
1627
|
+
export interface Interstitial {
|
|
1628
|
+
/**
|
|
1629
|
+
* How x.com shows the notice. `NonCompliant` marks a post that broke X's rules.
|
|
1630
|
+
*/
|
|
1631
|
+
displayType?: string;
|
|
778
1632
|
|
|
779
|
-
|
|
1633
|
+
text?: Interstitial.Text;
|
|
1634
|
+
}
|
|
780
1635
|
|
|
781
|
-
|
|
1636
|
+
export namespace Interstitial {
|
|
1637
|
+
export interface Text {
|
|
1638
|
+
/**
|
|
1639
|
+
* Links inside the notice, by character range.
|
|
1640
|
+
*/
|
|
1641
|
+
entities?: Array<Text.Entity>;
|
|
1642
|
+
|
|
1643
|
+
/**
|
|
1644
|
+
* Whether X writes it right to left.
|
|
1645
|
+
*/
|
|
1646
|
+
rtl?: boolean;
|
|
1647
|
+
|
|
1648
|
+
/**
|
|
1649
|
+
* The notice's text.
|
|
1650
|
+
*/
|
|
1651
|
+
text?: string;
|
|
1652
|
+
}
|
|
782
1653
|
|
|
783
|
-
|
|
784
|
-
|
|
1654
|
+
export namespace Text {
|
|
1655
|
+
export interface Entity {
|
|
1656
|
+
/**
|
|
1657
|
+
* Whole number from 0.
|
|
1658
|
+
*/
|
|
1659
|
+
fromIndex?: number;
|
|
785
1660
|
|
|
786
|
-
|
|
787
|
-
* Community Note presentation metadata returned by X.
|
|
788
|
-
*/
|
|
789
|
-
export interface CommunityNote {
|
|
790
|
-
id?: string;
|
|
1661
|
+
ref?: Entity.Ref;
|
|
791
1662
|
|
|
792
|
-
|
|
1663
|
+
/**
|
|
1664
|
+
* Whole number from 0.
|
|
1665
|
+
*/
|
|
1666
|
+
toIndex?: number;
|
|
1667
|
+
}
|
|
793
1668
|
|
|
794
|
-
|
|
1669
|
+
export namespace Entity {
|
|
1670
|
+
export interface Ref {
|
|
1671
|
+
type?: string;
|
|
795
1672
|
|
|
796
|
-
|
|
1673
|
+
url?: string;
|
|
797
1674
|
|
|
798
|
-
|
|
1675
|
+
urlType?: string;
|
|
1676
|
+
}
|
|
1677
|
+
}
|
|
1678
|
+
}
|
|
1679
|
+
}
|
|
799
1680
|
|
|
800
|
-
|
|
1681
|
+
export interface LimitedAction {
|
|
1682
|
+
action?: string;
|
|
801
1683
|
|
|
802
|
-
|
|
1684
|
+
prompt?: LimitedAction.Prompt;
|
|
803
1685
|
}
|
|
804
1686
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
export interface Edit {
|
|
809
|
-
editableUntilMsecs?: string;
|
|
1687
|
+
export namespace LimitedAction {
|
|
1688
|
+
export interface Prompt {
|
|
1689
|
+
ctaType?: string;
|
|
810
1690
|
|
|
811
|
-
|
|
1691
|
+
headline?: string;
|
|
1692
|
+
|
|
1693
|
+
/**
|
|
1694
|
+
* Public metadata whose fields are defined by X.
|
|
1695
|
+
*/
|
|
1696
|
+
metadata?: { [key: string]: unknown };
|
|
1697
|
+
|
|
1698
|
+
subtext?: string;
|
|
1699
|
+
}
|
|
812
1700
|
}
|
|
813
1701
|
|
|
814
1702
|
/**
|
|
@@ -817,19 +1705,297 @@ export namespace SearchTweet {
|
|
|
817
1705
|
export interface NoteTweet {
|
|
818
1706
|
text: string;
|
|
819
1707
|
|
|
1708
|
+
/**
|
|
1709
|
+
* X's global ID of the Note, base64 of `NoteTweet:<noteId>`.
|
|
1710
|
+
*/
|
|
820
1711
|
id?: string;
|
|
821
1712
|
|
|
822
|
-
|
|
1713
|
+
/**
|
|
1714
|
+
* Lists hashtags, symbols, links, and mentions from tweet text.
|
|
1715
|
+
*/
|
|
1716
|
+
entities?: NoteTweet.Entities;
|
|
1717
|
+
|
|
1718
|
+
/**
|
|
1719
|
+
* Inline media positions in the Note Tweet text.
|
|
1720
|
+
*/
|
|
1721
|
+
inlineMedia?: Array<NoteTweet.InlineMedia>;
|
|
823
1722
|
|
|
824
1723
|
isExpandable?: boolean;
|
|
825
1724
|
|
|
1725
|
+
/**
|
|
1726
|
+
* The Note's own ID, apart from the post's.
|
|
1727
|
+
*/
|
|
1728
|
+
noteId?: string;
|
|
1729
|
+
|
|
826
1730
|
richtextTags?: Array<NoteTweet.RichtextTag>;
|
|
827
1731
|
}
|
|
828
1732
|
|
|
829
1733
|
export namespace NoteTweet {
|
|
1734
|
+
/**
|
|
1735
|
+
* Lists hashtags, symbols, links, and mentions from tweet text.
|
|
1736
|
+
*/
|
|
1737
|
+
export interface Entities {
|
|
1738
|
+
hashtags?: Array<Entities.Hashtag>;
|
|
1739
|
+
|
|
1740
|
+
smarttags?: Array<Entities.Smarttag>;
|
|
1741
|
+
|
|
1742
|
+
symbols?: Array<Entities.Symbol>;
|
|
1743
|
+
|
|
1744
|
+
timestamps?: Array<Entities.Timestamp>;
|
|
1745
|
+
|
|
1746
|
+
urls?: Array<Entities.URL>;
|
|
1747
|
+
|
|
1748
|
+
user_mentions?: Array<Entities.UserMention>;
|
|
1749
|
+
}
|
|
1750
|
+
|
|
1751
|
+
export namespace Entities {
|
|
1752
|
+
/**
|
|
1753
|
+
* Provides hashtag text and source offsets within a tweet.
|
|
1754
|
+
*/
|
|
1755
|
+
export interface Hashtag {
|
|
1756
|
+
text: string;
|
|
1757
|
+
|
|
1758
|
+
indices?: Array<number>;
|
|
1759
|
+
|
|
1760
|
+
/**
|
|
1761
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1762
|
+
* platforms, which differ by reader.
|
|
1763
|
+
*/
|
|
1764
|
+
tag?: Hashtag.Tag;
|
|
1765
|
+
}
|
|
1766
|
+
|
|
1767
|
+
export namespace Hashtag {
|
|
1768
|
+
/**
|
|
1769
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1770
|
+
* platforms, which differ by reader.
|
|
1771
|
+
*/
|
|
1772
|
+
export interface Tag {
|
|
1773
|
+
/**
|
|
1774
|
+
* X's ID for the SmartTag.
|
|
1775
|
+
*/
|
|
1776
|
+
id?: string;
|
|
1777
|
+
|
|
1778
|
+
info?: Tag.Info;
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
export namespace Tag {
|
|
1782
|
+
export interface Info {
|
|
1783
|
+
info?: Info.Info;
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1786
|
+
export namespace Info {
|
|
1787
|
+
export interface Info {
|
|
1788
|
+
/**
|
|
1789
|
+
* Whether X marks the SmartTag active.
|
|
1790
|
+
*/
|
|
1791
|
+
active?: boolean;
|
|
1792
|
+
|
|
1793
|
+
name?: string;
|
|
1794
|
+
|
|
1795
|
+
ticker?: string;
|
|
1796
|
+
}
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1801
|
+
/**
|
|
1802
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1803
|
+
*/
|
|
1804
|
+
export interface Smarttag {
|
|
1805
|
+
indices?: Array<number>;
|
|
1806
|
+
|
|
1807
|
+
seconds?: number;
|
|
1808
|
+
|
|
1809
|
+
/**
|
|
1810
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1811
|
+
* platforms, which differ by reader.
|
|
1812
|
+
*/
|
|
1813
|
+
tag?: Smarttag.Tag;
|
|
1814
|
+
|
|
1815
|
+
text?: string;
|
|
1816
|
+
}
|
|
1817
|
+
|
|
1818
|
+
export namespace Smarttag {
|
|
1819
|
+
/**
|
|
1820
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1821
|
+
* platforms, which differ by reader.
|
|
1822
|
+
*/
|
|
1823
|
+
export interface Tag {
|
|
1824
|
+
/**
|
|
1825
|
+
* X's ID for the SmartTag.
|
|
1826
|
+
*/
|
|
1827
|
+
id?: string;
|
|
1828
|
+
|
|
1829
|
+
info?: Tag.Info;
|
|
1830
|
+
}
|
|
1831
|
+
|
|
1832
|
+
export namespace Tag {
|
|
1833
|
+
export interface Info {
|
|
1834
|
+
info?: Info.Info;
|
|
1835
|
+
}
|
|
1836
|
+
|
|
1837
|
+
export namespace Info {
|
|
1838
|
+
export interface Info {
|
|
1839
|
+
/**
|
|
1840
|
+
* Whether X marks the SmartTag active.
|
|
1841
|
+
*/
|
|
1842
|
+
active?: boolean;
|
|
1843
|
+
|
|
1844
|
+
name?: string;
|
|
1845
|
+
|
|
1846
|
+
ticker?: string;
|
|
1847
|
+
}
|
|
1848
|
+
}
|
|
1849
|
+
}
|
|
1850
|
+
}
|
|
1851
|
+
|
|
1852
|
+
/**
|
|
1853
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1854
|
+
*/
|
|
1855
|
+
export interface Symbol {
|
|
1856
|
+
indices?: Array<number>;
|
|
1857
|
+
|
|
1858
|
+
seconds?: number;
|
|
1859
|
+
|
|
1860
|
+
/**
|
|
1861
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1862
|
+
* platforms, which differ by reader.
|
|
1863
|
+
*/
|
|
1864
|
+
tag?: Symbol.Tag;
|
|
1865
|
+
|
|
1866
|
+
text?: string;
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
export namespace Symbol {
|
|
1870
|
+
/**
|
|
1871
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1872
|
+
* platforms, which differ by reader.
|
|
1873
|
+
*/
|
|
1874
|
+
export interface Tag {
|
|
1875
|
+
/**
|
|
1876
|
+
* X's ID for the SmartTag.
|
|
1877
|
+
*/
|
|
1878
|
+
id?: string;
|
|
1879
|
+
|
|
1880
|
+
info?: Tag.Info;
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1883
|
+
export namespace Tag {
|
|
1884
|
+
export interface Info {
|
|
1885
|
+
info?: Info.Info;
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1888
|
+
export namespace Info {
|
|
1889
|
+
export interface Info {
|
|
1890
|
+
/**
|
|
1891
|
+
* Whether X marks the SmartTag active.
|
|
1892
|
+
*/
|
|
1893
|
+
active?: boolean;
|
|
1894
|
+
|
|
1895
|
+
name?: string;
|
|
1896
|
+
|
|
1897
|
+
ticker?: string;
|
|
1898
|
+
}
|
|
1899
|
+
}
|
|
1900
|
+
}
|
|
1901
|
+
}
|
|
1902
|
+
|
|
1903
|
+
/**
|
|
1904
|
+
* Indexed smart-tag, cashtag, or video timestamp metadata.
|
|
1905
|
+
*/
|
|
1906
|
+
export interface Timestamp {
|
|
1907
|
+
indices?: Array<number>;
|
|
1908
|
+
|
|
1909
|
+
seconds?: number;
|
|
1910
|
+
|
|
1911
|
+
/**
|
|
1912
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1913
|
+
* platforms, which differ by reader.
|
|
1914
|
+
*/
|
|
1915
|
+
tag?: Timestamp.Tag;
|
|
1916
|
+
|
|
1917
|
+
text?: string;
|
|
1918
|
+
}
|
|
1919
|
+
|
|
1920
|
+
export namespace Timestamp {
|
|
1921
|
+
/**
|
|
1922
|
+
* X's SmartTag for a cashtag, smarttag or hashtag. Xquik leaves out X's trading
|
|
1923
|
+
* platforms, which differ by reader.
|
|
1924
|
+
*/
|
|
1925
|
+
export interface Tag {
|
|
1926
|
+
/**
|
|
1927
|
+
* X's ID for the SmartTag.
|
|
1928
|
+
*/
|
|
1929
|
+
id?: string;
|
|
1930
|
+
|
|
1931
|
+
info?: Tag.Info;
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
export namespace Tag {
|
|
1935
|
+
export interface Info {
|
|
1936
|
+
info?: Info.Info;
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
export namespace Info {
|
|
1940
|
+
export interface Info {
|
|
1941
|
+
/**
|
|
1942
|
+
* Whether X marks the SmartTag active.
|
|
1943
|
+
*/
|
|
1944
|
+
active?: boolean;
|
|
1945
|
+
|
|
1946
|
+
name?: string;
|
|
1947
|
+
|
|
1948
|
+
ticker?: string;
|
|
1949
|
+
}
|
|
1950
|
+
}
|
|
1951
|
+
}
|
|
1952
|
+
}
|
|
1953
|
+
|
|
1954
|
+
/**
|
|
1955
|
+
* Provides shortened, display, and expanded URLs from tweet text.
|
|
1956
|
+
*/
|
|
1957
|
+
export interface URL {
|
|
1958
|
+
display_url?: string;
|
|
1959
|
+
|
|
1960
|
+
expanded_url?: string;
|
|
1961
|
+
|
|
1962
|
+
indices?: Array<number>;
|
|
1963
|
+
|
|
1964
|
+
url?: string;
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
/**
|
|
1968
|
+
* Provides profile identity and source offsets for a mention.
|
|
1969
|
+
*/
|
|
1970
|
+
export interface UserMention {
|
|
1971
|
+
screen_name: string;
|
|
1972
|
+
|
|
1973
|
+
id_str?: string;
|
|
1974
|
+
|
|
1975
|
+
indices?: Array<number>;
|
|
1976
|
+
|
|
1977
|
+
name?: string;
|
|
1978
|
+
}
|
|
1979
|
+
}
|
|
1980
|
+
|
|
1981
|
+
export interface InlineMedia {
|
|
1982
|
+
/**
|
|
1983
|
+
* Whole number from 0.
|
|
1984
|
+
*/
|
|
1985
|
+
index: number;
|
|
1986
|
+
|
|
1987
|
+
mediaId: string;
|
|
1988
|
+
}
|
|
1989
|
+
|
|
830
1990
|
export interface RichtextTag {
|
|
1991
|
+
/**
|
|
1992
|
+
* Whole number from 0.
|
|
1993
|
+
*/
|
|
831
1994
|
fromIndex: number;
|
|
832
1995
|
|
|
1996
|
+
/**
|
|
1997
|
+
* Whole number from 0.
|
|
1998
|
+
*/
|
|
833
1999
|
toIndex: number;
|
|
834
2000
|
|
|
835
2001
|
types: Array<string>;
|
|
@@ -837,11 +2003,14 @@ export namespace SearchTweet {
|
|
|
837
2003
|
}
|
|
838
2004
|
|
|
839
2005
|
/**
|
|
840
|
-
*
|
|
2006
|
+
* Describes public place metadata on a geotagged tweet.
|
|
841
2007
|
*/
|
|
842
2008
|
export interface Place {
|
|
843
2009
|
id?: string;
|
|
844
2010
|
|
|
2011
|
+
/**
|
|
2012
|
+
* Public metadata whose fields are defined by X.
|
|
2013
|
+
*/
|
|
845
2014
|
boundingBox?: { [key: string]: unknown };
|
|
846
2015
|
|
|
847
2016
|
country?: string;
|
|
@@ -861,61 +2030,301 @@ export namespace SearchTweet {
|
|
|
861
2030
|
* Engagement counts retained from a prior tweet edit.
|
|
862
2031
|
*/
|
|
863
2032
|
export interface PreviousCounts {
|
|
2033
|
+
/**
|
|
2034
|
+
* Whole number from 0.
|
|
2035
|
+
*/
|
|
864
2036
|
bookmarkCount?: number;
|
|
865
2037
|
|
|
866
|
-
|
|
2038
|
+
/**
|
|
2039
|
+
* Whole number from 0.
|
|
2040
|
+
*/
|
|
2041
|
+
likeCount?: number;
|
|
2042
|
+
|
|
2043
|
+
/**
|
|
2044
|
+
* Whole number from 0.
|
|
2045
|
+
*/
|
|
2046
|
+
quoteCount?: number;
|
|
2047
|
+
|
|
2048
|
+
/**
|
|
2049
|
+
* Whole number from 0.
|
|
2050
|
+
*/
|
|
2051
|
+
replyCount?: number;
|
|
2052
|
+
|
|
2053
|
+
/**
|
|
2054
|
+
* Whole number from 0.
|
|
2055
|
+
*/
|
|
2056
|
+
retweetCount?: number;
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
/**
|
|
2060
|
+
* The quoted post's link, kept when X withholds that post.
|
|
2061
|
+
*/
|
|
2062
|
+
export interface QuotedTweetPermalink {
|
|
2063
|
+
displayUrl?: string;
|
|
2064
|
+
|
|
2065
|
+
expandedUrl?: string;
|
|
2066
|
+
|
|
2067
|
+
url?: string;
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
/**
|
|
2071
|
+
* Why X shows no quoted post. Omitted when X names no reason, as its legacy
|
|
2072
|
+
* answers never do.
|
|
2073
|
+
*/
|
|
2074
|
+
export interface QuotedTweetUnavailable {
|
|
2075
|
+
/**
|
|
2076
|
+
* X's reason, such as `Suspended` for a suspended author or `Protected` for an
|
|
2077
|
+
* author who protects their posts.
|
|
2078
|
+
*/
|
|
2079
|
+
reason: string;
|
|
2080
|
+
}
|
|
2081
|
+
|
|
2082
|
+
/**
|
|
2083
|
+
* Public post & user this reaction references.
|
|
2084
|
+
*/
|
|
2085
|
+
export interface ReactionContext {
|
|
2086
|
+
/**
|
|
2087
|
+
* Referenced post ID.
|
|
2088
|
+
*/
|
|
2089
|
+
reactedToPostId?: string;
|
|
2090
|
+
|
|
2091
|
+
/**
|
|
2092
|
+
* Public X profile.
|
|
2093
|
+
*/
|
|
2094
|
+
reactedToUser?: Shared.UserProfile;
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
/**
|
|
2098
|
+
* Game metadata attached to this post.
|
|
2099
|
+
*/
|
|
2100
|
+
export interface SportsContext {
|
|
2101
|
+
/**
|
|
2102
|
+
* Teams & reported scores.
|
|
2103
|
+
*/
|
|
2104
|
+
competitors?: Array<SportsContext.Competitor>;
|
|
2105
|
+
|
|
2106
|
+
/**
|
|
2107
|
+
* Game ID.
|
|
2108
|
+
*/
|
|
2109
|
+
gameId?: string;
|
|
2110
|
+
|
|
2111
|
+
/**
|
|
2112
|
+
* League ID.
|
|
2113
|
+
*/
|
|
2114
|
+
league?: string;
|
|
2115
|
+
|
|
2116
|
+
/**
|
|
2117
|
+
* Scheduled Unix milliseconds, retaining the source type.
|
|
2118
|
+
*/
|
|
2119
|
+
scheduledAtMs?: number | string;
|
|
2120
|
+
|
|
2121
|
+
/**
|
|
2122
|
+
* Reported game state.
|
|
2123
|
+
*/
|
|
2124
|
+
state?: string;
|
|
2125
|
+
|
|
2126
|
+
/**
|
|
2127
|
+
* Game progress text.
|
|
2128
|
+
*/
|
|
2129
|
+
statusText?: string;
|
|
2130
|
+
|
|
2131
|
+
/**
|
|
2132
|
+
* Game title.
|
|
2133
|
+
*/
|
|
2134
|
+
title?: string;
|
|
2135
|
+
|
|
2136
|
+
/**
|
|
2137
|
+
* Game link.
|
|
2138
|
+
*/
|
|
2139
|
+
url?: string;
|
|
2140
|
+
}
|
|
2141
|
+
|
|
2142
|
+
export namespace SportsContext {
|
|
2143
|
+
export interface Competitor {
|
|
2144
|
+
/**
|
|
2145
|
+
* Team abbreviation.
|
|
2146
|
+
*/
|
|
2147
|
+
abbreviation?: string;
|
|
2148
|
+
|
|
2149
|
+
/**
|
|
2150
|
+
* Team display color.
|
|
2151
|
+
*/
|
|
2152
|
+
color?: string;
|
|
2153
|
+
|
|
2154
|
+
/**
|
|
2155
|
+
* Logo for dark backgrounds.
|
|
2156
|
+
*/
|
|
2157
|
+
darkLogoUrl?: string;
|
|
2158
|
+
|
|
2159
|
+
/**
|
|
2160
|
+
* Active competitor.
|
|
2161
|
+
*/
|
|
2162
|
+
isActive?: boolean;
|
|
2163
|
+
|
|
2164
|
+
/**
|
|
2165
|
+
* Winning competitor.
|
|
2166
|
+
*/
|
|
2167
|
+
isWinner?: boolean;
|
|
2168
|
+
|
|
2169
|
+
/**
|
|
2170
|
+
* Logo for light backgrounds.
|
|
2171
|
+
*/
|
|
2172
|
+
logoUrl?: string;
|
|
2173
|
+
|
|
2174
|
+
/**
|
|
2175
|
+
* Team name.
|
|
2176
|
+
*/
|
|
2177
|
+
name?: string;
|
|
2178
|
+
|
|
2179
|
+
/**
|
|
2180
|
+
* Score display text.
|
|
2181
|
+
*/
|
|
2182
|
+
score?: string;
|
|
2183
|
+
|
|
2184
|
+
/**
|
|
2185
|
+
* Team ID.
|
|
2186
|
+
*/
|
|
2187
|
+
teamId?: string;
|
|
2188
|
+
}
|
|
2189
|
+
}
|
|
2190
|
+
|
|
2191
|
+
/**
|
|
2192
|
+
* The Subscriber badge X shows on a reply. The reply's author subscribes to the
|
|
2193
|
+
* creator who started the conversation. Omitted on a post without the badge.
|
|
2194
|
+
*/
|
|
2195
|
+
export interface SubscriberBadge {
|
|
2196
|
+
/**
|
|
2197
|
+
* Account ID of the creator the author subscribes to.
|
|
2198
|
+
*/
|
|
2199
|
+
creatorId: string;
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
export interface TextHighlight {
|
|
2203
|
+
/**
|
|
2204
|
+
* The first code point after the match.
|
|
2205
|
+
*/
|
|
2206
|
+
endIndex: number;
|
|
2207
|
+
|
|
2208
|
+
/**
|
|
2209
|
+
* The first code point of the match.
|
|
2210
|
+
*/
|
|
2211
|
+
startIndex: number;
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
/**
|
|
2215
|
+
* Public visibility notice attached to an available tweet.
|
|
2216
|
+
*/
|
|
2217
|
+
export interface Tombstone {
|
|
2218
|
+
text?: Tombstone.Text;
|
|
2219
|
+
|
|
2220
|
+
/**
|
|
2221
|
+
* Visibility notice type.
|
|
2222
|
+
*/
|
|
2223
|
+
type?: string;
|
|
2224
|
+
}
|
|
2225
|
+
|
|
2226
|
+
export namespace Tombstone {
|
|
2227
|
+
export interface Text {
|
|
2228
|
+
entities?: Array<Text.Entity>;
|
|
2229
|
+
|
|
2230
|
+
/**
|
|
2231
|
+
* Right-to-left text direction.
|
|
2232
|
+
*/
|
|
2233
|
+
rtl?: boolean;
|
|
2234
|
+
|
|
2235
|
+
/**
|
|
2236
|
+
* Human-readable notice text.
|
|
2237
|
+
*/
|
|
2238
|
+
text?: string;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
export namespace Text {
|
|
2242
|
+
export interface Entity {
|
|
2243
|
+
/**
|
|
2244
|
+
* Whole number from 0.
|
|
2245
|
+
*/
|
|
2246
|
+
fromIndex?: number;
|
|
2247
|
+
|
|
2248
|
+
ref?: Entity.Ref;
|
|
867
2249
|
|
|
868
|
-
|
|
2250
|
+
/**
|
|
2251
|
+
* Whole number from 0.
|
|
2252
|
+
*/
|
|
2253
|
+
toIndex?: number;
|
|
2254
|
+
}
|
|
869
2255
|
|
|
870
|
-
|
|
2256
|
+
export namespace Entity {
|
|
2257
|
+
export interface Ref {
|
|
2258
|
+
type?: string;
|
|
871
2259
|
|
|
872
|
-
|
|
2260
|
+
url?: string;
|
|
2261
|
+
|
|
2262
|
+
urlType?: string;
|
|
2263
|
+
}
|
|
2264
|
+
}
|
|
2265
|
+
}
|
|
873
2266
|
}
|
|
874
2267
|
}
|
|
875
2268
|
|
|
876
2269
|
/**
|
|
877
|
-
*
|
|
2270
|
+
* Tweet media.
|
|
878
2271
|
*/
|
|
879
2272
|
export interface TweetMedia {
|
|
880
2273
|
/**
|
|
881
|
-
*
|
|
2274
|
+
* Preview URL.
|
|
882
2275
|
*/
|
|
883
2276
|
mediaUrl: string;
|
|
884
2277
|
|
|
885
2278
|
type: 'photo' | 'video' | 'animated_gif';
|
|
886
2279
|
|
|
887
2280
|
/**
|
|
888
|
-
*
|
|
2281
|
+
* Tweet media link.
|
|
889
2282
|
*/
|
|
890
2283
|
url: string;
|
|
891
2284
|
|
|
892
2285
|
/**
|
|
893
|
-
*
|
|
2286
|
+
* Media entity ID.
|
|
894
2287
|
*/
|
|
895
2288
|
id?: string;
|
|
896
2289
|
|
|
897
2290
|
/**
|
|
898
|
-
*
|
|
2291
|
+
* Adult-content warning.
|
|
2292
|
+
*/
|
|
2293
|
+
adultContent?: boolean;
|
|
2294
|
+
|
|
2295
|
+
/**
|
|
2296
|
+
* Direct download permission.
|
|
899
2297
|
*/
|
|
900
2298
|
allowDownload?: boolean;
|
|
901
2299
|
|
|
902
2300
|
/**
|
|
903
|
-
* Accessibility text
|
|
2301
|
+
* Accessibility text.
|
|
904
2302
|
*/
|
|
905
2303
|
altText?: string;
|
|
906
2304
|
|
|
907
2305
|
/**
|
|
908
|
-
* Video
|
|
2306
|
+
* Video width and height ratio.
|
|
909
2307
|
*/
|
|
910
2308
|
aspectRatio?: Array<number>;
|
|
911
2309
|
|
|
912
2310
|
/**
|
|
913
|
-
*
|
|
2311
|
+
* Why X made the media unavailable, such as `Dmcaed` after a copyright report.
|
|
2312
|
+
* Omitted on available media.
|
|
2313
|
+
*/
|
|
2314
|
+
availabilityReason?: string;
|
|
2315
|
+
|
|
2316
|
+
/**
|
|
2317
|
+
* Availability state, such as `Available` or `Unavailable`.
|
|
914
2318
|
*/
|
|
915
2319
|
availabilityStatus?: string;
|
|
916
2320
|
|
|
917
2321
|
/**
|
|
918
|
-
*
|
|
2322
|
+
* Media description.
|
|
2323
|
+
*/
|
|
2324
|
+
description?: string;
|
|
2325
|
+
|
|
2326
|
+
/**
|
|
2327
|
+
* Display URL.
|
|
919
2328
|
*/
|
|
920
2329
|
displayUrl?: string;
|
|
921
2330
|
|
|
@@ -925,27 +2334,47 @@ export interface TweetMedia {
|
|
|
925
2334
|
durationMillis?: number;
|
|
926
2335
|
|
|
927
2336
|
/**
|
|
928
|
-
*
|
|
2337
|
+
* Embeddable status.
|
|
2338
|
+
*/
|
|
2339
|
+
embeddable?: boolean;
|
|
2340
|
+
|
|
2341
|
+
/**
|
|
2342
|
+
* Expanded media URL.
|
|
929
2343
|
*/
|
|
930
2344
|
expandedUrl?: string;
|
|
931
2345
|
|
|
932
2346
|
/**
|
|
933
|
-
* Face
|
|
2347
|
+
* Face crop rectangles by size.
|
|
934
2348
|
*/
|
|
935
2349
|
faceRects?: { [key: string]: Array<TweetMedia.FaceRect> };
|
|
936
2350
|
|
|
937
2351
|
/**
|
|
938
|
-
* Suggested image crops
|
|
2352
|
+
* Suggested image crops.
|
|
939
2353
|
*/
|
|
940
2354
|
focusRects?: Array<TweetMedia.FocusRect>;
|
|
941
2355
|
|
|
942
2356
|
/**
|
|
943
|
-
*
|
|
2357
|
+
* Graphic-violence warning.
|
|
2358
|
+
*/
|
|
2359
|
+
graphicViolence?: boolean;
|
|
2360
|
+
|
|
2361
|
+
/**
|
|
2362
|
+
* Prompt a Grok image came from. Absent on other media & when X sends no prompt.
|
|
2363
|
+
*/
|
|
2364
|
+
grokImageAnnotation?: TweetMedia.GrokImageAnnotation;
|
|
2365
|
+
|
|
2366
|
+
/**
|
|
2367
|
+
* Grok post ID associated with the media.
|
|
2368
|
+
*/
|
|
2369
|
+
grokPostId?: string;
|
|
2370
|
+
|
|
2371
|
+
/**
|
|
2372
|
+
* Original height.
|
|
944
2373
|
*/
|
|
945
2374
|
height?: number;
|
|
946
2375
|
|
|
947
2376
|
/**
|
|
948
|
-
*
|
|
2377
|
+
* Tweet text offsets.
|
|
949
2378
|
*/
|
|
950
2379
|
indices?: Array<number>;
|
|
951
2380
|
|
|
@@ -955,66 +2384,162 @@ export interface TweetMedia {
|
|
|
955
2384
|
mediaKey?: string;
|
|
956
2385
|
|
|
957
2386
|
/**
|
|
958
|
-
*
|
|
2387
|
+
* Monetization status.
|
|
959
2388
|
*/
|
|
960
2389
|
monetizable?: boolean;
|
|
961
2390
|
|
|
2391
|
+
otherSensitiveContent?: boolean;
|
|
2392
|
+
|
|
962
2393
|
/**
|
|
963
2394
|
* Named media renditions and resize modes.
|
|
964
2395
|
*/
|
|
965
2396
|
sizes?: { [key: string]: TweetMedia.Sizes };
|
|
966
2397
|
|
|
967
2398
|
/**
|
|
968
|
-
*
|
|
2399
|
+
* Source tweet ID for copied media.
|
|
2400
|
+
*/
|
|
2401
|
+
sourceStatusId?: string;
|
|
2402
|
+
|
|
2403
|
+
/**
|
|
2404
|
+
* The account that first posted the media. Some reads carry only its name, picture
|
|
2405
|
+
* & badges.
|
|
2406
|
+
*/
|
|
2407
|
+
sourceUser?: UserProfile;
|
|
2408
|
+
|
|
2409
|
+
/**
|
|
2410
|
+
* Source profile ID for copied media.
|
|
2411
|
+
*/
|
|
2412
|
+
sourceUserId?: string;
|
|
2413
|
+
|
|
2414
|
+
/**
|
|
2415
|
+
* Public profiles tagged in the media.
|
|
2416
|
+
*/
|
|
2417
|
+
tags?: Array<TweetMedia.Tag>;
|
|
2418
|
+
|
|
2419
|
+
/**
|
|
2420
|
+
* Media title.
|
|
2421
|
+
*/
|
|
2422
|
+
title?: string;
|
|
2423
|
+
|
|
2424
|
+
/**
|
|
2425
|
+
* Video encodings in source order.
|
|
969
2426
|
*/
|
|
970
2427
|
videoVariants?: Array<TweetMedia.VideoVariant>;
|
|
971
2428
|
|
|
972
2429
|
/**
|
|
973
|
-
*
|
|
2430
|
+
* Public destination URL.
|
|
2431
|
+
*/
|
|
2432
|
+
visitSiteUrl?: string;
|
|
2433
|
+
|
|
2434
|
+
/**
|
|
2435
|
+
* Public media action URL.
|
|
2436
|
+
*/
|
|
2437
|
+
watchNowUrl?: string;
|
|
2438
|
+
|
|
2439
|
+
/**
|
|
2440
|
+
* Original width.
|
|
974
2441
|
*/
|
|
975
2442
|
width?: number;
|
|
976
2443
|
}
|
|
977
2444
|
|
|
978
2445
|
export namespace TweetMedia {
|
|
979
2446
|
export interface FaceRect {
|
|
2447
|
+
/**
|
|
2448
|
+
* Whole number from 0.
|
|
2449
|
+
*/
|
|
980
2450
|
h: number;
|
|
981
2451
|
|
|
2452
|
+
/**
|
|
2453
|
+
* Whole number from 0.
|
|
2454
|
+
*/
|
|
982
2455
|
w: number;
|
|
983
2456
|
|
|
2457
|
+
/**
|
|
2458
|
+
* Whole number from 0.
|
|
2459
|
+
*/
|
|
984
2460
|
x: number;
|
|
985
2461
|
|
|
2462
|
+
/**
|
|
2463
|
+
* Whole number from 0.
|
|
2464
|
+
*/
|
|
986
2465
|
y: number;
|
|
987
2466
|
}
|
|
988
2467
|
|
|
989
2468
|
export interface FocusRect {
|
|
2469
|
+
/**
|
|
2470
|
+
* Whole number from 0.
|
|
2471
|
+
*/
|
|
990
2472
|
h: number;
|
|
991
2473
|
|
|
2474
|
+
/**
|
|
2475
|
+
* Whole number from 0.
|
|
2476
|
+
*/
|
|
992
2477
|
w: number;
|
|
993
2478
|
|
|
2479
|
+
/**
|
|
2480
|
+
* Whole number from 0.
|
|
2481
|
+
*/
|
|
994
2482
|
x: number;
|
|
995
2483
|
|
|
2484
|
+
/**
|
|
2485
|
+
* Whole number from 0.
|
|
2486
|
+
*/
|
|
996
2487
|
y: number;
|
|
997
2488
|
}
|
|
998
2489
|
|
|
2490
|
+
/**
|
|
2491
|
+
* Prompt a Grok image came from. Absent on other media & when X sends no prompt.
|
|
2492
|
+
*/
|
|
2493
|
+
export interface GrokImageAnnotation {
|
|
2494
|
+
/**
|
|
2495
|
+
* Prompt the image came from.
|
|
2496
|
+
*/
|
|
2497
|
+
prompt?: string;
|
|
2498
|
+
|
|
2499
|
+
/**
|
|
2500
|
+
* Grok's longer rewrite of the prompt.
|
|
2501
|
+
*/
|
|
2502
|
+
upsampledPrompt?: string;
|
|
2503
|
+
}
|
|
2504
|
+
|
|
999
2505
|
export interface Sizes {
|
|
2506
|
+
/**
|
|
2507
|
+
* Whole number from 0.
|
|
2508
|
+
*/
|
|
1000
2509
|
h: number;
|
|
1001
2510
|
|
|
1002
2511
|
resize: string;
|
|
1003
2512
|
|
|
2513
|
+
/**
|
|
2514
|
+
* Whole number from 0.
|
|
2515
|
+
*/
|
|
1004
2516
|
w: number;
|
|
1005
2517
|
}
|
|
1006
2518
|
|
|
2519
|
+
export interface Tag {
|
|
2520
|
+
name?: string;
|
|
2521
|
+
|
|
2522
|
+
screen_name?: string;
|
|
2523
|
+
|
|
2524
|
+
type?: string;
|
|
2525
|
+
|
|
2526
|
+
user_id?: string;
|
|
2527
|
+
}
|
|
2528
|
+
|
|
1007
2529
|
export interface VideoVariant {
|
|
1008
2530
|
contentType: string;
|
|
1009
2531
|
|
|
1010
2532
|
url: string;
|
|
1011
2533
|
|
|
2534
|
+
/**
|
|
2535
|
+
* Whole number from 0.
|
|
2536
|
+
*/
|
|
1012
2537
|
bitrate?: number;
|
|
1013
2538
|
}
|
|
1014
2539
|
}
|
|
1015
2540
|
|
|
1016
2541
|
/**
|
|
1017
|
-
* X
|
|
2542
|
+
* Public X profile.
|
|
1018
2543
|
*/
|
|
1019
2544
|
export interface UserProfile {
|
|
1020
2545
|
id: string;
|
|
@@ -1023,36 +2548,145 @@ export interface UserProfile {
|
|
|
1023
2548
|
|
|
1024
2549
|
username: string;
|
|
1025
2550
|
|
|
2551
|
+
/**
|
|
2552
|
+
* Null when X shows no label.
|
|
2553
|
+
*/
|
|
2554
|
+
accountBasedIn?: UserProfile.AccountBasedIn | null;
|
|
2555
|
+
|
|
2556
|
+
/**
|
|
2557
|
+
* False when X notes accountBasedIn may be inaccurate.
|
|
2558
|
+
*/
|
|
2559
|
+
accountBasedInAccurate?: boolean;
|
|
2560
|
+
|
|
2561
|
+
/**
|
|
2562
|
+
* True when X withheld accountBasedIn from this read. Retry later.
|
|
2563
|
+
*/
|
|
2564
|
+
accountBasedInUnavailable?: boolean;
|
|
2565
|
+
|
|
2566
|
+
/**
|
|
2567
|
+
* X Ads services the account uses, such as `analytics`, `media_studio` or `smb`.
|
|
2568
|
+
* Empty for an account without ads.
|
|
2569
|
+
*/
|
|
2570
|
+
advertiserAccountServiceLevels?: Array<string>;
|
|
2571
|
+
|
|
2572
|
+
/**
|
|
2573
|
+
* The account's X Ads type. `none` for an account without ads, or
|
|
2574
|
+
* `promotable_user` for one that may run them.
|
|
2575
|
+
*/
|
|
2576
|
+
advertiserAccountType?: string;
|
|
2577
|
+
|
|
1026
2578
|
/**
|
|
1027
2579
|
* Organization affiliation label shown on an X profile.
|
|
1028
2580
|
*/
|
|
1029
2581
|
affiliatesHighlightedLabel?: UserProfile.AffiliatesHighlightedLabel;
|
|
1030
2582
|
|
|
2583
|
+
/**
|
|
2584
|
+
* Handle of the organization X shows the account is affiliated with, from its
|
|
2585
|
+
* About page.
|
|
2586
|
+
*/
|
|
2587
|
+
affiliateUsername?: string;
|
|
2588
|
+
|
|
1031
2589
|
automatedBy?: string;
|
|
1032
2590
|
|
|
2591
|
+
/**
|
|
2592
|
+
* The parts of the birthday the account made public.
|
|
2593
|
+
*/
|
|
2594
|
+
birthdate?: UserProfile.Birthdate;
|
|
2595
|
+
|
|
2596
|
+
/**
|
|
2597
|
+
* Whole number from 0.
|
|
2598
|
+
*/
|
|
1033
2599
|
businessAccountAffiliatesCount?: number;
|
|
1034
2600
|
|
|
2601
|
+
/**
|
|
2602
|
+
* Whether X treats the profile as a business profile. `none` or `enabled`.
|
|
2603
|
+
*/
|
|
2604
|
+
businessProfileState?: string;
|
|
2605
|
+
|
|
1035
2606
|
/**
|
|
1036
2607
|
* Community role when returned by community member reads
|
|
1037
2608
|
*/
|
|
1038
2609
|
communityRole?: string;
|
|
1039
2610
|
|
|
2611
|
+
/**
|
|
2612
|
+
* How the account first connected to X.
|
|
2613
|
+
*/
|
|
2614
|
+
connectedVia?: string;
|
|
2615
|
+
|
|
2616
|
+
/**
|
|
2617
|
+
* False when X notes that country may be inaccurate.
|
|
2618
|
+
*/
|
|
2619
|
+
connectedViaAccurate?: boolean;
|
|
2620
|
+
|
|
2621
|
+
/**
|
|
2622
|
+
* Emails, phone numbers & links the account publishes on its own profile. Omitted
|
|
2623
|
+
* when it publishes none.
|
|
2624
|
+
*/
|
|
2625
|
+
contactInfo?: UserProfile.ContactInfo;
|
|
2626
|
+
|
|
1040
2627
|
coverPicture?: string;
|
|
1041
2628
|
|
|
2629
|
+
/**
|
|
2630
|
+
* Account creation time.
|
|
2631
|
+
*/
|
|
1042
2632
|
createdAt?: string;
|
|
1043
2633
|
|
|
2634
|
+
/**
|
|
2635
|
+
* Whole number from 0.
|
|
2636
|
+
*/
|
|
1044
2637
|
creatorSubscriptionsCount?: number;
|
|
1045
2638
|
|
|
2639
|
+
/**
|
|
2640
|
+
* Whether the profile keeps X's default theme.
|
|
2641
|
+
*/
|
|
2642
|
+
defaultProfile?: boolean;
|
|
2643
|
+
|
|
2644
|
+
/**
|
|
2645
|
+
* Whether the profile keeps X's default avatar.
|
|
2646
|
+
*/
|
|
2647
|
+
defaultProfileImage?: boolean;
|
|
2648
|
+
|
|
1046
2649
|
description?: string;
|
|
1047
2650
|
|
|
2651
|
+
/**
|
|
2652
|
+
* First email the account publishes on its profile, lowercased. Omitted when it
|
|
2653
|
+
* publishes none.
|
|
2654
|
+
*/
|
|
2655
|
+
email?: string;
|
|
2656
|
+
|
|
2657
|
+
/**
|
|
2658
|
+
* Followers X counts as fast followers.
|
|
2659
|
+
*/
|
|
2660
|
+
fastFollowersCount?: number;
|
|
2661
|
+
|
|
1048
2662
|
favouritesCount?: number;
|
|
1049
2663
|
|
|
2664
|
+
/**
|
|
2665
|
+
* Omitted when X sends no count, as for the account that first posted reused
|
|
2666
|
+
* media.
|
|
2667
|
+
*/
|
|
1050
2668
|
followers?: number;
|
|
1051
2669
|
|
|
1052
2670
|
following?: number;
|
|
1053
2671
|
|
|
2672
|
+
/**
|
|
2673
|
+
* Whether the profile may add a location to posts.
|
|
2674
|
+
*/
|
|
2675
|
+
geoEnabled?: boolean;
|
|
2676
|
+
|
|
2677
|
+
/**
|
|
2678
|
+
* Public profile bio translation returned by X
|
|
2679
|
+
*/
|
|
2680
|
+
grokTranslatedBio?: { [key: string]: unknown };
|
|
2681
|
+
|
|
1054
2682
|
hasCustomTimelines?: boolean;
|
|
1055
2683
|
|
|
2684
|
+
/**
|
|
2685
|
+
* Whether the profile filled X's extended fields, such as a birth date. True or
|
|
2686
|
+
* false.
|
|
2687
|
+
*/
|
|
2688
|
+
hasExtendedProfile?: boolean;
|
|
2689
|
+
|
|
1056
2690
|
hasGraduatedAccess?: boolean;
|
|
1057
2691
|
|
|
1058
2692
|
hasHiddenSubscriptionsOnProfile?: boolean;
|
|
@@ -1063,7 +2697,7 @@ export interface UserProfile {
|
|
|
1063
2697
|
highlightsInfo?: UserProfile.HighlightsInfo;
|
|
1064
2698
|
|
|
1065
2699
|
/**
|
|
1066
|
-
* Identity verification
|
|
2700
|
+
* Identity verification X shows on the profile & its About page.
|
|
1067
2701
|
*/
|
|
1068
2702
|
identityVerification?: UserProfile.IdentityVerification;
|
|
1069
2703
|
|
|
@@ -1076,6 +2710,11 @@ export interface UserProfile {
|
|
|
1076
2710
|
|
|
1077
2711
|
isProfileTranslatable?: boolean;
|
|
1078
2712
|
|
|
2713
|
+
/**
|
|
2714
|
+
* Whether the account turned on X's translation of its posts. True or false.
|
|
2715
|
+
*/
|
|
2716
|
+
isTranslationEnabled?: boolean;
|
|
2717
|
+
|
|
1079
2718
|
isTranslator?: boolean;
|
|
1080
2719
|
|
|
1081
2720
|
/**
|
|
@@ -1083,16 +2722,34 @@ export interface UserProfile {
|
|
|
1083
2722
|
*/
|
|
1084
2723
|
isVerified?: boolean;
|
|
1085
2724
|
|
|
2725
|
+
/**
|
|
2726
|
+
* Public lists that include the profile.
|
|
2727
|
+
*/
|
|
2728
|
+
listedCount?: number;
|
|
2729
|
+
|
|
2730
|
+
/**
|
|
2731
|
+
* Account owner's public profile location text
|
|
2732
|
+
*/
|
|
1086
2733
|
location?: string;
|
|
1087
2734
|
|
|
1088
2735
|
mediaCount?: number;
|
|
1089
2736
|
|
|
2737
|
+
/**
|
|
2738
|
+
* Followers minus fast followers.
|
|
2739
|
+
*/
|
|
2740
|
+
normalFollowersCount?: number;
|
|
2741
|
+
|
|
1090
2742
|
parodyCommentaryFanLabel?: string;
|
|
1091
2743
|
|
|
1092
2744
|
pinnedTweetIds?: Array<string>;
|
|
1093
2745
|
|
|
1094
2746
|
possiblySensitive?: boolean;
|
|
1095
2747
|
|
|
2748
|
+
/**
|
|
2749
|
+
* Professional metadata with category display settings
|
|
2750
|
+
*/
|
|
2751
|
+
professional?: { [key: string]: unknown };
|
|
2752
|
+
|
|
1096
2753
|
/**
|
|
1097
2754
|
* Structured profile bio with entity annotations
|
|
1098
2755
|
*/
|
|
@@ -1120,24 +2777,73 @@ export interface UserProfile {
|
|
|
1120
2777
|
*/
|
|
1121
2778
|
protected?: boolean;
|
|
1122
2779
|
|
|
2780
|
+
/**
|
|
2781
|
+
* UTC repost time with includeRetweetTimestamp. Null if the newest profile page
|
|
2782
|
+
* has no match or lookup failed; otherwise omitted.
|
|
2783
|
+
*/
|
|
2784
|
+
retweetedAt?: string | null;
|
|
2785
|
+
|
|
1123
2786
|
statusesCount?: number;
|
|
1124
2787
|
|
|
2788
|
+
/**
|
|
2789
|
+
* Accounts subscribed to the profile's paid Subscriptions. 0 when it has none.
|
|
2790
|
+
*/
|
|
2791
|
+
subscribersCount?: number;
|
|
2792
|
+
|
|
1125
2793
|
superFollowEligible?: boolean;
|
|
1126
2794
|
|
|
2795
|
+
/**
|
|
2796
|
+
* Whether X marks the subscription profile as active.
|
|
2797
|
+
*/
|
|
2798
|
+
superFollowsUserProfileActive?: boolean;
|
|
2799
|
+
|
|
2800
|
+
/**
|
|
2801
|
+
* Public payment and creator-support handles shown on X.
|
|
2802
|
+
*/
|
|
2803
|
+
tipJar?: UserProfile.TipJar;
|
|
2804
|
+
|
|
1127
2805
|
unavailable?: boolean;
|
|
1128
2806
|
|
|
1129
2807
|
unavailableReason?: string;
|
|
1130
2808
|
|
|
1131
2809
|
url?: string;
|
|
1132
2810
|
|
|
2811
|
+
/**
|
|
2812
|
+
* How often the account changed its username.
|
|
2813
|
+
*/
|
|
2814
|
+
usernameChanges?: UserProfile.UsernameChanges;
|
|
2815
|
+
|
|
2816
|
+
/**
|
|
2817
|
+
* X's text on why the profile is verified, with its links.
|
|
2818
|
+
*/
|
|
2819
|
+
verificationReason?: UserProfile.VerificationReason;
|
|
2820
|
+
|
|
1133
2821
|
verified?: boolean;
|
|
1134
2822
|
|
|
1135
2823
|
verifiedType?: string;
|
|
1136
2824
|
|
|
1137
2825
|
withheldInCountries?: Array<string>;
|
|
2826
|
+
|
|
2827
|
+
/**
|
|
2828
|
+
* Whether X withholds a post or user
|
|
2829
|
+
*/
|
|
2830
|
+
withheldScope?: string;
|
|
1138
2831
|
}
|
|
1139
2832
|
|
|
1140
2833
|
export namespace UserProfile {
|
|
2834
|
+
/**
|
|
2835
|
+
* X's best-effort public label inferred from aggregated account-access IP
|
|
2836
|
+
* addresses. It does not state nationality, residence, identity, registration,
|
|
2837
|
+
* post location, or exact location.
|
|
2838
|
+
*/
|
|
2839
|
+
export interface AccountBasedIn {
|
|
2840
|
+
level: 'country' | 'region';
|
|
2841
|
+
|
|
2842
|
+
observedAt: string;
|
|
2843
|
+
|
|
2844
|
+
value: string;
|
|
2845
|
+
}
|
|
2846
|
+
|
|
1141
2847
|
/**
|
|
1142
2848
|
* Organization affiliation label shown on an X profile.
|
|
1143
2849
|
*/
|
|
@@ -1146,6 +2852,11 @@ export namespace UserProfile {
|
|
|
1146
2852
|
|
|
1147
2853
|
description?: string;
|
|
1148
2854
|
|
|
2855
|
+
/**
|
|
2856
|
+
* Public text, ranges, references, and mention data.
|
|
2857
|
+
*/
|
|
2858
|
+
longDescription?: { [key: string]: unknown };
|
|
2859
|
+
|
|
1149
2860
|
url?: string;
|
|
1150
2861
|
|
|
1151
2862
|
urlType?: string;
|
|
@@ -1155,6 +2866,97 @@ export namespace UserProfile {
|
|
|
1155
2866
|
userLabelType?: string;
|
|
1156
2867
|
}
|
|
1157
2868
|
|
|
2869
|
+
/**
|
|
2870
|
+
* The parts of the birthday the account made public.
|
|
2871
|
+
*/
|
|
2872
|
+
export interface Birthdate {
|
|
2873
|
+
day?: number;
|
|
2874
|
+
|
|
2875
|
+
month?: number;
|
|
2876
|
+
|
|
2877
|
+
year?: number;
|
|
2878
|
+
}
|
|
2879
|
+
|
|
2880
|
+
/**
|
|
2881
|
+
* Emails, phone numbers & links the account publishes on its own profile. Omitted
|
|
2882
|
+
* when it publishes none.
|
|
2883
|
+
*/
|
|
2884
|
+
export interface ContactInfo {
|
|
2885
|
+
/**
|
|
2886
|
+
* Emails in the bio, name or location, lowercased.
|
|
2887
|
+
*/
|
|
2888
|
+
emails?: Array<ContactInfo.Email>;
|
|
2889
|
+
|
|
2890
|
+
/**
|
|
2891
|
+
* The profile's website & the links in its bio.
|
|
2892
|
+
*/
|
|
2893
|
+
links?: Array<ContactInfo.Link>;
|
|
2894
|
+
|
|
2895
|
+
/**
|
|
2896
|
+
* Phone numbers on the profile. Only a spelling that can be nothing else counts.
|
|
2897
|
+
*/
|
|
2898
|
+
phones?: Array<ContactInfo.Phone>;
|
|
2899
|
+
}
|
|
2900
|
+
|
|
2901
|
+
export namespace ContactInfo {
|
|
2902
|
+
export interface Email {
|
|
2903
|
+
/**
|
|
2904
|
+
* The part after the @ sign.
|
|
2905
|
+
*/
|
|
2906
|
+
domain: string;
|
|
2907
|
+
|
|
2908
|
+
/**
|
|
2909
|
+
* Profile field that holds the email.
|
|
2910
|
+
*/
|
|
2911
|
+
source: 'bio' | 'name' | 'location';
|
|
2912
|
+
|
|
2913
|
+
/**
|
|
2914
|
+
* The email address.
|
|
2915
|
+
*/
|
|
2916
|
+
value: string;
|
|
2917
|
+
|
|
2918
|
+
/**
|
|
2919
|
+
* The account's own spelling, sent when it spelled the email out.
|
|
2920
|
+
*/
|
|
2921
|
+
writtenAs?: string;
|
|
2922
|
+
}
|
|
2923
|
+
|
|
2924
|
+
export interface Link {
|
|
2925
|
+
/**
|
|
2926
|
+
* Site the link belongs to, such as `linkedin`, `github` or `telegram`. Any other
|
|
2927
|
+
* site is `website`.
|
|
2928
|
+
*/
|
|
2929
|
+
network: string;
|
|
2930
|
+
|
|
2931
|
+
/**
|
|
2932
|
+
* `url` for the website field, `bio` for a bio link.
|
|
2933
|
+
*/
|
|
2934
|
+
source: 'url' | 'bio';
|
|
2935
|
+
|
|
2936
|
+
/**
|
|
2937
|
+
* The link, as X expands it.
|
|
2938
|
+
*/
|
|
2939
|
+
url: string;
|
|
2940
|
+
}
|
|
2941
|
+
|
|
2942
|
+
export interface Phone {
|
|
2943
|
+
/**
|
|
2944
|
+
* Profile field that holds the number.
|
|
2945
|
+
*/
|
|
2946
|
+
source: 'bio' | 'name' | 'location' | 'url';
|
|
2947
|
+
|
|
2948
|
+
/**
|
|
2949
|
+
* The digits, with a leading + when the account wrote a country code.
|
|
2950
|
+
*/
|
|
2951
|
+
value: string;
|
|
2952
|
+
|
|
2953
|
+
/**
|
|
2954
|
+
* The account's own spelling of the number.
|
|
2955
|
+
*/
|
|
2956
|
+
writtenAs?: string;
|
|
2957
|
+
}
|
|
2958
|
+
}
|
|
2959
|
+
|
|
1158
2960
|
/**
|
|
1159
2961
|
* Profile highlight availability and count metadata.
|
|
1160
2962
|
*/
|
|
@@ -1165,13 +2967,87 @@ export namespace UserProfile {
|
|
|
1165
2967
|
}
|
|
1166
2968
|
|
|
1167
2969
|
/**
|
|
1168
|
-
* Identity verification
|
|
2970
|
+
* Identity verification X shows on the profile & its About page.
|
|
1169
2971
|
*/
|
|
1170
2972
|
export interface IdentityVerification {
|
|
1171
2973
|
description?: string;
|
|
1172
2974
|
|
|
2975
|
+
/**
|
|
2976
|
+
* Whether the owner verified their ID with X.
|
|
2977
|
+
*/
|
|
1173
2978
|
isIdentityVerified?: boolean;
|
|
1174
2979
|
|
|
2980
|
+
/**
|
|
2981
|
+
* When X verified the account, in milliseconds since 1970, as text.
|
|
2982
|
+
*/
|
|
1175
2983
|
verifiedSinceMsec?: string;
|
|
1176
2984
|
}
|
|
2985
|
+
|
|
2986
|
+
/**
|
|
2987
|
+
* Public payment and creator-support handles shown on X.
|
|
2988
|
+
*/
|
|
2989
|
+
export interface TipJar {
|
|
2990
|
+
bandcampHandle?: string;
|
|
2991
|
+
|
|
2992
|
+
bitcoinHandle?: string;
|
|
2993
|
+
|
|
2994
|
+
cashAppHandle?: string;
|
|
2995
|
+
|
|
2996
|
+
ethereumHandle?: string;
|
|
2997
|
+
|
|
2998
|
+
gofundmeHandle?: string;
|
|
2999
|
+
|
|
3000
|
+
isEnabled?: boolean;
|
|
3001
|
+
|
|
3002
|
+
patreonHandle?: string;
|
|
3003
|
+
|
|
3004
|
+
payPalHandle?: string;
|
|
3005
|
+
|
|
3006
|
+
venmoHandle?: string;
|
|
3007
|
+
}
|
|
3008
|
+
|
|
3009
|
+
/**
|
|
3010
|
+
* How often the account changed its username.
|
|
3011
|
+
*/
|
|
3012
|
+
export interface UsernameChanges {
|
|
3013
|
+
/**
|
|
3014
|
+
* Whole number from 0.
|
|
3015
|
+
*/
|
|
3016
|
+
count: number;
|
|
3017
|
+
|
|
3018
|
+
/**
|
|
3019
|
+
* Time of the latest change, omitted when there is none.
|
|
3020
|
+
*/
|
|
3021
|
+
lastChangedAt?: string;
|
|
3022
|
+
}
|
|
3023
|
+
|
|
3024
|
+
/**
|
|
3025
|
+
* X's text on why the profile is verified, with its links.
|
|
3026
|
+
*/
|
|
3027
|
+
export interface VerificationReason {
|
|
3028
|
+
/**
|
|
3029
|
+
* Links inside the text, by character range.
|
|
3030
|
+
*/
|
|
3031
|
+
entities?: Array<VerificationReason.Entity>;
|
|
3032
|
+
|
|
3033
|
+
text?: string;
|
|
3034
|
+
}
|
|
3035
|
+
|
|
3036
|
+
export namespace VerificationReason {
|
|
3037
|
+
export interface Entity {
|
|
3038
|
+
/**
|
|
3039
|
+
* Whole number from 0.
|
|
3040
|
+
*/
|
|
3041
|
+
fromIndex?: number;
|
|
3042
|
+
|
|
3043
|
+
/**
|
|
3044
|
+
* Whole number from 0.
|
|
3045
|
+
*/
|
|
3046
|
+
toIndex?: number;
|
|
3047
|
+
|
|
3048
|
+
url?: string;
|
|
3049
|
+
|
|
3050
|
+
urlType?: string;
|
|
3051
|
+
}
|
|
3052
|
+
}
|
|
1177
3053
|
}
|