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