Files
services/gifs/proto/gifs.proto
2021-10-26 10:04:53 +01:00

127 lines
3.7 KiB
Protocol Buffer

syntax = "proto3";
package gifs;
option go_package = "./proto;gifs";
service Gifs {
rpc Search(SearchRequest) returns (SearchResponse) {}
}
// Search for a GIF
message SearchRequest {
// The search term
string query = 1;
// Max number of gifs to return. Defaults to 25
int32 limit = 2;
// The start position of results (used with pagination)
int32 offset = 3;
// Apply age related content filter. "g", "pg", "pg-13", or "r". Defaults to "g"
string rating = 4;
// ISO 2 letter language code for regional content
string lang = 5;
}
message SearchResponse {
// list of results
repeated Gif data = 1;
// information on pagination
Pagination pagination = 2;
}
message Pagination {
// position in pagination
int32 offset = 1;
// total number of results available
int32 total_count = 2;
// total number returned in this response
int32 count = 3;
}
message Gif {
// The ID of the GIF
string id = 1;
// The slug used in the GIF's URL
string slug = 2;
// The URL for this GIF
string url = 3;
// A short URL for this GIF
string short_url = 4;
// URL used for embedding the GIF
string embed_url = 5;
// The page on which this GIF was found
string source = 6;
// The content rating for the GIF
string rating = 7;
// The title for this GIF
string title = 8;
// The different formats available for this GIF
ImageFormats images = 9;
}
// A map of different formats (or renditions) of a GIF. See https://developers.giphy.com/docs/optional-settings#rendition-guide
message ImageFormats {
// The original GIF. Good for desktop use
ImageFormat original = 1;
// A downsized version of the GIF < 2MB
ImageFormat downsized = 2;
// Version of the GIF with fixed height of 200 pixels. Good for mobile use
ImageFormat fixed_height = 3;
// Static image of the GIF with fixed height of 200 pixels
ImageFormat fixed_height_still = 4;
// Version of the GIF with fixed height of 200 pixels and number of frames reduced to 6
ImageFormat fixed_height_downsampled = 5;
// Version of the GIF with fixed width of 200 pixels. Good for mobile use
ImageFormat fixed_width = 6;
// Static image of the GIF with fixed width of 200 pixels
ImageFormat fixed_width_still = 7;
// Version of the GIF with fixed width of 200 pixels and number of frames reduced to 6
ImageFormat fixed_width_downsampled = 8;
// Version of the GIF with fixed height of 100 pixels. Good for mobile keyboards
ImageFormat fixed_height_small = 9;
// Static image of the GIF with fixed height of 100 pixels
ImageFormat fixed_height_small_still = 10;
// Version of the GIF with fixed width of 100 pixels. Good for mobile keyboards
ImageFormat fixed_width_small = 11;
// Static image of the GIF with fixed width of 100 pixels
ImageFormat fixed_width_small_still = 12;
// Static image of the downsized version of the GIF
ImageFormat downsized_still = 13;
// A downsized version of the GIF < 8MB
ImageFormat downsized_large = 14;
// A downsized version of the GIF < 5MB
ImageFormat downsized_medium = 15;
// A downsized version of the GIF < 200kb
ImageFormat downsized_small = 16;
// Static image of the original version of the GIF
ImageFormat original_still = 17;
// 15 second version of the GIF looping
ImageFormat looping = 18;
// mp4 version of the GIF <50kb displaying first 1-2 secs
ImageFormat preview = 19;
// Version of the GIF <50kb displaying first 1-2 secs
ImageFormat preview_gif = 20;
}
message ImageFormat {
// height
int32 height = 1;
// width
int32 width = 2;
// size in bytes
int32 size = 3;
// URL of the gif
string url = 4;
// URL to an MP4 version of the gif
string mp4_url = 5;
// size of the MP4 version
int32 mp4_size = 6;
// URL to a webp version of the gif
string webp_url = 7;
// size of the webp version
int32 webp_size = 8;
}