syntax = "proto3"; package filer; option java_package = "seaweedfs.client"; option java_outer_classname = "FilerProto"; ////////////////////////////////////////////////// service SeaweedFiler { rpc LookupDirectoryEntry(LookupDirectoryEntryRequest) returns (LookupDirectoryEntryResponse) {} rpc ListEntries(ListEntriesRequest) returns (ListEntriesResponse) {} rpc CreateEntry(CreateEntryRequest) returns (CreateEntryResponse) {} rpc UpdateEntry(UpdateEntryRequest) returns (UpdateEntryResponse) {} rpc DeleteEntry(DeleteEntryRequest) returns (DeleteEntryResponse) {} rpc AtomicRenameEntry(AtomicRenameEntryRequest) returns (AtomicRenameEntryResponse) {} rpc AssignVolume(AssignVolumeRequest) returns (AssignVolumeResponse) {} rpc LookupVolume(LookupVolumeRequest) returns (LookupVolumeResponse) {} rpc DeleteCollection(DeleteCollectionRequest) returns (DeleteCollectionResponse) {} rpc Statistics(StatisticsRequest) returns (StatisticsResponse) {} rpc GetFilerConfiguration(GetFilerConfigurationRequest) returns (GetFilerConfigurationResponse) {} } ////////////////////////////////////////////////// message LookupDirectoryEntryRequest { string directory = 1; string name = 2; } message LookupDirectoryEntryResponse { Entry entry = 1; } message ListEntriesRequest { string directory = 1; string prefix = 2; string startFromFileName = 3; bool inclusiveStartFrom = 4; uint32 limit = 5; } message ListEntriesResponse { repeated Entry entries = 1; } message Entry { string name = 1; bool is_directory = 2; repeated FileChunk chunks = 3; FuseAttributes attributes = 4; map extended = 5; } message FullEntry { string dir = 1; Entry entry = 2; } message EventNotification { Entry old_entry = 1; Entry new_entry = 2; bool delete_chunks = 3; string new_parent_path = 4; } message FileChunk { string file_id = 1; // to be deprecated int64 offset = 2; uint64 size = 3; int64 mtime = 4; string e_tag = 5; string source_file_id = 6; // to be deprecated FileId fid = 7; FileId source_fid = 8; } message FileId { uint32 volume_id = 1; uint64 file_key = 2; fixed32 cookie = 3; } message FuseAttributes { uint64 file_size = 1; int64 mtime = 2; // unix time in seconds uint32 file_mode = 3; uint32 uid = 4; uint32 gid = 5; int64 crtime = 6; // unix time in seconds string mime = 7; string replication = 8; string collection = 9; int32 ttl_sec = 10; string user_name = 11; // for hdfs repeated string group_name = 12; // for hdfs string symlink_target = 13; } message CreateEntryRequest { string directory = 1; Entry entry = 2; } message CreateEntryResponse {} message UpdateEntryRequest { string directory = 1; Entry entry = 2; } message UpdateEntryResponse {} message DeleteEntryRequest { string directory = 1; string name = 2; // bool is_directory = 3; bool is_delete_data = 4; bool is_recursive = 5; bool ignore_recursive_error = 6; } message DeleteEntryResponse {} message AtomicRenameEntryRequest { string old_directory = 1; string old_name = 2; string new_directory = 3; string new_name = 4; } message AtomicRenameEntryResponse {} message AssignVolumeRequest { int32 count = 1; string collection = 2; string replication = 3; int32 ttl_sec = 4; string data_center = 5; } message AssignVolumeResponse { string file_id = 1; string url = 2; string public_url = 3; int32 count = 4; string auth = 5; } message LookupVolumeRequest { repeated string volume_ids = 1; } message Locations { repeated Location locations = 1; } message Location { string url = 1; string public_url = 2; } message LookupVolumeResponse { map locations_map = 1; } message DeleteCollectionRequest { string collection = 1; } message DeleteCollectionResponse {} message StatisticsRequest { string replication = 1; string collection = 2; string ttl = 3; } message StatisticsResponse { string replication = 1; string collection = 2; string ttl = 3; uint64 total_size = 4; uint64 used_size = 5; uint64 file_count = 6; } message GetFilerConfigurationRequest {} message GetFilerConfigurationResponse { repeated string masters = 1; string replication = 2; string collection = 3; uint32 max_mb = 4; }