syntax = "proto3"; package images.v1; import "buf/validate/validate.proto"; import "images/v1/types.proto"; option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/images/v1"; service ImageService { rpc RecentlyAddedImages(RecentlyAddedImagesRequest) returns (RecentlyAddedImagesResponse) {} } message RecentlyAddedImagesRequest { option (buf.validate.message).cel = { id: "RecentlyAddedImagesRequest.after_cannot_exist_with_before" message: "after and before cannot be set at the same time" expression: "this.after > 0 && this.before > 0" }; // subreddits filter the images to be fetched belonging to the given subreddits. // // If empty, images from all subreddits will be fetched. repeated string subreddits = 1; // devices filter the images to be fetched belonging to the given devices. // // If empty, images from all devices will be fetched. repeated string devices = 2; // limit limits the number of images to be fetched. // // if 0 (or not set), the default limit is 100. // // if set, the maximum limit is clamped to 1000. int64 limit = 3; // after lists the image after the given timestamp. // // using after will return images that are created after the given timestamp. // // cannot be set (value > 0) with before (value > 0). int64 after = 4; // before lists the image before the given timestamp. // // using before will return images that are created before the given timestamp. // // cannot be set (value > 0) with after (value > 0). int64 before = 5; } message RecentlyAddedImagesResponse { repeated GroupedByDeviceImages groups = 1; // after is given to the client to be used as after in the next request. // // Given if the request has after value set. optional int64 after = 2; // before is given to the client to be used as before in the next request. // // Given if the request has before value set. optional int64 before = 3; } message GroupedByDeviceImages { string device = 1; repeated Image images = 2; }