Files
services/twitter/proto/twitter.proto
2021-09-15 16:01:52 +01:00

108 lines
2.2 KiB
Protocol Buffer

syntax = "proto3";
package twitter;
option go_package = "./proto;twitter";
service Twitter {
rpc Timeline(TimelineRequest) returns (TimelineResponse) {}
rpc Search(SearchRequest) returns (SearchResponse) {}
rpc User(UserRequest) returns (UserResponse) {}
rpc Trends(TrendsRequest) returns (TrendsResponse) {}
}
message Tweet {
// id of the tweet
int64 id = 1;
// text of the tweet
string text = 2;
// username of the person who tweeted
string username = 3;
// time of tweet
string created_at = 4;
// number of times retweeted
int64 retweeted_count = 7;
// number of times favourited
int64 favourited_count = 8;
}
message Profile {
// the user id
int64 id = 1;
// display name of the user
string name = 2;
// the username
string username = 3;
// the user description
string description = 4;
// the account creation date
string created_at = 5;
// the user's location
string location = 6;
// the follower count
int64 followers = 7;
// if the account is private
bool private = 8;
// if the account is verified
bool verified = 9;
// The user's profile picture
string image_url = 10;
}
message Trend {
// name of the trend
string name = 1;
// the twitter url
string url = 2;
// the volume of tweets in last 24 hours
int64 tweet_volume = 3;
}
// Get the timeline for a given user
message TimelineRequest {
// the username to request the timeline for
string username = 1;
// number of tweets to return. default: 20
int32 limit = 2;
}
message TimelineResponse {
// The recent tweets for the user
repeated Tweet tweets = 1;
}
// Search for tweets with a simple query
message SearchRequest {
// the query to search for
string query = 1;
// number of tweets to return. default: 20
int32 limit = 2;
}
message SearchResponse {
// the related tweets for the search
repeated Tweet tweets = 2;
}
// Get a user's twitter profile
message UserRequest {
// the username to lookup
string username = 1;
}
message UserResponse {
// the current user status
Tweet status = 1;
// The requested user profile
Profile profile = 2;
}
// Get the current global trending topics
message TrendsRequest {
}
message TrendsResponse {
// a list of trending topics
repeated Trend trends = 1;
}