syntax = "proto3"; package api; option go_package = "github.com/onepanelio/core/api/gen"; import "google/api/annotations.proto"; import "workflow_template.proto"; import "label.proto"; service WorkspaceTemplateService { // Get the generated WorkflowTemplate for a WorkspaceTemplate rpc GenerateWorkspaceTemplateWorkflowTemplate (GenerateWorkspaceTemplateWorkflowTemplateRequest) returns (WorkflowTemplate) { option (google.api.http) = { post: "/apis/v1beta1/{namespace}/workspace_templates/{uid}/workflow_template" body: "workspaceTemplate" }; } // Creates a WorkspaceTemplate rpc CreateWorkspaceTemplate (CreateWorkspaceTemplateRequest) returns (WorkspaceTemplate) { option (google.api.http) = { post: "/apis/v1beta1/{namespace}/workspace_templates" body: "workspaceTemplate" }; } // Updates a WorkspaceTemplate rpc UpdateWorkspaceTemplate (UpdateWorkspaceTemplateRequest) returns (WorkspaceTemplate) { option (google.api.http) = { put: "/apis/v1beta1/{namespace}/workspace_templates/{uid}" body: "workspaceTemplate" }; } // Archives a WorkspaceTemplate rpc ArchiveWorkspaceTemplate (ArchiveWorkspaceTemplateRequest) returns (WorkspaceTemplate) { option (google.api.http) = { put: "/apis/v1beta1/{namespace}/workspace_templates/{uid}/archive" }; } // Get a WorkspaceTemplate rpc GetWorkspaceTemplate (GetWorkspaceTemplateRequest) returns (WorkspaceTemplate) { option (google.api.http) = { get: "/apis/v1beta1/{namespace}/workspace_templates/{uid}" }; } rpc ListWorkspaceTemplates (ListWorkspaceTemplatesRequest) returns (ListWorkspaceTemplatesResponse) { option (google.api.http) = { get: "/apis/v1beta1/{namespace}/workspace_templates" }; } rpc ListWorkspaceTemplateVersions (ListWorkspaceTemplateVersionsRequest) returns (ListWorkspaceTemplateVersionsResponse) { option (google.api.http) = { get: "/apis/v1beta1/{namespace}/workspace_templates/{uid}/versions" }; } } message WorkspaceTemplate { string uid = 1; string name = 2; int64 version = 3; string manifest = 4; bool isLatest = 5; string createdAt = 6; WorkflowTemplate workflowTemplate = 7; repeated KeyValue labels = 8; bool isArchived = 9; string description = 10; } message GenerateWorkspaceTemplateWorkflowTemplateRequest { string namespace = 1; string uid = 2; WorkspaceTemplate workspaceTemplate = 3; } message CreateWorkspaceTemplateRequest { string namespace = 1; WorkspaceTemplate workspaceTemplate = 2; } message UpdateWorkspaceTemplateRequest { string namespace = 1; string uid = 2; WorkspaceTemplate workspaceTemplate = 3; } message GetWorkspaceTemplateRequest { string namespace = 1; string uid = 2; int64 version = 3; } message ArchiveWorkspaceTemplateRequest { string namespace = 1; string uid = 2; } message ListWorkspaceTemplatesRequest { string namespace = 1; int32 pageSize = 2; int32 page = 3; string order = 4; string labels = 5; string uid = 6; } message ListWorkspaceTemplatesResponse { int32 count = 1; repeated WorkspaceTemplate workspaceTemplates = 2; int32 page = 3; int32 pages = 4; int32 totalCount = 5; } message ListWorkspaceTemplateVersionsRequest { string namespace = 1; string uid = 2; } message ListWorkspaceTemplateVersionsResponse { int32 count = 1; repeated WorkspaceTemplate workspaceTemplates = 2; }