Bluemage/schemas/proto/device/v1/device.proto

117 lines
4 KiB
Protocol Buffer
Raw Normal View History

2024-08-04 23:16:05 +07:00
syntax = "proto3";
package device.v1;
import "buf/validate/validate.proto";
option go_package = "github.com/tigorlazuardi/bluemage/go/gen/proto/device/v1";
service DeviceService {
2024-08-05 23:06:32 +07:00
// GetDevice fetches a device by its slug.
//
// If the device is not found, an error will be returned.
rpc GetDevice(GetDeviceRequest) returns (GetDeviceResponse) {}
2024-08-04 23:16:05 +07:00
// CreateDevice creates a new device.
rpc CreateDevice(CreateDeviceRequest) returns (CreateDeviceResponse) {}
}
2024-08-05 23:06:32 +07:00
message GetDeviceRequest {
// The `slug` is a unique identifier for the device.
string slug = 1 [(buf.validate.field).string.min_len = 1];
}
message GetDeviceResponse {
string slug = 1;
bool disabled = 2;
string name = 3;
double resolution_x = 4;
double resolution_y = 5;
double aspect_ratio_tolerance = 6;
int32 min_x = 7;
int32 min_y = 8;
int32 max_x = 9;
int32 max_y = 10;
bool nsfw = 11;
bool single_folder_mode = 12;
int64 created_at = 13;
int64 updated_at = 14;
}
2024-08-04 23:16:05 +07:00
message CreateDeviceRequest {
// The `slug` is a unique identifier for the device, used to identify the device within the system.
// Each `slug` must be unique across all devices.
string slug = 1 [(buf.validate.field).string.min_len = 1];
2024-08-05 23:06:32 +07:00
// `disabled` is a flag to set if a device is enabled upon creation. Default false.
bool disabled = 2;
2024-08-04 23:16:05 +07:00
// The name of the device. This is used for display purposes.
string name = 3;
// The display x resolution of the device.
2024-08-05 23:06:32 +07:00
// The value must be greater than 0.
double resolution_x = 4 [(buf.validate.field).double.gt = 0];
2024-08-04 23:16:05 +07:00
// The display y resolution of the device.
2024-08-05 23:06:32 +07:00
// The value must be greater than 0.
double resolution_y = 5 [(buf.validate.field).double.gt = 0];
2024-08-04 23:16:05 +07:00
// aspect_ratio_tolerance is a tolerance for aspect ratio images to be accepted.
//
// The bigger the aspect_ratio_tolerance, the more images will be fetched, but it also means more likely
// for images that will look stretched if you set the device wallpaper view as stretched or
// will overfill if you set the device wallpaper view as fill.
//
// if a device has resolution_x = 1920, resolution_y = 1080, it has an aspect ratio of 1.777~ (1920 divided by 1080).
//
// an aspect_ratio_tolerance of 0.2 means that the device will accept images with aspect ratio between 1.577~ and 1.977~.
//
// THIS IS NOT A FILTER FOR IMAGE SIZE. This filter will take images that are far bigger or smaller than the device resolution
// as long as the aspect ratio is within the tolerance. Like example above, if an image has resolution of 3840x2160, it will be
// accepted by the device even though it is 2 times bigger than the device resolution.
//
// If you want to filter image size, use min_x, min_y, max_x, max_y fields.
double aspect_ratio_tolerance = 6;
// The minimum x resolution required for an image to be accepted by the device.
//
// A value of 0 indicates no minimum x resolution.
//
// The default value is 0.
2024-08-05 23:06:32 +07:00
int32 min_x = 7 [(buf.validate.field).int32.gte = 0];
2024-08-04 23:16:05 +07:00
// The minimum y resolution required for an image to be accepted by the device.
//
// A value of 0 indicates no minimum y resolution.
//
// The default value is 0.
2024-08-05 23:06:32 +07:00
int32 min_y = 8 [(buf.validate.field).int32.gte = 0];
2024-08-04 23:16:05 +07:00
// The maximum x resolution allowed for an image to be accepted by the device.
//
// A value of 0 indicates no maximum x resolution.
//
// The default value is 0.
2024-08-05 23:06:32 +07:00
int32 max_x = 9 [(buf.validate.field).int32.gte = 0];
2024-08-04 23:16:05 +07:00
// The maximum y resolution allowed for an image to be accepted by the device.
//
// A value of 0 indicates no maximum y resolution.
//
// The default value is 0.
2024-08-05 23:06:32 +07:00
int32 max_y = 10 [(buf.validate.field).int32.gte = 0];
2024-08-04 23:16:05 +07:00
// The `nsfw` parameter allows the device to accept NSFW (Not Safe For Work) images when set to true.
bool nsfw = 11;
2024-08-05 23:06:32 +07:00
// `single_folder_mode` when set to true, downloaded images will be put on single folder location
2024-08-04 23:16:05 +07:00
// instead of inside folders separated by subreddit names.
2024-08-05 23:06:32 +07:00
bool single_folder_mode = 12;
2024-08-04 23:16:05 +07:00
}
message CreateDeviceResponse {
// `slug` is the slug of the created device.
string slug = 1;
}