From bfeb418f1e042efbf0924e122b4141fdd6cee545 Mon Sep 17 00:00:00 2001 From: Guangqing Tang <40620519+gt2345@users.noreply.github.com> Date: Sun, 8 Sep 2024 20:36:01 -0500 Subject: [PATCH] feat: Implement custom trigger for webhooks (#9879) --- e2e_tests/tests/cluster/test_webhooks.py | 84 + .../fixtures/core_api/11_generic_metrics.py | 1 + harness/determined/common/api/bindings.py | 101 + harness/determined/core/_context.py | 34 +- master/internal/webhooks/api_webhook.go | 33 + master/internal/webhooks/postgres_webhook.go | 196 +- master/internal/webhooks/webhook.go | 9 + ...828101021_custom-webhook-trigger.tx.up.sql | 13 + proto/pkg/apiv1/api.pb.go | 2255 +++++++++-------- proto/pkg/apiv1/api.pb.gw.go | 78 + proto/pkg/apiv1/webhook.pb.go | 201 +- proto/pkg/webhookv1/webhook.pb.go | 271 +- proto/src/determined/api/v1/api.proto | 12 + proto/src/determined/api/v1/webhook.proto | 16 + proto/src/determined/webhook/v1/webhook.proto | 13 + .../src/components/WebhookCreateModal.tsx | 58 +- webui/react/src/pages/WebhookList.tsx | 7 + webui/react/src/services/api-ts-sdk/api.ts | 139 +- 18 files changed, 2282 insertions(+), 1239 deletions(-) create mode 100644 master/static/migrations/20240828101021_custom-webhook-trigger.tx.up.sql diff --git a/e2e_tests/tests/cluster/test_webhooks.py b/e2e_tests/tests/cluster/test_webhooks.py index cb2edaf17af..26f9533b5c9 100644 --- a/e2e_tests/tests/cluster/test_webhooks.py +++ b/e2e_tests/tests/cluster/test_webhooks.py @@ -210,6 +210,90 @@ def test_log_pattern_send_webhook(should_match: bool) -> None: test_agent_user_group._delete_workspace_and_check(sess, workspace) +@pytest.mark.e2e_cpu +@pytest.mark.parametrize("isSlack", [True, False]) +def test_custom_webhook(isSlack: bool) -> None: + port = 5009 if isSlack else 5010 + server = utils.WebhookServer(port, allow_dupes=True) + sess = api_utils.admin_session() + workspace = bindings.post_PostWorkspace( + sess, body=bindings.v1PostWorkspaceRequest(name=f"webhook-test{random.random()}") + ).workspace + project = bindings.post_PostProject( + sess, + body=bindings.v1PostProjectRequest( + name=f"webhook-test{random.random()}", + workspaceId=workspace.id, + ), + workspaceId=workspace.id, + ).project + + webhook = bindings.v1Webhook( + url=f"http://localhost:{port}", + webhookType=bindings.v1WebhookType.SLACK if isSlack else bindings.v1WebhookType.DEFAULT, + triggers=[ + bindings.v1Trigger( + triggerType=bindings.v1TriggerType.CUSTOM, + ) + ], + mode=bindings.v1WebhookMode.WORKSPACE, + name=f"webhook_1{random.random()}", + workspaceId=workspace.id, + ) + # custom triggers only work on webhook with mode specific + with pytest.raises(errors.APIException): + bindings.post_PostWebhook(sess, body=webhook) + webhook.mode = bindings.v1WebhookMode.SPECIFIC + w = bindings.post_PostWebhook(sess, body=webhook).webhook + + experiment_id = exp.create_experiment( + sess, + conf.fixtures_path("core_api/11_generic_metrics.yaml"), + conf.fixtures_path("core_api"), + [ + "--project_id", + f"{project.id}", + "--config", + f"integrations.webhooks.webhook_name=['{webhook.name}']", + ], + ) + + # this experiment should not trigger webhook because the name does not match. + control_exp_id = exp.create_experiment( + sess, + conf.fixtures_path("core_api/11_generic_metrics.yaml"), + conf.fixtures_path("core_api"), + [ + "--project_id", + f"{project.id}", + "--config", + "integrations.webhooks.webhook_name=['abc']", + ], + ) + + exp.wait_for_experiment_state( + sess, + experiment_id, + bindings.experimentv1State.COMPLETED, + max_wait_secs=conf.DEFAULT_MAX_WAIT_SECS, + ) + exp.wait_for_experiment_state( + sess, + control_exp_id, + bindings.experimentv1State.COMPLETED, + max_wait_secs=conf.DEFAULT_MAX_WAIT_SECS, + ) + + responses = server.close_and_return_responses() + assert len(responses) == 1 + assert "end of main" in responses["/"] + assert "DEBUG" in responses["/"] + assert str(experiment_id) in responses["/"] + + bindings.delete_DeleteWebhook(sess, id=w.id or 0) + test_agent_user_group._delete_workspace_and_check(sess, workspace) + + @pytest.mark.e2e_cpu def test_specific_webhook() -> None: port1 = 5007 diff --git a/e2e_tests/tests/fixtures/core_api/11_generic_metrics.py b/e2e_tests/tests/fixtures/core_api/11_generic_metrics.py index 54036ab24d1..5fee9dd1b0b 100644 --- a/e2e_tests/tests/fixtures/core_api/11_generic_metrics.py +++ b/e2e_tests/tests/fixtures/core_api/11_generic_metrics.py @@ -31,6 +31,7 @@ def main(core_context: det.core.Context, increment_by: float): core_context.train.report_metrics( group=group, steps_completed=steps_completed, metrics=metrics ) + core_context.alert(title="end of main", level="debug") if __name__ == "__main__": diff --git a/harness/determined/common/api/bindings.py b/harness/determined/common/api/bindings.py index f2ff9e34230..7d4b52a8dc7 100644 --- a/harness/determined/common/api/bindings.py +++ b/harness/determined/common/api/bindings.py @@ -3121,6 +3121,49 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1CustomWebhookEventData(Printable): + """Event data for custom trigger.""" + description: "typing.Optional[str]" = None + level: "typing.Optional[v1LogLevel]" = None + title: "typing.Optional[str]" = None + + def __init__( + self, + *, + description: "typing.Union[str, None, Unset]" = _unset, + level: "typing.Union[v1LogLevel, None, Unset]" = _unset, + title: "typing.Union[str, None, Unset]" = _unset, + ): + if not isinstance(description, Unset): + self.description = description + if not isinstance(level, Unset): + self.level = level + if not isinstance(title, Unset): + self.title = title + + @classmethod + def from_json(cls, obj: Json) -> "v1CustomWebhookEventData": + kwargs: "typing.Dict[str, typing.Any]" = { + } + if "description" in obj: + kwargs["description"] = obj["description"] + if "level" in obj: + kwargs["level"] = v1LogLevel(obj["level"]) if obj["level"] is not None else None + if "title" in obj: + kwargs["title"] = obj["title"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + } + if not omit_unset or "description" in vars(self): + out["description"] = self.description + if not omit_unset or "level" in vars(self): + out["level"] = None if self.level is None else self.level.value + if not omit_unset or "title" in vars(self): + out["title"] = self.title + return out + class v1DataPoint(Printable): """One datapoint in a series of metrics from a trial in batch.""" epoch: "typing.Optional[float]" = None @@ -11609,6 +11652,41 @@ def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: } return out +class v1PostWebhookEventDataRequest(Printable): + """Request for triggering custom trigger.""" + trialId: "typing.Optional[int]" = None + + def __init__( + self, + *, + data: "v1CustomWebhookEventData", + experimentId: int, + trialId: "typing.Union[int, None, Unset]" = _unset, + ): + self.data = data + self.experimentId = experimentId + if not isinstance(trialId, Unset): + self.trialId = trialId + + @classmethod + def from_json(cls, obj: Json) -> "v1PostWebhookEventDataRequest": + kwargs: "typing.Dict[str, typing.Any]" = { + "data": v1CustomWebhookEventData.from_json(obj["data"]), + "experimentId": obj["experimentId"], + } + if "trialId" in obj: + kwargs["trialId"] = obj["trialId"] + return cls(**kwargs) + + def to_json(self, omit_unset: bool = False) -> typing.Dict[str, typing.Any]: + out: "typing.Dict[str, typing.Any]" = { + "data": self.data.to_json(omit_unset), + "experimentId": self.experimentId, + } + if not omit_unset or "trialId" in vars(self): + out["trialId"] = self.trialId + return out + class v1PostWebhookResponse(Printable): """Response to PostWebhookRequest.""" @@ -16529,11 +16607,13 @@ class v1TriggerType(DetEnum): - TRIGGER_TYPE_EXPERIMENT_STATE_CHANGE: For an experiment changing state - TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED: For metrics emitted during training. - TRIGGER_TYPE_TASK_LOG: For task logs. + - TRIGGER_TYPE_CUSTOM: For custom alert. """ UNSPECIFIED = "TRIGGER_TYPE_UNSPECIFIED" EXPERIMENT_STATE_CHANGE = "TRIGGER_TYPE_EXPERIMENT_STATE_CHANGE" METRIC_THRESHOLD_EXCEEDED = "TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED" TASK_LOG = "TRIGGER_TYPE_TASK_LOG" + CUSTOM = "TRIGGER_TYPE_CUSTOM" class v1UnarchiveExperimentsRequest(Printable): """Unarchive multiple experiments.""" @@ -23443,6 +23523,27 @@ def post_PostWebhook( return v1PostWebhookResponse.from_json(_resp.json()) raise APIHttpError("post_PostWebhook", _resp) +def post_PostWebhookEventData( + session: "api.BaseSession", + *, + body: "v1PostWebhookEventDataRequest", +) -> None: + """Trigger custom trigger of webhooks.""" + _params = None + _resp = session._do_request( + method="POST", + path="/api/v1/webhooks/custom", + params=_params, + json=body.to_json(True), + data=None, + headers=None, + timeout=None, + stream=False, + ) + if _resp.status_code == 200: + return + raise APIHttpError("post_PostWebhookEventData", _resp) + def post_PostWorkspace( session: "api.BaseSession", *, diff --git a/harness/determined/core/_context.py b/harness/determined/core/_context.py index 1e5f200f6db..2398ba3c39b 100644 --- a/harness/determined/core/_context.py +++ b/harness/determined/core/_context.py @@ -5,7 +5,7 @@ import threading import traceback import types -from typing import Any, Dict, Optional, Union +from typing import Any, Dict, Literal, Optional, Union import appdirs @@ -83,6 +83,37 @@ def __enter__(self) -> "Context": self.start() return self + def alert( + self, + title: Optional[str] = None, + description: Optional[str] = None, + level: Optional[Literal["warn", "info", "debug", "error"]] = "info", + ) -> None: + if not isinstance(self._session, api.BaseSession): + raise ValueError("init() needs to be called before sending alert.") + if self.info is None: + raise ValueError("Workload alerting only works on determined-managed experiment.") + if self.info.trial is None: + raise ValueError("alert() only works for trial type of task.") + log_level: bindings.v1LogLevel = bindings.v1LogLevel.INFO + if level == "warn": + log_level = bindings.v1LogLevel.WARNING + elif level == "debug": + log_level = bindings.v1LogLevel.DEBUG + elif level == "error": + log_level = bindings.v1LogLevel.ERROR + + bindings.post_PostWebhookEventData( + session=self._session, + body=bindings.v1PostWebhookEventDataRequest( + data=bindings.v1CustomWebhookEventData( + title=title or "", description=description or "", level=log_level + ), + experimentId=self.info.trial.experiment_id, + trialId=self.info.trial.trial_id, + ), + ) + def close( self, exc_type: Optional[type] = None, @@ -359,6 +390,7 @@ def init( _metrics=metrics, _tensorboard_manager=tensorboard_manager, _session=session, + info=info, ) diff --git a/master/internal/webhooks/api_webhook.go b/master/internal/webhooks/api_webhook.go index e85cc08e950..7f2299ac8b2 100644 --- a/master/internal/webhooks/api_webhook.go +++ b/master/internal/webhooks/api_webhook.go @@ -107,6 +107,13 @@ func (a *WebhooksAPIServer) PostWebhook( regexConditionKey, m) } } + if t.TriggerType == webhookv1.TriggerType_TRIGGER_TYPE_CUSTOM { + if req.Webhook.Mode != webhookv1.WebhookMode_WEBHOOK_MODE_SPECIFIC { + return nil, status.Errorf(codes.InvalidArgument, + "custom trigger only works on webhook with mode 'SPECIFIC'. Got %v", + req.Webhook.Mode) + } + } } w := WebhookFromProto(req.Webhook) @@ -223,3 +230,29 @@ func (a *WebhooksAPIServer) TestWebhook( } return &apiv1.TestWebhookResponse{}, nil } + +// PostWebhookEventData handles data for custom trigger. +func (a *WebhooksAPIServer) PostWebhookEventData( + ctx context.Context, req *apiv1.PostWebhookEventDataRequest, +) (*apiv1.PostWebhookEventDataResponse, error) { + var res apiv1.PostWebhookEventDataResponse + _, _, err := grpcutil.GetUser(ctx) + if err != nil { + return &res, status.Errorf(codes.Internal, "failed to get the user: %s", err) + } + + var data CustomTriggerData + if req.Data != nil { + data.Title = req.Data.Title + data.Description = req.Data.Description + data.Level = model.TaskLogLevelFromProto(req.Data.Level) + } + err = handleCustomTriggerData(ctx, data, int(req.ExperimentId), ptrs.Ptr(int(req.TrialId))) + if err != nil { + return &res, status.Errorf(codes.Internal, + "failed to handle custom trigger data: %+v experiment id: %d trial_id %d : %s", + data, req.ExperimentId, req.TrialId, err) + } + + return &res, nil +} diff --git a/master/internal/webhooks/postgres_webhook.go b/master/internal/webhooks/postgres_webhook.go index abad0ad296d..4535942b535 100644 --- a/master/internal/webhooks/postgres_webhook.go +++ b/master/internal/webhooks/postgres_webhook.go @@ -2,6 +2,7 @@ package webhooks import ( "context" + "database/sql" "encoding/json" "fmt" "math" @@ -39,6 +40,13 @@ type WebhookManager struct { expToWebhookConfig map[int]*expconf.WebhooksConfigV0 } +// CustomTriggerData is the data for custom trigger. +type CustomTriggerData struct { + Title string `json:"title"` + Description string `json:"description"` + Level string `json:"level"` +} + // New creates a new webhook manager. func New(ctx context.Context) (*WebhookManager, error) { var triggers []*Trigger @@ -272,6 +280,125 @@ func (l *WebhookManager) deleteWebhook(ctx context.Context, id WebhookID) error return nil } +func handleCustomTriggerData(ctx context.Context, data CustomTriggerData, experimentID int, trialID *int) error { + var m struct { + bun.BaseModel `bun:"table:experiments"` + model.Experiment + ConfigBytes []byte `bun:"config"` + } + err := db.Bun().NewSelect().Model(&m).ExcludeColumn("username").Where("id = ?", experimentID).Scan(ctx) + if err != nil { + return fmt.Errorf("error getting experiment from id %d: %w", experimentID, err) + } + + activeConfig, err := expconf.ParseAnyExperimentConfigYAML(m.ConfigBytes) + if err != nil { + return fmt.Errorf("error parsing experiment config: %w", err) + } + integrationsConfig := activeConfig.Integrations() + if integrationsConfig == nil { + return nil + } + webhookConfig := integrationsConfig.Webhooks + if webhookConfig == nil || webhookConfig.Exclude { + return nil + } + + workspaceID, err := experiment.GetWorkspaceFromExperiment(ctx, &m.Experiment) + if err != nil { + return fmt.Errorf("error getting workspace from experiment : %w", err) + } + + var es []Event + if webhookConfig.WebhookID != nil { + for _, webhookID := range *webhookConfig.WebhookID { + webhook, err := GetWebhook(ctx, webhookID) + if err != nil { + return fmt.Errorf("error getting webhook from id %d: %w", webhookID, err) + } + if webhook == nil || + (webhook.WorkspaceID != nil && *webhook.WorkspaceID != workspaceID) { + continue + } + err = generateEventForCustomTrigger( + ctx, &es, webhook.Triggers, webhook.WebhookType, webhook.URL, m.Experiment, activeConfig, data, trialID) + if err != nil { + return fmt.Errorf("error genrating event for webhook with ID %d %+v: %w", webhookID, webhook, err) + } + } + } + if webhookConfig.WebhookName != nil { + for _, webhookName := range *webhookConfig.WebhookName { + webhook, err := getWebhookByName(ctx, webhookName, int(workspaceID)) + if err != nil { + return fmt.Errorf("error getting webhook from name %s: %w", webhookName, err) + } + if webhook == nil { + continue + } + err = generateEventForCustomTrigger( + ctx, &es, webhook.Triggers, webhook.WebhookType, webhook.URL, m.Experiment, activeConfig, data, trialID) + if err != nil { + return fmt.Errorf("error genrating event %s %+v: %w", webhookName, webhook, err) + } + } + } + + if len(es) == 0 { + return nil + } + + if _, err := db.Bun().NewInsert().Model(&es).Exec(ctx); err != nil { + return fmt.Errorf("handle custom data inserting event trigger: %w", err) + } + + singletonShipper.Wake() + return nil +} + +func generateEventForCustomTrigger( + ctx context.Context, + es *[]Event, + triggers Triggers, + webhookType WebhookType, + webhookURL string, + e model.Experiment, + activeConfig expconf.ExperimentConfig, + data CustomTriggerData, + trialID *int, +) error { + for _, t := range triggers { + if t.TriggerType != TriggerTypeCustom { + continue + } + p, err := generateEventPayload( + ctx, webhookType, e, activeConfig, e.State, TriggerTypeCustom, &data, trialID, + ) + if err != nil { + return fmt.Errorf("error generating event payload: %w", err) + } + *es = append(*es, Event{Payload: p, URL: webhookURL}) + } + return nil +} + +func getWebhookByName(ctx context.Context, webhookName string, workspaceID int) (*Webhook, error) { + webhook := Webhook{} + err := db.Bun().NewSelect(). + Model(&webhook). + Relation("Triggers"). + Where("name = ?", webhookName). + Where("workspace_id = ?", workspaceID). + Scan(ctx) + if err != nil { + if err == sql.ErrNoRows { + return nil, nil + } + return nil, err + } + return &webhook, nil +} + // GetWebhook returns a single Webhooks from the DB. func GetWebhook(ctx context.Context, webhookID int) (*Webhook, error) { webhook := Webhook{} @@ -349,7 +476,7 @@ func ReportExperimentStateChanged( continue } p, err := generateEventPayload( - ctx, t.Webhook.WebhookType, e, activeConfig, e.State, TriggerTypeStateChange, + ctx, t.Webhook.WebhookType, e, activeConfig, e.State, TriggerTypeStateChange, nil, nil, ) if err != nil { return fmt.Errorf("error generating event payload: %w", err) @@ -532,9 +659,14 @@ func generateEventPayload( activeConfig expconf.ExperimentConfig, expState model.State, tT TriggerType, + eventData *CustomTriggerData, trialID *int, ) ([]byte, error) { switch wt { case WebhookTypeDefault: + experiment := experimentToWebhookPayload(e, activeConfig) + if trialID != nil && *trialID > 0 { + experiment.TrialID = *trialID + } pJSON, err := json.Marshal(EventPayload{ ID: uuid.New(), Type: tT, @@ -543,7 +675,8 @@ func generateEventPayload( State: expState, }, Data: EventData{ - Experiment: experimentToWebhookPayload(e, activeConfig), + Experiment: experiment, + CustomData: eventData, }, }) if err != nil { @@ -551,7 +684,7 @@ func generateEventPayload( } return pJSON, nil case WebhookTypeSlack: - slackJSON, err := generateSlackPayload(ctx, e, activeConfig) + slackJSON, err := generateSlackPayload(ctx, e, activeConfig, eventData, trialID) if err != nil { return nil, err } @@ -562,15 +695,16 @@ func generateEventPayload( } func generateSlackPayload( - ctx context.Context, e model.Experiment, activeConfig expconf.ExperimentConfig, + ctx context.Context, e model.Experiment, + activeConfig expconf.ExperimentConfig, eventData *CustomTriggerData, trialID *int, ) ([]byte, error) { var status string var eURL string - var c string var mStatus string var projectID int var wID int var w *model.Workspace + c := "#13B670" config := conf.GetMasterConfig() wName := activeConfig.Workspace() // TODO(ET-288): This is incorrect on moves. pName := activeConfig.Project() @@ -597,7 +731,8 @@ func generateSlackPayload( } } - if e.State == model.CompletedState { + switch e.State { + case model.CompletedState: status = "Your experiment completed successfully 🎉" if baseURLIsSet { eURL = fmt.Sprintf("✅ <%v/det/experiments/%v/overview | %v (#%v)>", @@ -605,9 +740,8 @@ func generateSlackPayload( } else { eURL = fmt.Sprintf("✅ %v (#%v)", activeConfig.Name(), e.ID) } - c = "#13B670" mStatus = "Completed" - } else { + case model.ErrorState: status = "Your experiment has stopped with errors" if baseURLIsSet { eURL = fmt.Sprintf("❌ <%v/det/experiments/%v/overview | %v (#%v)>", @@ -617,8 +751,22 @@ func generateSlackPayload( } c = "#DD5040" mStatus = "Errored" + default: + status = fmt.Sprintf("The status of your experiment is %s", e.State) + if baseURLIsSet { + eURL = fmt.Sprintf("<%v/det/experiments/%v/overview | %v (#%v)>", + webUIBaseURL, e.ID, activeConfig.Name(), e.ID) + } else { + eURL = fmt.Sprintf("%v (#%v)", activeConfig.Name(), e.ID) + } + mStatus = string(e.State) + } + + endTime := time.Now() + if e.EndTime != nil { + endTime = *e.EndTime } - hours := e.EndTime.Sub(e.StartTime).Hours() + hours := endTime.Sub(e.StartTime).Hours() hours, m := math.Modf(hours) minutes := int(m * 60) duration := fmt.Sprintf("%vh %vmin", hours, minutes) @@ -656,6 +804,12 @@ func generateSlackPayload( Text: fmt.Sprintf("*Project*: %v", pName), }) } + if trialID != nil && *trialID > 0 { + expBlockFields = append(expBlockFields, SlackField{ + Type: "mrkdwn", + Text: fmt.Sprintf("*Trial ID*: %d", *trialID), + }) + } experimentBlock := SlackBlock{ Text: SlackField{ Type: "mrkdwn", @@ -671,6 +825,30 @@ func generateSlackPayload( }, Type: "section", } + if eventData != nil { + eventDataFields := []SlackField{ + { + Type: "mrkdwn", + Text: fmt.Sprintf("*Level*: %v", eventData.Level), + }, + { + Type: "mrkdwn", + Text: fmt.Sprintf("*Title*: %v", eventData.Title), + }, + { + Type: "mrkdwn", + Text: fmt.Sprintf("*Description*: %v", eventData.Description), + }, + } + messageBlock = SlackBlock{ + Text: SlackField{ + Text: "Event Data", + Type: "plain_text", + }, + Type: "section", + Fields: &eventDataFields, + } + } attachment := SlackAttachment{ Color: c, Blocks: []SlackBlock{experimentBlock}, diff --git a/master/internal/webhooks/webhook.go b/master/internal/webhooks/webhook.go index a8b716efb33..06b3b664e01 100644 --- a/master/internal/webhooks/webhook.go +++ b/master/internal/webhooks/webhook.go @@ -155,6 +155,9 @@ const ( // TriggerTypeTaskLog represents a trigger for a task logs. TriggerTypeTaskLog TriggerType = "TASK_LOG" + + // TriggerTypeCustom represents a custom trigger. + TriggerTypeCustom TriggerType = "CUSTOM" ) const ( @@ -205,6 +208,8 @@ func TriggerTypeFromProto(t webhookv1.TriggerType) TriggerType { return TriggerTypeStateChange case webhookv1.TriggerType_TRIGGER_TYPE_TASK_LOG: return TriggerTypeTaskLog + case webhookv1.TriggerType_TRIGGER_TYPE_CUSTOM: + return TriggerTypeCustom default: // TODO(???): prob don't panic panic(fmt.Errorf("missing mapping for trigger %s to SQL", t)) @@ -242,6 +247,8 @@ func (t TriggerType) Proto() webhookv1.TriggerType { return webhookv1.TriggerType_TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED case TriggerTypeTaskLog: return webhookv1.TriggerType_TRIGGER_TYPE_TASK_LOG + case TriggerTypeCustom: + return webhookv1.TriggerType_TRIGGER_TYPE_CUSTOM default: return webhookv1.TriggerType_TRIGGER_TYPE_UNSPECIFIED } @@ -327,6 +334,7 @@ type EventData struct { TestData *string `json:"data,omitempty"` Experiment *ExperimentPayload `json:"experiment,omitempty"` TaskLog *TaskLogPayload `json:"task_log,omitempty"` + CustomData *CustomTriggerData `json:"custom_data,omitempty"` } // ExperimentPayload is the webhook request representation of an experiment. @@ -339,6 +347,7 @@ type ExperimentPayload struct { SlotsPerTrial int `json:"slots_per_trial"` WorkspaceName string `json:"workspace"` ProjectName string `json:"project"` + TrialID int `json:"trial_id,omitempty"` } // TaskLogPayload is the webhook request representation of a trigger of a task log. diff --git a/master/static/migrations/20240828101021_custom-webhook-trigger.tx.up.sql b/master/static/migrations/20240828101021_custom-webhook-trigger.tx.up.sql new file mode 100644 index 00000000000..29fdf74f7a9 --- /dev/null +++ b/master/static/migrations/20240828101021_custom-webhook-trigger.tx.up.sql @@ -0,0 +1,13 @@ +ALTER TYPE trigger_type RENAME TO _trigger_type; + +CREATE TYPE trigger_type AS ENUM ( + 'EXPERIMENT_STATE_CHANGE', + 'METRIC_THRESHOLD_EXCEEDED', + 'TASK_LOG', + 'CUSTOM' +); + +ALTER TABLE webhook_triggers ALTER COLUMN trigger_type + SET DATA TYPE trigger_type USING (trigger_type::text::trigger_type); + +DROP TYPE public._trigger_type; \ No newline at end of file diff --git a/proto/pkg/apiv1/api.pb.go b/proto/pkg/apiv1/api.pb.go index dfda17f77cd..0c2fa56bbfe 100644 --- a/proto/pkg/apiv1/api.pb.go +++ b/proto/pkg/apiv1/api.pb.go @@ -81,7 +81,7 @@ var file_determined_api_v1_api_proto_rawDesc = []byte{ 0x61, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x70, 0x6f, 0x6f, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x32, - 0xc6, 0xdb, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x12, + 0xf1, 0xdc, 0x02, 0x0a, 0x0a, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x7e, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x1f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x64, 0x65, 0x74, 0x65, @@ -2398,532 +2398,543 @@ var file_determined_api_v1_api_proto_rawDesc = []byte{ 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, - 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x92, 0x41, - 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x74, + 0x7d, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x12, 0xa8, 0x01, 0x0a, 0x14, 0x50, 0x6f, 0x73, 0x74, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, + 0x2e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2f, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x3a, 0x01, + 0x2a, 0x12, 0x83, 0x01, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x22, + 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x84, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x26, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x0b, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x92, 0x41, 0x0a, 0x0a, - 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, - 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, - 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x8c, 0x01, - 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, + 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x2d, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, + 0x84, 0x01, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, + 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x22, 0x0e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x92, 0x41, - 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1b, 0x2a, 0x19, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa8, 0x01, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x1a, 0x19, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0x8c, 0x01, 0x0a, 0x0b, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, + 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x67, 0x72, + 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xa8, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x92, 0x41, 0x06, 0x0a, 0x04, - 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0xe0, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x47, - 0x72, 0x6f, 0x75, 0x70, 0x73, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x3e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x41, 0x6e, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x41, 0x6e, - 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, - 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x37, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x0c, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x12, 0x26, 0x2e, 0x64, 0x65, + 0x79, 0x12, 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, + 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x12, 0xe0, 0x01, 0x0a, 0x24, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, + 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x3e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, - 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x92, 0x41, - 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x2f, 0x62, 0x79, 0x2d, 0x69, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb6, 0x01, - 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x65, 0x64, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x64, 0x65, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x41, 0x6e, 0x64, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, + 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x12, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, + 0x6c, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0x79, 0x49, 0x44, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, + 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x62, + 0x79, 0x2d, 0x69, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xb6, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, - 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, - 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x2f, 0x62, 0x79, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x75, 0x73, - 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x73, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x92, 0x41, 0x06, 0x0a, 0x04, - 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x2f, 0x62, 0x79, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xca, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, - 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x36, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, - 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, - 0x6f, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, + 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x37, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, + 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x12, 0x26, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, + 0x62, 0x79, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x7d, 0x12, 0xbb, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, - 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x62, 0x79, - 0x2d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x01, - 0x2a, 0x12, 0x80, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x92, 0x41, 0x06, 0x0a, - 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x3a, 0x01, 0x2a, 0x12, 0x8f, 0x01, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, - 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x31, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, - 0x6c, 0x65, 0x73, 0x2f, 0x61, 0x64, 0x64, 0x2d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, - 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xa4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, - 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x2d, 0x61, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x98, 0x01, - 0x0a, 0x10, 0x50, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, - 0x74, 0x79, 0x12, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, - 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, - 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, 0x41, 0x07, - 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x69, 0x74, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, - 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x33, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, + 0x69, 0x67, 0x6e, 0x65, 0x64, 0x54, 0x6f, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x39, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x12, 0x28, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x62, 0x79, 0x2d, 0x67, + 0x72, 0x6f, 0x75, 0x70, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, 0x69, 0x64, 0x7d, 0x12, + 0xca, 0x01, 0x0a, 0x1c, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x63, 0x6f, 0x70, 0x65, + 0x12, 0x36, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x73, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x63, 0x6f, 0x70, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, + 0x72, 0x63, 0x68, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x54, 0x6f, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x39, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2a, 0x22, 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x2f, 0x62, 0x79, 0x2d, 0x61, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x01, 0x0a, + 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, + 0x8f, 0x01, 0x0a, 0x0b, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, + 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, + 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x61, + 0x64, 0x64, 0x2d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, + 0x2a, 0x12, 0xa4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x41, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, 0x06, 0x0a, 0x04, 0x52, 0x42, 0x41, 0x43, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x2d, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x98, 0x01, 0x0a, 0x10, 0x50, 0x6f, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x2a, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x55, 0x73, 0x65, + 0x72, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, + 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x01, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x12, 0x33, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x42, 0x79, 0x55, 0x73, 0x65, - 0x72, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x33, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0xaf, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, - 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x61, 0x72, 0x63, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x17, 0x0a, 0x0b, 0x45, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2d, 0x73, - 0x65, 0x61, 0x72, 0x63, 0x68, 0x3a, 0x01, 0x2a, 0x12, 0xc6, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x6e, - 0x64, 0x52, 0x50, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, - 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x42, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x76, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, + 0x0a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2f, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, + 0x79, 0x12, 0xaf, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, 0x78, 0x70, 0x65, + 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x45, + 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x3f, 0x92, 0x41, 0x17, 0x0a, 0x0b, 0x45, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x73, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x78, + 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2d, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, + 0x3a, 0x01, 0x2a, 0x12, 0xc6, 0x01, 0x0a, 0x11, 0x42, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x54, 0x6f, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, + 0x6e, 0x64, 0x52, 0x50, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x69, 0x6e, 0x64, 0x52, + 0x50, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x22, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, + 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x2d, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xd2, 0x01, 0x0a, + 0x15, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, + 0x64, 0x52, 0x50, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x62, 0x69, + 0x6e, 0x64, 0x52, 0x50, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x0a, 0x0a, 0x08, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x22, 0x3e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x2a, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2d, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, - 0x2a, 0x12, 0xd2, 0x01, 0x0a, 0x15, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x46, 0x72, - 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2f, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x6e, 0x62, 0x69, 0x6e, 0x64, 0x52, 0x50, 0x46, 0x72, 0x6f, 0x6d, 0x57, 0x6f, 0x72, - 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, + 0x2a, 0x12, 0xe7, 0x01, 0x0a, 0x1c, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, + 0x50, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x12, 0x36, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x52, 0x50, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, + 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, + 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x50, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, + 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x1a, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, + 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2d, + 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xdd, 0x01, 0x0a, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, + 0x92, 0x41, 0x16, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x0a, + 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x12, + 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x2d, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x12, 0xd5, 0x01, 0x0a, 0x17, + 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x6f, + 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x50, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, + 0x6f, 0x52, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x6f, 0x75, + 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x43, 0x2a, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, + 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2d, 0x62, 0x69, 0x6e, 0x64, 0x69, - 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xe7, 0x01, 0x0a, 0x1c, 0x4f, 0x76, 0x65, 0x72, 0x77, - 0x72, 0x69, 0x74, 0x65, 0x52, 0x50, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, - 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x36, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x50, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x37, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x77, 0x72, 0x69, 0x74, 0x65, 0x52, 0x50, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x1a, 0x3e, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, - 0x70, 0x6f, 0x6f, 0x6c, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x70, 0x6f, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x2d, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0xdd, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, - 0x64, 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x31, 0x2e, 0x64, + 0x6e, 0x67, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x50, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, - 0x54, 0x6f, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x92, 0x41, 0x16, 0x0a, 0x0a, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x3c, 0x12, 0x3a, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, - 0x65, 0x2d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, - 0x12, 0xd5, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x50, 0x12, 0x31, 0x2e, 0x64, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, - 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x42, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x6f, 0x52, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x12, 0x3e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x70, 0x6f, 0x6f, 0x6c, 0x73, - 0x2f, 0x7b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x2d, - 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x12, 0xac, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x2e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2f, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, - 0x54, 0x61, 0x73, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x9e, 0x01, 0x0a, 0x0f, 0x4b, 0x69, 0x6c, 0x6c, - 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x29, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x4b, 0x69, 0x6c, 0x6c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x2e, 0x47, 0x65, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, + 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x9e, 0x01, 0x0a, 0x0f, 0x4b, 0x69, 0x6c, 0x6c, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, - 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x6b, 0x69, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x9f, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x75, - 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 0x2e, - 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, - 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, - 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1d, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x12, 0x55, - 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, - 0x6b, 0x12, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2d, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, - 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, - 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x21, 0x22, 0x1f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, - 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x6e, 0x70, - 0x61, 0x75, 0x73, 0x65, 0x12, 0x7f, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x75, - 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x75, 0x6e, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, - 0x72, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x24, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, - 0x6e, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x7e, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6e, - 0x73, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x92, 0x41, 0x0a, 0x0a, - 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, - 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x6d, 0x6f, - 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x7e, 0x0a, 0x08, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, 0x6e, - 0x73, 0x12, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x92, 0x41, 0x0a, 0x0a, - 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, - 0x11, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x6b, 0x69, - 0x6c, 0x6c, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2b, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8a, - 0x01, 0x0a, 0x0b, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x25, - 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, - 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x92, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x19, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, - 0x2f, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x92, 0x01, 0x0a, 0x0d, - 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x27, 0x2e, + 0x02, 0x21, 0x22, 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6b, 0x69, 0x6c, 0x6c, + 0x3a, 0x01, 0x2a, 0x12, 0x9f, 0x01, 0x0a, 0x10, 0x50, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, + 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x32, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x70, 0x61, 0x75, 0x73, 0x65, 0x12, 0xa7, 0x01, 0x0a, 0x12, 0x55, 0x6e, 0x70, 0x61, 0x75, 0x73, + 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x2c, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, + 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x73, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x34, 0x92, 0x41, 0x0a, 0x0a, 0x08, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1f, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x2f, 0x7b, 0x74, + 0x61, 0x73, 0x6b, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x6e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x12, + 0x7f, 0x0a, 0x0a, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, - 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2e, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, - 0x75, 0x6e, 0x73, 0x2f, 0x75, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, - 0x12, 0x82, 0x01, 0x0a, 0x09, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, + 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x75, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x92, 0x41, 0x0a, 0x0a, + 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, + 0x0c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x3a, 0x01, 0x2a, + 0x12, 0x7e, 0x0a, 0x08, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x6d, 0x6f, 0x76, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x7e, 0x0a, 0x08, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x22, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x4b, 0x69, 0x6c, 0x6c, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x6b, 0x69, 0x6c, 0x6c, 0x3a, 0x01, 0x2a, + 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, + 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, 0x41, + 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8a, 0x01, 0x0a, 0x0b, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, + 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x26, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, + 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x61, 0x72, 0x63, 0x68, + 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x92, 0x01, 0x0a, 0x0d, 0x55, 0x6e, 0x61, 0x72, 0x63, + 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, + 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, + 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x52, + 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x92, 0x41, 0x0a, + 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, + 0x22, 0x16, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x75, + 0x6e, 0x61, 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x09, + 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, 0x23, 0x2e, 0x64, 0x65, 0x74, 0x65, + 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, + 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, - 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x92, 0x41, 0x0a, 0x0a, 0x08, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, - 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x70, 0x61, 0x75, - 0x73, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, - 0x52, 0x75, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, - 0x75, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x2b, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x9a, - 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x12, 0x28, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xa0, 0x01, 0x0a, 0x0f, - 0x50, 0x6f, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, - 0x29, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x74, + 0x76, 0x31, 0x2e, 0x50, 0x61, 0x75, 0x73, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2a, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x70, 0x61, 0x75, 0x73, 0x65, 0x3a, 0x01, 0x2a, + 0x12, 0x86, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x12, + 0x24, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, + 0x52, 0x75, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x92, 0x41, + 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x18, 0x22, 0x13, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, + 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x9a, 0x01, 0x0a, 0x0e, 0x47, 0x65, + 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x28, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x33, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0xa0, 0x01, 0x0a, 0x0f, 0x50, 0x6f, 0x73, 0x74, 0x52, + 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x75, 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x36, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, - 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x01, 0x2a, 0x12, 0xb1, - 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2c, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x41, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x2e, 0x12, 0x2c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, - 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6b, 0x65, - 0x79, 0x7d, 0x12, 0xe1, 0x01, 0x0a, 0x1a, 0x50, 0x75, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x52, 0x75, + 0x6e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x36, 0x92, 0x41, 0x0a, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x72, 0x75, 0x6e, 0x73, 0x2f, 0x7b, 0x72, 0x75, 0x6e, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3a, 0x01, 0x2a, 0x12, 0xb1, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x2b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x92, 0x41, 0x0a, 0x0a, + 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2e, 0x12, + 0x2c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, + 0x73, 0x2f, 0x7b, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x7b, 0x6b, 0x65, 0x79, 0x7d, 0x12, 0xe1, 0x01, + 0x0a, 0x1a, 0x50, 0x75, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x75, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, + 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x12, 0x34, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, - 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x57, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, - 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, - 0x1a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xc2, 0x01, 0x0a, 0x17, 0x50, 0x75, 0x74, 0x47, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, - 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, - 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x47, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x07, 0x0a, 0x05, - 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x1a, 0x2e, 0x2f, 0x61, 0x70, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x56, 0x92, 0x41, 0x07, 0x0a, 0x05, + 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x1a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, + 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, + 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x3a, 0x01, + 0x2a, 0x12, 0xc2, 0x01, 0x0a, 0x17, 0x50, 0x75, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x31, 0x2e, + 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x75, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, - 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, - 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, - 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xc2, 0x01, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, + 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x1a, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, + 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x57, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, + 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x65, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x77, 0x6f, + 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, + 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x47, + 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, + 0x69, 0x65, 0x73, 0x12, 0x31, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, + 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x07, 0x0a, + 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x12, 0x2e, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, 0x77, 0x6f, + 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xe7, 0x01, 0x0a, + 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x37, + 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x53, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x43, 0x2a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x77, 0x6f, 0x72, + 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, + 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x64, 0x65, + 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x40, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x30, 0x12, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, - 0x7d, 0x12, 0xe7, 0x01, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x69, 0x65, 0x73, 0x12, 0x37, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, - 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x64, - 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x57, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, - 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x2a, 0x41, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, - 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x77, 0x6f, - 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x7b, 0x77, 0x6f, 0x72, - 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x1a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, 0x34, 0x2e, 0x64, 0x65, 0x74, - 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x35, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x70, - 0x69, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, - 0x70, 0x68, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, - 0x65, 0x73, 0x2f, 0x67, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x7d, 0x42, 0xda, 0x07, 0x5a, 0x33, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, - 0x31, 0x92, 0x41, 0xa1, 0x07, 0x12, 0x95, 0x06, 0x0a, 0x15, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, - 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x50, 0x49, 0x20, 0x28, 0x42, 0x65, 0x74, 0x61, 0x29, 0x12, - 0xf5, 0x04, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x68, 0x65, 0x6c, - 0x70, 0x73, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, - 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x20, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x6c, 0x79, - 0x2c, 0x20, 0x65, 0x61, 0x73, 0x69, 0x6c, 0x79, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x47, - 0x50, 0x55, 0x20, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6e, - 0x64, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x63, 0x6f, - 0x6c, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x61, 0x74, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x65, 0x65, - 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x67, 0x69, 0x6e, - 0x65, 0x65, 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x6f, 0x6e, - 0x20, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x72, - 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x74, - 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, - 0x6e, 0x65, 0x65, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x72, 0x79, - 0x20, 0x61, 0x62, 0x6f, 0x75, 0x74, 0x20, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x73, 0x20, 0x6f, 0x72, - 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, - 0x63, 0x6f, 0x64, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, - 0x74, 0x61, 0x73, 0x6b, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, - 0x20, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x78, - 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, - 0x67, 0x2e, 0x0a, 0x0a, 0x59, 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x6e, - 0x6b, 0x20, 0x6f, 0x66, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, - 0x61, 0x73, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x68, - 0x61, 0x74, 0x20, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, - 0x61, 0x70, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, - 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x46, 0x6c, 0x6f, 0x77, - 0x20, 0x61, 0x6e, 0x64, 0x20, 0x50, 0x79, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x20, 0x2d, 0x2d, 0x2d, - 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x67, 0x72, 0x65, 0x61, - 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, - 0x65, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, - 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x2d, 0x2d, 0x2d, 0x20, - 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, - 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x72, 0x69, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, - 0x6e, 0x20, 0x64, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, - 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, - 0x61, 0x73, 0x20, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x65, 0x74, - 0x73, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x20, 0x69, - 0x6e, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x2e, 0x22, 0x40, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x49, 0x12, 0x16, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, - 0x2f, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2f, - 0x1a, 0x17, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x40, 0x64, 0x65, 0x74, 0x65, - 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2a, 0x3d, 0x0a, 0x0a, 0x41, 0x70, 0x61, - 0x63, 0x68, 0x65, 0x20, 0x32, 0x2e, 0x30, 0x12, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, - 0x77, 0x77, 0x77, 0x2e, 0x61, 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, - 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x2d, - 0x32, 0x2e, 0x30, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x2a, 0x02, 0x01, - 0x02, 0x5a, 0x4a, 0x0a, 0x48, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x12, 0x39, 0x08, 0x02, 0x12, 0x24, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x20, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x0d, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x11, 0x0a, - 0x0f, 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x00, - 0x72, 0x24, 0x0a, 0x1b, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, - 0x49, 0x20, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x05, 0x2f, 0x64, 0x6f, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x67, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x40, 0x92, 0x41, 0x07, 0x0a, 0x05, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x30, 0x2a, 0x2e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2d, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x2f, 0x67, 0x6c, + 0x6f, 0x62, 0x61, 0x6c, 0x2f, 0x7b, 0x77, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x7d, 0x42, 0xda, 0x07, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x61, + 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x92, 0x41, 0xa1, 0x07, + 0x12, 0x95, 0x06, 0x0a, 0x15, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, + 0x41, 0x50, 0x49, 0x20, 0x28, 0x42, 0x65, 0x74, 0x61, 0x29, 0x12, 0xf5, 0x04, 0x44, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x68, 0x65, 0x6c, 0x70, 0x73, 0x20, 0x64, 0x65, + 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x65, 0x61, 0x6d, + 0x73, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x6d, + 0x6f, 0x72, 0x65, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x6c, 0x79, 0x2c, 0x20, 0x65, 0x61, 0x73, + 0x69, 0x6c, 0x79, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x66, 0x66, + 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x6c, 0x79, 0x20, 0x63, 0x6f, 0x6c, 0x6c, 0x61, 0x62, 0x6f, + 0x72, 0x61, 0x74, 0x65, 0x2e, 0x20, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, + 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x67, 0x69, 0x6e, 0x65, 0x65, 0x72, 0x73, 0x20, + 0x74, 0x6f, 0x20, 0x66, 0x6f, 0x63, 0x75, 0x73, 0x20, 0x6f, 0x6e, 0x20, 0x62, 0x75, 0x69, 0x6c, + 0x64, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x69, 0x6e, + 0x67, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, + 0x65, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x6e, 0x65, 0x65, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x77, 0x6f, 0x72, 0x72, 0x79, 0x20, 0x61, 0x62, 0x6f, 0x75, + 0x74, 0x20, 0x44, 0x65, 0x76, 0x4f, 0x70, 0x73, 0x20, 0x6f, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, + 0x69, 0x6e, 0x67, 0x20, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, + 0x66, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x20, 0x74, 0x61, 0x73, 0x6b, 0x73, + 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x74, 0x6f, 0x6c, 0x65, + 0x72, 0x61, 0x6e, 0x63, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, + 0x65, 0x6e, 0x74, 0x20, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x0a, 0x59, + 0x6f, 0x75, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x6b, 0x20, 0x6f, 0x66, 0x20, + 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x62, 0x72, + 0x69, 0x64, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x67, 0x61, 0x70, 0x20, 0x62, 0x65, + 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, 0x20, 0x6c, 0x69, 0x6b, 0x65, + 0x20, 0x54, 0x65, 0x6e, 0x73, 0x6f, 0x72, 0x46, 0x6c, 0x6f, 0x77, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x50, 0x79, 0x54, 0x6f, 0x72, 0x63, 0x68, 0x20, 0x2d, 0x2d, 0x2d, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x20, 0x66, 0x6f, 0x72, + 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x72, 0x65, 0x73, 0x65, 0x61, 0x72, + 0x63, 0x68, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, + 0x6c, 0x65, 0x20, 0x47, 0x50, 0x55, 0x20, 0x2d, 0x2d, 0x2d, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x61, 0x72, 0x69, 0x73, 0x65, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x64, 0x6f, 0x69, + 0x6e, 0x67, 0x20, 0x64, 0x65, 0x65, 0x70, 0x20, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, + 0x20, 0x61, 0x74, 0x20, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x74, 0x65, + 0x61, 0x6d, 0x73, 0x2c, 0x20, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, + 0x6e, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x73, 0x65, 0x74, 0x73, 0x20, 0x61, 0x6c, 0x6c, + 0x20, 0x69, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x73, 0x69, 0x7a, + 0x65, 0x2e, 0x22, 0x40, 0x0a, 0x0d, 0x44, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, + 0x20, 0x41, 0x49, 0x12, 0x16, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x74, + 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x61, 0x69, 0x2f, 0x1a, 0x17, 0x63, 0x6f, 0x6d, + 0x6d, 0x75, 0x6e, 0x69, 0x74, 0x79, 0x40, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2e, 0x61, 0x69, 0x2a, 0x3d, 0x0a, 0x0a, 0x41, 0x70, 0x61, 0x63, 0x68, 0x65, 0x20, 0x32, + 0x2e, 0x30, 0x12, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x61, + 0x70, 0x61, 0x63, 0x68, 0x65, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, + 0x65, 0x73, 0x2f, 0x4c, 0x49, 0x43, 0x45, 0x4e, 0x53, 0x45, 0x2d, 0x32, 0x2e, 0x30, 0x2e, 0x68, + 0x74, 0x6d, 0x6c, 0x32, 0x03, 0x30, 0x2e, 0x31, 0x2a, 0x02, 0x01, 0x02, 0x5a, 0x4a, 0x0a, 0x48, + 0x0a, 0x0b, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x08, + 0x02, 0x12, 0x24, 0x42, 0x65, 0x61, 0x72, 0x65, 0x72, 0x20, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x20, + 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x73, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x1a, 0x0d, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, + 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x02, 0x62, 0x11, 0x0a, 0x0f, 0x0a, 0x0b, 0x42, 0x65, + 0x61, 0x72, 0x65, 0x72, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x00, 0x72, 0x24, 0x0a, 0x1b, 0x44, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x20, 0x41, 0x49, 0x20, 0x44, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x05, 0x2f, 0x64, 0x6f, 0x63, + 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var file_determined_api_v1_api_proto_goTypes = []interface{}{ @@ -3143,308 +3154,310 @@ var file_determined_api_v1_api_proto_goTypes = []interface{}{ (*PostWebhookRequest)(nil), // 213: determined.api.v1.PostWebhookRequest (*DeleteWebhookRequest)(nil), // 214: determined.api.v1.DeleteWebhookRequest (*TestWebhookRequest)(nil), // 215: determined.api.v1.TestWebhookRequest - (*GetGroupRequest)(nil), // 216: determined.api.v1.GetGroupRequest - (*GetGroupsRequest)(nil), // 217: determined.api.v1.GetGroupsRequest - (*CreateGroupRequest)(nil), // 218: determined.api.v1.CreateGroupRequest - (*UpdateGroupRequest)(nil), // 219: determined.api.v1.UpdateGroupRequest - (*DeleteGroupRequest)(nil), // 220: determined.api.v1.DeleteGroupRequest - (*GetPermissionsSummaryRequest)(nil), // 221: determined.api.v1.GetPermissionsSummaryRequest - (*GetGroupsAndUsersAssignedToWorkspaceRequest)(nil), // 222: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceRequest - (*GetRolesByIDRequest)(nil), // 223: determined.api.v1.GetRolesByIDRequest - (*GetRolesAssignedToUserRequest)(nil), // 224: determined.api.v1.GetRolesAssignedToUserRequest - (*GetRolesAssignedToGroupRequest)(nil), // 225: determined.api.v1.GetRolesAssignedToGroupRequest - (*SearchRolesAssignableToScopeRequest)(nil), // 226: determined.api.v1.SearchRolesAssignableToScopeRequest - (*ListRolesRequest)(nil), // 227: determined.api.v1.ListRolesRequest - (*AssignRolesRequest)(nil), // 228: determined.api.v1.AssignRolesRequest - (*RemoveAssignmentsRequest)(nil), // 229: determined.api.v1.RemoveAssignmentsRequest - (*PostUserActivityRequest)(nil), // 230: determined.api.v1.PostUserActivityRequest - (*GetProjectsByUserActivityRequest)(nil), // 231: determined.api.v1.GetProjectsByUserActivityRequest - (*SearchExperimentsRequest)(nil), // 232: determined.api.v1.SearchExperimentsRequest - (*BindRPToWorkspaceRequest)(nil), // 233: determined.api.v1.BindRPToWorkspaceRequest - (*UnbindRPFromWorkspaceRequest)(nil), // 234: determined.api.v1.UnbindRPFromWorkspaceRequest - (*OverwriteRPWorkspaceBindingsRequest)(nil), // 235: determined.api.v1.OverwriteRPWorkspaceBindingsRequest - (*ListRPsBoundToWorkspaceRequest)(nil), // 236: determined.api.v1.ListRPsBoundToWorkspaceRequest - (*ListWorkspacesBoundToRPRequest)(nil), // 237: determined.api.v1.ListWorkspacesBoundToRPRequest - (*GetGenericTaskConfigRequest)(nil), // 238: determined.api.v1.GetGenericTaskConfigRequest - (*KillGenericTaskRequest)(nil), // 239: determined.api.v1.KillGenericTaskRequest - (*PauseGenericTaskRequest)(nil), // 240: determined.api.v1.PauseGenericTaskRequest - (*UnpauseGenericTaskRequest)(nil), // 241: determined.api.v1.UnpauseGenericTaskRequest - (*SearchRunsRequest)(nil), // 242: determined.api.v1.SearchRunsRequest - (*MoveRunsRequest)(nil), // 243: determined.api.v1.MoveRunsRequest - (*KillRunsRequest)(nil), // 244: determined.api.v1.KillRunsRequest - (*DeleteRunsRequest)(nil), // 245: determined.api.v1.DeleteRunsRequest - (*ArchiveRunsRequest)(nil), // 246: determined.api.v1.ArchiveRunsRequest - (*UnarchiveRunsRequest)(nil), // 247: determined.api.v1.UnarchiveRunsRequest - (*PauseRunsRequest)(nil), // 248: determined.api.v1.PauseRunsRequest - (*ResumeRunsRequest)(nil), // 249: determined.api.v1.ResumeRunsRequest - (*GetRunMetadataRequest)(nil), // 250: determined.api.v1.GetRunMetadataRequest - (*PostRunMetadataRequest)(nil), // 251: determined.api.v1.PostRunMetadataRequest - (*GetMetadataValuesRequest)(nil), // 252: determined.api.v1.GetMetadataValuesRequest - (*PutWorkspaceConfigPoliciesRequest)(nil), // 253: determined.api.v1.PutWorkspaceConfigPoliciesRequest - (*PutGlobalConfigPoliciesRequest)(nil), // 254: determined.api.v1.PutGlobalConfigPoliciesRequest - (*GetWorkspaceConfigPoliciesRequest)(nil), // 255: determined.api.v1.GetWorkspaceConfigPoliciesRequest - (*GetGlobalConfigPoliciesRequest)(nil), // 256: determined.api.v1.GetGlobalConfigPoliciesRequest - (*DeleteWorkspaceConfigPoliciesRequest)(nil), // 257: determined.api.v1.DeleteWorkspaceConfigPoliciesRequest - (*DeleteGlobalConfigPoliciesRequest)(nil), // 258: determined.api.v1.DeleteGlobalConfigPoliciesRequest - (*LoginResponse)(nil), // 259: determined.api.v1.LoginResponse - (*CurrentUserResponse)(nil), // 260: determined.api.v1.CurrentUserResponse - (*LogoutResponse)(nil), // 261: determined.api.v1.LogoutResponse - (*GetUsersResponse)(nil), // 262: determined.api.v1.GetUsersResponse - (*GetUserSettingResponse)(nil), // 263: determined.api.v1.GetUserSettingResponse - (*ResetUserSettingResponse)(nil), // 264: determined.api.v1.ResetUserSettingResponse - (*PostUserSettingResponse)(nil), // 265: determined.api.v1.PostUserSettingResponse - (*GetUserResponse)(nil), // 266: determined.api.v1.GetUserResponse - (*GetUserByUsernameResponse)(nil), // 267: determined.api.v1.GetUserByUsernameResponse - (*GetMeResponse)(nil), // 268: determined.api.v1.GetMeResponse - (*PostUserResponse)(nil), // 269: determined.api.v1.PostUserResponse - (*SetUserPasswordResponse)(nil), // 270: determined.api.v1.SetUserPasswordResponse - (*AssignMultipleGroupsResponse)(nil), // 271: determined.api.v1.AssignMultipleGroupsResponse - (*PatchUserResponse)(nil), // 272: determined.api.v1.PatchUserResponse - (*PatchUsersResponse)(nil), // 273: determined.api.v1.PatchUsersResponse - (*GetTelemetryResponse)(nil), // 274: determined.api.v1.GetTelemetryResponse - (*GetMasterResponse)(nil), // 275: determined.api.v1.GetMasterResponse - (*GetMasterConfigResponse)(nil), // 276: determined.api.v1.GetMasterConfigResponse - (*PatchMasterConfigResponse)(nil), // 277: determined.api.v1.PatchMasterConfigResponse - (*MasterLogsResponse)(nil), // 278: determined.api.v1.MasterLogsResponse - (*GetClusterMessageResponse)(nil), // 279: determined.api.v1.GetClusterMessageResponse - (*SetClusterMessageResponse)(nil), // 280: determined.api.v1.SetClusterMessageResponse - (*DeleteClusterMessageResponse)(nil), // 281: determined.api.v1.DeleteClusterMessageResponse - (*GetAgentsResponse)(nil), // 282: determined.api.v1.GetAgentsResponse - (*GetAgentResponse)(nil), // 283: determined.api.v1.GetAgentResponse - (*GetSlotsResponse)(nil), // 284: determined.api.v1.GetSlotsResponse - (*GetSlotResponse)(nil), // 285: determined.api.v1.GetSlotResponse - (*EnableAgentResponse)(nil), // 286: determined.api.v1.EnableAgentResponse - (*DisableAgentResponse)(nil), // 287: determined.api.v1.DisableAgentResponse - (*EnableSlotResponse)(nil), // 288: determined.api.v1.EnableSlotResponse - (*DisableSlotResponse)(nil), // 289: determined.api.v1.DisableSlotResponse - (*CreateGenericTaskResponse)(nil), // 290: determined.api.v1.CreateGenericTaskResponse - (*CreateExperimentResponse)(nil), // 291: determined.api.v1.CreateExperimentResponse - (*PutExperimentResponse)(nil), // 292: determined.api.v1.PutExperimentResponse - (*ContinueExperimentResponse)(nil), // 293: determined.api.v1.ContinueExperimentResponse - (*GetExperimentResponse)(nil), // 294: determined.api.v1.GetExperimentResponse - (*GetExperimentsResponse)(nil), // 295: determined.api.v1.GetExperimentsResponse - (*PutExperimentRetainLogsResponse)(nil), // 296: determined.api.v1.PutExperimentRetainLogsResponse - (*PutExperimentsRetainLogsResponse)(nil), // 297: determined.api.v1.PutExperimentsRetainLogsResponse - (*PutTrialRetainLogsResponse)(nil), // 298: determined.api.v1.PutTrialRetainLogsResponse - (*GetModelDefResponse)(nil), // 299: determined.api.v1.GetModelDefResponse - (*GetTaskContextDirectoryResponse)(nil), // 300: determined.api.v1.GetTaskContextDirectoryResponse - (*GetModelDefTreeResponse)(nil), // 301: determined.api.v1.GetModelDefTreeResponse - (*GetModelDefFileResponse)(nil), // 302: determined.api.v1.GetModelDefFileResponse - (*GetExperimentLabelsResponse)(nil), // 303: determined.api.v1.GetExperimentLabelsResponse - (*GetExperimentValidationHistoryResponse)(nil), // 304: determined.api.v1.GetExperimentValidationHistoryResponse - (*ActivateExperimentResponse)(nil), // 305: determined.api.v1.ActivateExperimentResponse - (*ActivateExperimentsResponse)(nil), // 306: determined.api.v1.ActivateExperimentsResponse - (*PauseExperimentResponse)(nil), // 307: determined.api.v1.PauseExperimentResponse - (*PauseExperimentsResponse)(nil), // 308: determined.api.v1.PauseExperimentsResponse - (*CancelExperimentResponse)(nil), // 309: determined.api.v1.CancelExperimentResponse - (*CancelExperimentsResponse)(nil), // 310: determined.api.v1.CancelExperimentsResponse - (*KillExperimentResponse)(nil), // 311: determined.api.v1.KillExperimentResponse - (*KillExperimentsResponse)(nil), // 312: determined.api.v1.KillExperimentsResponse - (*ArchiveExperimentResponse)(nil), // 313: determined.api.v1.ArchiveExperimentResponse - (*ArchiveExperimentsResponse)(nil), // 314: determined.api.v1.ArchiveExperimentsResponse - (*UnarchiveExperimentResponse)(nil), // 315: determined.api.v1.UnarchiveExperimentResponse - (*UnarchiveExperimentsResponse)(nil), // 316: determined.api.v1.UnarchiveExperimentsResponse - (*PatchExperimentResponse)(nil), // 317: determined.api.v1.PatchExperimentResponse - (*DeleteExperimentsResponse)(nil), // 318: determined.api.v1.DeleteExperimentsResponse - (*DeleteExperimentResponse)(nil), // 319: determined.api.v1.DeleteExperimentResponse - (*GetBestSearcherValidationMetricResponse)(nil), // 320: determined.api.v1.GetBestSearcherValidationMetricResponse - (*GetExperimentCheckpointsResponse)(nil), // 321: determined.api.v1.GetExperimentCheckpointsResponse - (*PutExperimentLabelResponse)(nil), // 322: determined.api.v1.PutExperimentLabelResponse - (*DeleteExperimentLabelResponse)(nil), // 323: determined.api.v1.DeleteExperimentLabelResponse - (*PreviewHPSearchResponse)(nil), // 324: determined.api.v1.PreviewHPSearchResponse - (*GetExperimentTrialsResponse)(nil), // 325: determined.api.v1.GetExperimentTrialsResponse - (*GetTrialRemainingLogRetentionDaysResponse)(nil), // 326: determined.api.v1.GetTrialRemainingLogRetentionDaysResponse - (*CompareTrialsResponse)(nil), // 327: determined.api.v1.CompareTrialsResponse - (*ReportTrialSourceInfoResponse)(nil), // 328: determined.api.v1.ReportTrialSourceInfoResponse - (*CreateTrialResponse)(nil), // 329: determined.api.v1.CreateTrialResponse - (*PutTrialResponse)(nil), // 330: determined.api.v1.PutTrialResponse - (*PatchTrialResponse)(nil), // 331: determined.api.v1.PatchTrialResponse - (*StartTrialResponse)(nil), // 332: determined.api.v1.StartTrialResponse - (*RunPrepareForReportingResponse)(nil), // 333: determined.api.v1.RunPrepareForReportingResponse - (*GetTrialResponse)(nil), // 334: determined.api.v1.GetTrialResponse - (*GetTrialByExternalIDResponse)(nil), // 335: determined.api.v1.GetTrialByExternalIDResponse - (*GetTrialWorkloadsResponse)(nil), // 336: determined.api.v1.GetTrialWorkloadsResponse - (*TrialLogsResponse)(nil), // 337: determined.api.v1.TrialLogsResponse - (*TrialLogsFieldsResponse)(nil), // 338: determined.api.v1.TrialLogsFieldsResponse - (*AllocationReadyResponse)(nil), // 339: determined.api.v1.AllocationReadyResponse - (*GetAllocationResponse)(nil), // 340: determined.api.v1.GetAllocationResponse - (*AllocationWaitingResponse)(nil), // 341: determined.api.v1.AllocationWaitingResponse - (*PostTaskLogsResponse)(nil), // 342: determined.api.v1.PostTaskLogsResponse - (*TaskLogsResponse)(nil), // 343: determined.api.v1.TaskLogsResponse - (*TaskLogsFieldsResponse)(nil), // 344: determined.api.v1.TaskLogsFieldsResponse - (*GetTrialProfilerMetricsResponse)(nil), // 345: determined.api.v1.GetTrialProfilerMetricsResponse - (*GetTrialProfilerAvailableSeriesResponse)(nil), // 346: determined.api.v1.GetTrialProfilerAvailableSeriesResponse - (*PostTrialProfilerMetricsBatchResponse)(nil), // 347: determined.api.v1.PostTrialProfilerMetricsBatchResponse - (*GetMetricsResponse)(nil), // 348: determined.api.v1.GetMetricsResponse - (*GetTrainingMetricsResponse)(nil), // 349: determined.api.v1.GetTrainingMetricsResponse - (*GetValidationMetricsResponse)(nil), // 350: determined.api.v1.GetValidationMetricsResponse - (*KillTrialResponse)(nil), // 351: determined.api.v1.KillTrialResponse - (*GetTrialCheckpointsResponse)(nil), // 352: determined.api.v1.GetTrialCheckpointsResponse - (*CleanupLogsResponse)(nil), // 353: determined.api.v1.CleanupLogsResponse - (*AllocationPreemptionSignalResponse)(nil), // 354: determined.api.v1.AllocationPreemptionSignalResponse - (*AllocationPendingPreemptionSignalResponse)(nil), // 355: determined.api.v1.AllocationPendingPreemptionSignalResponse - (*AckAllocationPreemptionSignalResponse)(nil), // 356: determined.api.v1.AckAllocationPreemptionSignalResponse - (*MarkAllocationResourcesDaemonResponse)(nil), // 357: determined.api.v1.MarkAllocationResourcesDaemonResponse - (*AllocationRendezvousInfoResponse)(nil), // 358: determined.api.v1.AllocationRendezvousInfoResponse - (*PostAllocationProxyAddressResponse)(nil), // 359: determined.api.v1.PostAllocationProxyAddressResponse - (*GetTaskAcceleratorDataResponse)(nil), // 360: determined.api.v1.GetTaskAcceleratorDataResponse - (*PostAllocationAcceleratorDataResponse)(nil), // 361: determined.api.v1.PostAllocationAcceleratorDataResponse - (*AllocationAllGatherResponse)(nil), // 362: determined.api.v1.AllocationAllGatherResponse - (*NotifyContainerRunningResponse)(nil), // 363: determined.api.v1.NotifyContainerRunningResponse - (*GetCurrentTrialSearcherOperationResponse)(nil), // 364: determined.api.v1.GetCurrentTrialSearcherOperationResponse - (*CompleteTrialSearcherValidationResponse)(nil), // 365: determined.api.v1.CompleteTrialSearcherValidationResponse - (*ReportTrialSearcherEarlyExitResponse)(nil), // 366: determined.api.v1.ReportTrialSearcherEarlyExitResponse - (*ReportTrialProgressResponse)(nil), // 367: determined.api.v1.ReportTrialProgressResponse - (*PostTrialRunnerMetadataResponse)(nil), // 368: determined.api.v1.PostTrialRunnerMetadataResponse - (*ReportTrialMetricsResponse)(nil), // 369: determined.api.v1.ReportTrialMetricsResponse - (*ReportTrialTrainingMetricsResponse)(nil), // 370: determined.api.v1.ReportTrialTrainingMetricsResponse - (*ReportTrialValidationMetricsResponse)(nil), // 371: determined.api.v1.ReportTrialValidationMetricsResponse - (*ReportCheckpointResponse)(nil), // 372: determined.api.v1.ReportCheckpointResponse - (*GetJobsResponse)(nil), // 373: determined.api.v1.GetJobsResponse - (*GetJobsV2Response)(nil), // 374: determined.api.v1.GetJobsV2Response - (*GetJobQueueStatsResponse)(nil), // 375: determined.api.v1.GetJobQueueStatsResponse - (*UpdateJobQueueResponse)(nil), // 376: determined.api.v1.UpdateJobQueueResponse - (*GetTemplatesResponse)(nil), // 377: determined.api.v1.GetTemplatesResponse - (*GetTemplateResponse)(nil), // 378: determined.api.v1.GetTemplateResponse - (*PutTemplateResponse)(nil), // 379: determined.api.v1.PutTemplateResponse - (*PostTemplateResponse)(nil), // 380: determined.api.v1.PostTemplateResponse - (*PatchTemplateConfigResponse)(nil), // 381: determined.api.v1.PatchTemplateConfigResponse - (*PatchTemplateNameResponse)(nil), // 382: determined.api.v1.PatchTemplateNameResponse - (*DeleteTemplateResponse)(nil), // 383: determined.api.v1.DeleteTemplateResponse - (*GetNotebooksResponse)(nil), // 384: determined.api.v1.GetNotebooksResponse - (*GetNotebookResponse)(nil), // 385: determined.api.v1.GetNotebookResponse - (*IdleNotebookResponse)(nil), // 386: determined.api.v1.IdleNotebookResponse - (*KillNotebookResponse)(nil), // 387: determined.api.v1.KillNotebookResponse - (*SetNotebookPriorityResponse)(nil), // 388: determined.api.v1.SetNotebookPriorityResponse - (*LaunchNotebookResponse)(nil), // 389: determined.api.v1.LaunchNotebookResponse - (*GetShellsResponse)(nil), // 390: determined.api.v1.GetShellsResponse - (*GetShellResponse)(nil), // 391: determined.api.v1.GetShellResponse - (*KillShellResponse)(nil), // 392: determined.api.v1.KillShellResponse - (*SetShellPriorityResponse)(nil), // 393: determined.api.v1.SetShellPriorityResponse - (*LaunchShellResponse)(nil), // 394: determined.api.v1.LaunchShellResponse - (*GetCommandsResponse)(nil), // 395: determined.api.v1.GetCommandsResponse - (*GetCommandResponse)(nil), // 396: determined.api.v1.GetCommandResponse - (*KillCommandResponse)(nil), // 397: determined.api.v1.KillCommandResponse - (*SetCommandPriorityResponse)(nil), // 398: determined.api.v1.SetCommandPriorityResponse - (*LaunchCommandResponse)(nil), // 399: determined.api.v1.LaunchCommandResponse - (*GetTensorboardsResponse)(nil), // 400: determined.api.v1.GetTensorboardsResponse - (*GetTensorboardResponse)(nil), // 401: determined.api.v1.GetTensorboardResponse - (*KillTensorboardResponse)(nil), // 402: determined.api.v1.KillTensorboardResponse - (*SetTensorboardPriorityResponse)(nil), // 403: determined.api.v1.SetTensorboardPriorityResponse - (*LaunchTensorboardResponse)(nil), // 404: determined.api.v1.LaunchTensorboardResponse - (*DeleteTensorboardFilesResponse)(nil), // 405: determined.api.v1.DeleteTensorboardFilesResponse - (*GetActiveTasksCountResponse)(nil), // 406: determined.api.v1.GetActiveTasksCountResponse - (*GetTaskResponse)(nil), // 407: determined.api.v1.GetTaskResponse - (*GetTasksResponse)(nil), // 408: determined.api.v1.GetTasksResponse - (*GetModelResponse)(nil), // 409: determined.api.v1.GetModelResponse - (*PostModelResponse)(nil), // 410: determined.api.v1.PostModelResponse - (*PatchModelResponse)(nil), // 411: determined.api.v1.PatchModelResponse - (*ArchiveModelResponse)(nil), // 412: determined.api.v1.ArchiveModelResponse - (*UnarchiveModelResponse)(nil), // 413: determined.api.v1.UnarchiveModelResponse - (*MoveModelResponse)(nil), // 414: determined.api.v1.MoveModelResponse - (*DeleteModelResponse)(nil), // 415: determined.api.v1.DeleteModelResponse - (*GetModelsResponse)(nil), // 416: determined.api.v1.GetModelsResponse - (*GetModelLabelsResponse)(nil), // 417: determined.api.v1.GetModelLabelsResponse - (*GetModelVersionResponse)(nil), // 418: determined.api.v1.GetModelVersionResponse - (*GetModelVersionsResponse)(nil), // 419: determined.api.v1.GetModelVersionsResponse - (*PostModelVersionResponse)(nil), // 420: determined.api.v1.PostModelVersionResponse - (*PatchModelVersionResponse)(nil), // 421: determined.api.v1.PatchModelVersionResponse - (*DeleteModelVersionResponse)(nil), // 422: determined.api.v1.DeleteModelVersionResponse - (*GetTrialMetricsByModelVersionResponse)(nil), // 423: determined.api.v1.GetTrialMetricsByModelVersionResponse - (*GetCheckpointResponse)(nil), // 424: determined.api.v1.GetCheckpointResponse - (*PostCheckpointMetadataResponse)(nil), // 425: determined.api.v1.PostCheckpointMetadataResponse - (*CheckpointsRemoveFilesResponse)(nil), // 426: determined.api.v1.CheckpointsRemoveFilesResponse - (*PatchCheckpointsResponse)(nil), // 427: determined.api.v1.PatchCheckpointsResponse - (*DeleteCheckpointsResponse)(nil), // 428: determined.api.v1.DeleteCheckpointsResponse - (*GetTrialMetricsByCheckpointResponse)(nil), // 429: determined.api.v1.GetTrialMetricsByCheckpointResponse - (*GetSearcherEventsResponse)(nil), // 430: determined.api.v1.GetSearcherEventsResponse - (*PostSearcherOperationsResponse)(nil), // 431: determined.api.v1.PostSearcherOperationsResponse - (*ExpMetricNamesResponse)(nil), // 432: determined.api.v1.ExpMetricNamesResponse - (*MetricBatchesResponse)(nil), // 433: determined.api.v1.MetricBatchesResponse - (*TrialsSnapshotResponse)(nil), // 434: determined.api.v1.TrialsSnapshotResponse - (*TrialsSampleResponse)(nil), // 435: determined.api.v1.TrialsSampleResponse - (*GetResourcePoolsResponse)(nil), // 436: determined.api.v1.GetResourcePoolsResponse - (*GetKubernetesResourceManagersResponse)(nil), // 437: determined.api.v1.GetKubernetesResourceManagersResponse - (*ResourceAllocationRawResponse)(nil), // 438: determined.api.v1.ResourceAllocationRawResponse - (*ResourceAllocationAggregatedResponse)(nil), // 439: determined.api.v1.ResourceAllocationAggregatedResponse - (*GetWorkspaceResponse)(nil), // 440: determined.api.v1.GetWorkspaceResponse - (*GetWorkspaceProjectsResponse)(nil), // 441: determined.api.v1.GetWorkspaceProjectsResponse - (*GetWorkspacesResponse)(nil), // 442: determined.api.v1.GetWorkspacesResponse - (*PostWorkspaceResponse)(nil), // 443: determined.api.v1.PostWorkspaceResponse - (*PatchWorkspaceResponse)(nil), // 444: determined.api.v1.PatchWorkspaceResponse - (*DeleteWorkspaceResponse)(nil), // 445: determined.api.v1.DeleteWorkspaceResponse - (*ArchiveWorkspaceResponse)(nil), // 446: determined.api.v1.ArchiveWorkspaceResponse - (*UnarchiveWorkspaceResponse)(nil), // 447: determined.api.v1.UnarchiveWorkspaceResponse - (*PinWorkspaceResponse)(nil), // 448: determined.api.v1.PinWorkspaceResponse - (*UnpinWorkspaceResponse)(nil), // 449: determined.api.v1.UnpinWorkspaceResponse - (*SetWorkspaceNamespaceBindingsResponse)(nil), // 450: determined.api.v1.SetWorkspaceNamespaceBindingsResponse - (*SetResourceQuotasResponse)(nil), // 451: determined.api.v1.SetResourceQuotasResponse - (*ListWorkspaceNamespaceBindingsResponse)(nil), // 452: determined.api.v1.ListWorkspaceNamespaceBindingsResponse - (*GetWorkspacesWithDefaultNamespaceBindingsResponse)(nil), // 453: determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse - (*BulkAutoCreateWorkspaceNamespaceBindingsResponse)(nil), // 454: determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse - (*DeleteWorkspaceNamespaceBindingsResponse)(nil), // 455: determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse - (*GetKubernetesResourceQuotasResponse)(nil), // 456: determined.api.v1.GetKubernetesResourceQuotasResponse - (*GetProjectResponse)(nil), // 457: determined.api.v1.GetProjectResponse - (*GetProjectByKeyResponse)(nil), // 458: determined.api.v1.GetProjectByKeyResponse - (*GetProjectColumnsResponse)(nil), // 459: determined.api.v1.GetProjectColumnsResponse - (*GetProjectNumericMetricsRangeResponse)(nil), // 460: determined.api.v1.GetProjectNumericMetricsRangeResponse - (*PostProjectResponse)(nil), // 461: determined.api.v1.PostProjectResponse - (*AddProjectNoteResponse)(nil), // 462: determined.api.v1.AddProjectNoteResponse - (*PutProjectNotesResponse)(nil), // 463: determined.api.v1.PutProjectNotesResponse - (*PatchProjectResponse)(nil), // 464: determined.api.v1.PatchProjectResponse - (*DeleteProjectResponse)(nil), // 465: determined.api.v1.DeleteProjectResponse - (*ArchiveProjectResponse)(nil), // 466: determined.api.v1.ArchiveProjectResponse - (*UnarchiveProjectResponse)(nil), // 467: determined.api.v1.UnarchiveProjectResponse - (*MoveProjectResponse)(nil), // 468: determined.api.v1.MoveProjectResponse - (*MoveExperimentResponse)(nil), // 469: determined.api.v1.MoveExperimentResponse - (*MoveExperimentsResponse)(nil), // 470: determined.api.v1.MoveExperimentsResponse - (*GetWebhooksResponse)(nil), // 471: determined.api.v1.GetWebhooksResponse - (*PostWebhookResponse)(nil), // 472: determined.api.v1.PostWebhookResponse - (*DeleteWebhookResponse)(nil), // 473: determined.api.v1.DeleteWebhookResponse - (*TestWebhookResponse)(nil), // 474: determined.api.v1.TestWebhookResponse - (*GetGroupResponse)(nil), // 475: determined.api.v1.GetGroupResponse - (*GetGroupsResponse)(nil), // 476: determined.api.v1.GetGroupsResponse - (*CreateGroupResponse)(nil), // 477: determined.api.v1.CreateGroupResponse - (*UpdateGroupResponse)(nil), // 478: determined.api.v1.UpdateGroupResponse - (*DeleteGroupResponse)(nil), // 479: determined.api.v1.DeleteGroupResponse - (*GetPermissionsSummaryResponse)(nil), // 480: determined.api.v1.GetPermissionsSummaryResponse - (*GetGroupsAndUsersAssignedToWorkspaceResponse)(nil), // 481: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse - (*GetRolesByIDResponse)(nil), // 482: determined.api.v1.GetRolesByIDResponse - (*GetRolesAssignedToUserResponse)(nil), // 483: determined.api.v1.GetRolesAssignedToUserResponse - (*GetRolesAssignedToGroupResponse)(nil), // 484: determined.api.v1.GetRolesAssignedToGroupResponse - (*SearchRolesAssignableToScopeResponse)(nil), // 485: determined.api.v1.SearchRolesAssignableToScopeResponse - (*ListRolesResponse)(nil), // 486: determined.api.v1.ListRolesResponse - (*AssignRolesResponse)(nil), // 487: determined.api.v1.AssignRolesResponse - (*RemoveAssignmentsResponse)(nil), // 488: determined.api.v1.RemoveAssignmentsResponse - (*PostUserActivityResponse)(nil), // 489: determined.api.v1.PostUserActivityResponse - (*GetProjectsByUserActivityResponse)(nil), // 490: determined.api.v1.GetProjectsByUserActivityResponse - (*SearchExperimentsResponse)(nil), // 491: determined.api.v1.SearchExperimentsResponse - (*BindRPToWorkspaceResponse)(nil), // 492: determined.api.v1.BindRPToWorkspaceResponse - (*UnbindRPFromWorkspaceResponse)(nil), // 493: determined.api.v1.UnbindRPFromWorkspaceResponse - (*OverwriteRPWorkspaceBindingsResponse)(nil), // 494: determined.api.v1.OverwriteRPWorkspaceBindingsResponse - (*ListRPsBoundToWorkspaceResponse)(nil), // 495: determined.api.v1.ListRPsBoundToWorkspaceResponse - (*ListWorkspacesBoundToRPResponse)(nil), // 496: determined.api.v1.ListWorkspacesBoundToRPResponse - (*GetGenericTaskConfigResponse)(nil), // 497: determined.api.v1.GetGenericTaskConfigResponse - (*KillGenericTaskResponse)(nil), // 498: determined.api.v1.KillGenericTaskResponse - (*PauseGenericTaskResponse)(nil), // 499: determined.api.v1.PauseGenericTaskResponse - (*UnpauseGenericTaskResponse)(nil), // 500: determined.api.v1.UnpauseGenericTaskResponse - (*SearchRunsResponse)(nil), // 501: determined.api.v1.SearchRunsResponse - (*MoveRunsResponse)(nil), // 502: determined.api.v1.MoveRunsResponse - (*KillRunsResponse)(nil), // 503: determined.api.v1.KillRunsResponse - (*DeleteRunsResponse)(nil), // 504: determined.api.v1.DeleteRunsResponse - (*ArchiveRunsResponse)(nil), // 505: determined.api.v1.ArchiveRunsResponse - (*UnarchiveRunsResponse)(nil), // 506: determined.api.v1.UnarchiveRunsResponse - (*PauseRunsResponse)(nil), // 507: determined.api.v1.PauseRunsResponse - (*ResumeRunsResponse)(nil), // 508: determined.api.v1.ResumeRunsResponse - (*GetRunMetadataResponse)(nil), // 509: determined.api.v1.GetRunMetadataResponse - (*PostRunMetadataResponse)(nil), // 510: determined.api.v1.PostRunMetadataResponse - (*GetMetadataValuesResponse)(nil), // 511: determined.api.v1.GetMetadataValuesResponse - (*PutWorkspaceConfigPoliciesResponse)(nil), // 512: determined.api.v1.PutWorkspaceConfigPoliciesResponse - (*PutGlobalConfigPoliciesResponse)(nil), // 513: determined.api.v1.PutGlobalConfigPoliciesResponse - (*GetWorkspaceConfigPoliciesResponse)(nil), // 514: determined.api.v1.GetWorkspaceConfigPoliciesResponse - (*GetGlobalConfigPoliciesResponse)(nil), // 515: determined.api.v1.GetGlobalConfigPoliciesResponse - (*DeleteWorkspaceConfigPoliciesResponse)(nil), // 516: determined.api.v1.DeleteWorkspaceConfigPoliciesResponse - (*DeleteGlobalConfigPoliciesResponse)(nil), // 517: determined.api.v1.DeleteGlobalConfigPoliciesResponse + (*PostWebhookEventDataRequest)(nil), // 216: determined.api.v1.PostWebhookEventDataRequest + (*GetGroupRequest)(nil), // 217: determined.api.v1.GetGroupRequest + (*GetGroupsRequest)(nil), // 218: determined.api.v1.GetGroupsRequest + (*CreateGroupRequest)(nil), // 219: determined.api.v1.CreateGroupRequest + (*UpdateGroupRequest)(nil), // 220: determined.api.v1.UpdateGroupRequest + (*DeleteGroupRequest)(nil), // 221: determined.api.v1.DeleteGroupRequest + (*GetPermissionsSummaryRequest)(nil), // 222: determined.api.v1.GetPermissionsSummaryRequest + (*GetGroupsAndUsersAssignedToWorkspaceRequest)(nil), // 223: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceRequest + (*GetRolesByIDRequest)(nil), // 224: determined.api.v1.GetRolesByIDRequest + (*GetRolesAssignedToUserRequest)(nil), // 225: determined.api.v1.GetRolesAssignedToUserRequest + (*GetRolesAssignedToGroupRequest)(nil), // 226: determined.api.v1.GetRolesAssignedToGroupRequest + (*SearchRolesAssignableToScopeRequest)(nil), // 227: determined.api.v1.SearchRolesAssignableToScopeRequest + (*ListRolesRequest)(nil), // 228: determined.api.v1.ListRolesRequest + (*AssignRolesRequest)(nil), // 229: determined.api.v1.AssignRolesRequest + (*RemoveAssignmentsRequest)(nil), // 230: determined.api.v1.RemoveAssignmentsRequest + (*PostUserActivityRequest)(nil), // 231: determined.api.v1.PostUserActivityRequest + (*GetProjectsByUserActivityRequest)(nil), // 232: determined.api.v1.GetProjectsByUserActivityRequest + (*SearchExperimentsRequest)(nil), // 233: determined.api.v1.SearchExperimentsRequest + (*BindRPToWorkspaceRequest)(nil), // 234: determined.api.v1.BindRPToWorkspaceRequest + (*UnbindRPFromWorkspaceRequest)(nil), // 235: determined.api.v1.UnbindRPFromWorkspaceRequest + (*OverwriteRPWorkspaceBindingsRequest)(nil), // 236: determined.api.v1.OverwriteRPWorkspaceBindingsRequest + (*ListRPsBoundToWorkspaceRequest)(nil), // 237: determined.api.v1.ListRPsBoundToWorkspaceRequest + (*ListWorkspacesBoundToRPRequest)(nil), // 238: determined.api.v1.ListWorkspacesBoundToRPRequest + (*GetGenericTaskConfigRequest)(nil), // 239: determined.api.v1.GetGenericTaskConfigRequest + (*KillGenericTaskRequest)(nil), // 240: determined.api.v1.KillGenericTaskRequest + (*PauseGenericTaskRequest)(nil), // 241: determined.api.v1.PauseGenericTaskRequest + (*UnpauseGenericTaskRequest)(nil), // 242: determined.api.v1.UnpauseGenericTaskRequest + (*SearchRunsRequest)(nil), // 243: determined.api.v1.SearchRunsRequest + (*MoveRunsRequest)(nil), // 244: determined.api.v1.MoveRunsRequest + (*KillRunsRequest)(nil), // 245: determined.api.v1.KillRunsRequest + (*DeleteRunsRequest)(nil), // 246: determined.api.v1.DeleteRunsRequest + (*ArchiveRunsRequest)(nil), // 247: determined.api.v1.ArchiveRunsRequest + (*UnarchiveRunsRequest)(nil), // 248: determined.api.v1.UnarchiveRunsRequest + (*PauseRunsRequest)(nil), // 249: determined.api.v1.PauseRunsRequest + (*ResumeRunsRequest)(nil), // 250: determined.api.v1.ResumeRunsRequest + (*GetRunMetadataRequest)(nil), // 251: determined.api.v1.GetRunMetadataRequest + (*PostRunMetadataRequest)(nil), // 252: determined.api.v1.PostRunMetadataRequest + (*GetMetadataValuesRequest)(nil), // 253: determined.api.v1.GetMetadataValuesRequest + (*PutWorkspaceConfigPoliciesRequest)(nil), // 254: determined.api.v1.PutWorkspaceConfigPoliciesRequest + (*PutGlobalConfigPoliciesRequest)(nil), // 255: determined.api.v1.PutGlobalConfigPoliciesRequest + (*GetWorkspaceConfigPoliciesRequest)(nil), // 256: determined.api.v1.GetWorkspaceConfigPoliciesRequest + (*GetGlobalConfigPoliciesRequest)(nil), // 257: determined.api.v1.GetGlobalConfigPoliciesRequest + (*DeleteWorkspaceConfigPoliciesRequest)(nil), // 258: determined.api.v1.DeleteWorkspaceConfigPoliciesRequest + (*DeleteGlobalConfigPoliciesRequest)(nil), // 259: determined.api.v1.DeleteGlobalConfigPoliciesRequest + (*LoginResponse)(nil), // 260: determined.api.v1.LoginResponse + (*CurrentUserResponse)(nil), // 261: determined.api.v1.CurrentUserResponse + (*LogoutResponse)(nil), // 262: determined.api.v1.LogoutResponse + (*GetUsersResponse)(nil), // 263: determined.api.v1.GetUsersResponse + (*GetUserSettingResponse)(nil), // 264: determined.api.v1.GetUserSettingResponse + (*ResetUserSettingResponse)(nil), // 265: determined.api.v1.ResetUserSettingResponse + (*PostUserSettingResponse)(nil), // 266: determined.api.v1.PostUserSettingResponse + (*GetUserResponse)(nil), // 267: determined.api.v1.GetUserResponse + (*GetUserByUsernameResponse)(nil), // 268: determined.api.v1.GetUserByUsernameResponse + (*GetMeResponse)(nil), // 269: determined.api.v1.GetMeResponse + (*PostUserResponse)(nil), // 270: determined.api.v1.PostUserResponse + (*SetUserPasswordResponse)(nil), // 271: determined.api.v1.SetUserPasswordResponse + (*AssignMultipleGroupsResponse)(nil), // 272: determined.api.v1.AssignMultipleGroupsResponse + (*PatchUserResponse)(nil), // 273: determined.api.v1.PatchUserResponse + (*PatchUsersResponse)(nil), // 274: determined.api.v1.PatchUsersResponse + (*GetTelemetryResponse)(nil), // 275: determined.api.v1.GetTelemetryResponse + (*GetMasterResponse)(nil), // 276: determined.api.v1.GetMasterResponse + (*GetMasterConfigResponse)(nil), // 277: determined.api.v1.GetMasterConfigResponse + (*PatchMasterConfigResponse)(nil), // 278: determined.api.v1.PatchMasterConfigResponse + (*MasterLogsResponse)(nil), // 279: determined.api.v1.MasterLogsResponse + (*GetClusterMessageResponse)(nil), // 280: determined.api.v1.GetClusterMessageResponse + (*SetClusterMessageResponse)(nil), // 281: determined.api.v1.SetClusterMessageResponse + (*DeleteClusterMessageResponse)(nil), // 282: determined.api.v1.DeleteClusterMessageResponse + (*GetAgentsResponse)(nil), // 283: determined.api.v1.GetAgentsResponse + (*GetAgentResponse)(nil), // 284: determined.api.v1.GetAgentResponse + (*GetSlotsResponse)(nil), // 285: determined.api.v1.GetSlotsResponse + (*GetSlotResponse)(nil), // 286: determined.api.v1.GetSlotResponse + (*EnableAgentResponse)(nil), // 287: determined.api.v1.EnableAgentResponse + (*DisableAgentResponse)(nil), // 288: determined.api.v1.DisableAgentResponse + (*EnableSlotResponse)(nil), // 289: determined.api.v1.EnableSlotResponse + (*DisableSlotResponse)(nil), // 290: determined.api.v1.DisableSlotResponse + (*CreateGenericTaskResponse)(nil), // 291: determined.api.v1.CreateGenericTaskResponse + (*CreateExperimentResponse)(nil), // 292: determined.api.v1.CreateExperimentResponse + (*PutExperimentResponse)(nil), // 293: determined.api.v1.PutExperimentResponse + (*ContinueExperimentResponse)(nil), // 294: determined.api.v1.ContinueExperimentResponse + (*GetExperimentResponse)(nil), // 295: determined.api.v1.GetExperimentResponse + (*GetExperimentsResponse)(nil), // 296: determined.api.v1.GetExperimentsResponse + (*PutExperimentRetainLogsResponse)(nil), // 297: determined.api.v1.PutExperimentRetainLogsResponse + (*PutExperimentsRetainLogsResponse)(nil), // 298: determined.api.v1.PutExperimentsRetainLogsResponse + (*PutTrialRetainLogsResponse)(nil), // 299: determined.api.v1.PutTrialRetainLogsResponse + (*GetModelDefResponse)(nil), // 300: determined.api.v1.GetModelDefResponse + (*GetTaskContextDirectoryResponse)(nil), // 301: determined.api.v1.GetTaskContextDirectoryResponse + (*GetModelDefTreeResponse)(nil), // 302: determined.api.v1.GetModelDefTreeResponse + (*GetModelDefFileResponse)(nil), // 303: determined.api.v1.GetModelDefFileResponse + (*GetExperimentLabelsResponse)(nil), // 304: determined.api.v1.GetExperimentLabelsResponse + (*GetExperimentValidationHistoryResponse)(nil), // 305: determined.api.v1.GetExperimentValidationHistoryResponse + (*ActivateExperimentResponse)(nil), // 306: determined.api.v1.ActivateExperimentResponse + (*ActivateExperimentsResponse)(nil), // 307: determined.api.v1.ActivateExperimentsResponse + (*PauseExperimentResponse)(nil), // 308: determined.api.v1.PauseExperimentResponse + (*PauseExperimentsResponse)(nil), // 309: determined.api.v1.PauseExperimentsResponse + (*CancelExperimentResponse)(nil), // 310: determined.api.v1.CancelExperimentResponse + (*CancelExperimentsResponse)(nil), // 311: determined.api.v1.CancelExperimentsResponse + (*KillExperimentResponse)(nil), // 312: determined.api.v1.KillExperimentResponse + (*KillExperimentsResponse)(nil), // 313: determined.api.v1.KillExperimentsResponse + (*ArchiveExperimentResponse)(nil), // 314: determined.api.v1.ArchiveExperimentResponse + (*ArchiveExperimentsResponse)(nil), // 315: determined.api.v1.ArchiveExperimentsResponse + (*UnarchiveExperimentResponse)(nil), // 316: determined.api.v1.UnarchiveExperimentResponse + (*UnarchiveExperimentsResponse)(nil), // 317: determined.api.v1.UnarchiveExperimentsResponse + (*PatchExperimentResponse)(nil), // 318: determined.api.v1.PatchExperimentResponse + (*DeleteExperimentsResponse)(nil), // 319: determined.api.v1.DeleteExperimentsResponse + (*DeleteExperimentResponse)(nil), // 320: determined.api.v1.DeleteExperimentResponse + (*GetBestSearcherValidationMetricResponse)(nil), // 321: determined.api.v1.GetBestSearcherValidationMetricResponse + (*GetExperimentCheckpointsResponse)(nil), // 322: determined.api.v1.GetExperimentCheckpointsResponse + (*PutExperimentLabelResponse)(nil), // 323: determined.api.v1.PutExperimentLabelResponse + (*DeleteExperimentLabelResponse)(nil), // 324: determined.api.v1.DeleteExperimentLabelResponse + (*PreviewHPSearchResponse)(nil), // 325: determined.api.v1.PreviewHPSearchResponse + (*GetExperimentTrialsResponse)(nil), // 326: determined.api.v1.GetExperimentTrialsResponse + (*GetTrialRemainingLogRetentionDaysResponse)(nil), // 327: determined.api.v1.GetTrialRemainingLogRetentionDaysResponse + (*CompareTrialsResponse)(nil), // 328: determined.api.v1.CompareTrialsResponse + (*ReportTrialSourceInfoResponse)(nil), // 329: determined.api.v1.ReportTrialSourceInfoResponse + (*CreateTrialResponse)(nil), // 330: determined.api.v1.CreateTrialResponse + (*PutTrialResponse)(nil), // 331: determined.api.v1.PutTrialResponse + (*PatchTrialResponse)(nil), // 332: determined.api.v1.PatchTrialResponse + (*StartTrialResponse)(nil), // 333: determined.api.v1.StartTrialResponse + (*RunPrepareForReportingResponse)(nil), // 334: determined.api.v1.RunPrepareForReportingResponse + (*GetTrialResponse)(nil), // 335: determined.api.v1.GetTrialResponse + (*GetTrialByExternalIDResponse)(nil), // 336: determined.api.v1.GetTrialByExternalIDResponse + (*GetTrialWorkloadsResponse)(nil), // 337: determined.api.v1.GetTrialWorkloadsResponse + (*TrialLogsResponse)(nil), // 338: determined.api.v1.TrialLogsResponse + (*TrialLogsFieldsResponse)(nil), // 339: determined.api.v1.TrialLogsFieldsResponse + (*AllocationReadyResponse)(nil), // 340: determined.api.v1.AllocationReadyResponse + (*GetAllocationResponse)(nil), // 341: determined.api.v1.GetAllocationResponse + (*AllocationWaitingResponse)(nil), // 342: determined.api.v1.AllocationWaitingResponse + (*PostTaskLogsResponse)(nil), // 343: determined.api.v1.PostTaskLogsResponse + (*TaskLogsResponse)(nil), // 344: determined.api.v1.TaskLogsResponse + (*TaskLogsFieldsResponse)(nil), // 345: determined.api.v1.TaskLogsFieldsResponse + (*GetTrialProfilerMetricsResponse)(nil), // 346: determined.api.v1.GetTrialProfilerMetricsResponse + (*GetTrialProfilerAvailableSeriesResponse)(nil), // 347: determined.api.v1.GetTrialProfilerAvailableSeriesResponse + (*PostTrialProfilerMetricsBatchResponse)(nil), // 348: determined.api.v1.PostTrialProfilerMetricsBatchResponse + (*GetMetricsResponse)(nil), // 349: determined.api.v1.GetMetricsResponse + (*GetTrainingMetricsResponse)(nil), // 350: determined.api.v1.GetTrainingMetricsResponse + (*GetValidationMetricsResponse)(nil), // 351: determined.api.v1.GetValidationMetricsResponse + (*KillTrialResponse)(nil), // 352: determined.api.v1.KillTrialResponse + (*GetTrialCheckpointsResponse)(nil), // 353: determined.api.v1.GetTrialCheckpointsResponse + (*CleanupLogsResponse)(nil), // 354: determined.api.v1.CleanupLogsResponse + (*AllocationPreemptionSignalResponse)(nil), // 355: determined.api.v1.AllocationPreemptionSignalResponse + (*AllocationPendingPreemptionSignalResponse)(nil), // 356: determined.api.v1.AllocationPendingPreemptionSignalResponse + (*AckAllocationPreemptionSignalResponse)(nil), // 357: determined.api.v1.AckAllocationPreemptionSignalResponse + (*MarkAllocationResourcesDaemonResponse)(nil), // 358: determined.api.v1.MarkAllocationResourcesDaemonResponse + (*AllocationRendezvousInfoResponse)(nil), // 359: determined.api.v1.AllocationRendezvousInfoResponse + (*PostAllocationProxyAddressResponse)(nil), // 360: determined.api.v1.PostAllocationProxyAddressResponse + (*GetTaskAcceleratorDataResponse)(nil), // 361: determined.api.v1.GetTaskAcceleratorDataResponse + (*PostAllocationAcceleratorDataResponse)(nil), // 362: determined.api.v1.PostAllocationAcceleratorDataResponse + (*AllocationAllGatherResponse)(nil), // 363: determined.api.v1.AllocationAllGatherResponse + (*NotifyContainerRunningResponse)(nil), // 364: determined.api.v1.NotifyContainerRunningResponse + (*GetCurrentTrialSearcherOperationResponse)(nil), // 365: determined.api.v1.GetCurrentTrialSearcherOperationResponse + (*CompleteTrialSearcherValidationResponse)(nil), // 366: determined.api.v1.CompleteTrialSearcherValidationResponse + (*ReportTrialSearcherEarlyExitResponse)(nil), // 367: determined.api.v1.ReportTrialSearcherEarlyExitResponse + (*ReportTrialProgressResponse)(nil), // 368: determined.api.v1.ReportTrialProgressResponse + (*PostTrialRunnerMetadataResponse)(nil), // 369: determined.api.v1.PostTrialRunnerMetadataResponse + (*ReportTrialMetricsResponse)(nil), // 370: determined.api.v1.ReportTrialMetricsResponse + (*ReportTrialTrainingMetricsResponse)(nil), // 371: determined.api.v1.ReportTrialTrainingMetricsResponse + (*ReportTrialValidationMetricsResponse)(nil), // 372: determined.api.v1.ReportTrialValidationMetricsResponse + (*ReportCheckpointResponse)(nil), // 373: determined.api.v1.ReportCheckpointResponse + (*GetJobsResponse)(nil), // 374: determined.api.v1.GetJobsResponse + (*GetJobsV2Response)(nil), // 375: determined.api.v1.GetJobsV2Response + (*GetJobQueueStatsResponse)(nil), // 376: determined.api.v1.GetJobQueueStatsResponse + (*UpdateJobQueueResponse)(nil), // 377: determined.api.v1.UpdateJobQueueResponse + (*GetTemplatesResponse)(nil), // 378: determined.api.v1.GetTemplatesResponse + (*GetTemplateResponse)(nil), // 379: determined.api.v1.GetTemplateResponse + (*PutTemplateResponse)(nil), // 380: determined.api.v1.PutTemplateResponse + (*PostTemplateResponse)(nil), // 381: determined.api.v1.PostTemplateResponse + (*PatchTemplateConfigResponse)(nil), // 382: determined.api.v1.PatchTemplateConfigResponse + (*PatchTemplateNameResponse)(nil), // 383: determined.api.v1.PatchTemplateNameResponse + (*DeleteTemplateResponse)(nil), // 384: determined.api.v1.DeleteTemplateResponse + (*GetNotebooksResponse)(nil), // 385: determined.api.v1.GetNotebooksResponse + (*GetNotebookResponse)(nil), // 386: determined.api.v1.GetNotebookResponse + (*IdleNotebookResponse)(nil), // 387: determined.api.v1.IdleNotebookResponse + (*KillNotebookResponse)(nil), // 388: determined.api.v1.KillNotebookResponse + (*SetNotebookPriorityResponse)(nil), // 389: determined.api.v1.SetNotebookPriorityResponse + (*LaunchNotebookResponse)(nil), // 390: determined.api.v1.LaunchNotebookResponse + (*GetShellsResponse)(nil), // 391: determined.api.v1.GetShellsResponse + (*GetShellResponse)(nil), // 392: determined.api.v1.GetShellResponse + (*KillShellResponse)(nil), // 393: determined.api.v1.KillShellResponse + (*SetShellPriorityResponse)(nil), // 394: determined.api.v1.SetShellPriorityResponse + (*LaunchShellResponse)(nil), // 395: determined.api.v1.LaunchShellResponse + (*GetCommandsResponse)(nil), // 396: determined.api.v1.GetCommandsResponse + (*GetCommandResponse)(nil), // 397: determined.api.v1.GetCommandResponse + (*KillCommandResponse)(nil), // 398: determined.api.v1.KillCommandResponse + (*SetCommandPriorityResponse)(nil), // 399: determined.api.v1.SetCommandPriorityResponse + (*LaunchCommandResponse)(nil), // 400: determined.api.v1.LaunchCommandResponse + (*GetTensorboardsResponse)(nil), // 401: determined.api.v1.GetTensorboardsResponse + (*GetTensorboardResponse)(nil), // 402: determined.api.v1.GetTensorboardResponse + (*KillTensorboardResponse)(nil), // 403: determined.api.v1.KillTensorboardResponse + (*SetTensorboardPriorityResponse)(nil), // 404: determined.api.v1.SetTensorboardPriorityResponse + (*LaunchTensorboardResponse)(nil), // 405: determined.api.v1.LaunchTensorboardResponse + (*DeleteTensorboardFilesResponse)(nil), // 406: determined.api.v1.DeleteTensorboardFilesResponse + (*GetActiveTasksCountResponse)(nil), // 407: determined.api.v1.GetActiveTasksCountResponse + (*GetTaskResponse)(nil), // 408: determined.api.v1.GetTaskResponse + (*GetTasksResponse)(nil), // 409: determined.api.v1.GetTasksResponse + (*GetModelResponse)(nil), // 410: determined.api.v1.GetModelResponse + (*PostModelResponse)(nil), // 411: determined.api.v1.PostModelResponse + (*PatchModelResponse)(nil), // 412: determined.api.v1.PatchModelResponse + (*ArchiveModelResponse)(nil), // 413: determined.api.v1.ArchiveModelResponse + (*UnarchiveModelResponse)(nil), // 414: determined.api.v1.UnarchiveModelResponse + (*MoveModelResponse)(nil), // 415: determined.api.v1.MoveModelResponse + (*DeleteModelResponse)(nil), // 416: determined.api.v1.DeleteModelResponse + (*GetModelsResponse)(nil), // 417: determined.api.v1.GetModelsResponse + (*GetModelLabelsResponse)(nil), // 418: determined.api.v1.GetModelLabelsResponse + (*GetModelVersionResponse)(nil), // 419: determined.api.v1.GetModelVersionResponse + (*GetModelVersionsResponse)(nil), // 420: determined.api.v1.GetModelVersionsResponse + (*PostModelVersionResponse)(nil), // 421: determined.api.v1.PostModelVersionResponse + (*PatchModelVersionResponse)(nil), // 422: determined.api.v1.PatchModelVersionResponse + (*DeleteModelVersionResponse)(nil), // 423: determined.api.v1.DeleteModelVersionResponse + (*GetTrialMetricsByModelVersionResponse)(nil), // 424: determined.api.v1.GetTrialMetricsByModelVersionResponse + (*GetCheckpointResponse)(nil), // 425: determined.api.v1.GetCheckpointResponse + (*PostCheckpointMetadataResponse)(nil), // 426: determined.api.v1.PostCheckpointMetadataResponse + (*CheckpointsRemoveFilesResponse)(nil), // 427: determined.api.v1.CheckpointsRemoveFilesResponse + (*PatchCheckpointsResponse)(nil), // 428: determined.api.v1.PatchCheckpointsResponse + (*DeleteCheckpointsResponse)(nil), // 429: determined.api.v1.DeleteCheckpointsResponse + (*GetTrialMetricsByCheckpointResponse)(nil), // 430: determined.api.v1.GetTrialMetricsByCheckpointResponse + (*GetSearcherEventsResponse)(nil), // 431: determined.api.v1.GetSearcherEventsResponse + (*PostSearcherOperationsResponse)(nil), // 432: determined.api.v1.PostSearcherOperationsResponse + (*ExpMetricNamesResponse)(nil), // 433: determined.api.v1.ExpMetricNamesResponse + (*MetricBatchesResponse)(nil), // 434: determined.api.v1.MetricBatchesResponse + (*TrialsSnapshotResponse)(nil), // 435: determined.api.v1.TrialsSnapshotResponse + (*TrialsSampleResponse)(nil), // 436: determined.api.v1.TrialsSampleResponse + (*GetResourcePoolsResponse)(nil), // 437: determined.api.v1.GetResourcePoolsResponse + (*GetKubernetesResourceManagersResponse)(nil), // 438: determined.api.v1.GetKubernetesResourceManagersResponse + (*ResourceAllocationRawResponse)(nil), // 439: determined.api.v1.ResourceAllocationRawResponse + (*ResourceAllocationAggregatedResponse)(nil), // 440: determined.api.v1.ResourceAllocationAggregatedResponse + (*GetWorkspaceResponse)(nil), // 441: determined.api.v1.GetWorkspaceResponse + (*GetWorkspaceProjectsResponse)(nil), // 442: determined.api.v1.GetWorkspaceProjectsResponse + (*GetWorkspacesResponse)(nil), // 443: determined.api.v1.GetWorkspacesResponse + (*PostWorkspaceResponse)(nil), // 444: determined.api.v1.PostWorkspaceResponse + (*PatchWorkspaceResponse)(nil), // 445: determined.api.v1.PatchWorkspaceResponse + (*DeleteWorkspaceResponse)(nil), // 446: determined.api.v1.DeleteWorkspaceResponse + (*ArchiveWorkspaceResponse)(nil), // 447: determined.api.v1.ArchiveWorkspaceResponse + (*UnarchiveWorkspaceResponse)(nil), // 448: determined.api.v1.UnarchiveWorkspaceResponse + (*PinWorkspaceResponse)(nil), // 449: determined.api.v1.PinWorkspaceResponse + (*UnpinWorkspaceResponse)(nil), // 450: determined.api.v1.UnpinWorkspaceResponse + (*SetWorkspaceNamespaceBindingsResponse)(nil), // 451: determined.api.v1.SetWorkspaceNamespaceBindingsResponse + (*SetResourceQuotasResponse)(nil), // 452: determined.api.v1.SetResourceQuotasResponse + (*ListWorkspaceNamespaceBindingsResponse)(nil), // 453: determined.api.v1.ListWorkspaceNamespaceBindingsResponse + (*GetWorkspacesWithDefaultNamespaceBindingsResponse)(nil), // 454: determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse + (*BulkAutoCreateWorkspaceNamespaceBindingsResponse)(nil), // 455: determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse + (*DeleteWorkspaceNamespaceBindingsResponse)(nil), // 456: determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse + (*GetKubernetesResourceQuotasResponse)(nil), // 457: determined.api.v1.GetKubernetesResourceQuotasResponse + (*GetProjectResponse)(nil), // 458: determined.api.v1.GetProjectResponse + (*GetProjectByKeyResponse)(nil), // 459: determined.api.v1.GetProjectByKeyResponse + (*GetProjectColumnsResponse)(nil), // 460: determined.api.v1.GetProjectColumnsResponse + (*GetProjectNumericMetricsRangeResponse)(nil), // 461: determined.api.v1.GetProjectNumericMetricsRangeResponse + (*PostProjectResponse)(nil), // 462: determined.api.v1.PostProjectResponse + (*AddProjectNoteResponse)(nil), // 463: determined.api.v1.AddProjectNoteResponse + (*PutProjectNotesResponse)(nil), // 464: determined.api.v1.PutProjectNotesResponse + (*PatchProjectResponse)(nil), // 465: determined.api.v1.PatchProjectResponse + (*DeleteProjectResponse)(nil), // 466: determined.api.v1.DeleteProjectResponse + (*ArchiveProjectResponse)(nil), // 467: determined.api.v1.ArchiveProjectResponse + (*UnarchiveProjectResponse)(nil), // 468: determined.api.v1.UnarchiveProjectResponse + (*MoveProjectResponse)(nil), // 469: determined.api.v1.MoveProjectResponse + (*MoveExperimentResponse)(nil), // 470: determined.api.v1.MoveExperimentResponse + (*MoveExperimentsResponse)(nil), // 471: determined.api.v1.MoveExperimentsResponse + (*GetWebhooksResponse)(nil), // 472: determined.api.v1.GetWebhooksResponse + (*PostWebhookResponse)(nil), // 473: determined.api.v1.PostWebhookResponse + (*DeleteWebhookResponse)(nil), // 474: determined.api.v1.DeleteWebhookResponse + (*TestWebhookResponse)(nil), // 475: determined.api.v1.TestWebhookResponse + (*PostWebhookEventDataResponse)(nil), // 476: determined.api.v1.PostWebhookEventDataResponse + (*GetGroupResponse)(nil), // 477: determined.api.v1.GetGroupResponse + (*GetGroupsResponse)(nil), // 478: determined.api.v1.GetGroupsResponse + (*CreateGroupResponse)(nil), // 479: determined.api.v1.CreateGroupResponse + (*UpdateGroupResponse)(nil), // 480: determined.api.v1.UpdateGroupResponse + (*DeleteGroupResponse)(nil), // 481: determined.api.v1.DeleteGroupResponse + (*GetPermissionsSummaryResponse)(nil), // 482: determined.api.v1.GetPermissionsSummaryResponse + (*GetGroupsAndUsersAssignedToWorkspaceResponse)(nil), // 483: determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse + (*GetRolesByIDResponse)(nil), // 484: determined.api.v1.GetRolesByIDResponse + (*GetRolesAssignedToUserResponse)(nil), // 485: determined.api.v1.GetRolesAssignedToUserResponse + (*GetRolesAssignedToGroupResponse)(nil), // 486: determined.api.v1.GetRolesAssignedToGroupResponse + (*SearchRolesAssignableToScopeResponse)(nil), // 487: determined.api.v1.SearchRolesAssignableToScopeResponse + (*ListRolesResponse)(nil), // 488: determined.api.v1.ListRolesResponse + (*AssignRolesResponse)(nil), // 489: determined.api.v1.AssignRolesResponse + (*RemoveAssignmentsResponse)(nil), // 490: determined.api.v1.RemoveAssignmentsResponse + (*PostUserActivityResponse)(nil), // 491: determined.api.v1.PostUserActivityResponse + (*GetProjectsByUserActivityResponse)(nil), // 492: determined.api.v1.GetProjectsByUserActivityResponse + (*SearchExperimentsResponse)(nil), // 493: determined.api.v1.SearchExperimentsResponse + (*BindRPToWorkspaceResponse)(nil), // 494: determined.api.v1.BindRPToWorkspaceResponse + (*UnbindRPFromWorkspaceResponse)(nil), // 495: determined.api.v1.UnbindRPFromWorkspaceResponse + (*OverwriteRPWorkspaceBindingsResponse)(nil), // 496: determined.api.v1.OverwriteRPWorkspaceBindingsResponse + (*ListRPsBoundToWorkspaceResponse)(nil), // 497: determined.api.v1.ListRPsBoundToWorkspaceResponse + (*ListWorkspacesBoundToRPResponse)(nil), // 498: determined.api.v1.ListWorkspacesBoundToRPResponse + (*GetGenericTaskConfigResponse)(nil), // 499: determined.api.v1.GetGenericTaskConfigResponse + (*KillGenericTaskResponse)(nil), // 500: determined.api.v1.KillGenericTaskResponse + (*PauseGenericTaskResponse)(nil), // 501: determined.api.v1.PauseGenericTaskResponse + (*UnpauseGenericTaskResponse)(nil), // 502: determined.api.v1.UnpauseGenericTaskResponse + (*SearchRunsResponse)(nil), // 503: determined.api.v1.SearchRunsResponse + (*MoveRunsResponse)(nil), // 504: determined.api.v1.MoveRunsResponse + (*KillRunsResponse)(nil), // 505: determined.api.v1.KillRunsResponse + (*DeleteRunsResponse)(nil), // 506: determined.api.v1.DeleteRunsResponse + (*ArchiveRunsResponse)(nil), // 507: determined.api.v1.ArchiveRunsResponse + (*UnarchiveRunsResponse)(nil), // 508: determined.api.v1.UnarchiveRunsResponse + (*PauseRunsResponse)(nil), // 509: determined.api.v1.PauseRunsResponse + (*ResumeRunsResponse)(nil), // 510: determined.api.v1.ResumeRunsResponse + (*GetRunMetadataResponse)(nil), // 511: determined.api.v1.GetRunMetadataResponse + (*PostRunMetadataResponse)(nil), // 512: determined.api.v1.PostRunMetadataResponse + (*GetMetadataValuesResponse)(nil), // 513: determined.api.v1.GetMetadataValuesResponse + (*PutWorkspaceConfigPoliciesResponse)(nil), // 514: determined.api.v1.PutWorkspaceConfigPoliciesResponse + (*PutGlobalConfigPoliciesResponse)(nil), // 515: determined.api.v1.PutGlobalConfigPoliciesResponse + (*GetWorkspaceConfigPoliciesResponse)(nil), // 516: determined.api.v1.GetWorkspaceConfigPoliciesResponse + (*GetGlobalConfigPoliciesResponse)(nil), // 517: determined.api.v1.GetGlobalConfigPoliciesResponse + (*DeleteWorkspaceConfigPoliciesResponse)(nil), // 518: determined.api.v1.DeleteWorkspaceConfigPoliciesResponse + (*DeleteGlobalConfigPoliciesResponse)(nil), // 519: determined.api.v1.DeleteGlobalConfigPoliciesResponse } var file_determined_api_v1_api_proto_depIdxs = []int32{ 0, // 0: determined.api.v1.Determined.Login:input_type -> determined.api.v1.LoginRequest @@ -3663,310 +3676,312 @@ var file_determined_api_v1_api_proto_depIdxs = []int32{ 213, // 213: determined.api.v1.Determined.PostWebhook:input_type -> determined.api.v1.PostWebhookRequest 214, // 214: determined.api.v1.Determined.DeleteWebhook:input_type -> determined.api.v1.DeleteWebhookRequest 215, // 215: determined.api.v1.Determined.TestWebhook:input_type -> determined.api.v1.TestWebhookRequest - 216, // 216: determined.api.v1.Determined.GetGroup:input_type -> determined.api.v1.GetGroupRequest - 217, // 217: determined.api.v1.Determined.GetGroups:input_type -> determined.api.v1.GetGroupsRequest - 218, // 218: determined.api.v1.Determined.CreateGroup:input_type -> determined.api.v1.CreateGroupRequest - 219, // 219: determined.api.v1.Determined.UpdateGroup:input_type -> determined.api.v1.UpdateGroupRequest - 220, // 220: determined.api.v1.Determined.DeleteGroup:input_type -> determined.api.v1.DeleteGroupRequest - 221, // 221: determined.api.v1.Determined.GetPermissionsSummary:input_type -> determined.api.v1.GetPermissionsSummaryRequest - 222, // 222: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:input_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceRequest - 223, // 223: determined.api.v1.Determined.GetRolesByID:input_type -> determined.api.v1.GetRolesByIDRequest - 224, // 224: determined.api.v1.Determined.GetRolesAssignedToUser:input_type -> determined.api.v1.GetRolesAssignedToUserRequest - 225, // 225: determined.api.v1.Determined.GetRolesAssignedToGroup:input_type -> determined.api.v1.GetRolesAssignedToGroupRequest - 226, // 226: determined.api.v1.Determined.SearchRolesAssignableToScope:input_type -> determined.api.v1.SearchRolesAssignableToScopeRequest - 227, // 227: determined.api.v1.Determined.ListRoles:input_type -> determined.api.v1.ListRolesRequest - 228, // 228: determined.api.v1.Determined.AssignRoles:input_type -> determined.api.v1.AssignRolesRequest - 229, // 229: determined.api.v1.Determined.RemoveAssignments:input_type -> determined.api.v1.RemoveAssignmentsRequest - 230, // 230: determined.api.v1.Determined.PostUserActivity:input_type -> determined.api.v1.PostUserActivityRequest - 231, // 231: determined.api.v1.Determined.GetProjectsByUserActivity:input_type -> determined.api.v1.GetProjectsByUserActivityRequest - 232, // 232: determined.api.v1.Determined.SearchExperiments:input_type -> determined.api.v1.SearchExperimentsRequest - 233, // 233: determined.api.v1.Determined.BindRPToWorkspace:input_type -> determined.api.v1.BindRPToWorkspaceRequest - 234, // 234: determined.api.v1.Determined.UnbindRPFromWorkspace:input_type -> determined.api.v1.UnbindRPFromWorkspaceRequest - 235, // 235: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:input_type -> determined.api.v1.OverwriteRPWorkspaceBindingsRequest - 236, // 236: determined.api.v1.Determined.ListRPsBoundToWorkspace:input_type -> determined.api.v1.ListRPsBoundToWorkspaceRequest - 237, // 237: determined.api.v1.Determined.ListWorkspacesBoundToRP:input_type -> determined.api.v1.ListWorkspacesBoundToRPRequest - 238, // 238: determined.api.v1.Determined.GetGenericTaskConfig:input_type -> determined.api.v1.GetGenericTaskConfigRequest - 239, // 239: determined.api.v1.Determined.KillGenericTask:input_type -> determined.api.v1.KillGenericTaskRequest - 240, // 240: determined.api.v1.Determined.PauseGenericTask:input_type -> determined.api.v1.PauseGenericTaskRequest - 241, // 241: determined.api.v1.Determined.UnpauseGenericTask:input_type -> determined.api.v1.UnpauseGenericTaskRequest - 242, // 242: determined.api.v1.Determined.SearchRuns:input_type -> determined.api.v1.SearchRunsRequest - 243, // 243: determined.api.v1.Determined.MoveRuns:input_type -> determined.api.v1.MoveRunsRequest - 244, // 244: determined.api.v1.Determined.KillRuns:input_type -> determined.api.v1.KillRunsRequest - 245, // 245: determined.api.v1.Determined.DeleteRuns:input_type -> determined.api.v1.DeleteRunsRequest - 246, // 246: determined.api.v1.Determined.ArchiveRuns:input_type -> determined.api.v1.ArchiveRunsRequest - 247, // 247: determined.api.v1.Determined.UnarchiveRuns:input_type -> determined.api.v1.UnarchiveRunsRequest - 248, // 248: determined.api.v1.Determined.PauseRuns:input_type -> determined.api.v1.PauseRunsRequest - 249, // 249: determined.api.v1.Determined.ResumeRuns:input_type -> determined.api.v1.ResumeRunsRequest - 250, // 250: determined.api.v1.Determined.GetRunMetadata:input_type -> determined.api.v1.GetRunMetadataRequest - 251, // 251: determined.api.v1.Determined.PostRunMetadata:input_type -> determined.api.v1.PostRunMetadataRequest - 252, // 252: determined.api.v1.Determined.GetMetadataValues:input_type -> determined.api.v1.GetMetadataValuesRequest - 253, // 253: determined.api.v1.Determined.PutWorkspaceConfigPolicies:input_type -> determined.api.v1.PutWorkspaceConfigPoliciesRequest - 254, // 254: determined.api.v1.Determined.PutGlobalConfigPolicies:input_type -> determined.api.v1.PutGlobalConfigPoliciesRequest - 255, // 255: determined.api.v1.Determined.GetWorkspaceConfigPolicies:input_type -> determined.api.v1.GetWorkspaceConfigPoliciesRequest - 256, // 256: determined.api.v1.Determined.GetGlobalConfigPolicies:input_type -> determined.api.v1.GetGlobalConfigPoliciesRequest - 257, // 257: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:input_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesRequest - 258, // 258: determined.api.v1.Determined.DeleteGlobalConfigPolicies:input_type -> determined.api.v1.DeleteGlobalConfigPoliciesRequest - 259, // 259: determined.api.v1.Determined.Login:output_type -> determined.api.v1.LoginResponse - 260, // 260: determined.api.v1.Determined.CurrentUser:output_type -> determined.api.v1.CurrentUserResponse - 261, // 261: determined.api.v1.Determined.Logout:output_type -> determined.api.v1.LogoutResponse - 262, // 262: determined.api.v1.Determined.GetUsers:output_type -> determined.api.v1.GetUsersResponse - 263, // 263: determined.api.v1.Determined.GetUserSetting:output_type -> determined.api.v1.GetUserSettingResponse - 264, // 264: determined.api.v1.Determined.ResetUserSetting:output_type -> determined.api.v1.ResetUserSettingResponse - 265, // 265: determined.api.v1.Determined.PostUserSetting:output_type -> determined.api.v1.PostUserSettingResponse - 266, // 266: determined.api.v1.Determined.GetUser:output_type -> determined.api.v1.GetUserResponse - 267, // 267: determined.api.v1.Determined.GetUserByUsername:output_type -> determined.api.v1.GetUserByUsernameResponse - 268, // 268: determined.api.v1.Determined.GetMe:output_type -> determined.api.v1.GetMeResponse - 269, // 269: determined.api.v1.Determined.PostUser:output_type -> determined.api.v1.PostUserResponse - 270, // 270: determined.api.v1.Determined.SetUserPassword:output_type -> determined.api.v1.SetUserPasswordResponse - 271, // 271: determined.api.v1.Determined.AssignMultipleGroups:output_type -> determined.api.v1.AssignMultipleGroupsResponse - 272, // 272: determined.api.v1.Determined.PatchUser:output_type -> determined.api.v1.PatchUserResponse - 273, // 273: determined.api.v1.Determined.PatchUsers:output_type -> determined.api.v1.PatchUsersResponse - 274, // 274: determined.api.v1.Determined.GetTelemetry:output_type -> determined.api.v1.GetTelemetryResponse - 275, // 275: determined.api.v1.Determined.GetMaster:output_type -> determined.api.v1.GetMasterResponse - 276, // 276: determined.api.v1.Determined.GetMasterConfig:output_type -> determined.api.v1.GetMasterConfigResponse - 277, // 277: determined.api.v1.Determined.PatchMasterConfig:output_type -> determined.api.v1.PatchMasterConfigResponse - 278, // 278: determined.api.v1.Determined.MasterLogs:output_type -> determined.api.v1.MasterLogsResponse - 279, // 279: determined.api.v1.Determined.GetClusterMessage:output_type -> determined.api.v1.GetClusterMessageResponse - 280, // 280: determined.api.v1.Determined.SetClusterMessage:output_type -> determined.api.v1.SetClusterMessageResponse - 281, // 281: determined.api.v1.Determined.DeleteClusterMessage:output_type -> determined.api.v1.DeleteClusterMessageResponse - 282, // 282: determined.api.v1.Determined.GetAgents:output_type -> determined.api.v1.GetAgentsResponse - 283, // 283: determined.api.v1.Determined.GetAgent:output_type -> determined.api.v1.GetAgentResponse - 284, // 284: determined.api.v1.Determined.GetSlots:output_type -> determined.api.v1.GetSlotsResponse - 285, // 285: determined.api.v1.Determined.GetSlot:output_type -> determined.api.v1.GetSlotResponse - 286, // 286: determined.api.v1.Determined.EnableAgent:output_type -> determined.api.v1.EnableAgentResponse - 287, // 287: determined.api.v1.Determined.DisableAgent:output_type -> determined.api.v1.DisableAgentResponse - 288, // 288: determined.api.v1.Determined.EnableSlot:output_type -> determined.api.v1.EnableSlotResponse - 289, // 289: determined.api.v1.Determined.DisableSlot:output_type -> determined.api.v1.DisableSlotResponse - 290, // 290: determined.api.v1.Determined.CreateGenericTask:output_type -> determined.api.v1.CreateGenericTaskResponse - 291, // 291: determined.api.v1.Determined.CreateExperiment:output_type -> determined.api.v1.CreateExperimentResponse - 292, // 292: determined.api.v1.Determined.PutExperiment:output_type -> determined.api.v1.PutExperimentResponse - 293, // 293: determined.api.v1.Determined.ContinueExperiment:output_type -> determined.api.v1.ContinueExperimentResponse - 294, // 294: determined.api.v1.Determined.GetExperiment:output_type -> determined.api.v1.GetExperimentResponse - 295, // 295: determined.api.v1.Determined.GetExperiments:output_type -> determined.api.v1.GetExperimentsResponse - 296, // 296: determined.api.v1.Determined.PutExperimentRetainLogs:output_type -> determined.api.v1.PutExperimentRetainLogsResponse - 297, // 297: determined.api.v1.Determined.PutExperimentsRetainLogs:output_type -> determined.api.v1.PutExperimentsRetainLogsResponse - 298, // 298: determined.api.v1.Determined.PutTrialRetainLogs:output_type -> determined.api.v1.PutTrialRetainLogsResponse - 299, // 299: determined.api.v1.Determined.GetModelDef:output_type -> determined.api.v1.GetModelDefResponse - 300, // 300: determined.api.v1.Determined.GetTaskContextDirectory:output_type -> determined.api.v1.GetTaskContextDirectoryResponse - 301, // 301: determined.api.v1.Determined.GetModelDefTree:output_type -> determined.api.v1.GetModelDefTreeResponse - 302, // 302: determined.api.v1.Determined.GetModelDefFile:output_type -> determined.api.v1.GetModelDefFileResponse - 303, // 303: determined.api.v1.Determined.GetExperimentLabels:output_type -> determined.api.v1.GetExperimentLabelsResponse - 304, // 304: determined.api.v1.Determined.GetExperimentValidationHistory:output_type -> determined.api.v1.GetExperimentValidationHistoryResponse - 305, // 305: determined.api.v1.Determined.ActivateExperiment:output_type -> determined.api.v1.ActivateExperimentResponse - 306, // 306: determined.api.v1.Determined.ActivateExperiments:output_type -> determined.api.v1.ActivateExperimentsResponse - 307, // 307: determined.api.v1.Determined.PauseExperiment:output_type -> determined.api.v1.PauseExperimentResponse - 308, // 308: determined.api.v1.Determined.PauseExperiments:output_type -> determined.api.v1.PauseExperimentsResponse - 309, // 309: determined.api.v1.Determined.CancelExperiment:output_type -> determined.api.v1.CancelExperimentResponse - 310, // 310: determined.api.v1.Determined.CancelExperiments:output_type -> determined.api.v1.CancelExperimentsResponse - 311, // 311: determined.api.v1.Determined.KillExperiment:output_type -> determined.api.v1.KillExperimentResponse - 312, // 312: determined.api.v1.Determined.KillExperiments:output_type -> determined.api.v1.KillExperimentsResponse - 313, // 313: determined.api.v1.Determined.ArchiveExperiment:output_type -> determined.api.v1.ArchiveExperimentResponse - 314, // 314: determined.api.v1.Determined.ArchiveExperiments:output_type -> determined.api.v1.ArchiveExperimentsResponse - 315, // 315: determined.api.v1.Determined.UnarchiveExperiment:output_type -> determined.api.v1.UnarchiveExperimentResponse - 316, // 316: determined.api.v1.Determined.UnarchiveExperiments:output_type -> determined.api.v1.UnarchiveExperimentsResponse - 317, // 317: determined.api.v1.Determined.PatchExperiment:output_type -> determined.api.v1.PatchExperimentResponse - 318, // 318: determined.api.v1.Determined.DeleteExperiments:output_type -> determined.api.v1.DeleteExperimentsResponse - 319, // 319: determined.api.v1.Determined.DeleteExperiment:output_type -> determined.api.v1.DeleteExperimentResponse - 320, // 320: determined.api.v1.Determined.GetBestSearcherValidationMetric:output_type -> determined.api.v1.GetBestSearcherValidationMetricResponse - 321, // 321: determined.api.v1.Determined.GetExperimentCheckpoints:output_type -> determined.api.v1.GetExperimentCheckpointsResponse - 322, // 322: determined.api.v1.Determined.PutExperimentLabel:output_type -> determined.api.v1.PutExperimentLabelResponse - 323, // 323: determined.api.v1.Determined.DeleteExperimentLabel:output_type -> determined.api.v1.DeleteExperimentLabelResponse - 324, // 324: determined.api.v1.Determined.PreviewHPSearch:output_type -> determined.api.v1.PreviewHPSearchResponse - 325, // 325: determined.api.v1.Determined.GetExperimentTrials:output_type -> determined.api.v1.GetExperimentTrialsResponse - 326, // 326: determined.api.v1.Determined.GetTrialRemainingLogRetentionDays:output_type -> determined.api.v1.GetTrialRemainingLogRetentionDaysResponse - 327, // 327: determined.api.v1.Determined.CompareTrials:output_type -> determined.api.v1.CompareTrialsResponse - 328, // 328: determined.api.v1.Determined.ReportTrialSourceInfo:output_type -> determined.api.v1.ReportTrialSourceInfoResponse - 329, // 329: determined.api.v1.Determined.CreateTrial:output_type -> determined.api.v1.CreateTrialResponse - 330, // 330: determined.api.v1.Determined.PutTrial:output_type -> determined.api.v1.PutTrialResponse - 331, // 331: determined.api.v1.Determined.PatchTrial:output_type -> determined.api.v1.PatchTrialResponse - 332, // 332: determined.api.v1.Determined.StartTrial:output_type -> determined.api.v1.StartTrialResponse - 333, // 333: determined.api.v1.Determined.RunPrepareForReporting:output_type -> determined.api.v1.RunPrepareForReportingResponse - 334, // 334: determined.api.v1.Determined.GetTrial:output_type -> determined.api.v1.GetTrialResponse - 335, // 335: determined.api.v1.Determined.GetTrialByExternalID:output_type -> determined.api.v1.GetTrialByExternalIDResponse - 336, // 336: determined.api.v1.Determined.GetTrialWorkloads:output_type -> determined.api.v1.GetTrialWorkloadsResponse - 337, // 337: determined.api.v1.Determined.TrialLogs:output_type -> determined.api.v1.TrialLogsResponse - 338, // 338: determined.api.v1.Determined.TrialLogsFields:output_type -> determined.api.v1.TrialLogsFieldsResponse - 339, // 339: determined.api.v1.Determined.AllocationReady:output_type -> determined.api.v1.AllocationReadyResponse - 340, // 340: determined.api.v1.Determined.GetAllocation:output_type -> determined.api.v1.GetAllocationResponse - 341, // 341: determined.api.v1.Determined.AllocationWaiting:output_type -> determined.api.v1.AllocationWaitingResponse - 342, // 342: determined.api.v1.Determined.PostTaskLogs:output_type -> determined.api.v1.PostTaskLogsResponse - 343, // 343: determined.api.v1.Determined.TaskLogs:output_type -> determined.api.v1.TaskLogsResponse - 344, // 344: determined.api.v1.Determined.TaskLogsFields:output_type -> determined.api.v1.TaskLogsFieldsResponse - 345, // 345: determined.api.v1.Determined.GetTrialProfilerMetrics:output_type -> determined.api.v1.GetTrialProfilerMetricsResponse - 346, // 346: determined.api.v1.Determined.GetTrialProfilerAvailableSeries:output_type -> determined.api.v1.GetTrialProfilerAvailableSeriesResponse - 347, // 347: determined.api.v1.Determined.PostTrialProfilerMetricsBatch:output_type -> determined.api.v1.PostTrialProfilerMetricsBatchResponse - 348, // 348: determined.api.v1.Determined.GetMetrics:output_type -> determined.api.v1.GetMetricsResponse - 349, // 349: determined.api.v1.Determined.GetTrainingMetrics:output_type -> determined.api.v1.GetTrainingMetricsResponse - 350, // 350: determined.api.v1.Determined.GetValidationMetrics:output_type -> determined.api.v1.GetValidationMetricsResponse - 351, // 351: determined.api.v1.Determined.KillTrial:output_type -> determined.api.v1.KillTrialResponse - 352, // 352: determined.api.v1.Determined.GetTrialCheckpoints:output_type -> determined.api.v1.GetTrialCheckpointsResponse - 353, // 353: determined.api.v1.Determined.CleanupLogs:output_type -> determined.api.v1.CleanupLogsResponse - 354, // 354: determined.api.v1.Determined.AllocationPreemptionSignal:output_type -> determined.api.v1.AllocationPreemptionSignalResponse - 355, // 355: determined.api.v1.Determined.AllocationPendingPreemptionSignal:output_type -> determined.api.v1.AllocationPendingPreemptionSignalResponse - 356, // 356: determined.api.v1.Determined.AckAllocationPreemptionSignal:output_type -> determined.api.v1.AckAllocationPreemptionSignalResponse - 357, // 357: determined.api.v1.Determined.MarkAllocationResourcesDaemon:output_type -> determined.api.v1.MarkAllocationResourcesDaemonResponse - 358, // 358: determined.api.v1.Determined.AllocationRendezvousInfo:output_type -> determined.api.v1.AllocationRendezvousInfoResponse - 359, // 359: determined.api.v1.Determined.PostAllocationProxyAddress:output_type -> determined.api.v1.PostAllocationProxyAddressResponse - 360, // 360: determined.api.v1.Determined.GetTaskAcceleratorData:output_type -> determined.api.v1.GetTaskAcceleratorDataResponse - 361, // 361: determined.api.v1.Determined.PostAllocationAcceleratorData:output_type -> determined.api.v1.PostAllocationAcceleratorDataResponse - 362, // 362: determined.api.v1.Determined.AllocationAllGather:output_type -> determined.api.v1.AllocationAllGatherResponse - 363, // 363: determined.api.v1.Determined.NotifyContainerRunning:output_type -> determined.api.v1.NotifyContainerRunningResponse - 364, // 364: determined.api.v1.Determined.GetCurrentTrialSearcherOperation:output_type -> determined.api.v1.GetCurrentTrialSearcherOperationResponse - 365, // 365: determined.api.v1.Determined.CompleteTrialSearcherValidation:output_type -> determined.api.v1.CompleteTrialSearcherValidationResponse - 366, // 366: determined.api.v1.Determined.ReportTrialSearcherEarlyExit:output_type -> determined.api.v1.ReportTrialSearcherEarlyExitResponse - 367, // 367: determined.api.v1.Determined.ReportTrialProgress:output_type -> determined.api.v1.ReportTrialProgressResponse - 368, // 368: determined.api.v1.Determined.PostTrialRunnerMetadata:output_type -> determined.api.v1.PostTrialRunnerMetadataResponse - 369, // 369: determined.api.v1.Determined.ReportTrialMetrics:output_type -> determined.api.v1.ReportTrialMetricsResponse - 370, // 370: determined.api.v1.Determined.ReportTrialTrainingMetrics:output_type -> determined.api.v1.ReportTrialTrainingMetricsResponse - 371, // 371: determined.api.v1.Determined.ReportTrialValidationMetrics:output_type -> determined.api.v1.ReportTrialValidationMetricsResponse - 372, // 372: determined.api.v1.Determined.ReportCheckpoint:output_type -> determined.api.v1.ReportCheckpointResponse - 373, // 373: determined.api.v1.Determined.GetJobs:output_type -> determined.api.v1.GetJobsResponse - 374, // 374: determined.api.v1.Determined.GetJobsV2:output_type -> determined.api.v1.GetJobsV2Response - 375, // 375: determined.api.v1.Determined.GetJobQueueStats:output_type -> determined.api.v1.GetJobQueueStatsResponse - 376, // 376: determined.api.v1.Determined.UpdateJobQueue:output_type -> determined.api.v1.UpdateJobQueueResponse - 377, // 377: determined.api.v1.Determined.GetTemplates:output_type -> determined.api.v1.GetTemplatesResponse - 378, // 378: determined.api.v1.Determined.GetTemplate:output_type -> determined.api.v1.GetTemplateResponse - 379, // 379: determined.api.v1.Determined.PutTemplate:output_type -> determined.api.v1.PutTemplateResponse - 380, // 380: determined.api.v1.Determined.PostTemplate:output_type -> determined.api.v1.PostTemplateResponse - 381, // 381: determined.api.v1.Determined.PatchTemplateConfig:output_type -> determined.api.v1.PatchTemplateConfigResponse - 382, // 382: determined.api.v1.Determined.PatchTemplateName:output_type -> determined.api.v1.PatchTemplateNameResponse - 383, // 383: determined.api.v1.Determined.DeleteTemplate:output_type -> determined.api.v1.DeleteTemplateResponse - 384, // 384: determined.api.v1.Determined.GetNotebooks:output_type -> determined.api.v1.GetNotebooksResponse - 385, // 385: determined.api.v1.Determined.GetNotebook:output_type -> determined.api.v1.GetNotebookResponse - 386, // 386: determined.api.v1.Determined.IdleNotebook:output_type -> determined.api.v1.IdleNotebookResponse - 387, // 387: determined.api.v1.Determined.KillNotebook:output_type -> determined.api.v1.KillNotebookResponse - 388, // 388: determined.api.v1.Determined.SetNotebookPriority:output_type -> determined.api.v1.SetNotebookPriorityResponse - 389, // 389: determined.api.v1.Determined.LaunchNotebook:output_type -> determined.api.v1.LaunchNotebookResponse - 390, // 390: determined.api.v1.Determined.GetShells:output_type -> determined.api.v1.GetShellsResponse - 391, // 391: determined.api.v1.Determined.GetShell:output_type -> determined.api.v1.GetShellResponse - 392, // 392: determined.api.v1.Determined.KillShell:output_type -> determined.api.v1.KillShellResponse - 393, // 393: determined.api.v1.Determined.SetShellPriority:output_type -> determined.api.v1.SetShellPriorityResponse - 394, // 394: determined.api.v1.Determined.LaunchShell:output_type -> determined.api.v1.LaunchShellResponse - 395, // 395: determined.api.v1.Determined.GetCommands:output_type -> determined.api.v1.GetCommandsResponse - 396, // 396: determined.api.v1.Determined.GetCommand:output_type -> determined.api.v1.GetCommandResponse - 397, // 397: determined.api.v1.Determined.KillCommand:output_type -> determined.api.v1.KillCommandResponse - 398, // 398: determined.api.v1.Determined.SetCommandPriority:output_type -> determined.api.v1.SetCommandPriorityResponse - 399, // 399: determined.api.v1.Determined.LaunchCommand:output_type -> determined.api.v1.LaunchCommandResponse - 400, // 400: determined.api.v1.Determined.GetTensorboards:output_type -> determined.api.v1.GetTensorboardsResponse - 401, // 401: determined.api.v1.Determined.GetTensorboard:output_type -> determined.api.v1.GetTensorboardResponse - 402, // 402: determined.api.v1.Determined.KillTensorboard:output_type -> determined.api.v1.KillTensorboardResponse - 403, // 403: determined.api.v1.Determined.SetTensorboardPriority:output_type -> determined.api.v1.SetTensorboardPriorityResponse - 404, // 404: determined.api.v1.Determined.LaunchTensorboard:output_type -> determined.api.v1.LaunchTensorboardResponse - 405, // 405: determined.api.v1.Determined.DeleteTensorboardFiles:output_type -> determined.api.v1.DeleteTensorboardFilesResponse - 406, // 406: determined.api.v1.Determined.GetActiveTasksCount:output_type -> determined.api.v1.GetActiveTasksCountResponse - 407, // 407: determined.api.v1.Determined.GetTask:output_type -> determined.api.v1.GetTaskResponse - 408, // 408: determined.api.v1.Determined.GetTasks:output_type -> determined.api.v1.GetTasksResponse - 409, // 409: determined.api.v1.Determined.GetModel:output_type -> determined.api.v1.GetModelResponse - 410, // 410: determined.api.v1.Determined.PostModel:output_type -> determined.api.v1.PostModelResponse - 411, // 411: determined.api.v1.Determined.PatchModel:output_type -> determined.api.v1.PatchModelResponse - 412, // 412: determined.api.v1.Determined.ArchiveModel:output_type -> determined.api.v1.ArchiveModelResponse - 413, // 413: determined.api.v1.Determined.UnarchiveModel:output_type -> determined.api.v1.UnarchiveModelResponse - 414, // 414: determined.api.v1.Determined.MoveModel:output_type -> determined.api.v1.MoveModelResponse - 415, // 415: determined.api.v1.Determined.DeleteModel:output_type -> determined.api.v1.DeleteModelResponse - 416, // 416: determined.api.v1.Determined.GetModels:output_type -> determined.api.v1.GetModelsResponse - 417, // 417: determined.api.v1.Determined.GetModelLabels:output_type -> determined.api.v1.GetModelLabelsResponse - 418, // 418: determined.api.v1.Determined.GetModelVersion:output_type -> determined.api.v1.GetModelVersionResponse - 419, // 419: determined.api.v1.Determined.GetModelVersions:output_type -> determined.api.v1.GetModelVersionsResponse - 420, // 420: determined.api.v1.Determined.PostModelVersion:output_type -> determined.api.v1.PostModelVersionResponse - 421, // 421: determined.api.v1.Determined.PatchModelVersion:output_type -> determined.api.v1.PatchModelVersionResponse - 422, // 422: determined.api.v1.Determined.DeleteModelVersion:output_type -> determined.api.v1.DeleteModelVersionResponse - 423, // 423: determined.api.v1.Determined.GetTrialMetricsByModelVersion:output_type -> determined.api.v1.GetTrialMetricsByModelVersionResponse - 424, // 424: determined.api.v1.Determined.GetCheckpoint:output_type -> determined.api.v1.GetCheckpointResponse - 425, // 425: determined.api.v1.Determined.PostCheckpointMetadata:output_type -> determined.api.v1.PostCheckpointMetadataResponse - 426, // 426: determined.api.v1.Determined.CheckpointsRemoveFiles:output_type -> determined.api.v1.CheckpointsRemoveFilesResponse - 427, // 427: determined.api.v1.Determined.PatchCheckpoints:output_type -> determined.api.v1.PatchCheckpointsResponse - 428, // 428: determined.api.v1.Determined.DeleteCheckpoints:output_type -> determined.api.v1.DeleteCheckpointsResponse - 429, // 429: determined.api.v1.Determined.GetTrialMetricsByCheckpoint:output_type -> determined.api.v1.GetTrialMetricsByCheckpointResponse - 430, // 430: determined.api.v1.Determined.GetSearcherEvents:output_type -> determined.api.v1.GetSearcherEventsResponse - 431, // 431: determined.api.v1.Determined.PostSearcherOperations:output_type -> determined.api.v1.PostSearcherOperationsResponse - 432, // 432: determined.api.v1.Determined.ExpMetricNames:output_type -> determined.api.v1.ExpMetricNamesResponse - 433, // 433: determined.api.v1.Determined.MetricBatches:output_type -> determined.api.v1.MetricBatchesResponse - 434, // 434: determined.api.v1.Determined.TrialsSnapshot:output_type -> determined.api.v1.TrialsSnapshotResponse - 435, // 435: determined.api.v1.Determined.TrialsSample:output_type -> determined.api.v1.TrialsSampleResponse - 436, // 436: determined.api.v1.Determined.GetResourcePools:output_type -> determined.api.v1.GetResourcePoolsResponse - 437, // 437: determined.api.v1.Determined.GetKubernetesResourceManagers:output_type -> determined.api.v1.GetKubernetesResourceManagersResponse - 438, // 438: determined.api.v1.Determined.ResourceAllocationRaw:output_type -> determined.api.v1.ResourceAllocationRawResponse - 439, // 439: determined.api.v1.Determined.ResourceAllocationAggregated:output_type -> determined.api.v1.ResourceAllocationAggregatedResponse - 440, // 440: determined.api.v1.Determined.GetWorkspace:output_type -> determined.api.v1.GetWorkspaceResponse - 441, // 441: determined.api.v1.Determined.GetWorkspaceProjects:output_type -> determined.api.v1.GetWorkspaceProjectsResponse - 442, // 442: determined.api.v1.Determined.GetWorkspaces:output_type -> determined.api.v1.GetWorkspacesResponse - 443, // 443: determined.api.v1.Determined.PostWorkspace:output_type -> determined.api.v1.PostWorkspaceResponse - 444, // 444: determined.api.v1.Determined.PatchWorkspace:output_type -> determined.api.v1.PatchWorkspaceResponse - 445, // 445: determined.api.v1.Determined.DeleteWorkspace:output_type -> determined.api.v1.DeleteWorkspaceResponse - 446, // 446: determined.api.v1.Determined.ArchiveWorkspace:output_type -> determined.api.v1.ArchiveWorkspaceResponse - 447, // 447: determined.api.v1.Determined.UnarchiveWorkspace:output_type -> determined.api.v1.UnarchiveWorkspaceResponse - 448, // 448: determined.api.v1.Determined.PinWorkspace:output_type -> determined.api.v1.PinWorkspaceResponse - 449, // 449: determined.api.v1.Determined.UnpinWorkspace:output_type -> determined.api.v1.UnpinWorkspaceResponse - 450, // 450: determined.api.v1.Determined.SetWorkspaceNamespaceBindings:output_type -> determined.api.v1.SetWorkspaceNamespaceBindingsResponse - 451, // 451: determined.api.v1.Determined.SetResourceQuotas:output_type -> determined.api.v1.SetResourceQuotasResponse - 452, // 452: determined.api.v1.Determined.ListWorkspaceNamespaceBindings:output_type -> determined.api.v1.ListWorkspaceNamespaceBindingsResponse - 453, // 453: determined.api.v1.Determined.GetWorkspacesWithDefaultNamespaceBindings:output_type -> determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse - 454, // 454: determined.api.v1.Determined.BulkAutoCreateWorkspaceNamespaceBindings:output_type -> determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse - 455, // 455: determined.api.v1.Determined.DeleteWorkspaceNamespaceBindings:output_type -> determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse - 456, // 456: determined.api.v1.Determined.GetKubernetesResourceQuotas:output_type -> determined.api.v1.GetKubernetesResourceQuotasResponse - 457, // 457: determined.api.v1.Determined.GetProject:output_type -> determined.api.v1.GetProjectResponse - 458, // 458: determined.api.v1.Determined.GetProjectByKey:output_type -> determined.api.v1.GetProjectByKeyResponse - 459, // 459: determined.api.v1.Determined.GetProjectColumns:output_type -> determined.api.v1.GetProjectColumnsResponse - 460, // 460: determined.api.v1.Determined.GetProjectNumericMetricsRange:output_type -> determined.api.v1.GetProjectNumericMetricsRangeResponse - 461, // 461: determined.api.v1.Determined.PostProject:output_type -> determined.api.v1.PostProjectResponse - 462, // 462: determined.api.v1.Determined.AddProjectNote:output_type -> determined.api.v1.AddProjectNoteResponse - 463, // 463: determined.api.v1.Determined.PutProjectNotes:output_type -> determined.api.v1.PutProjectNotesResponse - 464, // 464: determined.api.v1.Determined.PatchProject:output_type -> determined.api.v1.PatchProjectResponse - 465, // 465: determined.api.v1.Determined.DeleteProject:output_type -> determined.api.v1.DeleteProjectResponse - 466, // 466: determined.api.v1.Determined.ArchiveProject:output_type -> determined.api.v1.ArchiveProjectResponse - 467, // 467: determined.api.v1.Determined.UnarchiveProject:output_type -> determined.api.v1.UnarchiveProjectResponse - 468, // 468: determined.api.v1.Determined.MoveProject:output_type -> determined.api.v1.MoveProjectResponse - 469, // 469: determined.api.v1.Determined.MoveExperiment:output_type -> determined.api.v1.MoveExperimentResponse - 470, // 470: determined.api.v1.Determined.MoveExperiments:output_type -> determined.api.v1.MoveExperimentsResponse - 471, // 471: determined.api.v1.Determined.GetWebhooks:output_type -> determined.api.v1.GetWebhooksResponse - 472, // 472: determined.api.v1.Determined.PostWebhook:output_type -> determined.api.v1.PostWebhookResponse - 473, // 473: determined.api.v1.Determined.DeleteWebhook:output_type -> determined.api.v1.DeleteWebhookResponse - 474, // 474: determined.api.v1.Determined.TestWebhook:output_type -> determined.api.v1.TestWebhookResponse - 475, // 475: determined.api.v1.Determined.GetGroup:output_type -> determined.api.v1.GetGroupResponse - 476, // 476: determined.api.v1.Determined.GetGroups:output_type -> determined.api.v1.GetGroupsResponse - 477, // 477: determined.api.v1.Determined.CreateGroup:output_type -> determined.api.v1.CreateGroupResponse - 478, // 478: determined.api.v1.Determined.UpdateGroup:output_type -> determined.api.v1.UpdateGroupResponse - 479, // 479: determined.api.v1.Determined.DeleteGroup:output_type -> determined.api.v1.DeleteGroupResponse - 480, // 480: determined.api.v1.Determined.GetPermissionsSummary:output_type -> determined.api.v1.GetPermissionsSummaryResponse - 481, // 481: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:output_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse - 482, // 482: determined.api.v1.Determined.GetRolesByID:output_type -> determined.api.v1.GetRolesByIDResponse - 483, // 483: determined.api.v1.Determined.GetRolesAssignedToUser:output_type -> determined.api.v1.GetRolesAssignedToUserResponse - 484, // 484: determined.api.v1.Determined.GetRolesAssignedToGroup:output_type -> determined.api.v1.GetRolesAssignedToGroupResponse - 485, // 485: determined.api.v1.Determined.SearchRolesAssignableToScope:output_type -> determined.api.v1.SearchRolesAssignableToScopeResponse - 486, // 486: determined.api.v1.Determined.ListRoles:output_type -> determined.api.v1.ListRolesResponse - 487, // 487: determined.api.v1.Determined.AssignRoles:output_type -> determined.api.v1.AssignRolesResponse - 488, // 488: determined.api.v1.Determined.RemoveAssignments:output_type -> determined.api.v1.RemoveAssignmentsResponse - 489, // 489: determined.api.v1.Determined.PostUserActivity:output_type -> determined.api.v1.PostUserActivityResponse - 490, // 490: determined.api.v1.Determined.GetProjectsByUserActivity:output_type -> determined.api.v1.GetProjectsByUserActivityResponse - 491, // 491: determined.api.v1.Determined.SearchExperiments:output_type -> determined.api.v1.SearchExperimentsResponse - 492, // 492: determined.api.v1.Determined.BindRPToWorkspace:output_type -> determined.api.v1.BindRPToWorkspaceResponse - 493, // 493: determined.api.v1.Determined.UnbindRPFromWorkspace:output_type -> determined.api.v1.UnbindRPFromWorkspaceResponse - 494, // 494: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:output_type -> determined.api.v1.OverwriteRPWorkspaceBindingsResponse - 495, // 495: determined.api.v1.Determined.ListRPsBoundToWorkspace:output_type -> determined.api.v1.ListRPsBoundToWorkspaceResponse - 496, // 496: determined.api.v1.Determined.ListWorkspacesBoundToRP:output_type -> determined.api.v1.ListWorkspacesBoundToRPResponse - 497, // 497: determined.api.v1.Determined.GetGenericTaskConfig:output_type -> determined.api.v1.GetGenericTaskConfigResponse - 498, // 498: determined.api.v1.Determined.KillGenericTask:output_type -> determined.api.v1.KillGenericTaskResponse - 499, // 499: determined.api.v1.Determined.PauseGenericTask:output_type -> determined.api.v1.PauseGenericTaskResponse - 500, // 500: determined.api.v1.Determined.UnpauseGenericTask:output_type -> determined.api.v1.UnpauseGenericTaskResponse - 501, // 501: determined.api.v1.Determined.SearchRuns:output_type -> determined.api.v1.SearchRunsResponse - 502, // 502: determined.api.v1.Determined.MoveRuns:output_type -> determined.api.v1.MoveRunsResponse - 503, // 503: determined.api.v1.Determined.KillRuns:output_type -> determined.api.v1.KillRunsResponse - 504, // 504: determined.api.v1.Determined.DeleteRuns:output_type -> determined.api.v1.DeleteRunsResponse - 505, // 505: determined.api.v1.Determined.ArchiveRuns:output_type -> determined.api.v1.ArchiveRunsResponse - 506, // 506: determined.api.v1.Determined.UnarchiveRuns:output_type -> determined.api.v1.UnarchiveRunsResponse - 507, // 507: determined.api.v1.Determined.PauseRuns:output_type -> determined.api.v1.PauseRunsResponse - 508, // 508: determined.api.v1.Determined.ResumeRuns:output_type -> determined.api.v1.ResumeRunsResponse - 509, // 509: determined.api.v1.Determined.GetRunMetadata:output_type -> determined.api.v1.GetRunMetadataResponse - 510, // 510: determined.api.v1.Determined.PostRunMetadata:output_type -> determined.api.v1.PostRunMetadataResponse - 511, // 511: determined.api.v1.Determined.GetMetadataValues:output_type -> determined.api.v1.GetMetadataValuesResponse - 512, // 512: determined.api.v1.Determined.PutWorkspaceConfigPolicies:output_type -> determined.api.v1.PutWorkspaceConfigPoliciesResponse - 513, // 513: determined.api.v1.Determined.PutGlobalConfigPolicies:output_type -> determined.api.v1.PutGlobalConfigPoliciesResponse - 514, // 514: determined.api.v1.Determined.GetWorkspaceConfigPolicies:output_type -> determined.api.v1.GetWorkspaceConfigPoliciesResponse - 515, // 515: determined.api.v1.Determined.GetGlobalConfigPolicies:output_type -> determined.api.v1.GetGlobalConfigPoliciesResponse - 516, // 516: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:output_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesResponse - 517, // 517: determined.api.v1.Determined.DeleteGlobalConfigPolicies:output_type -> determined.api.v1.DeleteGlobalConfigPoliciesResponse - 259, // [259:518] is the sub-list for method output_type - 0, // [0:259] is the sub-list for method input_type + 216, // 216: determined.api.v1.Determined.PostWebhookEventData:input_type -> determined.api.v1.PostWebhookEventDataRequest + 217, // 217: determined.api.v1.Determined.GetGroup:input_type -> determined.api.v1.GetGroupRequest + 218, // 218: determined.api.v1.Determined.GetGroups:input_type -> determined.api.v1.GetGroupsRequest + 219, // 219: determined.api.v1.Determined.CreateGroup:input_type -> determined.api.v1.CreateGroupRequest + 220, // 220: determined.api.v1.Determined.UpdateGroup:input_type -> determined.api.v1.UpdateGroupRequest + 221, // 221: determined.api.v1.Determined.DeleteGroup:input_type -> determined.api.v1.DeleteGroupRequest + 222, // 222: determined.api.v1.Determined.GetPermissionsSummary:input_type -> determined.api.v1.GetPermissionsSummaryRequest + 223, // 223: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:input_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceRequest + 224, // 224: determined.api.v1.Determined.GetRolesByID:input_type -> determined.api.v1.GetRolesByIDRequest + 225, // 225: determined.api.v1.Determined.GetRolesAssignedToUser:input_type -> determined.api.v1.GetRolesAssignedToUserRequest + 226, // 226: determined.api.v1.Determined.GetRolesAssignedToGroup:input_type -> determined.api.v1.GetRolesAssignedToGroupRequest + 227, // 227: determined.api.v1.Determined.SearchRolesAssignableToScope:input_type -> determined.api.v1.SearchRolesAssignableToScopeRequest + 228, // 228: determined.api.v1.Determined.ListRoles:input_type -> determined.api.v1.ListRolesRequest + 229, // 229: determined.api.v1.Determined.AssignRoles:input_type -> determined.api.v1.AssignRolesRequest + 230, // 230: determined.api.v1.Determined.RemoveAssignments:input_type -> determined.api.v1.RemoveAssignmentsRequest + 231, // 231: determined.api.v1.Determined.PostUserActivity:input_type -> determined.api.v1.PostUserActivityRequest + 232, // 232: determined.api.v1.Determined.GetProjectsByUserActivity:input_type -> determined.api.v1.GetProjectsByUserActivityRequest + 233, // 233: determined.api.v1.Determined.SearchExperiments:input_type -> determined.api.v1.SearchExperimentsRequest + 234, // 234: determined.api.v1.Determined.BindRPToWorkspace:input_type -> determined.api.v1.BindRPToWorkspaceRequest + 235, // 235: determined.api.v1.Determined.UnbindRPFromWorkspace:input_type -> determined.api.v1.UnbindRPFromWorkspaceRequest + 236, // 236: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:input_type -> determined.api.v1.OverwriteRPWorkspaceBindingsRequest + 237, // 237: determined.api.v1.Determined.ListRPsBoundToWorkspace:input_type -> determined.api.v1.ListRPsBoundToWorkspaceRequest + 238, // 238: determined.api.v1.Determined.ListWorkspacesBoundToRP:input_type -> determined.api.v1.ListWorkspacesBoundToRPRequest + 239, // 239: determined.api.v1.Determined.GetGenericTaskConfig:input_type -> determined.api.v1.GetGenericTaskConfigRequest + 240, // 240: determined.api.v1.Determined.KillGenericTask:input_type -> determined.api.v1.KillGenericTaskRequest + 241, // 241: determined.api.v1.Determined.PauseGenericTask:input_type -> determined.api.v1.PauseGenericTaskRequest + 242, // 242: determined.api.v1.Determined.UnpauseGenericTask:input_type -> determined.api.v1.UnpauseGenericTaskRequest + 243, // 243: determined.api.v1.Determined.SearchRuns:input_type -> determined.api.v1.SearchRunsRequest + 244, // 244: determined.api.v1.Determined.MoveRuns:input_type -> determined.api.v1.MoveRunsRequest + 245, // 245: determined.api.v1.Determined.KillRuns:input_type -> determined.api.v1.KillRunsRequest + 246, // 246: determined.api.v1.Determined.DeleteRuns:input_type -> determined.api.v1.DeleteRunsRequest + 247, // 247: determined.api.v1.Determined.ArchiveRuns:input_type -> determined.api.v1.ArchiveRunsRequest + 248, // 248: determined.api.v1.Determined.UnarchiveRuns:input_type -> determined.api.v1.UnarchiveRunsRequest + 249, // 249: determined.api.v1.Determined.PauseRuns:input_type -> determined.api.v1.PauseRunsRequest + 250, // 250: determined.api.v1.Determined.ResumeRuns:input_type -> determined.api.v1.ResumeRunsRequest + 251, // 251: determined.api.v1.Determined.GetRunMetadata:input_type -> determined.api.v1.GetRunMetadataRequest + 252, // 252: determined.api.v1.Determined.PostRunMetadata:input_type -> determined.api.v1.PostRunMetadataRequest + 253, // 253: determined.api.v1.Determined.GetMetadataValues:input_type -> determined.api.v1.GetMetadataValuesRequest + 254, // 254: determined.api.v1.Determined.PutWorkspaceConfigPolicies:input_type -> determined.api.v1.PutWorkspaceConfigPoliciesRequest + 255, // 255: determined.api.v1.Determined.PutGlobalConfigPolicies:input_type -> determined.api.v1.PutGlobalConfigPoliciesRequest + 256, // 256: determined.api.v1.Determined.GetWorkspaceConfigPolicies:input_type -> determined.api.v1.GetWorkspaceConfigPoliciesRequest + 257, // 257: determined.api.v1.Determined.GetGlobalConfigPolicies:input_type -> determined.api.v1.GetGlobalConfigPoliciesRequest + 258, // 258: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:input_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesRequest + 259, // 259: determined.api.v1.Determined.DeleteGlobalConfigPolicies:input_type -> determined.api.v1.DeleteGlobalConfigPoliciesRequest + 260, // 260: determined.api.v1.Determined.Login:output_type -> determined.api.v1.LoginResponse + 261, // 261: determined.api.v1.Determined.CurrentUser:output_type -> determined.api.v1.CurrentUserResponse + 262, // 262: determined.api.v1.Determined.Logout:output_type -> determined.api.v1.LogoutResponse + 263, // 263: determined.api.v1.Determined.GetUsers:output_type -> determined.api.v1.GetUsersResponse + 264, // 264: determined.api.v1.Determined.GetUserSetting:output_type -> determined.api.v1.GetUserSettingResponse + 265, // 265: determined.api.v1.Determined.ResetUserSetting:output_type -> determined.api.v1.ResetUserSettingResponse + 266, // 266: determined.api.v1.Determined.PostUserSetting:output_type -> determined.api.v1.PostUserSettingResponse + 267, // 267: determined.api.v1.Determined.GetUser:output_type -> determined.api.v1.GetUserResponse + 268, // 268: determined.api.v1.Determined.GetUserByUsername:output_type -> determined.api.v1.GetUserByUsernameResponse + 269, // 269: determined.api.v1.Determined.GetMe:output_type -> determined.api.v1.GetMeResponse + 270, // 270: determined.api.v1.Determined.PostUser:output_type -> determined.api.v1.PostUserResponse + 271, // 271: determined.api.v1.Determined.SetUserPassword:output_type -> determined.api.v1.SetUserPasswordResponse + 272, // 272: determined.api.v1.Determined.AssignMultipleGroups:output_type -> determined.api.v1.AssignMultipleGroupsResponse + 273, // 273: determined.api.v1.Determined.PatchUser:output_type -> determined.api.v1.PatchUserResponse + 274, // 274: determined.api.v1.Determined.PatchUsers:output_type -> determined.api.v1.PatchUsersResponse + 275, // 275: determined.api.v1.Determined.GetTelemetry:output_type -> determined.api.v1.GetTelemetryResponse + 276, // 276: determined.api.v1.Determined.GetMaster:output_type -> determined.api.v1.GetMasterResponse + 277, // 277: determined.api.v1.Determined.GetMasterConfig:output_type -> determined.api.v1.GetMasterConfigResponse + 278, // 278: determined.api.v1.Determined.PatchMasterConfig:output_type -> determined.api.v1.PatchMasterConfigResponse + 279, // 279: determined.api.v1.Determined.MasterLogs:output_type -> determined.api.v1.MasterLogsResponse + 280, // 280: determined.api.v1.Determined.GetClusterMessage:output_type -> determined.api.v1.GetClusterMessageResponse + 281, // 281: determined.api.v1.Determined.SetClusterMessage:output_type -> determined.api.v1.SetClusterMessageResponse + 282, // 282: determined.api.v1.Determined.DeleteClusterMessage:output_type -> determined.api.v1.DeleteClusterMessageResponse + 283, // 283: determined.api.v1.Determined.GetAgents:output_type -> determined.api.v1.GetAgentsResponse + 284, // 284: determined.api.v1.Determined.GetAgent:output_type -> determined.api.v1.GetAgentResponse + 285, // 285: determined.api.v1.Determined.GetSlots:output_type -> determined.api.v1.GetSlotsResponse + 286, // 286: determined.api.v1.Determined.GetSlot:output_type -> determined.api.v1.GetSlotResponse + 287, // 287: determined.api.v1.Determined.EnableAgent:output_type -> determined.api.v1.EnableAgentResponse + 288, // 288: determined.api.v1.Determined.DisableAgent:output_type -> determined.api.v1.DisableAgentResponse + 289, // 289: determined.api.v1.Determined.EnableSlot:output_type -> determined.api.v1.EnableSlotResponse + 290, // 290: determined.api.v1.Determined.DisableSlot:output_type -> determined.api.v1.DisableSlotResponse + 291, // 291: determined.api.v1.Determined.CreateGenericTask:output_type -> determined.api.v1.CreateGenericTaskResponse + 292, // 292: determined.api.v1.Determined.CreateExperiment:output_type -> determined.api.v1.CreateExperimentResponse + 293, // 293: determined.api.v1.Determined.PutExperiment:output_type -> determined.api.v1.PutExperimentResponse + 294, // 294: determined.api.v1.Determined.ContinueExperiment:output_type -> determined.api.v1.ContinueExperimentResponse + 295, // 295: determined.api.v1.Determined.GetExperiment:output_type -> determined.api.v1.GetExperimentResponse + 296, // 296: determined.api.v1.Determined.GetExperiments:output_type -> determined.api.v1.GetExperimentsResponse + 297, // 297: determined.api.v1.Determined.PutExperimentRetainLogs:output_type -> determined.api.v1.PutExperimentRetainLogsResponse + 298, // 298: determined.api.v1.Determined.PutExperimentsRetainLogs:output_type -> determined.api.v1.PutExperimentsRetainLogsResponse + 299, // 299: determined.api.v1.Determined.PutTrialRetainLogs:output_type -> determined.api.v1.PutTrialRetainLogsResponse + 300, // 300: determined.api.v1.Determined.GetModelDef:output_type -> determined.api.v1.GetModelDefResponse + 301, // 301: determined.api.v1.Determined.GetTaskContextDirectory:output_type -> determined.api.v1.GetTaskContextDirectoryResponse + 302, // 302: determined.api.v1.Determined.GetModelDefTree:output_type -> determined.api.v1.GetModelDefTreeResponse + 303, // 303: determined.api.v1.Determined.GetModelDefFile:output_type -> determined.api.v1.GetModelDefFileResponse + 304, // 304: determined.api.v1.Determined.GetExperimentLabels:output_type -> determined.api.v1.GetExperimentLabelsResponse + 305, // 305: determined.api.v1.Determined.GetExperimentValidationHistory:output_type -> determined.api.v1.GetExperimentValidationHistoryResponse + 306, // 306: determined.api.v1.Determined.ActivateExperiment:output_type -> determined.api.v1.ActivateExperimentResponse + 307, // 307: determined.api.v1.Determined.ActivateExperiments:output_type -> determined.api.v1.ActivateExperimentsResponse + 308, // 308: determined.api.v1.Determined.PauseExperiment:output_type -> determined.api.v1.PauseExperimentResponse + 309, // 309: determined.api.v1.Determined.PauseExperiments:output_type -> determined.api.v1.PauseExperimentsResponse + 310, // 310: determined.api.v1.Determined.CancelExperiment:output_type -> determined.api.v1.CancelExperimentResponse + 311, // 311: determined.api.v1.Determined.CancelExperiments:output_type -> determined.api.v1.CancelExperimentsResponse + 312, // 312: determined.api.v1.Determined.KillExperiment:output_type -> determined.api.v1.KillExperimentResponse + 313, // 313: determined.api.v1.Determined.KillExperiments:output_type -> determined.api.v1.KillExperimentsResponse + 314, // 314: determined.api.v1.Determined.ArchiveExperiment:output_type -> determined.api.v1.ArchiveExperimentResponse + 315, // 315: determined.api.v1.Determined.ArchiveExperiments:output_type -> determined.api.v1.ArchiveExperimentsResponse + 316, // 316: determined.api.v1.Determined.UnarchiveExperiment:output_type -> determined.api.v1.UnarchiveExperimentResponse + 317, // 317: determined.api.v1.Determined.UnarchiveExperiments:output_type -> determined.api.v1.UnarchiveExperimentsResponse + 318, // 318: determined.api.v1.Determined.PatchExperiment:output_type -> determined.api.v1.PatchExperimentResponse + 319, // 319: determined.api.v1.Determined.DeleteExperiments:output_type -> determined.api.v1.DeleteExperimentsResponse + 320, // 320: determined.api.v1.Determined.DeleteExperiment:output_type -> determined.api.v1.DeleteExperimentResponse + 321, // 321: determined.api.v1.Determined.GetBestSearcherValidationMetric:output_type -> determined.api.v1.GetBestSearcherValidationMetricResponse + 322, // 322: determined.api.v1.Determined.GetExperimentCheckpoints:output_type -> determined.api.v1.GetExperimentCheckpointsResponse + 323, // 323: determined.api.v1.Determined.PutExperimentLabel:output_type -> determined.api.v1.PutExperimentLabelResponse + 324, // 324: determined.api.v1.Determined.DeleteExperimentLabel:output_type -> determined.api.v1.DeleteExperimentLabelResponse + 325, // 325: determined.api.v1.Determined.PreviewHPSearch:output_type -> determined.api.v1.PreviewHPSearchResponse + 326, // 326: determined.api.v1.Determined.GetExperimentTrials:output_type -> determined.api.v1.GetExperimentTrialsResponse + 327, // 327: determined.api.v1.Determined.GetTrialRemainingLogRetentionDays:output_type -> determined.api.v1.GetTrialRemainingLogRetentionDaysResponse + 328, // 328: determined.api.v1.Determined.CompareTrials:output_type -> determined.api.v1.CompareTrialsResponse + 329, // 329: determined.api.v1.Determined.ReportTrialSourceInfo:output_type -> determined.api.v1.ReportTrialSourceInfoResponse + 330, // 330: determined.api.v1.Determined.CreateTrial:output_type -> determined.api.v1.CreateTrialResponse + 331, // 331: determined.api.v1.Determined.PutTrial:output_type -> determined.api.v1.PutTrialResponse + 332, // 332: determined.api.v1.Determined.PatchTrial:output_type -> determined.api.v1.PatchTrialResponse + 333, // 333: determined.api.v1.Determined.StartTrial:output_type -> determined.api.v1.StartTrialResponse + 334, // 334: determined.api.v1.Determined.RunPrepareForReporting:output_type -> determined.api.v1.RunPrepareForReportingResponse + 335, // 335: determined.api.v1.Determined.GetTrial:output_type -> determined.api.v1.GetTrialResponse + 336, // 336: determined.api.v1.Determined.GetTrialByExternalID:output_type -> determined.api.v1.GetTrialByExternalIDResponse + 337, // 337: determined.api.v1.Determined.GetTrialWorkloads:output_type -> determined.api.v1.GetTrialWorkloadsResponse + 338, // 338: determined.api.v1.Determined.TrialLogs:output_type -> determined.api.v1.TrialLogsResponse + 339, // 339: determined.api.v1.Determined.TrialLogsFields:output_type -> determined.api.v1.TrialLogsFieldsResponse + 340, // 340: determined.api.v1.Determined.AllocationReady:output_type -> determined.api.v1.AllocationReadyResponse + 341, // 341: determined.api.v1.Determined.GetAllocation:output_type -> determined.api.v1.GetAllocationResponse + 342, // 342: determined.api.v1.Determined.AllocationWaiting:output_type -> determined.api.v1.AllocationWaitingResponse + 343, // 343: determined.api.v1.Determined.PostTaskLogs:output_type -> determined.api.v1.PostTaskLogsResponse + 344, // 344: determined.api.v1.Determined.TaskLogs:output_type -> determined.api.v1.TaskLogsResponse + 345, // 345: determined.api.v1.Determined.TaskLogsFields:output_type -> determined.api.v1.TaskLogsFieldsResponse + 346, // 346: determined.api.v1.Determined.GetTrialProfilerMetrics:output_type -> determined.api.v1.GetTrialProfilerMetricsResponse + 347, // 347: determined.api.v1.Determined.GetTrialProfilerAvailableSeries:output_type -> determined.api.v1.GetTrialProfilerAvailableSeriesResponse + 348, // 348: determined.api.v1.Determined.PostTrialProfilerMetricsBatch:output_type -> determined.api.v1.PostTrialProfilerMetricsBatchResponse + 349, // 349: determined.api.v1.Determined.GetMetrics:output_type -> determined.api.v1.GetMetricsResponse + 350, // 350: determined.api.v1.Determined.GetTrainingMetrics:output_type -> determined.api.v1.GetTrainingMetricsResponse + 351, // 351: determined.api.v1.Determined.GetValidationMetrics:output_type -> determined.api.v1.GetValidationMetricsResponse + 352, // 352: determined.api.v1.Determined.KillTrial:output_type -> determined.api.v1.KillTrialResponse + 353, // 353: determined.api.v1.Determined.GetTrialCheckpoints:output_type -> determined.api.v1.GetTrialCheckpointsResponse + 354, // 354: determined.api.v1.Determined.CleanupLogs:output_type -> determined.api.v1.CleanupLogsResponse + 355, // 355: determined.api.v1.Determined.AllocationPreemptionSignal:output_type -> determined.api.v1.AllocationPreemptionSignalResponse + 356, // 356: determined.api.v1.Determined.AllocationPendingPreemptionSignal:output_type -> determined.api.v1.AllocationPendingPreemptionSignalResponse + 357, // 357: determined.api.v1.Determined.AckAllocationPreemptionSignal:output_type -> determined.api.v1.AckAllocationPreemptionSignalResponse + 358, // 358: determined.api.v1.Determined.MarkAllocationResourcesDaemon:output_type -> determined.api.v1.MarkAllocationResourcesDaemonResponse + 359, // 359: determined.api.v1.Determined.AllocationRendezvousInfo:output_type -> determined.api.v1.AllocationRendezvousInfoResponse + 360, // 360: determined.api.v1.Determined.PostAllocationProxyAddress:output_type -> determined.api.v1.PostAllocationProxyAddressResponse + 361, // 361: determined.api.v1.Determined.GetTaskAcceleratorData:output_type -> determined.api.v1.GetTaskAcceleratorDataResponse + 362, // 362: determined.api.v1.Determined.PostAllocationAcceleratorData:output_type -> determined.api.v1.PostAllocationAcceleratorDataResponse + 363, // 363: determined.api.v1.Determined.AllocationAllGather:output_type -> determined.api.v1.AllocationAllGatherResponse + 364, // 364: determined.api.v1.Determined.NotifyContainerRunning:output_type -> determined.api.v1.NotifyContainerRunningResponse + 365, // 365: determined.api.v1.Determined.GetCurrentTrialSearcherOperation:output_type -> determined.api.v1.GetCurrentTrialSearcherOperationResponse + 366, // 366: determined.api.v1.Determined.CompleteTrialSearcherValidation:output_type -> determined.api.v1.CompleteTrialSearcherValidationResponse + 367, // 367: determined.api.v1.Determined.ReportTrialSearcherEarlyExit:output_type -> determined.api.v1.ReportTrialSearcherEarlyExitResponse + 368, // 368: determined.api.v1.Determined.ReportTrialProgress:output_type -> determined.api.v1.ReportTrialProgressResponse + 369, // 369: determined.api.v1.Determined.PostTrialRunnerMetadata:output_type -> determined.api.v1.PostTrialRunnerMetadataResponse + 370, // 370: determined.api.v1.Determined.ReportTrialMetrics:output_type -> determined.api.v1.ReportTrialMetricsResponse + 371, // 371: determined.api.v1.Determined.ReportTrialTrainingMetrics:output_type -> determined.api.v1.ReportTrialTrainingMetricsResponse + 372, // 372: determined.api.v1.Determined.ReportTrialValidationMetrics:output_type -> determined.api.v1.ReportTrialValidationMetricsResponse + 373, // 373: determined.api.v1.Determined.ReportCheckpoint:output_type -> determined.api.v1.ReportCheckpointResponse + 374, // 374: determined.api.v1.Determined.GetJobs:output_type -> determined.api.v1.GetJobsResponse + 375, // 375: determined.api.v1.Determined.GetJobsV2:output_type -> determined.api.v1.GetJobsV2Response + 376, // 376: determined.api.v1.Determined.GetJobQueueStats:output_type -> determined.api.v1.GetJobQueueStatsResponse + 377, // 377: determined.api.v1.Determined.UpdateJobQueue:output_type -> determined.api.v1.UpdateJobQueueResponse + 378, // 378: determined.api.v1.Determined.GetTemplates:output_type -> determined.api.v1.GetTemplatesResponse + 379, // 379: determined.api.v1.Determined.GetTemplate:output_type -> determined.api.v1.GetTemplateResponse + 380, // 380: determined.api.v1.Determined.PutTemplate:output_type -> determined.api.v1.PutTemplateResponse + 381, // 381: determined.api.v1.Determined.PostTemplate:output_type -> determined.api.v1.PostTemplateResponse + 382, // 382: determined.api.v1.Determined.PatchTemplateConfig:output_type -> determined.api.v1.PatchTemplateConfigResponse + 383, // 383: determined.api.v1.Determined.PatchTemplateName:output_type -> determined.api.v1.PatchTemplateNameResponse + 384, // 384: determined.api.v1.Determined.DeleteTemplate:output_type -> determined.api.v1.DeleteTemplateResponse + 385, // 385: determined.api.v1.Determined.GetNotebooks:output_type -> determined.api.v1.GetNotebooksResponse + 386, // 386: determined.api.v1.Determined.GetNotebook:output_type -> determined.api.v1.GetNotebookResponse + 387, // 387: determined.api.v1.Determined.IdleNotebook:output_type -> determined.api.v1.IdleNotebookResponse + 388, // 388: determined.api.v1.Determined.KillNotebook:output_type -> determined.api.v1.KillNotebookResponse + 389, // 389: determined.api.v1.Determined.SetNotebookPriority:output_type -> determined.api.v1.SetNotebookPriorityResponse + 390, // 390: determined.api.v1.Determined.LaunchNotebook:output_type -> determined.api.v1.LaunchNotebookResponse + 391, // 391: determined.api.v1.Determined.GetShells:output_type -> determined.api.v1.GetShellsResponse + 392, // 392: determined.api.v1.Determined.GetShell:output_type -> determined.api.v1.GetShellResponse + 393, // 393: determined.api.v1.Determined.KillShell:output_type -> determined.api.v1.KillShellResponse + 394, // 394: determined.api.v1.Determined.SetShellPriority:output_type -> determined.api.v1.SetShellPriorityResponse + 395, // 395: determined.api.v1.Determined.LaunchShell:output_type -> determined.api.v1.LaunchShellResponse + 396, // 396: determined.api.v1.Determined.GetCommands:output_type -> determined.api.v1.GetCommandsResponse + 397, // 397: determined.api.v1.Determined.GetCommand:output_type -> determined.api.v1.GetCommandResponse + 398, // 398: determined.api.v1.Determined.KillCommand:output_type -> determined.api.v1.KillCommandResponse + 399, // 399: determined.api.v1.Determined.SetCommandPriority:output_type -> determined.api.v1.SetCommandPriorityResponse + 400, // 400: determined.api.v1.Determined.LaunchCommand:output_type -> determined.api.v1.LaunchCommandResponse + 401, // 401: determined.api.v1.Determined.GetTensorboards:output_type -> determined.api.v1.GetTensorboardsResponse + 402, // 402: determined.api.v1.Determined.GetTensorboard:output_type -> determined.api.v1.GetTensorboardResponse + 403, // 403: determined.api.v1.Determined.KillTensorboard:output_type -> determined.api.v1.KillTensorboardResponse + 404, // 404: determined.api.v1.Determined.SetTensorboardPriority:output_type -> determined.api.v1.SetTensorboardPriorityResponse + 405, // 405: determined.api.v1.Determined.LaunchTensorboard:output_type -> determined.api.v1.LaunchTensorboardResponse + 406, // 406: determined.api.v1.Determined.DeleteTensorboardFiles:output_type -> determined.api.v1.DeleteTensorboardFilesResponse + 407, // 407: determined.api.v1.Determined.GetActiveTasksCount:output_type -> determined.api.v1.GetActiveTasksCountResponse + 408, // 408: determined.api.v1.Determined.GetTask:output_type -> determined.api.v1.GetTaskResponse + 409, // 409: determined.api.v1.Determined.GetTasks:output_type -> determined.api.v1.GetTasksResponse + 410, // 410: determined.api.v1.Determined.GetModel:output_type -> determined.api.v1.GetModelResponse + 411, // 411: determined.api.v1.Determined.PostModel:output_type -> determined.api.v1.PostModelResponse + 412, // 412: determined.api.v1.Determined.PatchModel:output_type -> determined.api.v1.PatchModelResponse + 413, // 413: determined.api.v1.Determined.ArchiveModel:output_type -> determined.api.v1.ArchiveModelResponse + 414, // 414: determined.api.v1.Determined.UnarchiveModel:output_type -> determined.api.v1.UnarchiveModelResponse + 415, // 415: determined.api.v1.Determined.MoveModel:output_type -> determined.api.v1.MoveModelResponse + 416, // 416: determined.api.v1.Determined.DeleteModel:output_type -> determined.api.v1.DeleteModelResponse + 417, // 417: determined.api.v1.Determined.GetModels:output_type -> determined.api.v1.GetModelsResponse + 418, // 418: determined.api.v1.Determined.GetModelLabels:output_type -> determined.api.v1.GetModelLabelsResponse + 419, // 419: determined.api.v1.Determined.GetModelVersion:output_type -> determined.api.v1.GetModelVersionResponse + 420, // 420: determined.api.v1.Determined.GetModelVersions:output_type -> determined.api.v1.GetModelVersionsResponse + 421, // 421: determined.api.v1.Determined.PostModelVersion:output_type -> determined.api.v1.PostModelVersionResponse + 422, // 422: determined.api.v1.Determined.PatchModelVersion:output_type -> determined.api.v1.PatchModelVersionResponse + 423, // 423: determined.api.v1.Determined.DeleteModelVersion:output_type -> determined.api.v1.DeleteModelVersionResponse + 424, // 424: determined.api.v1.Determined.GetTrialMetricsByModelVersion:output_type -> determined.api.v1.GetTrialMetricsByModelVersionResponse + 425, // 425: determined.api.v1.Determined.GetCheckpoint:output_type -> determined.api.v1.GetCheckpointResponse + 426, // 426: determined.api.v1.Determined.PostCheckpointMetadata:output_type -> determined.api.v1.PostCheckpointMetadataResponse + 427, // 427: determined.api.v1.Determined.CheckpointsRemoveFiles:output_type -> determined.api.v1.CheckpointsRemoveFilesResponse + 428, // 428: determined.api.v1.Determined.PatchCheckpoints:output_type -> determined.api.v1.PatchCheckpointsResponse + 429, // 429: determined.api.v1.Determined.DeleteCheckpoints:output_type -> determined.api.v1.DeleteCheckpointsResponse + 430, // 430: determined.api.v1.Determined.GetTrialMetricsByCheckpoint:output_type -> determined.api.v1.GetTrialMetricsByCheckpointResponse + 431, // 431: determined.api.v1.Determined.GetSearcherEvents:output_type -> determined.api.v1.GetSearcherEventsResponse + 432, // 432: determined.api.v1.Determined.PostSearcherOperations:output_type -> determined.api.v1.PostSearcherOperationsResponse + 433, // 433: determined.api.v1.Determined.ExpMetricNames:output_type -> determined.api.v1.ExpMetricNamesResponse + 434, // 434: determined.api.v1.Determined.MetricBatches:output_type -> determined.api.v1.MetricBatchesResponse + 435, // 435: determined.api.v1.Determined.TrialsSnapshot:output_type -> determined.api.v1.TrialsSnapshotResponse + 436, // 436: determined.api.v1.Determined.TrialsSample:output_type -> determined.api.v1.TrialsSampleResponse + 437, // 437: determined.api.v1.Determined.GetResourcePools:output_type -> determined.api.v1.GetResourcePoolsResponse + 438, // 438: determined.api.v1.Determined.GetKubernetesResourceManagers:output_type -> determined.api.v1.GetKubernetesResourceManagersResponse + 439, // 439: determined.api.v1.Determined.ResourceAllocationRaw:output_type -> determined.api.v1.ResourceAllocationRawResponse + 440, // 440: determined.api.v1.Determined.ResourceAllocationAggregated:output_type -> determined.api.v1.ResourceAllocationAggregatedResponse + 441, // 441: determined.api.v1.Determined.GetWorkspace:output_type -> determined.api.v1.GetWorkspaceResponse + 442, // 442: determined.api.v1.Determined.GetWorkspaceProjects:output_type -> determined.api.v1.GetWorkspaceProjectsResponse + 443, // 443: determined.api.v1.Determined.GetWorkspaces:output_type -> determined.api.v1.GetWorkspacesResponse + 444, // 444: determined.api.v1.Determined.PostWorkspace:output_type -> determined.api.v1.PostWorkspaceResponse + 445, // 445: determined.api.v1.Determined.PatchWorkspace:output_type -> determined.api.v1.PatchWorkspaceResponse + 446, // 446: determined.api.v1.Determined.DeleteWorkspace:output_type -> determined.api.v1.DeleteWorkspaceResponse + 447, // 447: determined.api.v1.Determined.ArchiveWorkspace:output_type -> determined.api.v1.ArchiveWorkspaceResponse + 448, // 448: determined.api.v1.Determined.UnarchiveWorkspace:output_type -> determined.api.v1.UnarchiveWorkspaceResponse + 449, // 449: determined.api.v1.Determined.PinWorkspace:output_type -> determined.api.v1.PinWorkspaceResponse + 450, // 450: determined.api.v1.Determined.UnpinWorkspace:output_type -> determined.api.v1.UnpinWorkspaceResponse + 451, // 451: determined.api.v1.Determined.SetWorkspaceNamespaceBindings:output_type -> determined.api.v1.SetWorkspaceNamespaceBindingsResponse + 452, // 452: determined.api.v1.Determined.SetResourceQuotas:output_type -> determined.api.v1.SetResourceQuotasResponse + 453, // 453: determined.api.v1.Determined.ListWorkspaceNamespaceBindings:output_type -> determined.api.v1.ListWorkspaceNamespaceBindingsResponse + 454, // 454: determined.api.v1.Determined.GetWorkspacesWithDefaultNamespaceBindings:output_type -> determined.api.v1.GetWorkspacesWithDefaultNamespaceBindingsResponse + 455, // 455: determined.api.v1.Determined.BulkAutoCreateWorkspaceNamespaceBindings:output_type -> determined.api.v1.BulkAutoCreateWorkspaceNamespaceBindingsResponse + 456, // 456: determined.api.v1.Determined.DeleteWorkspaceNamespaceBindings:output_type -> determined.api.v1.DeleteWorkspaceNamespaceBindingsResponse + 457, // 457: determined.api.v1.Determined.GetKubernetesResourceQuotas:output_type -> determined.api.v1.GetKubernetesResourceQuotasResponse + 458, // 458: determined.api.v1.Determined.GetProject:output_type -> determined.api.v1.GetProjectResponse + 459, // 459: determined.api.v1.Determined.GetProjectByKey:output_type -> determined.api.v1.GetProjectByKeyResponse + 460, // 460: determined.api.v1.Determined.GetProjectColumns:output_type -> determined.api.v1.GetProjectColumnsResponse + 461, // 461: determined.api.v1.Determined.GetProjectNumericMetricsRange:output_type -> determined.api.v1.GetProjectNumericMetricsRangeResponse + 462, // 462: determined.api.v1.Determined.PostProject:output_type -> determined.api.v1.PostProjectResponse + 463, // 463: determined.api.v1.Determined.AddProjectNote:output_type -> determined.api.v1.AddProjectNoteResponse + 464, // 464: determined.api.v1.Determined.PutProjectNotes:output_type -> determined.api.v1.PutProjectNotesResponse + 465, // 465: determined.api.v1.Determined.PatchProject:output_type -> determined.api.v1.PatchProjectResponse + 466, // 466: determined.api.v1.Determined.DeleteProject:output_type -> determined.api.v1.DeleteProjectResponse + 467, // 467: determined.api.v1.Determined.ArchiveProject:output_type -> determined.api.v1.ArchiveProjectResponse + 468, // 468: determined.api.v1.Determined.UnarchiveProject:output_type -> determined.api.v1.UnarchiveProjectResponse + 469, // 469: determined.api.v1.Determined.MoveProject:output_type -> determined.api.v1.MoveProjectResponse + 470, // 470: determined.api.v1.Determined.MoveExperiment:output_type -> determined.api.v1.MoveExperimentResponse + 471, // 471: determined.api.v1.Determined.MoveExperiments:output_type -> determined.api.v1.MoveExperimentsResponse + 472, // 472: determined.api.v1.Determined.GetWebhooks:output_type -> determined.api.v1.GetWebhooksResponse + 473, // 473: determined.api.v1.Determined.PostWebhook:output_type -> determined.api.v1.PostWebhookResponse + 474, // 474: determined.api.v1.Determined.DeleteWebhook:output_type -> determined.api.v1.DeleteWebhookResponse + 475, // 475: determined.api.v1.Determined.TestWebhook:output_type -> determined.api.v1.TestWebhookResponse + 476, // 476: determined.api.v1.Determined.PostWebhookEventData:output_type -> determined.api.v1.PostWebhookEventDataResponse + 477, // 477: determined.api.v1.Determined.GetGroup:output_type -> determined.api.v1.GetGroupResponse + 478, // 478: determined.api.v1.Determined.GetGroups:output_type -> determined.api.v1.GetGroupsResponse + 479, // 479: determined.api.v1.Determined.CreateGroup:output_type -> determined.api.v1.CreateGroupResponse + 480, // 480: determined.api.v1.Determined.UpdateGroup:output_type -> determined.api.v1.UpdateGroupResponse + 481, // 481: determined.api.v1.Determined.DeleteGroup:output_type -> determined.api.v1.DeleteGroupResponse + 482, // 482: determined.api.v1.Determined.GetPermissionsSummary:output_type -> determined.api.v1.GetPermissionsSummaryResponse + 483, // 483: determined.api.v1.Determined.GetGroupsAndUsersAssignedToWorkspace:output_type -> determined.api.v1.GetGroupsAndUsersAssignedToWorkspaceResponse + 484, // 484: determined.api.v1.Determined.GetRolesByID:output_type -> determined.api.v1.GetRolesByIDResponse + 485, // 485: determined.api.v1.Determined.GetRolesAssignedToUser:output_type -> determined.api.v1.GetRolesAssignedToUserResponse + 486, // 486: determined.api.v1.Determined.GetRolesAssignedToGroup:output_type -> determined.api.v1.GetRolesAssignedToGroupResponse + 487, // 487: determined.api.v1.Determined.SearchRolesAssignableToScope:output_type -> determined.api.v1.SearchRolesAssignableToScopeResponse + 488, // 488: determined.api.v1.Determined.ListRoles:output_type -> determined.api.v1.ListRolesResponse + 489, // 489: determined.api.v1.Determined.AssignRoles:output_type -> determined.api.v1.AssignRolesResponse + 490, // 490: determined.api.v1.Determined.RemoveAssignments:output_type -> determined.api.v1.RemoveAssignmentsResponse + 491, // 491: determined.api.v1.Determined.PostUserActivity:output_type -> determined.api.v1.PostUserActivityResponse + 492, // 492: determined.api.v1.Determined.GetProjectsByUserActivity:output_type -> determined.api.v1.GetProjectsByUserActivityResponse + 493, // 493: determined.api.v1.Determined.SearchExperiments:output_type -> determined.api.v1.SearchExperimentsResponse + 494, // 494: determined.api.v1.Determined.BindRPToWorkspace:output_type -> determined.api.v1.BindRPToWorkspaceResponse + 495, // 495: determined.api.v1.Determined.UnbindRPFromWorkspace:output_type -> determined.api.v1.UnbindRPFromWorkspaceResponse + 496, // 496: determined.api.v1.Determined.OverwriteRPWorkspaceBindings:output_type -> determined.api.v1.OverwriteRPWorkspaceBindingsResponse + 497, // 497: determined.api.v1.Determined.ListRPsBoundToWorkspace:output_type -> determined.api.v1.ListRPsBoundToWorkspaceResponse + 498, // 498: determined.api.v1.Determined.ListWorkspacesBoundToRP:output_type -> determined.api.v1.ListWorkspacesBoundToRPResponse + 499, // 499: determined.api.v1.Determined.GetGenericTaskConfig:output_type -> determined.api.v1.GetGenericTaskConfigResponse + 500, // 500: determined.api.v1.Determined.KillGenericTask:output_type -> determined.api.v1.KillGenericTaskResponse + 501, // 501: determined.api.v1.Determined.PauseGenericTask:output_type -> determined.api.v1.PauseGenericTaskResponse + 502, // 502: determined.api.v1.Determined.UnpauseGenericTask:output_type -> determined.api.v1.UnpauseGenericTaskResponse + 503, // 503: determined.api.v1.Determined.SearchRuns:output_type -> determined.api.v1.SearchRunsResponse + 504, // 504: determined.api.v1.Determined.MoveRuns:output_type -> determined.api.v1.MoveRunsResponse + 505, // 505: determined.api.v1.Determined.KillRuns:output_type -> determined.api.v1.KillRunsResponse + 506, // 506: determined.api.v1.Determined.DeleteRuns:output_type -> determined.api.v1.DeleteRunsResponse + 507, // 507: determined.api.v1.Determined.ArchiveRuns:output_type -> determined.api.v1.ArchiveRunsResponse + 508, // 508: determined.api.v1.Determined.UnarchiveRuns:output_type -> determined.api.v1.UnarchiveRunsResponse + 509, // 509: determined.api.v1.Determined.PauseRuns:output_type -> determined.api.v1.PauseRunsResponse + 510, // 510: determined.api.v1.Determined.ResumeRuns:output_type -> determined.api.v1.ResumeRunsResponse + 511, // 511: determined.api.v1.Determined.GetRunMetadata:output_type -> determined.api.v1.GetRunMetadataResponse + 512, // 512: determined.api.v1.Determined.PostRunMetadata:output_type -> determined.api.v1.PostRunMetadataResponse + 513, // 513: determined.api.v1.Determined.GetMetadataValues:output_type -> determined.api.v1.GetMetadataValuesResponse + 514, // 514: determined.api.v1.Determined.PutWorkspaceConfigPolicies:output_type -> determined.api.v1.PutWorkspaceConfigPoliciesResponse + 515, // 515: determined.api.v1.Determined.PutGlobalConfigPolicies:output_type -> determined.api.v1.PutGlobalConfigPoliciesResponse + 516, // 516: determined.api.v1.Determined.GetWorkspaceConfigPolicies:output_type -> determined.api.v1.GetWorkspaceConfigPoliciesResponse + 517, // 517: determined.api.v1.Determined.GetGlobalConfigPolicies:output_type -> determined.api.v1.GetGlobalConfigPoliciesResponse + 518, // 518: determined.api.v1.Determined.DeleteWorkspaceConfigPolicies:output_type -> determined.api.v1.DeleteWorkspaceConfigPoliciesResponse + 519, // 519: determined.api.v1.Determined.DeleteGlobalConfigPolicies:output_type -> determined.api.v1.DeleteGlobalConfigPoliciesResponse + 260, // [260:520] is the sub-list for method output_type + 0, // [0:260] is the sub-list for method input_type 0, // [0:0] is the sub-list for extension type_name 0, // [0:0] is the sub-list for extension extendee 0, // [0:0] is the sub-list for field type_name @@ -4506,6 +4521,8 @@ type DeterminedClient interface { DeleteWebhook(ctx context.Context, in *DeleteWebhookRequest, opts ...grpc.CallOption) (*DeleteWebhookResponse, error) // Test a webhook. TestWebhook(ctx context.Context, in *TestWebhookRequest, opts ...grpc.CallOption) (*TestWebhookResponse, error) + // Trigger custom trigger of webhooks. + PostWebhookEventData(ctx context.Context, in *PostWebhookEventDataRequest, opts ...grpc.CallOption) (*PostWebhookEventDataResponse, error) // Get a group by id. GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*GetGroupResponse, error) // Search for groups with optional filters. @@ -6878,6 +6895,15 @@ func (c *determinedClient) TestWebhook(ctx context.Context, in *TestWebhookReque return out, nil } +func (c *determinedClient) PostWebhookEventData(ctx context.Context, in *PostWebhookEventDataRequest, opts ...grpc.CallOption) (*PostWebhookEventDataResponse, error) { + out := new(PostWebhookEventDataResponse) + err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/PostWebhookEventData", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *determinedClient) GetGroup(ctx context.Context, in *GetGroupRequest, opts ...grpc.CallOption) (*GetGroupResponse, error) { out := new(GetGroupResponse) err := c.cc.Invoke(ctx, "/determined.api.v1.Determined/GetGroup", in, out, opts...) @@ -7742,6 +7768,8 @@ type DeterminedServer interface { DeleteWebhook(context.Context, *DeleteWebhookRequest) (*DeleteWebhookResponse, error) // Test a webhook. TestWebhook(context.Context, *TestWebhookRequest) (*TestWebhookResponse, error) + // Trigger custom trigger of webhooks. + PostWebhookEventData(context.Context, *PostWebhookEventDataRequest) (*PostWebhookEventDataResponse, error) // Get a group by id. GetGroup(context.Context, *GetGroupRequest) (*GetGroupResponse, error) // Search for groups with optional filters. @@ -8485,6 +8513,9 @@ func (*UnimplementedDeterminedServer) DeleteWebhook(context.Context, *DeleteWebh func (*UnimplementedDeterminedServer) TestWebhook(context.Context, *TestWebhookRequest) (*TestWebhookResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method TestWebhook not implemented") } +func (*UnimplementedDeterminedServer) PostWebhookEventData(context.Context, *PostWebhookEventDataRequest) (*PostWebhookEventDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PostWebhookEventData not implemented") +} func (*UnimplementedDeterminedServer) GetGroup(context.Context, *GetGroupRequest) (*GetGroupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetGroup not implemented") } @@ -12549,6 +12580,24 @@ func _Determined_TestWebhook_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Determined_PostWebhookEventData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(PostWebhookEventDataRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(DeterminedServer).PostWebhookEventData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/determined.api.v1.Determined/PostWebhookEventData", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(DeterminedServer).PostWebhookEventData(ctx, req.(*PostWebhookEventDataRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Determined_GetGroup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetGroupRequest) if err := dec(in); err != nil { @@ -14135,6 +14184,10 @@ var _Determined_serviceDesc = grpc.ServiceDesc{ MethodName: "TestWebhook", Handler: _Determined_TestWebhook_Handler, }, + { + MethodName: "PostWebhookEventData", + Handler: _Determined_PostWebhookEventData_Handler, + }, { MethodName: "GetGroup", Handler: _Determined_GetGroup_Handler, diff --git a/proto/pkg/apiv1/api.pb.gw.go b/proto/pkg/apiv1/api.pb.gw.go index 7f5a4dbd1a8..6395452967d 100644 --- a/proto/pkg/apiv1/api.pb.gw.go +++ b/proto/pkg/apiv1/api.pb.gw.go @@ -11361,6 +11361,40 @@ func local_request_Determined_TestWebhook_0(ctx context.Context, marshaler runti } +func request_Determined_PostWebhookEventData_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PostWebhookEventDataRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.PostWebhookEventData(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Determined_PostWebhookEventData_0(ctx context.Context, marshaler runtime.Marshaler, server DeterminedServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq PostWebhookEventDataRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.PostWebhookEventData(ctx, &protoReq) + return msg, metadata, err + +} + func request_Determined_GetGroup_0(ctx context.Context, marshaler runtime.Marshaler, client DeterminedClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq GetGroupRequest var metadata runtime.ServerMetadata @@ -17704,6 +17738,26 @@ func RegisterDeterminedHandlerServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("POST", pattern_Determined_PostWebhookEventData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Determined_PostWebhookEventData_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_PostWebhookEventData_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Determined_GetGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -22925,6 +22979,26 @@ func RegisterDeterminedHandlerClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("POST", pattern_Determined_PostWebhookEventData_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Determined_PostWebhookEventData_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Determined_PostWebhookEventData_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Determined_GetGroup_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -24221,6 +24295,8 @@ var ( pattern_Determined_TestWebhook_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3, 2, 4}, []string{"api", "v1", "webhooks", "id", "test"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Determined_PostWebhookEventData_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "webhooks", "custom"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Determined_GetGroup_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"api", "v1", "groups", "group_id"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Determined_GetGroups_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"api", "v1", "groups", "search"}, "", runtime.AssumeColonVerbOpt(true))) @@ -24741,6 +24817,8 @@ var ( forward_Determined_TestWebhook_0 = runtime.ForwardResponseMessage + forward_Determined_PostWebhookEventData_0 = runtime.ForwardResponseMessage + forward_Determined_GetGroup_0 = runtime.ForwardResponseMessage forward_Determined_GetGroups_0 = runtime.ForwardResponseMessage diff --git a/proto/pkg/apiv1/webhook.pb.go b/proto/pkg/apiv1/webhook.pb.go index fe25e1056f2..187bc566b06 100644 --- a/proto/pkg/apiv1/webhook.pb.go +++ b/proto/pkg/apiv1/webhook.pb.go @@ -490,6 +490,112 @@ func (x *TestWebhookResponse) GetCompleted() bool { return false } +// Request for triggering custom trigger. +type PostWebhookEventDataRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The event data for custom webhook trigger. + Data *webhookv1.CustomWebhookEventData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` + // The id of the experiment. + ExperimentId int32 `protobuf:"varint,2,opt,name=experiment_id,json=experimentId,proto3" json:"experiment_id,omitempty"` + // The id of the trial. + TrialId int32 `protobuf:"varint,3,opt,name=trial_id,json=trialId,proto3" json:"trial_id,omitempty"` +} + +func (x *PostWebhookEventDataRequest) Reset() { + *x = PostWebhookEventDataRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_webhook_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostWebhookEventDataRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostWebhookEventDataRequest) ProtoMessage() {} + +func (x *PostWebhookEventDataRequest) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_webhook_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostWebhookEventDataRequest.ProtoReflect.Descriptor instead. +func (*PostWebhookEventDataRequest) Descriptor() ([]byte, []int) { + return file_determined_api_v1_webhook_proto_rawDescGZIP(), []int{10} +} + +func (x *PostWebhookEventDataRequest) GetData() *webhookv1.CustomWebhookEventData { + if x != nil { + return x.Data + } + return nil +} + +func (x *PostWebhookEventDataRequest) GetExperimentId() int32 { + if x != nil { + return x.ExperimentId + } + return 0 +} + +func (x *PostWebhookEventDataRequest) GetTrialId() int32 { + if x != nil { + return x.TrialId + } + return 0 +} + +// Response to PostWebhookEventDataRequest. +type PostWebhookEventDataResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *PostWebhookEventDataResponse) Reset() { + *x = PostWebhookEventDataResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_api_v1_webhook_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PostWebhookEventDataResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PostWebhookEventDataResponse) ProtoMessage() {} + +func (x *PostWebhookEventDataResponse) ProtoReflect() protoreflect.Message { + mi := &file_determined_api_v1_webhook_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PostWebhookEventDataResponse.ProtoReflect.Descriptor instead. +func (*PostWebhookEventDataResponse) Descriptor() ([]byte, []int) { + return file_determined_api_v1_webhook_proto_rawDescGZIP(), []int{11} +} + var File_determined_api_v1_webhook_proto protoreflect.FileDescriptor var file_determined_api_v1_webhook_proto_rawDesc = []byte{ @@ -543,10 +649,25 @@ var file_determined_api_v1_webhook_proto_rawDesc = []byte{ 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x3a, 0x11, 0x92, 0x41, 0x0e, 0x0a, 0x0c, 0xd2, 0x01, 0x09, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, - 0x64, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, - 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, - 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x22, 0xbe, 0x01, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x41, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2d, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x65, 0x78, 0x70, + 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x69, + 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x74, 0x72, 0x69, + 0x61, 0x6c, 0x49, 0x64, 0x3a, 0x1c, 0x92, 0x41, 0x19, 0x0a, 0x17, 0xd2, 0x01, 0x04, 0x64, 0x61, + 0x74, 0x61, 0xd2, 0x01, 0x0d, 0x65, 0x78, 0x70, 0x65, 0x72, 0x69, 0x6d, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x6f, 0x73, 0x74, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x42, 0x35, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, + 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x70, 0x6b, 0x67, 0x2f, 0x61, 0x70, 0x69, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -561,30 +682,34 @@ func file_determined_api_v1_webhook_proto_rawDescGZIP() []byte { return file_determined_api_v1_webhook_proto_rawDescData } -var file_determined_api_v1_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 10) +var file_determined_api_v1_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_determined_api_v1_webhook_proto_goTypes = []interface{}{ - (*GetWebhookRequest)(nil), // 0: determined.api.v1.GetWebhookRequest - (*GetWebhookResponse)(nil), // 1: determined.api.v1.GetWebhookResponse - (*GetWebhooksRequest)(nil), // 2: determined.api.v1.GetWebhooksRequest - (*GetWebhooksResponse)(nil), // 3: determined.api.v1.GetWebhooksResponse - (*PostWebhookRequest)(nil), // 4: determined.api.v1.PostWebhookRequest - (*PostWebhookResponse)(nil), // 5: determined.api.v1.PostWebhookResponse - (*DeleteWebhookRequest)(nil), // 6: determined.api.v1.DeleteWebhookRequest - (*DeleteWebhookResponse)(nil), // 7: determined.api.v1.DeleteWebhookResponse - (*TestWebhookRequest)(nil), // 8: determined.api.v1.TestWebhookRequest - (*TestWebhookResponse)(nil), // 9: determined.api.v1.TestWebhookResponse - (*webhookv1.Webhook)(nil), // 10: determined.webhook.v1.Webhook + (*GetWebhookRequest)(nil), // 0: determined.api.v1.GetWebhookRequest + (*GetWebhookResponse)(nil), // 1: determined.api.v1.GetWebhookResponse + (*GetWebhooksRequest)(nil), // 2: determined.api.v1.GetWebhooksRequest + (*GetWebhooksResponse)(nil), // 3: determined.api.v1.GetWebhooksResponse + (*PostWebhookRequest)(nil), // 4: determined.api.v1.PostWebhookRequest + (*PostWebhookResponse)(nil), // 5: determined.api.v1.PostWebhookResponse + (*DeleteWebhookRequest)(nil), // 6: determined.api.v1.DeleteWebhookRequest + (*DeleteWebhookResponse)(nil), // 7: determined.api.v1.DeleteWebhookResponse + (*TestWebhookRequest)(nil), // 8: determined.api.v1.TestWebhookRequest + (*TestWebhookResponse)(nil), // 9: determined.api.v1.TestWebhookResponse + (*PostWebhookEventDataRequest)(nil), // 10: determined.api.v1.PostWebhookEventDataRequest + (*PostWebhookEventDataResponse)(nil), // 11: determined.api.v1.PostWebhookEventDataResponse + (*webhookv1.Webhook)(nil), // 12: determined.webhook.v1.Webhook + (*webhookv1.CustomWebhookEventData)(nil), // 13: determined.webhook.v1.CustomWebhookEventData } var file_determined_api_v1_webhook_proto_depIdxs = []int32{ - 10, // 0: determined.api.v1.GetWebhookResponse.webhook:type_name -> determined.webhook.v1.Webhook - 10, // 1: determined.api.v1.GetWebhooksResponse.webhooks:type_name -> determined.webhook.v1.Webhook - 10, // 2: determined.api.v1.PostWebhookRequest.webhook:type_name -> determined.webhook.v1.Webhook - 10, // 3: determined.api.v1.PostWebhookResponse.webhook:type_name -> determined.webhook.v1.Webhook - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 12, // 0: determined.api.v1.GetWebhookResponse.webhook:type_name -> determined.webhook.v1.Webhook + 12, // 1: determined.api.v1.GetWebhooksResponse.webhooks:type_name -> determined.webhook.v1.Webhook + 12, // 2: determined.api.v1.PostWebhookRequest.webhook:type_name -> determined.webhook.v1.Webhook + 12, // 3: determined.api.v1.PostWebhookResponse.webhook:type_name -> determined.webhook.v1.Webhook + 13, // 4: determined.api.v1.PostWebhookEventDataRequest.data:type_name -> determined.webhook.v1.CustomWebhookEventData + 5, // [5:5] is the sub-list for method output_type + 5, // [5:5] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_determined_api_v1_webhook_proto_init() } @@ -713,6 +838,30 @@ func file_determined_api_v1_webhook_proto_init() { return nil } } + file_determined_api_v1_webhook_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostWebhookEventDataRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_api_v1_webhook_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PostWebhookEventDataResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ @@ -720,7 +869,7 @@ func file_determined_api_v1_webhook_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_determined_api_v1_webhook_proto_rawDesc, NumEnums: 0, - NumMessages: 10, + NumMessages: 12, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/pkg/webhookv1/webhook.pb.go b/proto/pkg/webhookv1/webhook.pb.go index d5634a1ebca..9f7b7e47006 100644 --- a/proto/pkg/webhookv1/webhook.pb.go +++ b/proto/pkg/webhookv1/webhook.pb.go @@ -5,6 +5,7 @@ package webhookv1 import ( + logv1 "github.com/determined-ai/determined/proto/pkg/logv1" _struct "github.com/golang/protobuf/ptypes/struct" _ "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options" protoreflect "google.golang.org/protobuf/reflect/protoreflect" @@ -139,6 +140,8 @@ const ( TriggerType_TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED TriggerType = 2 // For task logs. TriggerType_TRIGGER_TYPE_TASK_LOG TriggerType = 3 + // For custom alert. + TriggerType_TRIGGER_TYPE_CUSTOM TriggerType = 4 ) // Enum value maps for TriggerType. @@ -148,12 +151,14 @@ var ( 1: "TRIGGER_TYPE_EXPERIMENT_STATE_CHANGE", 2: "TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED", 3: "TRIGGER_TYPE_TASK_LOG", + 4: "TRIGGER_TYPE_CUSTOM", } TriggerType_value = map[string]int32{ "TRIGGER_TYPE_UNSPECIFIED": 0, "TRIGGER_TYPE_EXPERIMENT_STATE_CHANGE": 1, "TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED": 2, "TRIGGER_TYPE_TASK_LOG": 3, + "TRIGGER_TYPE_CUSTOM": 4, } ) @@ -184,6 +189,73 @@ func (TriggerType) EnumDescriptor() ([]byte, []int) { return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{2} } +// Event data for custom trigger. +type CustomWebhookEventData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The level at which the event data is logged. + Level logv1.LogLevel `protobuf:"varint,1,opt,name=level,proto3,enum=determined.log.v1.LogLevel" json:"level,omitempty"` + // The title for the event data. + Title string `protobuf:"bytes,2,opt,name=title,proto3" json:"title,omitempty"` + // The description for the event data. + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` +} + +func (x *CustomWebhookEventData) Reset() { + *x = CustomWebhookEventData{} + if protoimpl.UnsafeEnabled { + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CustomWebhookEventData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CustomWebhookEventData) ProtoMessage() {} + +func (x *CustomWebhookEventData) ProtoReflect() protoreflect.Message { + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CustomWebhookEventData.ProtoReflect.Descriptor instead. +func (*CustomWebhookEventData) Descriptor() ([]byte, []int) { + return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{0} +} + +func (x *CustomWebhookEventData) GetLevel() logv1.LogLevel { + if x != nil { + return x.Level + } + return logv1.LogLevel_LOG_LEVEL_UNSPECIFIED +} + +func (x *CustomWebhookEventData) GetTitle() string { + if x != nil { + return x.Title + } + return "" +} + +func (x *CustomWebhookEventData) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + // Representation of a Webhook type Webhook struct { state protoimpl.MessageState @@ -209,7 +281,7 @@ type Webhook struct { func (x *Webhook) Reset() { *x = Webhook{} if protoimpl.UnsafeEnabled { - mi := &file_determined_webhook_v1_webhook_proto_msgTypes[0] + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -222,7 +294,7 @@ func (x *Webhook) String() string { func (*Webhook) ProtoMessage() {} func (x *Webhook) ProtoReflect() protoreflect.Message { - mi := &file_determined_webhook_v1_webhook_proto_msgTypes[0] + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -235,7 +307,7 @@ func (x *Webhook) ProtoReflect() protoreflect.Message { // Deprecated: Use Webhook.ProtoReflect.Descriptor instead. func (*Webhook) Descriptor() ([]byte, []int) { - return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{0} + return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{1} } func (x *Webhook) GetId() int32 { @@ -307,7 +379,7 @@ type Trigger struct { func (x *Trigger) Reset() { *x = Trigger{} if protoimpl.UnsafeEnabled { - mi := &file_determined_webhook_v1_webhook_proto_msgTypes[1] + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -320,7 +392,7 @@ func (x *Trigger) String() string { func (*Trigger) ProtoMessage() {} func (x *Trigger) ProtoReflect() protoreflect.Message { - mi := &file_determined_webhook_v1_webhook_proto_msgTypes[1] + mi := &file_determined_webhook_v1_webhook_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -333,7 +405,7 @@ func (x *Trigger) ProtoReflect() protoreflect.Message { // Deprecated: Use Trigger.ProtoReflect.Descriptor instead. func (*Trigger) Descriptor() ([]byte, []int) { - return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{1} + return file_determined_webhook_v1_webhook_proto_rawDescGZIP(), []int{2} } func (x *Trigger) GetId() int32 { @@ -375,67 +447,79 @@ var file_determined_webhook_v1_webhook_proto_rawDesc = []byte{ 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc7, 0x02, 0x0a, 0x07, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, - 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x77, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, - 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4d, 0x6f, - 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x28, 0x92, 0x41, 0x25, 0x0a, 0x23, 0xd2, - 0x01, 0x03, 0x75, 0x72, 0x6c, 0xd2, 0x01, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0xd2, 0x01, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xd2, 0x01, 0x04, 0x6d, 0x6f, - 0x64, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x45, - 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, - 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, - 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x3a, 0x1d, 0x92, 0x41, 0x1a, - 0x0a, 0x18, 0xd2, 0x01, 0x15, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x5d, 0x0a, 0x0b, 0x57, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x45, 0x42, - 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x45, 0x42, 0x48, 0x4f, - 0x4f, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, - 0x01, 0x12, 0x16, 0x0a, 0x12, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x2a, 0x62, 0x0a, 0x0b, 0x57, 0x65, 0x62, - 0x68, 0x6f, 0x6f, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x57, 0x45, 0x42, 0x48, - 0x4f, 0x4f, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, - 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, 0x41, 0x43, 0x45, - 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x4d, 0x4f, - 0x44, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x43, 0x10, 0x02, 0x2a, 0x9c, 0x01, - 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, - 0x18, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, - 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x54, - 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x45, - 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x48, 0x41, - 0x4e, 0x47, 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x54, 0x48, 0x52, - 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, 0x45, 0x44, 0x10, - 0x02, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x03, 0x42, 0x39, 0x5a, 0x37, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, - 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, - 0x6e, 0x65, 0x64, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x77, 0x65, - 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x76, 0x31, 0x2f, 0x6c, 0x6f, 0x67, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x83, 0x01, 0x0a, 0x16, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x44, 0x61, 0x74, 0x61, + 0x12, 0x31, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1b, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x6c, 0x6f, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x05, 0x6c, 0x65, + 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc7, 0x02, 0x0a, 0x07, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x3a, 0x0a, 0x08, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x64, 0x65, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x08, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x73, 0x12, 0x45, 0x0a, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, + 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0b, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x3a, 0x28, 0x92, 0x41, 0x25, + 0x0a, 0x23, 0xd2, 0x01, 0x03, 0x75, 0x72, 0x6c, 0xd2, 0x01, 0x0c, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0xd2, 0x01, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0xd2, 0x01, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0xd5, 0x01, 0x0a, 0x07, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, + 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x45, 0x0a, 0x0c, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, + 0x69, 0x6e, 0x65, 0x64, 0x2e, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0b, 0x74, 0x72, 0x69, + 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x1d, 0x0a, 0x0a, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x64, 0x3a, 0x1d, + 0x92, 0x41, 0x1a, 0x0a, 0x18, 0xd2, 0x01, 0x15, 0x74, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2a, 0x5d, 0x0a, + 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, + 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x57, 0x45, + 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, + 0x4c, 0x54, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4c, 0x41, 0x43, 0x4b, 0x10, 0x02, 0x2a, 0x62, 0x0a, 0x0b, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x57, + 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, + 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x57, 0x45, 0x42, + 0x48, 0x4f, 0x4f, 0x4b, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x57, 0x4f, 0x52, 0x4b, 0x53, 0x50, + 0x41, 0x43, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x57, 0x45, 0x42, 0x48, 0x4f, 0x4f, 0x4b, + 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x43, 0x10, 0x02, + 0x2a, 0xb5, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, + 0x0a, 0x24, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, + 0x58, 0x50, 0x45, 0x52, 0x49, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x10, 0x01, 0x12, 0x2a, 0x0a, 0x26, 0x54, 0x52, 0x49, 0x47, + 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, + 0x54, 0x48, 0x52, 0x45, 0x53, 0x48, 0x4f, 0x4c, 0x44, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x45, 0x44, + 0x45, 0x44, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x53, 0x4b, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x03, 0x12, + 0x17, 0x0a, 0x13, 0x54, 0x52, 0x49, 0x47, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x04, 0x42, 0x39, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, + 0x64, 0x2d, 0x61, 0x69, 0x2f, 0x64, 0x65, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x6e, 0x65, 0x64, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -451,26 +535,29 @@ func file_determined_webhook_v1_webhook_proto_rawDescGZIP() []byte { } var file_determined_webhook_v1_webhook_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_determined_webhook_v1_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_determined_webhook_v1_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_determined_webhook_v1_webhook_proto_goTypes = []interface{}{ - (WebhookType)(0), // 0: determined.webhook.v1.WebhookType - (WebhookMode)(0), // 1: determined.webhook.v1.WebhookMode - (TriggerType)(0), // 2: determined.webhook.v1.TriggerType - (*Webhook)(nil), // 3: determined.webhook.v1.Webhook - (*Trigger)(nil), // 4: determined.webhook.v1.Trigger - (*_struct.Struct)(nil), // 5: google.protobuf.Struct + (WebhookType)(0), // 0: determined.webhook.v1.WebhookType + (WebhookMode)(0), // 1: determined.webhook.v1.WebhookMode + (TriggerType)(0), // 2: determined.webhook.v1.TriggerType + (*CustomWebhookEventData)(nil), // 3: determined.webhook.v1.CustomWebhookEventData + (*Webhook)(nil), // 4: determined.webhook.v1.Webhook + (*Trigger)(nil), // 5: determined.webhook.v1.Trigger + (logv1.LogLevel)(0), // 6: determined.log.v1.LogLevel + (*_struct.Struct)(nil), // 7: google.protobuf.Struct } var file_determined_webhook_v1_webhook_proto_depIdxs = []int32{ - 4, // 0: determined.webhook.v1.Webhook.triggers:type_name -> determined.webhook.v1.Trigger - 0, // 1: determined.webhook.v1.Webhook.webhook_type:type_name -> determined.webhook.v1.WebhookType - 1, // 2: determined.webhook.v1.Webhook.mode:type_name -> determined.webhook.v1.WebhookMode - 2, // 3: determined.webhook.v1.Trigger.trigger_type:type_name -> determined.webhook.v1.TriggerType - 5, // 4: determined.webhook.v1.Trigger.condition:type_name -> google.protobuf.Struct - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 6, // 0: determined.webhook.v1.CustomWebhookEventData.level:type_name -> determined.log.v1.LogLevel + 5, // 1: determined.webhook.v1.Webhook.triggers:type_name -> determined.webhook.v1.Trigger + 0, // 2: determined.webhook.v1.Webhook.webhook_type:type_name -> determined.webhook.v1.WebhookType + 1, // 3: determined.webhook.v1.Webhook.mode:type_name -> determined.webhook.v1.WebhookMode + 2, // 4: determined.webhook.v1.Trigger.trigger_type:type_name -> determined.webhook.v1.TriggerType + 7, // 5: determined.webhook.v1.Trigger.condition:type_name -> google.protobuf.Struct + 6, // [6:6] is the sub-list for method output_type + 6, // [6:6] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_determined_webhook_v1_webhook_proto_init() } @@ -480,7 +567,7 @@ func file_determined_webhook_v1_webhook_proto_init() { } if !protoimpl.UnsafeEnabled { file_determined_webhook_v1_webhook_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Webhook); i { + switch v := v.(*CustomWebhookEventData); i { case 0: return &v.state case 1: @@ -492,6 +579,18 @@ func file_determined_webhook_v1_webhook_proto_init() { } } file_determined_webhook_v1_webhook_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Webhook); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_determined_webhook_v1_webhook_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Trigger); i { case 0: return &v.state @@ -510,7 +609,7 @@ func file_determined_webhook_v1_webhook_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_determined_webhook_v1_webhook_proto_rawDesc, NumEnums: 3, - NumMessages: 2, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/src/determined/api/v1/api.proto b/proto/src/determined/api/v1/api.proto index d50fff2ebce..bce92f4b7a3 100644 --- a/proto/src/determined/api/v1/api.proto +++ b/proto/src/determined/api/v1/api.proto @@ -2376,6 +2376,18 @@ service Determined { }; } + // Trigger custom trigger of webhooks. + rpc PostWebhookEventData(PostWebhookEventDataRequest) + returns (PostWebhookEventDataResponse) { + option (google.api.http) = { + post: "/api/v1/webhooks/custom" + body: "*" + }; + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = { + tags: "Webhooks" + }; + } + // Get a group by id. rpc GetGroup(GetGroupRequest) returns (GetGroupResponse) { option (google.api.http) = { diff --git a/proto/src/determined/api/v1/webhook.proto b/proto/src/determined/api/v1/webhook.proto index 0b927c39ec9..0c68a84d1dd 100644 --- a/proto/src/determined/api/v1/webhook.proto +++ b/proto/src/determined/api/v1/webhook.proto @@ -86,3 +86,19 @@ message TestWebhookResponse { // Status of test. bool completed = 1; } + +// Request for triggering custom trigger. +message PostWebhookEventDataRequest { + option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = { + json_schema: { required: [ "data", "experiment_id" ] } + }; + // The event data for custom webhook trigger. + determined.webhook.v1.CustomWebhookEventData data = 1; + // The id of the experiment. + int32 experiment_id = 2; + // The id of the trial. + int32 trial_id = 3; +} + +// Response to PostWebhookEventDataRequest. +message PostWebhookEventDataResponse {} \ No newline at end of file diff --git a/proto/src/determined/webhook/v1/webhook.proto b/proto/src/determined/webhook/v1/webhook.proto index ec81a2d275a..a24a611ae96 100644 --- a/proto/src/determined/webhook/v1/webhook.proto +++ b/proto/src/determined/webhook/v1/webhook.proto @@ -4,6 +4,7 @@ package determined.webhook.v1; option go_package = "github.com/determined-ai/determined/proto/pkg/webhookv1"; import "protoc-gen-swagger/options/annotations.proto"; import "google/protobuf/struct.proto"; +import "determined/log/v1/log.proto"; // Enum values for expected webhook types. enum WebhookType { @@ -36,6 +37,18 @@ enum TriggerType { TRIGGER_TYPE_METRIC_THRESHOLD_EXCEEDED = 2; // For task logs. TRIGGER_TYPE_TASK_LOG = 3; + // For custom alert. + TRIGGER_TYPE_CUSTOM = 4; +} + +// Event data for custom trigger. +message CustomWebhookEventData { + // The level at which the event data is logged. + determined.log.v1.LogLevel level = 1; + // The title for the event data. + string title = 2; + // The description for the event data. + string description = 3; } // Representation of a Webhook diff --git a/webui/react/src/components/WebhookCreateModal.tsx b/webui/react/src/components/WebhookCreateModal.tsx index 3d91e6a5e4a..5ccaf42dfdc 100644 --- a/webui/react/src/components/WebhookCreateModal.tsx +++ b/webui/react/src/components/WebhookCreateModal.tsx @@ -21,7 +21,12 @@ interface Props { const FORM_ID = 'create-webhook-form'; -const triggerEvents = [RunState.Completed, RunState.Error, V1TriggerType.TASKLOG] as const; +const triggerEvents = [ + RunState.Completed, + RunState.Error, + V1TriggerType.TASKLOG, + V1TriggerType.CUSTOM, +] as const; interface FormInputs { regex?: string; @@ -56,6 +61,10 @@ const triggerOptions = [ label: 'TASKLOG', value: V1TriggerType.TASKLOG, }, + { + label: 'CUSTOM', + value: V1TriggerType.CUSTOM, + }, ]; const modeOptions = [ { @@ -71,12 +80,14 @@ const WebhookCreateModalComponent: React.FC = ({ onSuccess }: Props) => { const idPrefix = useId(); const [form] = Form.useForm(); const [disabled, setDisabled] = useState(true); - const triggers = Form.useWatch('triggerEvents', form); + const triggerEvents = Form.useWatch('triggerEvents', form); const f_webhook = useFeature().isOn('webhook_improvement'); const workspaces = useObservable(workspaceStore.workspaces).getOrElse([]); const { canCreateWebhooks } = usePermissions(); const { openToast } = useToast(); + const triggers = useMemo(() => triggerEvents || [], [triggerEvents]); + const onChange = useCallback(() => { const fields = form.getFieldsError(); const hasError = fields.some((f) => f.errors.length); @@ -84,9 +95,12 @@ const WebhookCreateModalComponent: React.FC = ({ onSuccess }: Props) => { }, [form]); useEffect(() => { - if (!(triggers || []).includes('TRIGGER_TYPE_TASK_LOG')) { + if (!triggers.includes(V1TriggerType.TASKLOG)) { form.setFieldValue('regex', null); } + if (triggers.includes(V1TriggerType.CUSTOM)) { + form.setFieldValue('mode', V1WebhookMode.SPECIFIC); + } }, [triggers, form]); const permWorkspace = useMemo( @@ -103,12 +117,18 @@ const WebhookCreateModalComponent: React.FC = ({ onSuccess }: Props) => { mode: values.mode, name: values.name, triggers: values.triggerEvents.map((state) => { - if (state === 'TRIGGER_TYPE_TASK_LOG') { + if (state === V1TriggerType.TASKLOG) { return { condition: { regex: values.regex }, triggerType: state, }; } + if (state === V1TriggerType.CUSTOM) { + return { + condition: {}, + triggerType: state, + }; + } return { condition: { state }, triggerType: V1TriggerType.EXPERIMENTSTATECHANGE, @@ -197,15 +217,6 @@ const WebhookCreateModalComponent: React.FC = ({ onSuccess }: Props) => { ]}> - {f_webhook && ( - - + )} + {f_webhook && ( + +