syntax = "proto3";

package productimages;

import "public_messages.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/wrappers.proto";
import "google/protobuf/duration.proto";  
import "google/protobuf/timestamp.proto";
import "google/api/annotations.proto";

option csharp_namespace = "CMSMicroservice.Protobuf.Protos.ProductImages";

service ProductImagesContract
{
    rpc CreateNewProductImages(CreateNewProductImagesRequest) returns (CreateNewProductImagesResponse){
        option (google.api.http) = {
            post: "/CreateNewProductImages"
            body: "*"
        };
    };
    rpc UpdateProductImages(UpdateProductImagesRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            put: "/UpdateProductImages"
            body: "*"
        };
    };
    rpc DeleteProductImages(DeleteProductImagesRequest) returns (google.protobuf.Empty){
        option (google.api.http) = {
            delete: "/DeleteProductImages"
            body: "*"
        };
    };
    rpc GetProductImages(GetProductImagesRequest) returns (GetProductImagesResponse){
        option (google.api.http) = {
            get: "/GetProductImages"
            
        };
    };
    rpc GetAllProductImagesByFilter(GetAllProductImagesByFilterRequest) returns (GetAllProductImagesByFilterResponse){
        option (google.api.http) = {
            get: "/GetAllProductImagesByFilter"
            
        };
    };
}
message CreateNewProductImagesRequest
{
    string title = 1;
    string image_path = 2;
    string image_thumbnail_path = 3;
}
message CreateNewProductImagesResponse
{
    int64 id = 1;
}
message UpdateProductImagesRequest
{
    int64 id = 1;
    string title = 2;
    string image_path = 3;
    string image_thumbnail_path = 4;
}
message DeleteProductImagesRequest
{
    int64 id = 1;
}
message GetProductImagesRequest
{
    int64 id = 1;
}
message GetProductImagesResponse
{
    int64 id = 1;
    string title = 2;
    string image_path = 3;
    string image_thumbnail_path = 4;
}
message GetAllProductImagesByFilterRequest
{
    messages.PaginationState pagination_state = 1;
    google.protobuf.StringValue sort_by = 2;
    GetAllProductImagesByFilterFilter filter = 3;
}
message GetAllProductImagesByFilterFilter
{
    google.protobuf.Int64Value id = 1;
    google.protobuf.StringValue title = 2;
    google.protobuf.StringValue image_path = 3;
    google.protobuf.StringValue image_thumbnail_path = 4;
}
message GetAllProductImagesByFilterResponse
{
    messages.MetaData meta_data = 1;
    repeated GetAllProductImagesByFilterResponseModel models = 2;
}
message GetAllProductImagesByFilterResponseModel
{
    int64 id = 1;
    string title = 2;
    string image_path = 3;
    string image_thumbnail_path = 4;
}
