syntax = "proto3";

package join;

option go_package = "github.com/edgelesssys/constellation/v2/joinservice/joinproto";

service API {
    rpc IssueJoinTicket(IssueJoinTicketRequest) returns (IssueJoinTicketResponse);
    rpc IssueRejoinTicket(IssueRejoinTicketRequest) returns (IssueRejoinTicketResponse);
}


message IssueJoinTicketRequest {
    string disk_uuid = 1;
    bytes certificate_request = 2;
    bool is_control_plane = 3;
}

message IssueJoinTicketResponse {
    bytes state_disk_key = 1;
    bytes measurement_salt = 2;
    bytes measurement_secret = 3;
    bytes kubelet_cert = 4;
    string api_server_endpoint = 5;
    string token = 6;
    string discovery_token_ca_cert_hash = 7;
    repeated control_plane_cert_or_key control_plane_files = 8;
    string kubernetes_version = 9;
    repeated KubernetesComponent kubernetes_components = 10;
}

message control_plane_cert_or_key {
    string name = 1;
    bytes data = 2;
}

message IssueRejoinTicketRequest {
    string disk_uuid = 1;
}

message IssueRejoinTicketResponse {
    bytes state_disk_key = 1;
    bytes measurement_secret = 2;
}

// Discuss if we want to import the init proto instead of duplicating it
message KubernetesComponent {
    string url = 1;
    string hash = 2;
    string install_path = 3;
    bool extract = 4;
  }
