syntax = "proto3";

package lara_django.lara_django_processes;

import "google/protobuf/empty.proto";
import "google/protobuf/struct.proto";

service ExtraDataController {
    rpc Create(ExtraDataRequest) returns (ExtraDataResponse) {}
    rpc Destroy(ExtraDataDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(ExtraDataListRequest) returns (ExtraDataListResponse) {}
    rpc PartialUpdate(ExtraDataPartialUpdateRequest) returns (ExtraDataResponse) {}
    rpc Retrieve(ExtraDataRetrieveRequest) returns (ExtraDataResponse) {}
    rpc Stream(ExtraDataStreamRequest) returns (stream ExtraDataResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream ExtraDataResponse) {}
    rpc Update(ExtraDataRequest) returns (ExtraDataResponse) {}
}

service MethodClassController {
    rpc Create(MethodClassRequest) returns (MethodClassResponse) {}
    rpc Destroy(MethodClassDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(MethodClassListRequest) returns (MethodClassListResponse) {}
    rpc PartialUpdate(MethodClassPartialUpdateRequest) returns (MethodClassResponse) {}
    rpc Retrieve(MethodClassRetrieveRequest) returns (MethodClassResponse) {}
    rpc Stream(MethodClassStreamRequest) returns (stream MethodClassResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream MethodClassResponse) {}
    rpc Update(MethodClassRequest) returns (MethodClassResponse) {}
}

service MethodController {
    rpc Create(MethodRequest) returns (MethodResponse) {}
    rpc Destroy(MethodDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(MethodListRequest) returns (MethodListResponse) {}
    rpc PartialUpdate(MethodPartialUpdateRequest) returns (MethodResponse) {}
    rpc Retrieve(MethodRetrieveRequest) returns (MethodResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream MethodResponse) {}
    rpc Update(MethodRequest) returns (MethodResponse) {}
}

service MethodInstanceController {
    rpc Create(MethodInstanceRequest) returns (MethodInstanceResponse) {}
    rpc Destroy(MethodInstanceDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(MethodInstanceListRequest) returns (MethodInstanceListResponse) {}
    rpc PartialUpdate(MethodInstancePartialUpdateRequest) returns (MethodInstanceResponse) {}
    rpc Retrieve(MethodInstanceRetrieveRequest) returns (MethodInstanceResponse) {}
    rpc Stream(MethodInstanceStreamRequest) returns (stream MethodInstanceResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream MethodInstanceResponse) {}
    rpc Update(MethodInstanceRequest) returns (MethodInstanceResponse) {}
}

service ProcedureController {
    rpc Create(ProcedureRequest) returns (ProcedureResponse) {}
    rpc Destroy(ProcedureDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(ProcedureListRequest) returns (ProcedureListResponse) {}
    rpc PartialUpdate(ProcedurePartialUpdateRequest) returns (ProcedureResponse) {}
    rpc Retrieve(ProcedureRetrieveRequest) returns (ProcedureResponse) {}
    rpc Stream(ProcedureStreamRequest) returns (stream ProcedureResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream ProcedureResponse) {}
    rpc Update(ProcedureRequest) returns (ProcedureResponse) {}
}

service ProcedureInstanceController {
    rpc Create(ProcedureInstanceRequest) returns (ProcedureInstanceResponse) {}
    rpc Destroy(ProcedureInstanceDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(ProcedureInstanceListRequest) returns (ProcedureInstanceListResponse) {}
    rpc PartialUpdate(ProcedureInstancePartialUpdateRequest) returns (ProcedureInstanceResponse) {}
    rpc Retrieve(ProcedureInstanceRetrieveRequest) returns (ProcedureInstanceResponse) {}
    rpc Stream(ProcedureInstanceStreamRequest) returns (stream ProcedureInstanceResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream ProcedureInstanceResponse) {}
    rpc Update(ProcedureInstanceRequest) returns (ProcedureInstanceResponse) {}
}

service ProcessController {
    rpc Create(ProcessRequest) returns (ProcessResponse) {}
    rpc Destroy(ProcessDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(ProcessListRequest) returns (ProcessListResponse) {}
    rpc PartialUpdate(ProcessPartialUpdateRequest) returns (ProcessResponse) {}
    rpc Retrieve(ProcessRetrieveRequest) returns (ProcessResponse) {}
    rpc Stream(ProcessStreamRequest) returns (stream ProcessResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream ProcessResponse) {}
    rpc Update(ProcessRequest) returns (ProcessResponse) {}
}

service ProcessInstanceController {
    rpc Create(ProcessInstanceRequest) returns (ProcessInstanceResponse) {}
    rpc Destroy(ProcessInstanceDestroyRequest) returns (google.protobuf.Empty) {}
    rpc List(ProcessInstanceListRequest) returns (ProcessInstanceListResponse) {}
    rpc PartialUpdate(ProcessInstancePartialUpdateRequest) returns (ProcessInstanceResponse) {}
    rpc Retrieve(ProcessInstanceRetrieveRequest) returns (ProcessInstanceResponse) {}
    rpc Stream(ProcessInstanceStreamRequest) returns (stream ProcessInstanceResponse) {}
    rpc Subscribe(SubscriptionRequest) returns (stream ProcessInstanceResponse) {}
    rpc Update(ProcessInstanceRequest) returns (ProcessInstanceResponse) {}
}

message ExtraDataDestroyRequest {
    string extradata_id = 1;
}

message ExtraDataListRequest {
}

message ExtraDataListResponse {
    repeated ExtraDataResponse results = 1;
}

message ExtraDataPartialUpdateRequest {
    optional string extradata_id = 1;
    optional string data_type = 2;
    string namespace = 3;
    optional string media_type = 4;
    repeated string _partial_update_fields = 5;
    optional string title = 6;
    optional string name = 7;
    optional string name_full = 8;
    optional string version = 9;
    optional string hash_sha256 = 10;
    optional google.protobuf.Struct data_json = 11;
    optional string iri = 12;
    optional string url = 13;
    optional string datetime_created = 14;
    optional string datetime_last_modified = 15;
    optional string description = 16;
    optional string image = 17;
    optional string file = 18;
}

message ExtraDataRequest {
    optional string extradata_id = 1;
    optional string data_type = 2;
    string namespace = 3;
    optional string media_type = 4;
    optional string title = 5;
    optional string name = 6;
    optional string name_full = 7;
    optional string version = 8;
    optional string hash_sha256 = 9;
    optional google.protobuf.Struct data_json = 10;
    optional string iri = 11;
    optional string url = 12;
    optional string datetime_created = 13;
    optional string datetime_last_modified = 14;
    optional string description = 15;
    optional string image = 16;
    optional string file = 17;
}

message ExtraDataResponse {
    optional string extradata_id = 1;
    optional string data_type = 2;
    string namespace = 3;
    optional string media_type = 4;
    optional string title = 5;
    optional string name = 6;
    optional string name_full = 7;
    optional string version = 8;
    optional string hash_sha256 = 9;
    optional google.protobuf.Struct data_json = 10;
    optional string iri = 11;
    optional string url = 12;
    optional string datetime_created = 13;
    optional string datetime_last_modified = 14;
    optional string description = 15;
    optional string image = 16;
    optional string file = 17;
}

message ExtraDataRetrieveRequest {
    string extradata_id = 1;
}

message ExtraDataStreamRequest {
}

message MethodClassDestroyRequest {
    string methodclass_id = 1;
}

message MethodClassListRequest {
}

message MethodClassListResponse {
    repeated MethodClassResponse results = 1;
}

message MethodClassPartialUpdateRequest {
    optional string methodclass_id = 1;
    repeated string _partial_update_fields = 2;
    string name = 3;
    optional string iri = 4;
    optional string description = 5;
}

message MethodClassRequest {
    optional string methodclass_id = 1;
    string name = 2;
    optional string iri = 3;
    optional string description = 4;
}

message MethodClassResponse {
    optional string methodclass_id = 1;
    string name = 2;
    optional string iri = 3;
    optional string description = 4;
}

message MethodClassRetrieveRequest {
    string methodclass_id = 1;
}

message MethodClassStreamRequest {
}

message MethodDestroyRequest {
    string method_id = 1;
}

message MethodInstanceDestroyRequest {
    string methodinstance_id = 1;
}

message MethodInstanceListRequest {
}

message MethodInstanceListResponse {
    repeated MethodInstanceResponse results = 1;
}

message MethodInstancePartialUpdateRequest {
    optional string methodinstance_id = 1;
    string namespace = 2;
    string method_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    repeated string _partial_update_fields = 20;
    optional string title = 21;
    string name = 22;
    optional string uri = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional string parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional string iri = 30;
    optional string pid = 31;
    optional google.protobuf.Struct method_json = 32;
}

message MethodInstanceRequest {
    optional string methodinstance_id = 1;
    string namespace = 2;
    string method_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    optional string title = 20;
    string name = 21;
    optional string uri = 22;
    optional string version = 23;
    optional string datetime_last_modified = 24;
    optional string parameters = 25;
    optional string icon = 26;
    optional string description = 27;
    optional string remarks = 28;
    optional string iri = 29;
    optional string pid = 30;
    optional google.protobuf.Struct method_json = 31;
}

message MethodInstanceResponse {
    optional string methodinstance_id = 1;
    string namespace = 2;
    string method_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    optional string title = 20;
    string name = 21;
    optional string uri = 22;
    optional string version = 23;
    optional string datetime_last_modified = 24;
    optional string parameters = 25;
    optional string icon = 26;
    optional string description = 27;
    optional string remarks = 28;
    optional string iri = 29;
    optional string pid = 30;
    optional google.protobuf.Struct method_json = 31;
}

message MethodInstanceRetrieveRequest {
    string methodinstance_id = 1;
}

message MethodInstanceStreamRequest {
}

message MethodListRequest {
}

message MethodListResponse {
    repeated MethodResponse results = 1;
}

message MethodPartialUpdateRequest {
    optional string method_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string method_class = 17;
    repeated string _partial_update_fields = 18;
    optional string title = 19;
    string name = 20;
    optional string uri = 21;
    optional string iri = 22;
    optional string pid = 23;
    optional string pac_id = 24;
    optional string version = 25;
    optional string datetime_last_modified = 26;
    optional google.protobuf.Struct parameters = 27;
    optional string icon = 28;
    optional string description = 29;
    optional string remarks = 30;
    optional google.protobuf.Struct method_json = 31;
    optional string media_type = 32;
}

message MethodRequest {
    optional string method_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string method_class = 17;
    optional string title = 18;
    string name = 19;
    optional string uri = 20;
    optional string iri = 21;
    optional string pid = 22;
    optional string pac_id = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional google.protobuf.Struct parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional google.protobuf.Struct method_json = 30;
    optional string media_type = 31;
}

message MethodResponse {
    optional string method_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string method_class = 17;
    optional string title = 18;
    string name = 19;
    optional string uri = 20;
    optional string iri = 21;
    optional string pid = 22;
    optional string pac_id = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional google.protobuf.Struct parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional google.protobuf.Struct method_json = 30;
    optional string media_type = 31;
}

message MethodRetrieveRequest {
    string method_id = 1;
}

message ProcedureDestroyRequest {
    string procedure_id = 1;
}

message ProcedureInstanceDestroyRequest {
    string procedureinstance_id = 1;
}

message ProcedureInstanceListRequest {
}

message ProcedureInstanceListResponse {
    repeated ProcedureInstanceResponse results = 1;
}

message ProcedureInstancePartialUpdateRequest {
    optional string procedureinstance_id = 1;
    string namespace = 2;
    string procedure_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    repeated string _partial_update_fields = 20;
    optional string title = 21;
    string name = 22;
    optional string uri = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional string parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional string iri = 30;
    optional string pid = 31;
    optional google.protobuf.Struct procedure_json = 32;
    optional string procedure_file = 33;
}

message ProcedureInstanceRequest {
    optional string procedureinstance_id = 1;
    string namespace = 2;
    string procedure_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    optional string title = 20;
    string name = 21;
    optional string uri = 22;
    optional string version = 23;
    optional string datetime_last_modified = 24;
    optional string parameters = 25;
    optional string icon = 26;
    optional string description = 27;
    optional string remarks = 28;
    optional string iri = 29;
    optional string pid = 30;
    optional google.protobuf.Struct procedure_json = 31;
    optional string procedure_file = 32;
}

message ProcedureInstanceResponse {
    optional string procedureinstance_id = 1;
    string namespace = 2;
    string procedure_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    optional string title = 20;
    string name = 21;
    optional string uri = 22;
    optional string version = 23;
    optional string datetime_last_modified = 24;
    optional string parameters = 25;
    optional string icon = 26;
    optional string description = 27;
    optional string remarks = 28;
    optional string iri = 29;
    optional string pid = 30;
    optional google.protobuf.Struct procedure_json = 31;
    optional string procedure_file = 32;
}

message ProcedureInstanceRetrieveRequest {
    string procedureinstance_id = 1;
}

message ProcedureInstanceStreamRequest {
}

message ProcedureListRequest {
}

message ProcedureListResponse {
    repeated ProcedureResponse results = 1;
}

message ProcedurePartialUpdateRequest {
    optional string procedure_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string media_type = 17;
    optional string procedure_class = 18;
    repeated string _partial_update_fields = 19;
    optional string title = 20;
    string name = 21;
    optional string uri = 22;
    optional string iri = 23;
    optional string pid = 24;
    optional string pac_id = 25;
    optional string version = 26;
    optional string datetime_last_modified = 27;
    optional google.protobuf.Struct parameters = 28;
    optional string icon = 29;
    optional string description = 30;
    optional string remarks = 31;
    optional string procedure_txt = 32;
    optional google.protobuf.Struct procedure_json = 33;
    optional string procedure_file = 34;
}

message ProcedureRequest {
    optional string procedure_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string media_type = 17;
    optional string procedure_class = 18;
    optional string title = 19;
    string name = 20;
    optional string uri = 21;
    optional string iri = 22;
    optional string pid = 23;
    optional string pac_id = 24;
    optional string version = 25;
    optional string datetime_last_modified = 26;
    optional google.protobuf.Struct parameters = 27;
    optional string icon = 28;
    optional string description = 29;
    optional string remarks = 30;
    optional string procedure_txt = 31;
    optional google.protobuf.Struct procedure_json = 32;
    optional string procedure_file = 33;
}

message ProcedureResponse {
    optional string procedure_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string media_type = 17;
    optional string procedure_class = 18;
    optional string title = 19;
    string name = 20;
    optional string uri = 21;
    optional string iri = 22;
    optional string pid = 23;
    optional string pac_id = 24;
    optional string version = 25;
    optional string datetime_last_modified = 26;
    optional google.protobuf.Struct parameters = 27;
    optional string icon = 28;
    optional string description = 29;
    optional string remarks = 30;
    optional string procedure_txt = 31;
    optional google.protobuf.Struct procedure_json = 32;
    optional string procedure_file = 33;
}

message ProcedureRetrieveRequest {
    string procedure_id = 1;
}

message ProcedureStreamRequest {
}

message ProcessDestroyRequest {
    string process_id = 1;
}

message ProcessInstanceDestroyRequest {
    string processinstance_id = 1;
}

message ProcessInstanceListRequest {
}

message ProcessInstanceListResponse {
    repeated ProcessInstanceResponse results = 1;
}

message ProcessInstancePartialUpdateRequest {
    optional string processinstance_id = 1;
    string namespace = 2;
    string process_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    repeated string procedure_instances = 20;
    repeated string _partial_update_fields = 21;
    optional string title = 22;
    string name = 23;
    optional string uri = 24;
    optional string version = 25;
    optional string datetime_last_modified = 26;
    optional string parameters = 27;
    optional string icon = 28;
    optional string description = 29;
    optional string remarks = 30;
    optional string iri = 31;
    optional string pid = 32;
    optional google.protobuf.Struct process_json = 33;
    optional string process_file = 34;
}

message ProcessInstanceRequest {
    optional string processinstance_id = 1;
    string namespace = 2;
    string process_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    repeated string procedure_instances = 20;
    optional string title = 21;
    string name = 22;
    optional string uri = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional string parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional string iri = 30;
    optional string pid = 31;
    optional google.protobuf.Struct process_json = 32;
    optional string process_file = 33;
}

message ProcessInstanceResponse {
    optional string processinstance_id = 1;
    string namespace = 2;
    string process_base = 3;
    optional string status = 4;
    optional string media_type = 5;
    repeated string substance_instances = 6;
    repeated string polymer_instances = 7;
    repeated string mixture_instances = 8;
    repeated string part_instances = 9;
    repeated string device_instances = 10;
    repeated string device_setup_instances = 11;
    repeated string labware_instances = 12;
    repeated string organism_instances = 13;
    repeated string samples = 14;
    repeated string sample_sets = 15;
    repeated string creators = 16;
    repeated string resources_external = 17;
    repeated string data_extra = 18;
    repeated string tags = 19;
    repeated string procedure_instances = 20;
    optional string title = 21;
    string name = 22;
    optional string uri = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional string parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional string iri = 30;
    optional string pid = 31;
    optional google.protobuf.Struct process_json = 32;
    optional string process_file = 33;
}

message ProcessInstanceRetrieveRequest {
    string processinstance_id = 1;
}

message ProcessInstanceStreamRequest {
}

message ProcessListRequest {
}

message ProcessListResponse {
    repeated ProcessResponse results = 1;
}

message ProcessPartialUpdateRequest {
    optional string process_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string process_class = 17;
    repeated string _partial_update_fields = 18;
    optional string title = 19;
    optional string name = 20;
    optional string uri = 21;
    optional string iri = 22;
    optional string pid = 23;
    optional string pac_id = 24;
    optional string version = 25;
    optional string datetime_last_modified = 26;
    optional google.protobuf.Struct parameters = 27;
    optional string icon = 28;
    optional string description = 29;
    optional string remarks = 30;
    optional google.protobuf.Struct process_json = 31;
    optional string process_file = 32;
    optional string media_type = 33;
    repeated string procedures = 34;
}

message ProcessRequest {
    optional string process_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string process_class = 17;
    optional string title = 18;
    optional string name = 19;
    optional string uri = 20;
    optional string iri = 21;
    optional string pid = 22;
    optional string pac_id = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional google.protobuf.Struct parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional google.protobuf.Struct process_json = 30;
    optional string process_file = 31;
    optional string media_type = 32;
    repeated string procedures = 33;
}

message ProcessResponse {
    optional string process_id = 1;
    string namespace = 2;
    repeated string substances = 3;
    repeated string polymers = 4;
    repeated string mixtures = 5;
    repeated string parts = 6;
    repeated string devices = 7;
    repeated string device_setups = 8;
    repeated string labware = 9;
    repeated string organisms = 10;
    repeated string samples = 11;
    repeated string sample_sets = 12;
    repeated string creators = 13;
    repeated string resources_external = 14;
    repeated string data_extra = 15;
    repeated string tags = 16;
    optional string process_class = 17;
    optional string title = 18;
    optional string name = 19;
    optional string uri = 20;
    optional string iri = 21;
    optional string pid = 22;
    optional string pac_id = 23;
    optional string version = 24;
    optional string datetime_last_modified = 25;
    optional google.protobuf.Struct parameters = 26;
    optional string icon = 27;
    optional string description = 28;
    optional string remarks = 29;
    optional google.protobuf.Struct process_json = 30;
    optional string process_file = 31;
    optional string media_type = 32;
    repeated string procedures = 33;
}

message ProcessRetrieveRequest {
    string process_id = 1;
}

message ProcessStreamRequest {
}

message SubscriptionRequest {
    string signal = 1;
}

