Files
Swarm/DysonNetwork.Shared/Proto/web_article.proto

161 lines
3.5 KiB
Protocol Buffer

syntax = "proto3";
package proto;
option csharp_namespace = "DysonNetwork.Shared.Proto";
import "google/protobuf/timestamp.proto";
import "embed.proto";
import "publisher.proto";
message WebFeedConfig {
bool scrap_page = 1;
}
message WebFeed {
string id = 1;
string url = 2;
string title = 3;
optional string description = 4;
optional google.protobuf.Timestamp verified_at = 5;
optional LinkEmbed preview = 6;
WebFeedConfig config = 7;
string publisher_id = 8;
optional Publisher publisher = 9;
google.protobuf.Timestamp created_at = 10;
google.protobuf.Timestamp updated_at = 11;
optional google.protobuf.Timestamp deleted_at = 12;
}
message WebArticle {
string id = 1;
string title = 2;
string url = 3;
optional string author = 4;
optional bytes meta = 5;
optional LinkEmbed preview = 6;
optional string content = 7;
optional google.protobuf.Timestamp published_at = 8;
string feed_id = 9;
optional WebFeed feed = 10;
google.protobuf.Timestamp created_at = 11;
google.protobuf.Timestamp updated_at = 12;
optional google.protobuf.Timestamp deleted_at = 13;
}
message WebFeedSubscription {
string id = 1;
string feed_id = 2;
optional WebFeed feed = 3;
string account_id = 4;
google.protobuf.Timestamp created_at = 5;
google.protobuf.Timestamp updated_at = 6;
}
message ScrapedArticle {
LinkEmbed link_embed = 1;
optional string content = 2;
}
message GetWebArticleRequest {
string id = 1;
}
message GetWebArticleResponse {
WebArticle article = 1;
}
message GetWebArticleBatchRequest {
repeated string ids = 1;
}
message GetWebArticleBatchResponse {
repeated WebArticle articles = 1;
}
message ListWebArticlesRequest {
string feed_id = 1;
int32 page_size = 2;
string page_token = 3;
}
message ListWebArticlesResponse {
repeated WebArticle articles = 1;
string next_page_token = 2;
int32 total_size = 3;
}
message GetRecentArticlesRequest {
int32 limit = 1;
}
message GetRecentArticlesResponse {
repeated WebArticle articles = 1;
}
message GetWebFeedRequest {
oneof identifier {
string id = 1;
string url = 2;
}
}
message GetWebFeedResponse {
WebFeed feed = 1;
}
message ListWebFeedsRequest {
string publisher_id = 1;
int32 page_size = 2;
string page_token = 3;
}
message ListWebFeedsResponse {
repeated WebFeed feeds = 1;
string next_page_token = 2;
int32 total_size = 3;
}
message ScrapeArticleRequest {
string url = 1;
}
message ScrapeArticleResponse {
ScrapedArticle article = 1;
}
message GetLinkPreviewRequest {
string url = 1;
bool bypass_cache = 2;
}
message GetLinkPreviewResponse {
LinkEmbed preview = 1;
}
message InvalidateLinkPreviewCacheRequest {
string url = 1;
}
message InvalidateLinkPreviewCacheResponse {
bool success = 1;
}
service WebArticleService {
rpc GetWebArticle(GetWebArticleRequest) returns (GetWebArticleResponse);
rpc GetWebArticleBatch(GetWebArticleBatchRequest) returns (GetWebArticleBatchResponse);
rpc ListWebArticles(ListWebArticlesRequest) returns (ListWebArticlesResponse);
rpc GetRecentArticles(GetRecentArticlesRequest) returns (GetRecentArticlesResponse);
}
service WebFeedService {
rpc GetWebFeed(GetWebFeedRequest) returns (GetWebFeedResponse);
rpc ListWebFeeds(ListWebFeedsRequest) returns (ListWebFeedsResponse);
}
service WebReaderService {
rpc ScrapeArticle(ScrapeArticleRequest) returns (ScrapeArticleResponse);
rpc GetLinkPreview(GetLinkPreviewRequest) returns (GetLinkPreviewResponse);
rpc InvalidateLinkPreviewCache(InvalidateLinkPreviewCacheRequest) returns (InvalidateLinkPreviewCacheResponse);
}