syntax = "proto3"; package quartermaster.v1; import "google/protobuf/timestamp.proto"; service QuartermasterCapabilities { rpc SubmitProfile (SubmitProfileRequest) returns (SubmitProfileResponse); rpc GetProfile (GetProfileRequest) returns (GetProfileResponse); rpc ListProfiles (ListProfilesRequest) returns (ListProfilesResponse); rpc VerifyProfile (VerifyProfileRequest) returns (VerifyProfileResponse); rpc FlushAnchor (FlushAnchorRequest) returns (FlushAnchorResponse); } message SubmitProfileRequest { string cluster_id = 1; string image_digest = 2; bytes profile_canonical = 3; bytes profile_hash = 4; string miner_version = 5; string source_repo = 6; string source_commit = 7; } message SubmitProfileResponse { string capability_id = 1; google.protobuf.Timestamp accepted_at = 2; bool anchored = 3; string anchor_id = 4; } message GetProfileRequest { bytes manifest_hash = 1; } message GetProfileResponse { string capability_id = 1; google.protobuf.Timestamp time = 2; string cluster_id = 3; bytes manifest_hash = 4; string image_digest = 5; string miner_version = 6; string source_repo = 7; string source_commit = 8; bool anchored = 9; string anchor_id = 10; int32 leaf_index = 11; } message ListProfilesRequest { string cluster_id = 1; int64 limit = 2; } message ListProfilesResponse { repeated GetProfileResponse profiles = 1; } message VerifyProfileRequest { bytes manifest_hash = 1; } message ProofStepMsg { enum Direction { LEFT = 0; RIGHT = 1; } Direction direction = 1; bytes hash = 2; } message VerifyProfileResponse { bool verified = 1; string anchor_id = 2; bytes merkle_root = 3; repeated ProofStepMsg proof = 4; string error = 5; } message FlushAnchorRequest { string cluster_id = 1; } message FlushAnchorResponse { string anchor_id = 1; bytes merkle_root = 2; int32 leaf_count = 3; }