syntax = "proto3";

package io.restorecommerce.manufacturer;

import "io/restorecommerce/resource_base.proto";
import "io/restorecommerce/meta.proto";
import "io/restorecommerce/auth.proto";
import "io/restorecommerce/status.proto";
import "io/restorecommerce/options.proto";

// Manufacturer resource
message Manufacturer {
  optional string id = 1;
  optional io.restorecommerce.meta.Meta meta = 2;
  optional string name = 3;
  optional string description = 4;
}

message ManufacturerList {
  repeated Manufacturer items = 1;
  optional uint32 total_count = 2;
  optional io.restorecommerce.auth.Subject subject = 3;
}

message ManufacturerListResponse {
  repeated ManufacturerResponse items = 1;
  optional uint32 total_count = 2;
  optional io.restorecommerce.status.OperationStatus operation_status = 3;
}

message ManufacturerResponse {
  optional Manufacturer payload = 1;
  optional io.restorecommerce.status.Status status = 2;
}

message Deleted {
  optional string id = 1;
}

service ManufacturerService {
  rpc Read (io.restorecommerce.resourcebase.ReadRequest) returns (ManufacturerListResponse)  {
    option (io.restorecommerce.options.is_query) = true;
  };
  rpc Create (ManufacturerList) returns (ManufacturerListResponse);
  rpc Delete (io.restorecommerce.resourcebase.DeleteRequest) returns (io.restorecommerce.resourcebase.DeleteResponse);
  rpc Update (ManufacturerList) returns (ManufacturerListResponse);
  rpc Upsert (ManufacturerList) returns (ManufacturerListResponse);
}
