syntax = "proto3";
package coda.dashboards.v1;

import "google/protobuf/timestamp.proto";
import "coda/common/v1/types.proto";

service DashboardService {
  rpc ListDashboards(ListDashboardsRequest) returns (ListDashboardsResponse);
  rpc GetDashboard(GetDashboardRequest) returns (GetDashboardResponse);
  rpc CreateDashboard(CreateDashboardRequest) returns (CreateDashboardResponse);
  rpc UpdateDashboard(UpdateDashboardRequest) returns (UpdateDashboardResponse);
  rpc DeleteDashboard(DeleteDashboardRequest) returns (DeleteDashboardResponse);
}

message Dashboard {
  string id = 1;
  string tenant_id = 2;
  string name = 3;
  optional string description = 4;
  google.protobuf.Timestamp created_at = 5;
  google.protobuf.Timestamp updated_at = 6;
}

message ListDashboardsRequest { string tenant_id = 1; coda.common.v1.PageRequest page = 2; }
message ListDashboardsResponse { repeated Dashboard dashboards = 1; coda.common.v1.PageInfo page = 2; }

message GetDashboardRequest { string dashboard_id = 1; }
message GetDashboardResponse { Dashboard dashboard = 1; }

message CreateDashboardRequest { string tenant_id = 1; string name = 2; optional string description = 3; }
message CreateDashboardResponse { Dashboard dashboard = 1; }

message UpdateDashboardRequest { string dashboard_id = 1; optional string name = 2; optional string description = 3; }
message UpdateDashboardResponse { Dashboard dashboard = 1; }

message DeleteDashboardRequest { string dashboard_id = 1; }
message DeleteDashboardResponse {}
