twitter_api_v2 4.1.0
twitter_api_v2: ^4.1.0 copied to clipboard
The lightweight and powerful wrapper library for Twitter API v2.0 written in Dart language. It works cross-platform.
Release Note #
4.0.2 #
- Fixed the process for response from the
uploadImagemethod so that the rate limit is set correctly. (#447)
4.0.1 #
- The utility has been added to check if the rate has been exceeded or not. You can use these methods from
RateLimitobject. (#444)isExceededisNotExceeded
4.0.0 #
New Feature #
- Supported the feature for getting the rate limit of each endpoints from response. Now you can get
RateLimitobject from response and it haslimitCount,remainingCountandresetAtfields. (#440)
Destructive Change #
-
It was necessary to modify the response structure for endpoints that use
Streamto include aRateLimitobject in each endpoint response. The modified methods are following.connectVolumeStreamconnectFilteredStream
-
Also, methods that previously returned the result of processing as a
boolhave been modified to return aTwitterResponse. This is to have aRateLimitobject as above. So, for example, thecreateLikemethod can also obtain aRateLimitobject, and theboolvalue of the processing result can be obtained from the TwitterResponse'sdatafield.
And now the responses from the modified methods can be used as follows:
import 'package:twitter_api_v2/twitter_api_v2.dart' as v2;
Future<void> main() async {
final twitter = v2.TwitterApi(bearerToken: 'YOUR_TOKEN_HERE');
try {
final response = await twitter.tweetsService.connectFilteredStream();
print(response.rateLimit);
final stream = response.stream;
await for (final event in stream.handleError(print)) {
print(event);
}
} on v2.TwitterException catch (e) {
print(e);
}
}
import 'package:twitter_api_v2/twitter_api_v2.dart' as v2;
Future<void> main() async {
final twitter = v2.TwitterApi(bearerToken: 'YOUR_TOKEN_HERE');
try {
final me = await twitter.usersService.lookupMe();
final tweets = await twitter.tweetsService.searchRecent(query: '#ElonMusk');
final response = await twitter.tweetsService.createLike(
userId: me.data.id,
tweetId: tweets.data.first.id,
);
print(response.rateLimit);
print(response.data); // true or false
} on v2.TwitterException catch (e) {
print(e);
}
}
3.2.3 #
- Refactored the internal process for
MediaService.
3.2.2 #
- Exposed objects below.
MediaServiceUploadedMediaData
3.2.1 #
- Renamed from
MediaService.uploadMediatoMediaService.uploadImage. Also, renamed the parameter fromimageFiletofile. (#427)
3.1.0 #
- The following refactoring was done for the internal processing of the package. There are no disruptive changes resulting from this refactoring. (#419)
- Generic features has been separated into a
corepackage. constis now given to the constructors of all objects that do not require rebuilding after the instance has been created.
- Generic features has been separated into a
3.0.4 #
- The constructor of
RetryConfighas been modified. (#409)- Deprecated
regularIntervalsexponentialBackOffexponentialBackOffAndJitter
- Use instead
ofRegularIntervalsofExponentialBackOffofExponentialBackOffAndJitter
- Deprecated
3.0.3 #
- Fixed the
linkClickCountfield in the following metric objects to be nullable. (#407)OrganicTweetMetricsPrivateTweetMetricsPromotedTweetMetrics
3.0.0 #
- Improved specification of data returned from POST, DELETE, and PUT communication endpoints. The previous specification always returned true regardless of whether the process was successful or not, but now returns false if an
errorsobject exists in the response. (#381)
Breaking Changes #
- Changed return type of
destroyFilteringRulesfromFilteringRuleMetatobool. This is because there is no use for theFilteringRuleMetaobject that was returned after the deletion of a filtering rule in the previous specification. If the deletion succeeds, true is returned; if the deletion fails for some reason, false is returned. (#382)
2.10.0 #
- Fixed to raise
TwitterExceptionif response object cannot be converted to JSON. (#347) - Enforced the specification of access token in
OAuth 2.0orOAuth 1.0amethod when creating an instance ofTwitterApiobject. If either access token is not passed, anArgumentErrorwill be thrown. (#352) - Added
UnauthorizedException. Thrown when unauthorized with the specified access token. (#348) - Added Automatic Retry feature. Automatic retry can be enabled by setting
RetryConfigwhen creating theTwitterApiobject. IfRetryConfigis not passed to theTwitterApiobject, automatic retry will not be triggered. (#251)- Regular Intervals
- Exponential Backoff
- Exponential Backoff and Jitter
2.9.0 #
- Added
stateparameter forSpacesService.search. (#324) - Added
topicFieldsparameters. (#185)- GET /2/spaces/search
- GET /2/spaces
- GET /2/spaces/:id
- GET /2/spaces/by/creator_ids
- Added
SpaceExpansion.topicIds. (#185) - Added
endedelement forSpaceState. (#333) - Removed HTTP status code checking process. With this modification, no exception will be thrown if, for example, you try to retweet a particular tweet and the tweet has already been deleted by its owner. However, a
TwitterExceptionwill still be thrown if there is no Data field in the response. (#329) - Added
RateLimitExceededException. (#331)
2.8.1 #
- Changed the field type of
TweetPollParam'sdurationInMinutestoDurationand changed the name toduration. (#322)
2.8.0 #
Breaking Changes #
- Migration is required for fields that existed in previous versions due to objectification of some of the
createTweetrequest parameters. (#304)- Use
TweetMediaParamobject to specifymediaIdsandtaggedUserIds. - Use
TweetReplyParamobject to specifyinReplyToTweetId
- Use
- Migration is required for
createFilteringRules. (#312)- Use
FilteringRuleParamobject to specify filtering rules.
- Use
Bug Fixes #
- Removed
expansionsparameter fromcreateTweetmethod because this is not the supported parameter. (#288)
New Features #
- Added
timeoutoption toTwitterApi. The default timeout duration is 10 seconds. (#252) - Added
sortOrderparameter toTweetsService.searchRecentandTweetsService.searchAll. (#284) - Added
startTimeandendTimeparameters. (#240)- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweets
- GET /2/tweets/counts/all
- GET /2/tweets/counts/recent
- Added
variantsfield toMediaDataobject. You can get this field by usingMediaField.variants. (#265) - Added
sinceTweetIdparameter. (#285)- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- Added
untilTweetIdparameter. (#286)- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- Added
directMessageDeepLinkparameter tocreateTweet. (#279) - Added
geoparameter tocreateTweet. (#280)(#304) - Added
pollparameter tocreateTweet. (#282)(#304) - Added objects for request parameter of
createTweet. (#304)TweetMediaParamTweetGeoParamTweetPollParamTweetReplyParam
- Added
sinceTweetIdanduntilTweetIdparameters tocountAllandcountRecent. (#311)- GET /2/tweets/counts/all
- GET /2/tweets/counts/recent
- Added
granularityparameter tocountAllandcountRecent. (#310)- GET /2/tweets/counts/all
- GET /2/tweets/counts/recent
- Added
sinceTweetIdanduntilTweetIdparameters toTweetsService.lookupTweets. (#309) - Added
excludesparameter toTweetsService.lookupTweets. (#308) - Added
sinceTweetIdanduntilTweetIdparameters tolookupHomeTimeline. (#307) - Added
excludesparameter tolookupHomeTimeline. (#306) - Added
sinceTweetIdanduntilTweetIdparameters tolookupMentions. (#305)
2.7.0 #
- Added metrics field for
TweetField. (#268)non_public_metricsorganic_metricspromoted_metrics
- The
toJsonmethod of the response data object has been improved. Nested objects are now converted to JSON at the same time as the parent object'stoJson. (#272) - Added
toJsonmethod toTwitterResponse. (#274)
2.6.0 #
- Added
FilteredStreamResponseas the return type ofFiltered Streamendpoint. And now we can see the IDs and tags of the rules matched in the streaming from theFilteredStreamResponse.matchingRulesfield. TheFilteredStreamResponseextendsTwitterResponse, so there are no destructive changes. (#226) - Added translated READMEs. (#213)
- Japanese
- French
- Vietnamese
- Bengali
- Added
mediaFieldsarguments. (#183)- GET /2/users/:id/bookmarks
- GET /2/tweets/search/stream
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- GET /2/tweets/:id/quote_tweets
- GET /2/tweets/:id/retweeted_by
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweets
- GET /2/tweets
- GET /2/tweets/:id
- GET /2/tweets/sample/stream
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- Added
mediaFieldsarguments. (#186)- GET /2/users/:id/followed_lists
- GET /2/lists/:id
- GET /2/users/:id/owned_lists
- GET /2/users/:id/list_memberships
- GET /2/users/:id/pinned_lists
2.5.0 #
- Added
spaceFieldsargument. (#184)- GET /2/spaces/search
- GET /2/spaces
- GET /2/spaces/:id
- GET /2/spaces/by/creator_ids
- Added
pollFieldsargument. (#181)- GET /2/users/:id/bookmarks
- GET /2/tweets/search/stream
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- GET /2/tweets/:id/quote_tweets
- GET /2/tweets/:id/retweeted_by
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweets
- GET /2/tweets
- GET /2/tweets/:id
- GET /2/tweets/sample/stream
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- Added
placeFieldsargument. (#182)- GET /2/users/:id/bookmarks
- GET /2/tweets/search/stream
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- GET /2/tweets/:id/quote_tweets
- GET /2/tweets/:id/retweeted_by
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweets
- GET /2/tweets
- GET /2/tweets/:id
- GET /2/tweets/sample/stream
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
PlaceDataclass is migrated toGeoclass, and updatedPlaceDataparameters.PlaceCoordinatesclass is migrated toGeoCoordinatesclass, and updatedPlaceCoordinatesparameters.- Changed the type of
langfield fromString?toTweetLanguage?. (#207)
2.4.2 #
- Fixed field names in
UserData. (#202)- From
protectedtoisProtected. - From
verifiedtoisVerified.
- From
2.4.0 #
- Added
userFieldsargument. (#180)- GET /2/users/:id/bookmarks
- GET /2/tweets/search/stream
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- GET /2/tweets/:id/quote_tweets
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweetsGET /2/tweets
- GET /2/tweets/:id
- GET /2/tweets/sample/stream
- GET /2/users/:id/blocking
- GET /2/users/:id/followers
- GET /2/users/:id/following
- GET /2/users/:id/muting
- GET /2/users
- GET /2/users/:id
- GET /2/users/by
- GET /2/users/by/username/:username
- GET /2/users/me
- GET /2/spaces/search
- GET /2/spaces
- GET /2/spaces/:id
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- GET /2/spaces/by/creator_ids
- GET /2/lists/:id/tweets
- GET /2/lists/:id/followers
- GET /2/users/:id/followed_lists
- GET /2/lists/:id
- GET /2/users/:id/owned_lists
- GET /2/lists/:id/members
- GET /2/users/:id/list_memberships
- GET /2/users/:id/pinned_lists
2.3.0 #
- Added
tweetFieldsargument. (#179)- GET /2/users/:id/bookmarks
- GET /2/tweets/search/stream
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- GET /2/tweets/:id/quote_tweets
- GET /2/tweets/:id/retweeted_by
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- GET /2/users/:id/mentions
- GET /2/users/:id/timelines/reverse_chronological
- GET /2/users/:id/tweets
- GET /2/tweets
- GET /2/tweets/:id
- GET /2/tweets/sample/stream
- GET /2/users/:id/blocking
- GET /2/users/:id/followers
- GET /2/users/:id/following
- GET /2/users/:id/muting
- GET /2/users
- GET /2/users/:id
- GET /2/users/by
- GET /2/users/by/username/:username
- GET /2/users/me
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- GET /2/lists/:id/tweets
- GET /2/lists/:id/members
- Changed object name from
ReferencedTweetDatatoReferencedTweet. - Changed field type of
typeinReferencedTweettoTweetTypefromString. - Changed field type of
typeinMediaDatatoMediaTypefromString. - Added
keyfield toMediaData. It represents a unique identifier of the media.
2.2.0 #
- Added
Reverse Chronological Timelinesendpoint. (#164)- GET /2/users/:id/timelines/reverse_chronological
- Added
expansionsargument toUsersService. (#142)- GET /2/users/:id/blocking
- GET /2/users/:id/followers
- GET /2/users/:id/following
- GET /2/users/:id/muting
- GET /2/users
- GET /2/users/:id
- GET /2/users/by
- GET /2/users/by/username/:username
- GET /2/users/me
- Added
expansionsargument toSpacesService. (#171)- GET /2/spaces/search
- GET /2/spaces
- GET /2/spaces/:id
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- GET /2/spaces/by/creator_ids
- Added
expansionsargument toListsService. (#172)- GET /2/lists/:id/tweets
- GET /2/lists/:id/followers
- GET /2/users/:id/followed_lists
- GET /2/lists/:id
- GET /2/users/:id/owned_lists
- GET /2/lists/:id/members
- GET /2/users/:id/list_memberships
- GET /2/users/:id/pinned_lists
- Fixed method name from
tweetsService.connectVolumeStreamstotweetsService.connectVolumeStream. - Fixed return type of
tweetsService.connectVolumeStreamfromFuture<Stream<TweetData>>toFuture<Stream<TwitterResponse<TweetData, void>>>. - Added
Filtered Streamendpoint. (#4)- GET /2/tweets/search/stream
- GET /2/tweets/search/stream/rules
- POST /2/tweets/search/stream/rules
2.1.0 #
- Added
expansionsargument toTweetsService. (#141) - Added expanded fields to
TweetData. (#141)authorIdinReplyToUserIdreferencedTweetsentitiesattachmentsgeo
- Added
includesfield toTwitterResponse. (#144) - With the addition of the
includesfield toTwitterResponse, the following objects have been added. (#144)MediaDataPollData
- Added Volume Stream endpoint. (#14)
- GET /2/tweets/sample/stream
2.0.0 #
- Exposed service classes. (#122
TweetsServiceUsersServiceListsServiceSpacesServiceComplianceService
- Added arguments to
tweetsService.createTweet. (#130) (#90)inReplyToTweetIdreplySettingmediaIdstaggedUserIds
- Improved processing when the data field does not exist in the response body returned from the Twitter API. (#124)
- In previous versions,
POSTandDELETEcommunications for deleted content would raise aTwitterException, but this release has been modified to always return a boolean instead of an exception in this case.
- In previous versions,
- Internal processing has been refactored to improve scalability and maintainability. There are no disruptive changes as a result of this refactoring.
- Added convenience utility for OAuth. (#102)
OAuthUtils.generateAppOnlyBearerToken
1.8.0 #
- Added Lists Manage endpoints. (#30)
- DELETE /2/lists/:id
- PUT /2/lists/:id
- POST /2/lists
- Added Lists Follows endpoints. (#27)
- DELETE /2/users/:id/followed_lists/:list_id
- GET /2/lists/:id/followers
- GET /2/users/:id/followed_lists
- POST /2/users/:id/followed_lists
- Added Lists Members endpoints. (#29)
- DELETE /2/lists/:id/members/:user_id
- GET /2/lists/:id/members
- GET /2/users/:id/list_memberships
- POST /2/lists/:id/members
1.7.0 #
- Added Tweets Timelines endpoints. (#11)
- GET /2/users/:id/mentions
- GET /2/users/:id/tweets
- Added Users Blocks endpoints. (#20)
- DELETE /2/users/:source_user_id/blocking/:target_user_id
- GET /2/users/:id/blocking
- POST /2/users/:id/blocking
- Added Lists Pinnings endpoints. (#31)
- DELETE /2/users/:id/pinned_lists/:list_id
- GET /2/users/:id/pinned_lists
- POST /2/users/:id/pinned_lists
- Added Lists Tweet Lookup endpoint. (#26)
- GET /2/lists/:id/tweets
- Refactored method names. Prefixes for methods that perform
GETcommunication other than the search endpoint have been unified withlookup. This makes it a destructive change, but please refer to the following correspondence table for details of the change.- Tweets Service
- From
likingUserstolookupLikingUsers - From
likingTweetstolookupLikedTweets - From
retweetedBytolookupRetweetedUsers - From
quoteTweetstolookupQuoteTweets - From
bookmarkstolookupBookmarks
- From
- Users Service
- From
followerstolookupFollowers - From
followingstolookupFollowings - From
mutingUserstolookupMutingUsers
- From
- Lists Service
- From
pinnedListstolookupPinnedLists
- From
- Tweets Service
1.6.0 #
- Fixed a bug in
DELETEcommunication. - Improved error message from
TwitterException. (#93) - Added Batch Compliance endpoints. (#32)
- GET /2/compliance/jobs
- GET /2/compliance/jobs/:id
- POST /2/compliance/jobs
- Added Users Mutes endpoints. (#22)
- DELETE /2/users/:source_user_id/muting/:target_user_id
- GET /2/users/:id/muting
- POST /2/users/:id/muting
- Added Tweets Hide Replies endpoints. (#5)
- PUT /2/tweets/:id/hidden
1.5.0 #
- Renamed method name in TweetsService. (#79)
- Renamed method from
tweetsService.lookupTweettotweetsService.lookupById. - Renamed method from
tweetsService.lookupTweetstotweetsService.lookupByIds.
- Renamed method from
- Added Spaces Lookup endpoints. (#25)
- GET /2/spaces
- GET /2/spaces/:id
- GET /2/spaces/:id/buyers
- GET /2/spaces/:id/tweets
- GET /2/spaces/by/creator_ids
- Added Lists Lookup endpoints. (#28)
- GET /2/lists/:id
- GET /2/users/:id/owned_lists
1.4.0 #
- Fixed response handling.
- The HTTP status of a response was regarded as an exception for data other than 200, but the HTTP status in the 200s is now regarded as a normal completion.
- Improved and added parameters for endpoints already implemented in this library. (#66)
- Added parameters to
tweetsService.createTweet.quoteTweetIdforSuperFollowersOnly
- Added a parameter to
tweetsService.linkingUsers.maxResults
- Added a parameter to
tweetsService.linkingTweets.maxResults
- Added a parameter to
tweetsService.retweetedBy.maxResults
- Added a parameter to
tweetsService.quoteTweets.maxResults
- Added a parameter to
tweetsService.searchRecent.maxResults
- Added a parameter to
tweetsService.searchAll.maxResults
- Added a parameter to
usersService.followers.maxResults
- Added a parameter to
usersService.followings.maxResults
- Added parameters to
1.3.0 #
- Improved the error message from
TwitterException. (#48) - Added
previousTokentotweet_metaandtweet_count_meta, and addedpaginationTokenornextTokenargument for endpoints that support pagination. (#60) - Added
previousTokentouser_meta, and addedpaginationTokenargument for endpoints that support pagination. (#60)
1.1.0 #
- Added Tweet Counts endpoints. (#12)
- GET /2/tweets/counts/all
- GET /2/tweets/counts/recent
- Added Tweet Bookmarks endpoints. (#2)
- GET /2/tweets/counts/all
- GET /2/tweets/counts/recent
- Added Users Lookup endpoints. (#23)
- GET /2/users
- GET /2/users/:id
- GET /2/users/by
- GET /2/users/by/username/:username
- GET /2/users/me
- Added Spaces Search endpoints. (#23)
- GET /2/spaces/search
1.0.0 #
- Specification changes and improvements have been made to the authentication method. (#44)
- Added Quote Tweets endpoint. (#8)
- GET /2/tweets/:id/quote_tweets
- Added Tweets Search endpoints. (#10)
- GET /2/tweets/search/all
- GET /2/tweets/search/recent
- Added Tweets Lookup endpoints. (#13)
- GET /2/tweets
- GET /2/tweets/:id
0.1.0 #
- Added Tweets Likes endpoints. (#6)
- DELETE /2/users/:id/likes/:tweet_id
- GET /2/tweets/:id/liking_users
- GET /2/users/:id/liked_tweets
- POST /2/users/:id/likes
- Added Tweets Manage endpoints. (#7)
- DELETE /2/tweets/:id
- POST /2/tweets
- Added Tweets Retweet endpoints. (#9)
- DELETE /2/users/:id/retweets/:source_tweet_id
- GET /2/tweets/:id/retweeted_by
- POST /2/users/:id/retweets
- Added Users Follows endpoints. (#21)
- DELETE /2/users/:source_user_id/following/:target_user_id
- GET /2/users/:id/followers
- GET /2/users/:id/following
- POST /2/users/:id/following
0.0.1 #
- First Release