/*
 * Copyright (C) 2022 Das Land Schleswig-Holstein vertreten durch den
 * Ministerpräsidenten des Landes Schleswig-Holstein
 * Staatskanzlei
 * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
 *
 * Lizenziert unter der EUPL, Version 1.2 oder - sobald
 * diese von der Europäischen Kommission genehmigt wurden -
 * Folgeversionen der EUPL ("Lizenz");
 * Sie dürfen dieses Werk ausschließlich gemäß
 * dieser Lizenz nutzen.
 * Eine Kopie der Lizenz finden Sie hier:
 *
 * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
 *
 * Sofern nicht durch anwendbare Rechtsvorschriften
 * gefordert oder in schriftlicher Form vereinbart, wird
 * die unter der Lizenz verbreitete Software "so wie sie
 * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
 * ausdrücklich oder stillschweigend - verbreitet.
 * Die sprachspezifischen Genehmigungen und Beschränkungen
 * unter der Lizenz sind dem Lizenztext zu entnehmen.
 */
syntax = "proto3";

package de.ozgcloud.vorgang.grpc.binaryFile;

import "callcontext.proto";
import "file.model.proto";

option java_multiple_files = true;
option java_package = "de.ozgcloud.vorgang.grpc.binaryFile";
option java_outer_classname = "BinaryFileProto";

service BinaryFileService {
		
	rpc UploadBinaryFileAsStream(stream GrpcUploadBinaryFileRequest) returns (GrpcUploadBinaryFileResponse) {
	}
	
	rpc GetBinaryFileContent(GrpcGetBinaryFileDataRequest) returns (stream GrpcGetBinaryFileDataResponse) {
	}
	
	rpc FindBinaryFilesMetaData(GrpcBinaryFilesRequest) returns (GrpcFindFilesResponse) {
	}
}

message GrpcBinaryFilesRequest {
	de.ozgcloud.vorgang.grpc.command.GrpcCallContext context = 1;
	repeated string fileId = 2;
}

message GrpcFindFilesResponse {
	repeated de.ozgcloud.vorgang.grpc.file.GrpcOzgFile file = 1;
}

message GrpcBinaryFileDataRequest {
	de.ozgcloud.vorgang.grpc.command.GrpcCallContext context = 1;
	string fileId = 2;
}

message GrpcUploadBinaryFileRequest {
	oneof request {
    	GrpcUploadBinaryFileMetaData metadata = 1;
    	bytes fileContent = 2;
	}
}

message GrpcUploadBinaryFileMetaData {
	de.ozgcloud.vorgang.grpc.command.GrpcCallContext context = 1;
	string vorgangId = 2;
	string field = 3;
	string fileName = 4;
	string contentType = 5;
	int64 size = 6 [deprecated=true];
}

message GrpcUploadBinaryFileResponse {
	string fileId = 2;
}

message GrpcGetBinaryFileDataRequest {
	de.ozgcloud.vorgang.grpc.command.GrpcCallContext context = 1;
	string fileId = 2;
}

message GrpcGetBinaryFileDataResponse {
	bytes fileContent = 1;
}

message GrpcBinaryFile {
	string id = 1;
	string name = 2;
	int64 size = 3;
	string contentType = 4;
}