syntax = "proto3"; package provisioner; service Provisioner { rpc ProvisionDatabase(DatabaseRequest) returns (DatabaseResponse); rpc DeleteDatabase(DatabaseRequest) returns (DatabaseDeletionResponse); rpc DumpDatabase(DatabaseDumpRequest) returns (DatabaseDumpResponse); rpc HealthCheck(Ping) returns (Pong); } message DatabaseRequest { string project_name = 1; oneof db_type { Shared Shared = 10; AwsRds AwsRds = 11; }; // Override the default db name. Only applies to RDS. optional string db_name = 2; } message DatabaseDumpRequest { string project_name = 1; } message Shared { oneof engine { string postgres = 1; string mongodb = 50; } } message AwsRds { oneof engine { RdsConfig postgres = 1; RdsConfig mysql = 2; RdsConfig mariadb = 3; } } message RdsConfig {} message DatabaseResponse { string username = 1; string password = 2; string database_name = 3; string engine = 4; string address_private = 5; string address_public = 6; string port = 7; } message DatabaseDeletionResponse {} message DatabaseDumpResponse { bytes sql = 1; } message Ping {} message Pong {}