syntax = "proto3";

service Convert {
  rpc HealthCheck (Empty) returns (HealthResponse);
  rpc csvToXls(csvToXlsParams) returns (FileBase64) {}
  rpc jsonToXls(jsonToXlsParams) returns (FileBase64) {}
  rpc pdfMerge(pdfMergeParams) returns (FileBase64) {}
  rpc htmlToPdf(htmlToPdfParams) returns (FileBase64) {}
  rpc excelToJson(excelToJsonParams) returns (FileBase64) {}
  rpc xmlToJson(xmlToJsonParams) returns (FileBase64) {}
  rpc htmlToDoc(htmlToDocParams) returns (FileBase64) {}
  rpc htmlToImage(htmlToImageParams) returns (FileBase64) {}
  rpc geojsonToShp(geojsonToShpParams) returns (FileBase64) {}
  rpc shpToGeojson(shpToGeojsonParams) returns (FileBase64) {}
  rpc docToPDF(docToPDFParams) returns (FileBase64) {}
  rpc mergeImages(mergeImagesIn) returns (FileBase64) {}
  rpc resizeImage(resizeImageIn) returns (FileBase64) {}
  rpc jsonToYaml(jsonToYamlIn) returns (FileBase64) {}
  rpc yamlToJson(yamlToJsonIn) returns (FileBase64) {}
  rpc log(log_in) returns (log_out) {}
  rpc geojsonToGpkg(geojsonToShpParams) returns (FileBase64) {}
}

message Empty {}

message HealthResponse {
  string status = 1;
}

message jsonToYamlIn {
  string json = 1;
}

message yamlToJsonIn {
  string yaml = 1;
}

message resizeImageIn {
  string base64 = 1;
  uint64 width = 2;
  uint64 height = 3;
  uint32 quality = 4;
  uint32 subsampling = 5;
}

message pdfToImgIn {
  string pdfPath = 1;
  string imgPath = 2;
}

message pdfToImgOut {
  string imgPath = 1;
}

message log_in {
	uint32 rows = 1;
	string level = 2;
}

message log_out {
	repeated string logs = 1;
}

enum mergeImageFormat {
  VERTICAL = 0;
  HORIZONTAL = 1;
  OVERLAY = 2;
}

message imageMeta {
  string base64 = 1;
  mergeImageFormat mergeFormat = 2;
}

message mergeImagesIn {
  repeated string images = 1;
  repeated imageMeta imagesMeta = 2;
  string background = 3;
  string mergeFormat = 4;
}

message docToPDFParams {
  string base64 = 1;
  string to = 2;
  string ext = 3;
}

message shpToGeojsonParams {
  string base64 = 1;
}

message geojsonToShpParams {
  string geojson = 1;
  string proj = 2;
}

message xmlToJsonParams {
  string xml = 1;
}

message jsonToXlsParams {
  string json = 1;
  string header = 2;
  string subheader = 3;
  string colmodel = 4;
}

message csvToXlsParams {
  string csv = 1;
  string header = 2;
  string subheader = 3;
  string separator = 4;
}

message excelToJsonParams {
  string base64 = 1;
  string type = 2;
  string delimiter = 3;
  string encoding = 4;
}

message htmlToPdfParams {
  string html = 1;
  string pdfPageConfig = 2;
}

message pdfMergeParams {
  repeated string mergeFiles = 1;
}

message htmlToImageParams {
  string html = 1;
  string format = 2;
  uint64 width = 3;
  uint64 height = 4;
}

message htmlToDocParams {
  string html = 1;
}

message FileBase64 {
  string result = 1;
}