Hosted onhoraciohdev.dev.hyper.mediavia theHypermedia Protocol

Activity Protobuf

Purpose

The Activity Feed service provides a unified interface to access recent activity events in the Seed system. It enables clients to list, filter, and paginate events, ensuring that product, design, and technical teams have a consistent foundation for building feeds, notifications, and collaborative views.


Status

This is a v1alpha specification. Breaking changes may occur as we validate the design and gather feedback.

Protobuf Definition

syntax = "proto3"; package com.seed.activity.v1alpha; import "google/protobuf/timestamp.proto"; option go_package = "seed/backend/genproto/activity/v1alpha;activity"; // ActivityFeed service provides information about the recent activity events happened in the system. service ActivityFeed { // Lists the recent activity events, // sorted by locally observed time (newest first). rpc ListEvents(ListEventsRequest) returns (ListEventsResponse); } // The request to list the events. message ListEventsRequest { // Optional. The size of the page. The default is defined by the server. int32 page_size = 1; // Optional. The page token for requesting next pages. string page_token = 2; // Optional. If we want events from trusted peers only. All peers by default. bool trusted_only = 3; // Optional. If we want events only from specific user accounts. Multiple // authors are filtered following OR logic. repeated string filter_authors = 4; // Optional. If we want certain types of events. // Currently supported event types are: // - Ref: any document change // - Capability: obvious // - Comment: obvious // - DagPB: // - Profile: // - Contact: create a contact for a specific resource // Multiple types are filtered following OR logic. repeated string filter_event_type = 5; // Optional. If we want events only from specific resource IDs. // It admits wildards, i.e. we can filter by path prefixes. string filter_resource = 6; // Optional. If we want to include link events. These blobs (usually documents // or comments), link (mention) to another resource (currently only account // mentions supported). We can add these blobs to the feed result by providing a // list of resources iris we want links to aggregated as a logical OR. // These link events are also treated as logical OR when grouped with other filters, // unlike other filters (authors, event_types) that are grouped under a logic AND. // Example: filter_authors(u+a1 OR a2 ...) AND filter_event_type(et1 OR et2 ...) OR // add_linked_resource(lr1 OR lr2 ...) repeated string add_linked_resource = 7; } // The response with the list of events. message ListEventsResponse { // The list of events. repeated Event events = 1; // The token to request the next page. string next_page_token = 2; } // Description of the event occurred in the system. message Event { // Union type of different event types. // Eventually we'll have more event types. oneof data { // Event type describing the appearance of a new blob in the system. NewBlobEvent new_blob = 1; } // The ID of the user account that has caused the event. string account = 2; // Timestamp of the event as per the event itself. google.protobuf.Timestamp event_time = 3; // Locally perceived time of the event. // I.e. time when we have received the event on our machine. google.protobuf.Timestamp observe_time = 4; } // The event describing the message NewBlobEvent { // The CID of the blob that was created. string cid = 1; // The type of the blob that was created. // Defined as string for extensibility. // Some of the currently supported blob types are: // - KeyDelegation // - Change // - Comment // - DagPB string blob_type = 2; // The user account ID that has created the blob. string author = 3; // The resource ID that the blob is related to. string resource = 4; // Extra attributes of the blob. string extra_attrs = 5; int64 blob_id = 6; // Only relevant for ling events bool is_pinned = 7; }

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime