Bluemage/schemas/proto/images/v1/recently_added.proto

57 lines
2 KiB
Protocol Buffer

syntax = "proto3";
package images.v1;
import "buf/validate/validate.proto";
import "images/v1/types.proto";
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 300.
int64 limit = 3 [(buf.validate.field).int64.gte = 0];
// 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 {
// groups are images grouped by devices.
//
// devices are sorted alphabetically by it's NAME not slug.
repeated GroupedBySubredditDevices groups = 1;
// after is a unix epoch timestamp given to the client to be used as after in the next request.
//
// Given if the request has after value set and there are more images to be fetched.
optional int64 after = 2;
// before is a unix epoch timestamp given to the client to be used as before in the next request.
//
// Given if the request has before value set and there are more images to be fetched.
optional int64 before = 3;
}