#![allow(clippy::all)]
#![allow(
dead_code,
unused_imports,
unused_variables,
non_snake_case,
rustdoc::all
)]
use crate::core::{Client, Error, Method, QueryParams, Result};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;
#[derive(Clone)]
pub struct Twitter {
client: Client,
}
impl Twitter {
pub(crate) fn new(client: Client) -> Self {
Self { client }
}
pub fn client(&self) -> &Client {
&self.client
}
pub async fn search_communities(
&self,
params: SearchCommunitiesParams,
) -> Result<CommunitiesResponse> {
let path = "/v1/twitter/communities/search".to_string();
let mut q = QueryParams::new();
q.opt("query", params.query.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_community_detail(
&self,
community_id: impl AsRef<str>,
params: GetCommunityDetailParams,
) -> Result<CommunityData> {
let path = format!(
"/v1/twitter/communities/{community_id}",
community_id = community_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_community_tweets(
&self,
community_id: impl AsRef<str>,
params: GetCommunityTweetsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/communities/{community_id}/tweets",
community_id = community_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("tweet_type", params.tweet_type.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_place_detail(
&self,
place_id: impl AsRef<str>,
params: GetPlaceDetailParams,
) -> Result<PlaceData> {
let path = format!(
"/v1/twitter/geo/places/{place_id}",
place_id = place_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn search_places(&self, params: SearchPlacesParams) -> Result<PlacesResponse> {
let path = "/v1/twitter/geo/search".to_string();
let mut q = QueryParams::new();
q.opt("query", params.query.as_ref());
q.opt("lat", params.lat.as_ref());
q.opt("long", params.long.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_list_detail(
&self,
list_id: impl AsRef<str>,
params: GetListDetailParams,
) -> Result<ListData> {
let path = format!(
"/v1/twitter/lists/{list_id}/detail",
list_id = list_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn search_list_tweets(
&self,
list_id: impl AsRef<str>,
params: SearchListTweetsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/lists/{list_id}/search_tweets",
list_id = list_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("query", params.query.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_list_tweets(
&self,
list_id: impl AsRef<str>,
params: GetListTweetsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/lists/{list_id}/tweets",
list_id = list_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_broadcast_detail(
&self,
broadcast_id: impl AsRef<str>,
params: GetBroadcastDetailParams,
) -> Result<BroadcastData> {
let path = format!(
"/v1/twitter/spaces/broadcast/{broadcast_id}",
broadcast_id = broadcast_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_space_detail(
&self,
space_id: impl AsRef<str>,
params: GetSpaceDetailParams,
) -> Result<SpaceData> {
let path = format!(
"/v1/twitter/spaces/{space_id}",
space_id = space_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn list_stream_billing_logs(
&self,
params: ListStreamBillingLogsParams,
) -> Result<ListStreamBillingLogsResponse> {
let path = "/v1/twitter/stream/billing-logs".to_string();
let mut q = QueryParams::new();
q.opt("monitor_id", params.monitor_id.as_ref());
q.opt("page", params.page.as_ref());
q.opt("page_size", params.page_size.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn list_filter_rules(
&self,
params: ListFilterRulesParams,
) -> Result<ListFilterRulesResponse> {
let path = "/v1/twitter/stream/filter-rules".to_string();
let mut q = QueryParams::new();
q.opt("page", params.page.as_ref());
q.opt("page_size", params.page_size.as_ref());
q.opt("status", params.status.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn create_filter_rule(
&self,
params: CreateFilterRuleParams,
) -> Result<FilterRuleResponse> {
let path = "/v1/twitter/stream/filter-rules".to_string();
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.interval_seconds {
body.insert("interval_seconds".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.max_results_per_poll {
body.insert("max_results_per_poll".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.query {
body.insert("query".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.tag {
body.insert("tag".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_secret {
body.insert("webhook_secret".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_url {
body.insert("webhook_url".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::POST, &path, &query, body).await
}
pub async fn get_filter_rule_pricing_tiers(
&self,
params: GetFilterRulePricingTiersParams,
) -> Result<GetFilterRulePricingTiersResponse> {
let path = "/v1/twitter/stream/filter-rules-pricing".to_string();
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn validate_filter_rule_query(
&self,
params: ValidateFilterRuleQueryParams,
) -> Result<ValidateFilterRuleQueryResponse> {
let path = "/v1/twitter/stream/filter-rules/validate".to_string();
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.query {
body.insert("query".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::POST, &path, &query, body).await
}
pub async fn get_filter_rule(
&self,
rule_id: impl AsRef<str>,
params: GetFilterRuleParams,
) -> Result<FilterRuleResponse> {
let path = format!(
"/v1/twitter/stream/filter-rules/{rule_id}",
rule_id = rule_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn update_filter_rule(
&self,
rule_id: impl AsRef<str>,
params: UpdateFilterRuleParams,
) -> Result<FilterRuleResponse> {
let path = format!(
"/v1/twitter/stream/filter-rules/{rule_id}",
rule_id = rule_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.interval_seconds {
body.insert("interval_seconds".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.max_results_per_poll {
body.insert("max_results_per_poll".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.query {
body.insert("query".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.status {
body.insert("status".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.tag {
body.insert("tag".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_secret {
body.insert("webhook_secret".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_url {
body.insert("webhook_url".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::PATCH, &path, &query, body).await
}
pub async fn delete_filter_rule(
&self,
rule_id: impl AsRef<str>,
params: DeleteFilterRuleParams,
) -> Result<Value> {
let path = format!(
"/v1/twitter/stream/filter-rules/{rule_id}",
rule_id = rule_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::DELETE, &path, &query, body).await
}
pub async fn get_filter_rule_delivery_logs(
&self,
rule_id: impl AsRef<str>,
params: GetFilterRuleDeliveryLogsParams,
) -> Result<GetFilterRuleDeliveryLogsResponse> {
let path = format!(
"/v1/twitter/stream/filter-rules/{rule_id}/logs",
rule_id = rule_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("page", params.page.as_ref());
q.opt("page_size", params.page_size.as_ref());
q.opt("author_username", params.author_username.as_ref());
q.opt("delivery_status", params.delivery_status.as_ref());
q.opt("sort", params.sort.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn list_stream_delivery_logs(
&self,
params: ListStreamDeliveryLogsParams,
) -> Result<ListStreamDeliveryLogsResponse> {
let path = "/v1/twitter/stream/logs".to_string();
let mut q = QueryParams::new();
q.opt("monitor_id", params.monitor_id.as_ref());
q.opt("page", params.page.as_ref());
q.opt("page_size", params.page_size.as_ref());
q.opt("author_username", params.author_username.as_ref());
q.opt("delivery_status", params.delivery_status.as_ref());
q.opt("sort", params.sort.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn list_stream_monitors(
&self,
params: ListStreamMonitorsParams,
) -> Result<ListStreamMonitorsResponse> {
let path = "/v1/twitter/stream/monitors".to_string();
let mut q = QueryParams::new();
q.opt("page", params.page.as_ref());
q.opt("page_size", params.page_size.as_ref());
q.opt("status", params.status.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn create_stream_monitor(
&self,
params: CreateStreamMonitorParams,
) -> Result<StreamMonitorResponse> {
let path = "/v1/twitter/stream/monitors".to_string();
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.filter_types {
body.insert("filter_types".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.name {
body.insert("name".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.usernames {
body.insert("usernames".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_secret {
body.insert("webhook_secret".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_url {
body.insert("webhook_url".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::POST, &path, &query, body).await
}
pub async fn get_stream_monitor(
&self,
monitor_id: impl AsRef<str>,
params: GetStreamMonitorParams,
) -> Result<StreamMonitorResponse> {
let path = format!(
"/v1/twitter/stream/monitors/{monitor_id}",
monitor_id = monitor_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn update_stream_monitor(
&self,
monitor_id: impl AsRef<str>,
params: UpdateStreamMonitorParams,
) -> Result<StreamMonitorResponse> {
let path = format!(
"/v1/twitter/stream/monitors/{monitor_id}",
monitor_id = monitor_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.filter_types {
body.insert("filter_types".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.name {
body.insert("name".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.status {
body.insert("status".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.usernames {
body.insert("usernames".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_secret {
body.insert("webhook_secret".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.webhook_url {
body.insert("webhook_url".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::PATCH, &path, &query, body).await
}
pub async fn delete_stream_monitor(
&self,
monitor_id: impl AsRef<str>,
params: DeleteStreamMonitorParams,
) -> Result<Value> {
let path = format!(
"/v1/twitter/stream/monitors/{monitor_id}",
monitor_id = monitor_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::DELETE, &path, &query, body).await
}
pub async fn list_stream_webhooks(
&self,
params: ListStreamWebhooksParams,
) -> Result<ListStreamWebhooksResponse> {
let path = "/v1/twitter/stream/webhooks".to_string();
let mut q = QueryParams::new();
q.opt("monitor_id", params.monitor_id.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn create_stream_webhook(
&self,
params: CreateStreamWebhookParams,
) -> Result<WebhookResponse> {
let path = "/v1/twitter/stream/webhooks".to_string();
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.monitor_id {
body.insert("monitor_id".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.secret {
body.insert("secret".to_string(), serde_json::json!(v));
}
if let Some(v) = ¶ms.url {
body.insert("url".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::POST, &path, &query, body).await
}
pub async fn test_stream_webhook(
&self,
params: TestStreamWebhookParams,
) -> Result<TestStreamWebhookResponse> {
let path = "/v1/twitter/stream/webhooks/test".to_string();
let query: Vec<(String, String)> = Vec::new();
let mut body = serde_json::Map::new();
if let Some(v) = ¶ms.monitor_id {
body.insert("monitor_id".to_string(), serde_json::json!(v));
}
let body = if body.is_empty() {
None
} else {
Some(Value::Object(body))
};
self.client.send(Method::POST, &path, &query, body).await
}
pub async fn delete_stream_webhook(
&self,
webhook_id: impl AsRef<str>,
params: DeleteStreamWebhookParams,
) -> Result<Value> {
let path = format!(
"/v1/twitter/stream/webhooks/{webhook_id}",
webhook_id = webhook_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::DELETE, &path, &query, body).await
}
pub async fn get_trends(&self, params: GetTrendsParams) -> Result<TrendsResponse> {
let path = "/v1/twitter/trends/".to_string();
let mut q = QueryParams::new();
q.opt("category", params.category.as_ref());
q.opt("count", params.count.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_trends_by_place(
&self,
woeid: impl AsRef<str>,
params: GetTrendsByPlaceParams,
) -> Result<PlaceTrendsData> {
let path = format!("/v1/twitter/trends/place/{woeid}", woeid = woeid.as_ref());
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweets_by_ids(&self, params: GetTweetsByIdsParams) -> Result<TweetsResponse> {
let path = "/v1/twitter/tweets/".to_string();
let mut q = QueryParams::new();
q.opt("tweets", params.tweets.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn advanced_search_tweets(
&self,
params: AdvancedSearchTweetsParams,
) -> Result<TweetsResponse> {
let path = "/v1/twitter/tweets/advanced_search".to_string();
let mut q = QueryParams::new();
q.opt("query", params.query.as_ref());
q.opt("query_type", params.query_type.as_ref());
q.opt("count", params.count.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_article_detail(
&self,
article_id: impl AsRef<str>,
params: GetArticleDetailParams,
) -> Result<ArticleData> {
let path = format!(
"/v1/twitter/tweets/article/{article_id}",
article_id = article_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_detail(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetDetailParams,
) -> Result<TweetData> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}",
tweet_id = tweet_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_community_notes(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetCommunityNotesParams,
) -> Result<CommunityNotesResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/community_notes",
tweet_id = tweet_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_edit_history(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetEditHistoryParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/edit_history",
tweet_id = tweet_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_favoriters(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetFavoritersParams,
) -> Result<UsersResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/favoriters",
tweet_id = tweet_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_quotes(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetQuotesParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/quotes",
tweet_id = tweet_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_replies(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetRepliesParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/replies",
tweet_id = tweet_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_tweet_retweeters(
&self,
tweet_id: impl AsRef<str>,
params: GetTweetRetweetersParams,
) -> Result<UsersResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/retweeters",
tweet_id = tweet_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_similar_tweets(
&self,
tweet_id: impl AsRef<str>,
params: GetSimilarTweetsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/tweets/tweet/{tweet_id}/similar",
tweet_id = tweet_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_users_by_ids(&self, params: GetUsersByIdsParams) -> Result<UsersResponse> {
let path = "/v1/twitter/users/batch_by_ids".to_string();
let mut q = QueryParams::new();
q.opt("user_ids", params.user_ids.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_users_by_usernames(
&self,
params: GetUsersByUsernamesParams,
) -> Result<UsersResponse> {
let path = "/v1/twitter/users/batch_by_usernames".to_string();
let mut q = QueryParams::new();
q.opt("usernames", params.usernames.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn search_users(&self, params: SearchUsersParams) -> Result<UsersResponse> {
let path = "/v1/twitter/users/search_users".to_string();
let mut q = QueryParams::new();
q.opt("query", params.query.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_articles(
&self,
user_id: impl AsRef<str>,
params: GetUserArticlesParams,
) -> Result<ArticlesResponse> {
let path = format!(
"/v1/twitter/users/{user_id}/articles",
user_id = user_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_by_id(
&self,
user_id: impl AsRef<str>,
params: GetUserByIdParams,
) -> Result<UserData> {
let path = format!(
"/v1/twitter/users/{user_id}/by_id",
user_id = user_id.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_subscriptions(
&self,
user_id: impl AsRef<str>,
params: GetUserSubscriptionsParams,
) -> Result<UsersResponse> {
let path = format!(
"/v1/twitter/users/{user_id}/subscriptions",
user_id = user_id.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_by_username(
&self,
username: impl AsRef<str>,
params: GetUserByUsernameParams,
) -> Result<UserData> {
let path = format!(
"/v1/twitter/users/{username}/by_username",
username = username.as_ref()
);
let query: Vec<(String, String)> = Vec::new();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_followers(
&self,
username: impl AsRef<str>,
params: GetUserFollowersParams,
) -> Result<UsersResponse> {
let path = format!(
"/v1/twitter/users/{username}/followers",
username = username.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_followings(
&self,
username: impl AsRef<str>,
params: GetUserFollowingsParams,
) -> Result<UsersResponse> {
let path = format!(
"/v1/twitter/users/{username}/followings",
username = username.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_latest_tweets(
&self,
username: impl AsRef<str>,
params: GetUserLatestTweetsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/users/{username}/latest_tweets",
username = username.as_ref()
);
let mut q = QueryParams::new();
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
pub async fn get_user_mentions(
&self,
username: impl AsRef<str>,
params: GetUserMentionsParams,
) -> Result<TweetsResponse> {
let path = format!(
"/v1/twitter/users/{username}/mentions",
username = username.as_ref()
);
let mut q = QueryParams::new();
q.opt("count", params.count.as_ref());
q.opt("cursor", params.cursor.as_ref());
let query = q.into_pairs();
let body = None;
self.client.send(Method::GET, &path, &query, body).await
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum AdvancedSearchTweetsQueryType {
Top,
Latest,
Media,
}
impl std::fmt::Display for AdvancedSearchTweetsQueryType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
AdvancedSearchTweetsQueryType::Top => "Top",
AdvancedSearchTweetsQueryType::Latest => "Latest",
AdvancedSearchTweetsQueryType::Media => "Media",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ArticleData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub author_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub author_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub author_username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub cover_image_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub text: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub title: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ArticlesResponse {
pub data: Option<Vec<ArticleData>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub next_cursor: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct BillingLogResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub billed_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub credits_deducted: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub num_accounts: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub rate_applied: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tier_label: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct BroadcastData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub height: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub media_key: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub started_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub state: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub title: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total_viewers: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub width: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunitiesResponse {
pub data: Option<Vec<CommunityData>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub next_cursor: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunityBanner {
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub height: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub width: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunityData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub admin_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub admin_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub admin_username: Option<String>,
pub banner: Option<CommunityBanner>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub created_at: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at_datetime: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub description: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub invites_policy: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_member: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_nsfw: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub join_policy: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub member_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub role: Option<String>,
pub rules: Option<Vec<CommunityRule>>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunityNoteData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub status: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub text: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunityNotesResponse {
pub data: Option<Vec<CommunityNoteData>>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct CommunityRule {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub description: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ErrorResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub error: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct FilterRuleDeliveryLogResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub author_username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub delivery_status: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub detected_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub latency_badge: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub latency_ms: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub rule_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub rule_tag: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_published_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_text_preview: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub webhook_attempts: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub webhook_status_code: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct FilterRuleResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub credits_per_rule_per_day: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub interval_seconds: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub max_results_per_poll: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub pricing_tier: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub query: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub status: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub status_reason: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tag: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub updated_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub webhook_secret_set: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub webhook_url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum GetCommunityTweetsTweetType {
Top,
Latest,
Media,
}
impl std::fmt::Display for GetCommunityTweetsTweetType {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
GetCommunityTweetsTweetType::Top => "Top",
GetCommunityTweetsTweetType::Latest => "Latest",
GetCommunityTweetsTweetType::Media => "Media",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct GetFilterRuleDeliveryLogsResponse {
pub logs: Vec<FilterRuleDeliveryLogResponse>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page_size: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum GetFilterRuleDeliveryLogsSort {
#[serde(rename = "asc")]
Asc,
#[serde(rename = "desc")]
Desc,
}
impl std::fmt::Display for GetFilterRuleDeliveryLogsSort {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
GetFilterRuleDeliveryLogsSort::Asc => "asc",
GetFilterRuleDeliveryLogsSort::Desc => "desc",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct GetFilterRulePricingTiersResponse {
pub tiers: Vec<GetFilterRulePricingTiersResponseTiersItem>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct GetFilterRulePricingTiersResponseTiersItem {
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub credits_per_rule_per_day: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub max_interval_seconds: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tier_label: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum GetTrendsCategory {
#[serde(rename = "trending")]
Trending,
#[serde(rename = "for-you")]
ForYou,
#[serde(rename = "news")]
News,
#[serde(rename = "sports")]
Sports,
#[serde(rename = "entertainment")]
Entertainment,
}
impl std::fmt::Display for GetTrendsCategory {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
GetTrendsCategory::Trending => "trending",
GetTrendsCategory::ForYou => "for-you",
GetTrendsCategory::News => "news",
GetTrendsCategory::Sports => "sports",
GetTrendsCategory::Entertainment => "entertainment",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct Hashtag {
pub indices: Option<Vec<i64>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub text: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub description: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub member_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub mode: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub subscriber_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub user_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub username: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListFilterRulesResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page_size: Option<i64>,
pub rules: Vec<FilterRuleResponse>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum ListFilterRulesStatus {
#[serde(rename = "active")]
Active,
#[serde(rename = "paused")]
Paused,
}
impl std::fmt::Display for ListFilterRulesStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
ListFilterRulesStatus::Active => "active",
ListFilterRulesStatus::Paused => "paused",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListStreamBillingLogsResponse {
pub logs: Vec<BillingLogResponse>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page_size: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListStreamDeliveryLogsResponse {
pub logs: Vec<TweetDeliveryLogResponse>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page_size: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum ListStreamDeliveryLogsSort {
#[serde(rename = "asc")]
Asc,
#[serde(rename = "desc")]
Desc,
}
impl std::fmt::Display for ListStreamDeliveryLogsSort {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
ListStreamDeliveryLogsSort::Asc => "asc",
ListStreamDeliveryLogsSort::Desc => "desc",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListStreamMonitorsResponse {
pub monitors: Vec<StreamMonitorResponse>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub page_size: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum ListStreamMonitorsStatus {
#[serde(rename = "active")]
Active,
#[serde(rename = "paused")]
Paused,
}
impl std::fmt::Display for ListStreamMonitorsStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
ListStreamMonitorsStatus::Active => "active",
ListStreamMonitorsStatus::Paused => "paused",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ListStreamWebhooksResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total: Option<i64>,
pub webhooks: Vec<WebhookListItem>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct Media {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub alt_text: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub duration_ms: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub height: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub media_key: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub preview_image_url: Option<String>,
#[serde(rename = "type")]
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub type_: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub view_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub width: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct Place {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub country: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub country_code: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub full_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub place_type: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct PlaceData {
pub attributes: Option<HashMap<String, String>>,
pub bounding_box: Option<PlaceDataBoundingBox>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub country: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub country_code: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub full_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub place_type: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct PlaceDataBoundingBox {
pub coordinates: Vec<Vec<Vec<f64>>>,
#[serde(rename = "type")]
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub type_: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct PlaceTrendsData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub country: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
pub trends: Vec<TrendData>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub woeid: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct PlacesResponse {
pub data: Option<Vec<PlaceData>>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct Poll {
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub duration_minutes: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub end_datetime: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
pub options: Vec<PollOption>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub voting_status: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct PollOption {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub label: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub position: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub votes: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct SpaceData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub creator_username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub ended_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_ticketed: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub participant_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub scheduled_start: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub started_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub state: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub title: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total_live_listeners: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub total_participated: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct StreamMonitorResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub credits_per_account_per_day: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub estimated_credits_per_day: Option<f64>,
pub filter_types: Option<Vec<String>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub pricing_tier: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub status: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub status_reason: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub updated_at: Option<String>,
pub usernames: Vec<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub webhook_secret_set: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub webhook_url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TestStreamWebhookResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub error: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_f64")]
pub response_time_ms: Option<f64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub status_code: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub success: Option<bool>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TrendData {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub domain_context: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub query: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub tweet_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TrendsResponse {
pub data: Option<Vec<TrendData>>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TweetData {
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub bookmark_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub bookmarked: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub conversation_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
pub edit_tweet_ids: Option<Vec<String>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub editable_until_msecs: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub edits_remaining: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub favorite_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub favorited: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub full_text: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub has_card: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub has_community_notes: Option<bool>,
pub hashtags: Vec<Hashtag>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub in_reply_to_status_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub in_reply_to_user_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_edit_eligible: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_quote_status: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_retweet: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub lang: Option<String>,
pub media: Vec<Media>,
pub place: Option<Place>,
pub poll: Option<Poll>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub possibly_sensitive: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub quote_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub quoted_status_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub reply_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub retweet_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub retweeted: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub retweeted_status_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub source: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub text: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub thumbnail_title: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub thumbnail_url: Option<String>,
pub urls: Vec<Url>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub user_id: Option<String>,
pub user_mentions: Vec<UserMention>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub user_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub view_count: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TweetDeliveryLogResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub author_username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub delivery_status: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub detected_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub latency_badge: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub latency_ms: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_published_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_text_preview: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub tweet_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub webhook_attempts: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub webhook_status_code: Option<i64>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct TweetsResponse {
pub data: Option<Vec<TweetData>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub next_cursor: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum UpdateFilterRuleStatus {
#[serde(rename = "active")]
Active,
#[serde(rename = "paused")]
Paused,
}
impl std::fmt::Display for UpdateFilterRuleStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
UpdateFilterRuleStatus::Active => "active",
UpdateFilterRuleStatus::Paused => "paused",
})
}
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[non_exhaustive]
pub enum UpdateStreamMonitorStatus {
#[serde(rename = "active")]
Active,
#[serde(rename = "paused")]
Paused,
}
impl std::fmt::Display for UpdateStreamMonitorStatus {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(match self {
UpdateStreamMonitorStatus::Active => "active",
UpdateStreamMonitorStatus::Paused => "paused",
})
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct Url {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub display_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub expanded_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub unwound_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct UserData {
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub can_dm: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at_datetime: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub description: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub favourites_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub followed_by: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub followers_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub following: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub following_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub is_blue_verified: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub listed_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub location: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub media_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
pub pinned_tweet_ids: Option<Vec<String>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub possibly_sensitive: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub professional_type: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub profile_banner_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub profile_image_url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub protected: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_i64")]
pub tweet_count: Option<i64>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub username: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub verified: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub verified_type: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct UserMention {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
pub indices: Option<Vec<i64>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub username: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct UsersResponse {
pub data: Option<Vec<UserData>>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub next_cursor: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct ValidateFilterRuleQueryResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub error: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub query: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub valid: Option<bool>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct WebhookListItem {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_name: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_bool")]
pub secret_set: Option<bool>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(default)]
pub struct WebhookResponse {
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub created_at: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub monitor_id: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub secret: Option<String>,
#[serde(default, deserialize_with = "crate::core::flex::opt_string")]
pub url: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct SearchCommunitiesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetCommunityDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetCommunityTweetsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub tweet_type: Option<GetCommunityTweetsTweetType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetPlaceDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct SearchPlacesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lat: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub long: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetListDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct SearchListTweetsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetListTweetsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetBroadcastDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetSpaceDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListStreamBillingLogsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub monitor_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListFilterRulesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<ListFilterRulesStatus>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct CreateFilterRuleParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_seconds: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_results_per_poll: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_secret: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetFilterRulePricingTiersParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ValidateFilterRuleQueryParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetFilterRuleParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct UpdateFilterRuleParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub interval_seconds: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_results_per_poll: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<UpdateFilterRuleStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tag: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_secret: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct DeleteFilterRuleParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetFilterRuleDeliveryLogsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub author_username: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<GetFilterRuleDeliveryLogsSort>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListStreamDeliveryLogsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub monitor_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub author_username: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub delivery_status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sort: Option<ListStreamDeliveryLogsSort>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListStreamMonitorsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub page: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<ListStreamMonitorsStatus>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct CreateStreamMonitorParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_types: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usernames: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_secret: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetStreamMonitorParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct UpdateStreamMonitorParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_types: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<UpdateStreamMonitorStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub usernames: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_secret: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub webhook_url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct DeleteStreamMonitorParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct ListStreamWebhooksParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub monitor_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct CreateStreamWebhookParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub monitor_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub secret: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct TestStreamWebhookParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub monitor_id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct DeleteStreamWebhookParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTrendsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub category: Option<GetTrendsCategory>,
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTrendsByPlaceParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetsByIdsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub tweets: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct AdvancedSearchTweetsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub query_type: Option<AdvancedSearchTweetsQueryType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetArticleDetailParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetDetailParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetCommunityNotesParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetEditHistoryParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetFavoritersParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetQuotesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetRepliesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetTweetRetweetersParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetSimilarTweetsParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUsersByIdsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_ids: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUsersByUsernamesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub usernames: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct SearchUsersParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub query: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserArticlesParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserByIdParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserSubscriptionsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserByUsernameParams {}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserFollowersParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserFollowingsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserLatestTweetsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize)]
pub struct GetUserMentionsParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cursor: Option<String>,
}