nominal_api/proto/
nominal.procedures.executions.v1.rs

1// This file is @generated by prost-build.
2/// A procedure execution node is either a section or a step.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct ProcedureExecutionNode {
5    #[prost(oneof = "procedure_execution_node::Node", tags = "1, 2")]
6    pub node: ::core::option::Option<procedure_execution_node::Node>,
7}
8/// Nested message and enum types in `ProcedureExecutionNode`.
9pub mod procedure_execution_node {
10    #[derive(Clone, PartialEq, ::prost::Oneof)]
11    pub enum Node {
12        /// A section node is a visual grouping of other sections and steps.
13        /// Execution sections are static and do not have execution state.
14        #[prost(message, tag = "1")]
15        Section(super::ProcedureExecutionSectionNode),
16        /// Execution steps are the interactive steps in a procedure.
17        #[prost(message, tag = "2")]
18        Step(super::ProcedureExecutionStepNode),
19    }
20}
21/// A section node is a visual grouping of other sections and steps.
22#[derive(Clone, PartialEq, ::prost::Message)]
23pub struct ProcedureExecutionSectionNode {
24    /// Unique identifier of this execution node.
25    #[prost(string, tag = "1")]
26    pub id: ::prost::alloc::string::String,
27    /// Unique identifier of the template node this execution node is based on.
28    #[prost(string, tag = "2")]
29    pub template_node_id: ::prost::alloc::string::String,
30    /// Title of this section. Uses the template section's title and cannot be changed in execution.
31    #[prost(string, tag = "3")]
32    pub title: ::prost::alloc::string::String,
33    /// Description of this section. Uses the template section's description and cannot be changed in execution.
34    #[prost(string, optional, tag = "4")]
35    pub description: ::core::option::Option<::prost::alloc::string::String>,
36    /// If set, the commit ID of the procedure template this section is based on.
37    /// Otherwise, the section is based on the template commit specified at the top level of the execution.
38    #[prost(string, optional, tag = "5")]
39    pub template_commit_id: ::core::option::Option<::prost::alloc::string::String>,
40}
41/// Execution steps are the interactive steps in a procedure.
42#[derive(Clone, PartialEq, ::prost::Message)]
43pub struct ProcedureExecutionStepNode {
44    /// Unique identifier of this execution node.
45    #[prost(string, tag = "1")]
46    pub id: ::prost::alloc::string::String,
47    /// Unique identifier of the template node this execution node is based on.
48    #[prost(string, tag = "2")]
49    pub template_node_id: ::prost::alloc::string::String,
50    /// Execution steps become "outdated" once any upstream steps are re-run
51    /// An outdated execution step should not be further modified.
52    #[prost(bool, tag = "3")]
53    pub is_outdated: bool,
54    /// The current status of the step along with metadata about the status transitions.
55    #[prost(message, optional, tag = "4")]
56    pub state: ::core::option::Option<ExecutionStepState>,
57    /// The current value for the content of the step.
58    #[prost(message, optional, tag = "5")]
59    pub value: ::core::option::Option<StepContentValue>,
60    /// Whether the step has auto-proceed enabled.
61    #[prost(message, optional, tag = "6")]
62    pub auto_proceed_config: ::core::option::Option<super::super::v1::AutoProceedConfig>,
63    /// Completion_condition_status is the status of the completion condition for the step
64    /// The backend manages this property and will update it while it monitors the
65    /// completion_condition if set.
66    /// This property will be unset if no completion_condition is set on the step or
67    /// if the execution step's contents has not been submitted yet.
68    #[prost(message, optional, tag = "7")]
69    pub success_condition_status: ::core::option::Option<SuccessConditionStatus>,
70    /// Completion_action_statuses are the status of the completion actions for the step
71    /// The backend manages this property and will update it after performing
72    /// completion_actions.
73    #[prost(message, repeated, tag = "8")]
74    pub completion_action_statuses: ::prost::alloc::vec::Vec<CompletionActionStatus>,
75    /// Outputs are the values of the fields within this step, set by the backend after the step has reached
76    /// the SUCCEEDED state.
77    /// The backend will know how to introspect the node and determine these values, for example looking for
78    /// form fields with ids in a FormStep.
79    /// These outputs can be consumed by other steps later in the procedure by referencing `{output_id}:{field_id}`
80    #[prost(map = "string, message", tag = "10")]
81    pub outputs: ::std::collections::HashMap<
82        ::prost::alloc::string::String,
83        FieldOutput,
84    >,
85    /// If set, the commit ID of the procedure template this step is based on.
86    /// Otherwise, the step is based on the template commit specified at the top level of the execution.
87    #[prost(string, optional, tag = "11")]
88    pub template_commit_id: ::core::option::Option<::prost::alloc::string::String>,
89}
90/// All execution steps start in the NOT_STARTED state.
91/// In this state, the step's values can be modified by the user.
92#[derive(Clone, Copy, PartialEq, ::prost::Message)]
93pub struct ExecutionStepNotStarted {}
94/// An execution step is in the SKIPPED state if it was skipped by a user.
95/// An execution step cannot be skipped if it is in a terminal state (SUCCEEDED or ERRORED).
96/// This is a terminal state, the step's values cannot be modified by the user.
97#[derive(Clone, PartialEq, ::prost::Message)]
98pub struct ExecutionStepSkipped {
99    #[prost(message, optional, tag = "1")]
100    pub skipped_at: ::core::option::Option<
101        super::super::super::super::google::protobuf::Timestamp,
102    >,
103    #[prost(string, tag = "2")]
104    pub skipped_by: ::prost::alloc::string::String,
105    #[prost(string, optional, tag = "3")]
106    pub skip_reason: ::core::option::Option<::prost::alloc::string::String>,
107    /// Optional because a step can be skipped from the NOT_STARTED state before these are set
108    #[prost(message, optional, tag = "4")]
109    pub started_at: ::core::option::Option<
110        super::super::super::super::google::protobuf::Timestamp,
111    >,
112    #[prost(string, optional, tag = "5")]
113    pub started_by: ::core::option::Option<::prost::alloc::string::String>,
114    /// Optional because a step can be skipped from the IN_PROGRESS state before these are set
115    #[prost(message, optional, tag = "6")]
116    pub submitted_at: ::core::option::Option<
117        super::super::super::super::google::protobuf::Timestamp,
118    >,
119    #[prost(string, optional, tag = "7")]
120    pub submitted_by: ::core::option::Option<::prost::alloc::string::String>,
121}
122/// An execution step is in the IN_PROGRESS state once it has been started from NOT_STARTED,
123/// either manually or automatically.
124/// In this state, the step's values can be modified by the user.
125#[derive(Clone, PartialEq, ::prost::Message)]
126pub struct ExecutionStepInProgress {
127    #[prost(message, optional, tag = "1")]
128    pub started_at: ::core::option::Option<
129        super::super::super::super::google::protobuf::Timestamp,
130    >,
131    #[prost(string, tag = "2")]
132    pub started_by: ::prost::alloc::string::String,
133}
134/// An execution step is in the SUBMITTED state once it has been submitted from the IN_PROGRESS state,
135/// either manually or automatically.
136/// In this state, the step's values are considered submitted and cannot be modified by the user.
137/// In this state, the backend will monitor the completion condition (if any) and execute the completion
138/// actions (if any) once the condition is satisfied.
139#[derive(Clone, PartialEq, ::prost::Message)]
140pub struct ExecutionStepSubmitted {
141    #[prost(message, optional, tag = "1")]
142    pub started_at: ::core::option::Option<
143        super::super::super::super::google::protobuf::Timestamp,
144    >,
145    #[prost(string, tag = "2")]
146    pub started_by: ::prost::alloc::string::String,
147    #[prost(message, optional, tag = "3")]
148    pub submitted_at: ::core::option::Option<
149        super::super::super::super::google::protobuf::Timestamp,
150    >,
151    #[prost(string, tag = "4")]
152    pub submitted_by: ::prost::alloc::string::String,
153}
154/// An execution step reaches the SUCCEEDED state if all conditions were met and all actions successfully ran.
155/// This is a terminal state, the step's values cannot be modified by the user.
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct ExecutionStepSucceeded {
158    #[prost(message, optional, tag = "1")]
159    pub started_at: ::core::option::Option<
160        super::super::super::super::google::protobuf::Timestamp,
161    >,
162    #[prost(string, tag = "2")]
163    pub started_by: ::prost::alloc::string::String,
164    #[prost(message, optional, tag = "3")]
165    pub submitted_at: ::core::option::Option<
166        super::super::super::super::google::protobuf::Timestamp,
167    >,
168    #[prost(string, tag = "4")]
169    pub submitted_by: ::prost::alloc::string::String,
170    #[prost(message, optional, tag = "5")]
171    pub succeeded_at: ::core::option::Option<
172        super::super::super::super::google::protobuf::Timestamp,
173    >,
174    #[prost(string, tag = "6")]
175    pub succeeded_by: ::prost::alloc::string::String,
176}
177/// An execution step reaches the ERRORED state if something went wrong while trying to complete the step.
178/// This could be due to a badly configured procedure, an error/timeout in the completion condition,
179/// or an error/timeout in one of the completion actions.
180/// This is a terminal state, the step's values cannot be modified by the user.
181#[derive(Clone, PartialEq, ::prost::Message)]
182pub struct ExecutionStepErrored {
183    /// Optinal because a step can be skipped -> errored before being started
184    #[prost(message, optional, tag = "1")]
185    pub started_at: ::core::option::Option<
186        super::super::super::super::google::protobuf::Timestamp,
187    >,
188    #[prost(string, optional, tag = "2")]
189    pub started_by: ::core::option::Option<::prost::alloc::string::String>,
190    /// Optional because a step can be errored before being submitted
191    #[prost(message, optional, tag = "3")]
192    pub submitted_at: ::core::option::Option<
193        super::super::super::super::google::protobuf::Timestamp,
194    >,
195    #[prost(string, optional, tag = "4")]
196    pub submitted_by: ::core::option::Option<::prost::alloc::string::String>,
197    #[prost(message, optional, tag = "5")]
198    pub errored_at: ::core::option::Option<
199        super::super::super::super::google::protobuf::Timestamp,
200    >,
201    #[prost(string, tag = "6")]
202    pub errored_by: ::prost::alloc::string::String,
203    #[prost(string, tag = "7")]
204    pub error: ::prost::alloc::string::String,
205    /// Optional because a step could be skipped but then error while running completion actions
206    #[prost(message, optional, tag = "8")]
207    pub skipped_at: ::core::option::Option<
208        super::super::super::super::google::protobuf::Timestamp,
209    >,
210    #[prost(string, optional, tag = "9")]
211    pub skipped_by: ::core::option::Option<::prost::alloc::string::String>,
212    #[prost(string, optional, tag = "10")]
213    pub skip_reason: ::core::option::Option<::prost::alloc::string::String>,
214    /// Optional because a step can succeed but then error while running completion actions
215    #[prost(message, optional, tag = "11")]
216    pub succeeded_at: ::core::option::Option<
217        super::super::super::super::google::protobuf::Timestamp,
218    >,
219    #[prost(string, optional, tag = "12")]
220    pub succeeded_by: ::core::option::Option<::prost::alloc::string::String>,
221}
222/// The read-side state for an execution step.
223/// Here is the state machine:
224/// All steps start in the NOT_STARTED state.
225/// From NOT_STARTED, a step can transition to IN_PROGRESS or SKIPPED.
226/// - Transitioning to IN_PROGRESS can be done manually by a user or automatically if auto-start is enabled.
227///    This transition can only happen if the step's dependencies are in a completed state (SUCCEEDED or SKIPPED)
228/// From IN_PROGRESS, a step can transition to SUBMITTED or SKIPPED.
229/// - Transitioning to SUBMITTED can be done manually by a user or automatically if auto-proceed is enabled.
230///    This transition can only happen if the step's content has its required values set.
231/// - Transitioning to SKIPPED can be done manually by a user.
232/// From SUBMITTED, a step can transition to SUCCEEDED, ERRORED, or SKIPPED.
233/// - Transitioning to SUCCEEDED or ERRORED is done by the backend after monitoring the completion
234///    condition (if any) and executing the completion actions (if any).
235/// - Transitioning to SKIPPED can be done manually by a user.
236#[derive(Clone, PartialEq, ::prost::Message)]
237pub struct ExecutionStepState {
238    #[prost(oneof = "execution_step_state::State", tags = "1, 2, 3, 4, 5, 6")]
239    pub state: ::core::option::Option<execution_step_state::State>,
240}
241/// Nested message and enum types in `ExecutionStepState`.
242pub mod execution_step_state {
243    #[derive(Clone, PartialEq, ::prost::Oneof)]
244    pub enum State {
245        #[prost(message, tag = "1")]
246        NotStarted(super::ExecutionStepNotStarted),
247        #[prost(message, tag = "2")]
248        InProgress(super::ExecutionStepInProgress),
249        #[prost(message, tag = "3")]
250        Submitted(super::ExecutionStepSubmitted),
251        /// Terminal states below
252        #[prost(message, tag = "4")]
253        Skipped(super::ExecutionStepSkipped),
254        #[prost(message, tag = "5")]
255        Succeeded(super::ExecutionStepSucceeded),
256        #[prost(message, tag = "6")]
257        Errored(super::ExecutionStepErrored),
258    }
259}
260#[derive(Clone, Copy, PartialEq, ::prost::Message)]
261pub struct StepInProgressRequest {}
262#[derive(Clone, Copy, PartialEq, ::prost::Message)]
263pub struct StepSubmittedRequest {}
264#[derive(Clone, PartialEq, ::prost::Message)]
265pub struct StepSkippedRequest {
266    #[prost(string, optional, tag = "1")]
267    pub skip_reason: ::core::option::Option<::prost::alloc::string::String>,
268}
269#[derive(Clone, PartialEq, ::prost::Message)]
270pub struct StepErroredRequest {
271    #[prost(string, optional, tag = "1")]
272    pub error_reason: ::core::option::Option<::prost::alloc::string::String>,
273}
274/// A request to update the state of an execution step.
275#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct TargetStepStateRequest {
277    #[prost(oneof = "target_step_state_request::TargetState", tags = "1, 2, 3, 4")]
278    pub target_state: ::core::option::Option<target_step_state_request::TargetState>,
279}
280/// Nested message and enum types in `TargetStepStateRequest`.
281pub mod target_step_state_request {
282    #[derive(Clone, PartialEq, ::prost::Oneof)]
283    pub enum TargetState {
284        #[prost(message, tag = "1")]
285        InProgress(super::StepInProgressRequest),
286        #[prost(message, tag = "2")]
287        Submitted(super::StepSubmittedRequest),
288        #[prost(message, tag = "3")]
289        Skipped(super::StepSkippedRequest),
290        #[prost(message, tag = "4")]
291        Errored(super::StepErroredRequest),
292    }
293}
294#[derive(Clone, PartialEq, ::prost::Message)]
295pub struct ProcedureAsyncTask {
296    #[prost(oneof = "procedure_async_task::Task", tags = "1")]
297    pub task: ::core::option::Option<procedure_async_task::Task>,
298}
299/// Nested message and enum types in `ProcedureAsyncTask`.
300pub mod procedure_async_task {
301    #[derive(Clone, PartialEq, ::prost::Oneof)]
302    pub enum Task {
303        #[prost(message, tag = "1")]
304        ConditionObservation(super::ConditionObservation),
305    }
306}
307#[derive(Clone, PartialEq, ::prost::Message)]
308pub struct ConditionObservation {
309    #[prost(string, tag = "1")]
310    pub user_rid: ::prost::alloc::string::String,
311    #[prost(string, tag = "2")]
312    pub org_rid: ::prost::alloc::string::String,
313    #[prost(string, tag = "3")]
314    pub procedure_execution_rid: ::prost::alloc::string::String,
315    #[prost(string, tag = "4")]
316    pub step_id: ::prost::alloc::string::String,
317    #[prost(message, optional, tag = "5")]
318    pub success_condition: ::core::option::Option<super::super::v1::SuccessCondition>,
319}
320/// Represents the current status of one or more nested completion conditions.
321/// Mirrors the recursive SuccessCondition in nominal.procedures.v1
322#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct SuccessConditionStatus {
324    /// The type of condition being monitored.
325    #[prost(oneof = "success_condition_status::Condition", tags = "1, 6, 7")]
326    pub condition: ::core::option::Option<success_condition_status::Condition>,
327    /// The status of this condition.
328    #[prost(oneof = "success_condition_status::Status", tags = "2, 3, 4, 5, 8")]
329    pub status: ::core::option::Option<success_condition_status::Status>,
330}
331/// Nested message and enum types in `SuccessConditionStatus`.
332pub mod success_condition_status {
333    /// The type of condition being monitored.
334    #[derive(Clone, PartialEq, ::prost::Oneof)]
335    pub enum Condition {
336        #[prost(message, tag = "1")]
337        And(super::AndSuccessCondition),
338        #[prost(message, tag = "6")]
339        Timer(super::super::super::v1::TimerSuccessCondition),
340        /// ChannelValidationSuccessCondition channel_validation = 4;
341        /// OrSuccessConditionOrStatus or = 5;
342        #[prost(message, tag = "7")]
343        IngestJob(super::super::super::v1::IngestJobSuccessCondition),
344    }
345    /// The status of this condition.
346    #[derive(Clone, PartialEq, ::prost::Oneof)]
347    pub enum Status {
348        #[prost(message, tag = "2")]
349        InProgress(super::SuccessConditionInProgress),
350        #[prost(message, tag = "3")]
351        Satisfied(super::SuccessConditionSatisfied),
352        #[prost(message, tag = "4")]
353        Failed(super::SuccessConditionFailed),
354        #[prost(message, tag = "5")]
355        Canceled(super::SuccessConditionCanceled),
356        #[prost(message, tag = "8")]
357        Submitted(super::SuccessConditionSubmitted),
358    }
359}
360#[derive(Clone, PartialEq, ::prost::Message)]
361pub struct AndSuccessCondition {
362    #[prost(message, repeated, tag = "1")]
363    pub conditions: ::prost::alloc::vec::Vec<SuccessConditionStatus>,
364}
365#[derive(Clone, Copy, PartialEq, ::prost::Message)]
366pub struct SuccessConditionSubmitted {
367    #[prost(message, optional, tag = "1")]
368    pub submitted_at: ::core::option::Option<
369        super::super::super::super::google::protobuf::Timestamp,
370    >,
371}
372#[derive(Clone, Copy, PartialEq, ::prost::Message)]
373pub struct SuccessConditionInProgress {
374    #[prost(message, optional, tag = "1")]
375    pub started_at: ::core::option::Option<
376        super::super::super::super::google::protobuf::Timestamp,
377    >,
378}
379#[derive(Clone, Copy, PartialEq, ::prost::Message)]
380pub struct SuccessConditionSatisfied {
381    #[prost(message, optional, tag = "1")]
382    pub started_at: ::core::option::Option<
383        super::super::super::super::google::protobuf::Timestamp,
384    >,
385    #[prost(message, optional, tag = "2")]
386    pub satisfied_at: ::core::option::Option<
387        super::super::super::super::google::protobuf::Timestamp,
388    >,
389}
390#[derive(Clone, PartialEq, ::prost::Message)]
391pub struct SuccessConditionFailed {
392    #[prost(message, optional, tag = "1")]
393    pub started_at: ::core::option::Option<
394        super::super::super::super::google::protobuf::Timestamp,
395    >,
396    #[prost(message, optional, tag = "2")]
397    pub failed_at: ::core::option::Option<
398        super::super::super::super::google::protobuf::Timestamp,
399    >,
400    #[prost(string, tag = "3")]
401    pub failure_reason: ::prost::alloc::string::String,
402}
403#[derive(Clone, Copy, PartialEq, ::prost::Message)]
404pub struct SuccessConditionCanceled {
405    #[prost(message, optional, tag = "1")]
406    pub started_at: ::core::option::Option<
407        super::super::super::super::google::protobuf::Timestamp,
408    >,
409    #[prost(message, optional, tag = "2")]
410    pub canceled_at: ::core::option::Option<
411        super::super::super::super::google::protobuf::Timestamp,
412    >,
413}
414/// The status of a completion action and its result (if any).
415#[derive(Clone, PartialEq, ::prost::Message)]
416pub struct CompletionActionStatus {
417    #[prost(message, optional, tag = "1")]
418    pub state: ::core::option::Option<CompletionActionState>,
419    /// This is intentionally not a required oneof
420    #[prost(oneof = "completion_action_status::Result", tags = "2, 3, 4, 5")]
421    pub result: ::core::option::Option<completion_action_status::Result>,
422}
423/// Nested message and enum types in `CompletionActionStatus`.
424pub mod completion_action_status {
425    /// This is intentionally not a required oneof
426    #[derive(Clone, PartialEq, ::prost::Oneof)]
427    pub enum Result {
428        #[prost(message, tag = "2")]
429        CreateEvent(super::CreateEventResult),
430        #[prost(message, tag = "3")]
431        CreateRun(super::CreateRunResult),
432        #[prost(message, tag = "4")]
433        ApplyWorkbookTemplates(super::ApplyWorkbookTemplatesResult),
434        /// ...
435        #[prost(message, tag = "5")]
436        ApplyChecklists(super::ApplyChecklistsResult),
437    }
438}
439/// A CreateEvent action results in an EventRid if successful.
440#[derive(Clone, PartialEq, ::prost::Message)]
441pub struct CreateEventResult {
442    #[prost(string, tag = "1")]
443    pub event_rid: ::prost::alloc::string::String,
444}
445/// A CreateRun action results in a RunRid if successful.
446#[derive(Clone, PartialEq, ::prost::Message)]
447pub struct CreateRunResult {
448    #[prost(string, tag = "1")]
449    pub run_rid: ::prost::alloc::string::String,
450}
451/// An ApplyWorkbookTemplates action results in a list of workbook RIDs if successful.
452#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct ApplyWorkbookTemplatesResult {
454    #[prost(string, repeated, tag = "1")]
455    pub workbook_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
456}
457/// An ApplyChecklists action results in a list of DataReviewRids if successful.
458#[derive(Clone, PartialEq, ::prost::Message)]
459pub struct ApplyChecklistsResult {
460    #[prost(string, repeated, tag = "1")]
461    pub data_review_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
462}
463#[derive(Clone, PartialEq, ::prost::Message)]
464pub struct CompletionActionState {
465    #[prost(oneof = "completion_action_state::State", tags = "1, 2, 3")]
466    pub state: ::core::option::Option<completion_action_state::State>,
467}
468/// Nested message and enum types in `CompletionActionState`.
469pub mod completion_action_state {
470    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
471    pub struct NotRun {}
472    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
473    pub struct Succeeded {}
474    #[derive(Clone, PartialEq, ::prost::Oneof)]
475    pub enum State {
476        /// The action was not run
477        #[prost(message, tag = "1")]
478        NotRun(NotRun),
479        /// The action was run and succeeded. The result is available in CompletionActionStatus.result
480        #[prost(message, tag = "2")]
481        Succeeded(Succeeded),
482        /// The action was run and errored. This field contains the error message.
483        #[prost(string, tag = "3")]
484        Error(::prost::alloc::string::String),
485    }
486}
487/// The value for a step's content. Should match the ProcedureStepNode type.
488#[derive(Clone, PartialEq, ::prost::Message)]
489pub struct StepContentValue {
490    #[prost(oneof = "step_content_value::Value", tags = "1, 2, 3")]
491    pub value: ::core::option::Option<step_content_value::Value>,
492}
493/// Nested message and enum types in `StepContentValue`.
494pub mod step_content_value {
495    #[derive(Clone, PartialEq, ::prost::Oneof)]
496    pub enum Value {
497        #[prost(message, tag = "1")]
498        Form(super::FormStepValue),
499        #[prost(message, tag = "2")]
500        StartIngest(super::StartIngestStepValue),
501        /// ...
502        #[prost(message, tag = "3")]
503        SelectOrCreateAsset(super::SelectOrCreateAssetStepValue),
504    }
505}
506#[derive(Clone, PartialEq, ::prost::Message)]
507pub struct FormStepValue {
508    #[prost(message, repeated, tag = "1")]
509    pub fields: ::prost::alloc::vec::Vec<FormFieldValue>,
510}
511#[derive(Clone, PartialEq, ::prost::Message)]
512pub struct StartIngestStepValue {
513    /// The RID of the ingest job that was started by the client.
514    /// This must be populated for the step to be submitted.
515    #[prost(string, optional, tag = "1")]
516    pub ingest_job_rid: ::core::option::Option<::prost::alloc::string::String>,
517}
518#[derive(Clone, PartialEq, ::prost::Message)]
519pub struct SelectOrCreateAssetStepValue {
520    /// The asset that was selected / created by the client.
521    /// This must be populated for the step to be submitted.
522    #[prost(message, optional, tag = "1")]
523    pub asset_reference: ::core::option::Option<super::super::v1::AssetReference>,
524}
525/// The value chosen for a form field.
526/// This differs from FieldOutput in that this should map 1:1 with FormField types,
527/// while FieldOutput contains the resolved values after the execution step is complete.
528#[derive(Clone, PartialEq, ::prost::Message)]
529pub struct FormFieldValue {
530    #[prost(oneof = "form_field_value::Field", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9")]
531    pub field: ::core::option::Option<form_field_value::Field>,
532}
533/// Nested message and enum types in `FormFieldValue`.
534pub mod form_field_value {
535    #[derive(Clone, PartialEq, ::prost::Oneof)]
536    pub enum Field {
537        #[prost(message, tag = "1")]
538        Asset(super::AssetFieldValue),
539        #[prost(message, tag = "2")]
540        Checkbox(super::CheckboxFieldValue),
541        #[prost(message, tag = "3")]
542        Text(super::TextFieldValue),
543        #[prost(message, tag = "4")]
544        Int(super::IntFieldValue),
545        #[prost(message, tag = "5")]
546        Double(super::DoubleFieldValue),
547        #[prost(message, tag = "6")]
548        SingleEnum(super::SingleEnumFieldValue),
549        #[prost(message, tag = "7")]
550        MultiEnum(super::MultiEnumFieldValue),
551        #[prost(message, tag = "8")]
552        FileUpload(super::FileUploadFieldValue),
553        #[prost(message, tag = "9")]
554        MultiFileUpload(super::MultiFileUploadFieldValue),
555    }
556}
557#[derive(Clone, PartialEq, ::prost::Message)]
558pub struct AssetFieldValue {
559    /// This oneof will be unset if no asset is set on the field.
560    #[prost(oneof = "asset_field_value::Asset", tags = "1")]
561    pub asset: ::core::option::Option<asset_field_value::Asset>,
562}
563/// Nested message and enum types in `AssetFieldValue`.
564pub mod asset_field_value {
565    /// This oneof will be unset if no asset is set on the field.
566    #[derive(Clone, PartialEq, ::prost::Oneof)]
567    pub enum Asset {
568        #[prost(message, tag = "1")]
569        AssetReference(super::super::super::v1::AssetReference),
570    }
571}
572#[derive(Clone, Copy, PartialEq, ::prost::Message)]
573pub struct CheckboxFieldValue {
574    /// Default to false if not set
575    #[prost(bool, tag = "1")]
576    pub value: bool,
577}
578#[derive(Clone, PartialEq, ::prost::Message)]
579pub struct TextFieldValue {
580    /// Default to empty string if not set
581    #[prost(string, optional, tag = "1")]
582    pub value: ::core::option::Option<::prost::alloc::string::String>,
583}
584#[derive(Clone, Copy, PartialEq, ::prost::Message)]
585pub struct IntFieldValue {
586    #[prost(int64, optional, tag = "1")]
587    pub value: ::core::option::Option<i64>,
588}
589#[derive(Clone, Copy, PartialEq, ::prost::Message)]
590pub struct DoubleFieldValue {
591    #[prost(double, optional, tag = "1")]
592    pub value: ::core::option::Option<f64>,
593}
594#[derive(Clone, PartialEq, ::prost::Message)]
595pub struct SingleEnumFieldValue {
596    /// Default to empty string if not set
597    #[prost(string, optional, tag = "1")]
598    pub value: ::core::option::Option<::prost::alloc::string::String>,
599}
600#[derive(Clone, PartialEq, ::prost::Message)]
601pub struct MultiEnumFieldValue {
602    /// Default to empty list if not set
603    #[prost(string, repeated, tag = "1")]
604    pub value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
605}
606/// Corresponds to usage of the upload api
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct FileUploadFieldValue {
609    #[prost(oneof = "file_upload_field_value::UploadType", tags = "1")]
610    pub upload_type: ::core::option::Option<file_upload_field_value::UploadType>,
611}
612/// Nested message and enum types in `FileUploadFieldValue`.
613pub mod file_upload_field_value {
614    #[derive(Clone, PartialEq, ::prost::Oneof)]
615    pub enum UploadType {
616        #[prost(message, tag = "1")]
617        S3Upload(super::S3UploadFileValue),
618    }
619}
620#[derive(Clone, PartialEq, ::prost::Message)]
621pub struct S3UploadFileValue {
622    /// The S3 path where the uploaded file is stored
623    #[prost(string, tag = "1")]
624    pub s3_path: ::prost::alloc::string::String,
625    /// The original filename of the uploaded file
626    #[prost(string, tag = "2")]
627    pub file_name: ::prost::alloc::string::String,
628    /// The MIME type of the uploaded file
629    /// Following the convention of <https://developer.mozilla.org/en-US/docs/Web/API/Blob/type> (from which the File api inherits, we will accept an empty string)
630    #[prost(string, optional, tag = "3")]
631    pub file_type: ::core::option::Option<::prost::alloc::string::String>,
632}
633#[derive(Clone, PartialEq, ::prost::Message)]
634pub struct MultiFileUploadFieldValue {
635    /// The list of uploads
636    #[prost(message, repeated, tag = "1")]
637    pub uploads: ::prost::alloc::vec::Vec<FileUploadFieldValue>,
638}
639#[derive(Clone, PartialEq, ::prost::Message)]
640pub struct ProcedureExecution {
641    #[prost(string, tag = "1")]
642    pub rid: ::prost::alloc::string::String,
643    #[prost(message, optional, tag = "2")]
644    pub metadata: ::core::option::Option<ProcedureExecutionMetadata>,
645    #[prost(message, optional, tag = "3")]
646    pub state: ::core::option::Option<ProcedureExecutionState>,
647}
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct ProcedureExecutionMetadata {
650    #[prost(string, tag = "1")]
651    pub rid: ::prost::alloc::string::String,
652    /// The procedure template rid this execution is based on.
653    #[prost(string, tag = "2")]
654    pub procedure_rid: ::prost::alloc::string::String,
655    /// The commit ID of the procedure template this execution is based on.
656    /// This can be overridden at the node level for individual nodes.
657    #[prost(string, tag = "3")]
658    pub procedure_commit_id: ::prost::alloc::string::String,
659    #[prost(string, tag = "4")]
660    pub title: ::prost::alloc::string::String,
661    #[prost(string, optional, tag = "5")]
662    pub description: ::core::option::Option<::prost::alloc::string::String>,
663    #[prost(string, repeated, tag = "6")]
664    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
665    #[prost(map = "string, string", tag = "7")]
666    pub properties: ::std::collections::HashMap<
667        ::prost::alloc::string::String,
668        ::prost::alloc::string::String,
669    >,
670    #[prost(string, tag = "8")]
671    pub created_by: ::prost::alloc::string::String,
672    #[prost(message, optional, tag = "9")]
673    pub created_at: ::core::option::Option<
674        super::super::super::super::google::protobuf::Timestamp,
675    >,
676    #[prost(string, tag = "10")]
677    pub updated_by: ::prost::alloc::string::String,
678    #[prost(message, optional, tag = "11")]
679    pub updated_at: ::core::option::Option<
680        super::super::super::super::google::protobuf::Timestamp,
681    >,
682    /// Will be unset until the execution transitions from NOT_STARTED to IN_PROGRESS.
683    #[prost(message, optional, tag = "12")]
684    pub started_at: ::core::option::Option<
685        super::super::super::super::google::protobuf::Timestamp,
686    >,
687    #[prost(string, optional, tag = "13")]
688    pub started_by: ::core::option::Option<::prost::alloc::string::String>,
689    /// Will be unset until the execution transitions from IN_PROGRESS to a terminal state.
690    #[prost(message, optional, tag = "14")]
691    pub finished_at: ::core::option::Option<
692        super::super::super::super::google::protobuf::Timestamp,
693    >,
694    #[prost(string, optional, tag = "15")]
695    pub finished_by: ::core::option::Option<::prost::alloc::string::String>,
696    /// Will be true/set if the execution is the ABORTED terminal state.
697    #[prost(message, optional, tag = "16")]
698    pub aborted_at: ::core::option::Option<
699        super::super::super::super::google::protobuf::Timestamp,
700    >,
701    #[prost(string, optional, tag = "17")]
702    pub aborted_by: ::core::option::Option<::prost::alloc::string::String>,
703    /// Will be set if the execution is in the ERRORED terminal state.
704    #[prost(message, optional, tag = "18")]
705    pub failed_at: ::core::option::Option<
706        super::super::super::super::google::protobuf::Timestamp,
707    >,
708    #[prost(string, optional, tag = "19")]
709    pub failed_by: ::core::option::Option<::prost::alloc::string::String>,
710    #[prost(string, optional, tag = "20")]
711    pub failed_reason: ::core::option::Option<::prost::alloc::string::String>,
712}
713/// ProcedureExecutionState is the state of an executing procedure.
714#[derive(Clone, PartialEq, ::prost::Message)]
715pub struct ProcedureExecutionState {
716    /// The current values for the global fields in the procedure.
717    #[prost(map = "string, message", tag = "1")]
718    pub global_fields: ::std::collections::HashMap<
719        ::prost::alloc::string::String,
720        FieldOutput,
721    >,
722    /// A map from execution node ID to the execution node.
723    #[prost(map = "string, message", tag = "2")]
724    pub nodes: ::std::collections::HashMap<
725        ::prost::alloc::string::String,
726        ProcedureExecutionNode,
727    >,
728    /// Section edges represent the visual grouping of sections and steps.
729    /// All keys are IDs for section nodes, and all values are lists of IDs for section or step nodes.
730    /// { A, \[B, C\] } means that section A visually groups nodes B and C together.
731    #[prost(map = "string, message", tag = "3")]
732    pub section_edges: ::std::collections::HashMap<
733        ::prost::alloc::string::String,
734        super::super::v1::NodeList,
735    >,
736    /// Step edges represent the dependencies between steps.
737    /// All keys and values are IDs for step nodes.
738    /// { A, \[B, C\] } means that steps B and C depend on step A to complete to be started
739    #[prost(map = "string, message", tag = "4")]
740    pub step_edges: ::std::collections::HashMap<
741        ::prost::alloc::string::String,
742        super::super::v1::NodeList,
743    >,
744}
745#[derive(Clone, PartialEq, ::prost::Message)]
746pub struct Strings {
747    #[prost(string, repeated, tag = "1")]
748    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
749}
750/// TODO(pchen): how to handle the value typing here
751/// The outputs of a field in a step.
752/// This is different from FormFieldValue in that this represents the resolved value after the step has
753/// been completed. Eg, this would contain an AssetRid while the FormFieldValue could contain an AssetReference
754#[derive(Clone, PartialEq, ::prost::Message)]
755pub struct FieldOutput {
756    /// The oneof can be unset if the field has not been set yet.
757    #[prost(oneof = "field_output::Output", tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10")]
758    pub output: ::core::option::Option<field_output::Output>,
759}
760/// Nested message and enum types in `FieldOutput`.
761pub mod field_output {
762    /// The oneof can be unset if the field has not been set yet.
763    #[derive(Clone, PartialEq, ::prost::Oneof)]
764    pub enum Output {
765        /// TODO(niwong): I think this could actually be buf validated to be required. If a global field is
766        /// not yet defined, I think it's just not present in the global_fields map
767        /// option (buf.validate.oneof) = {required: true};
768        #[prost(string, tag = "1")]
769        AssetRid(::prost::alloc::string::String),
770        #[prost(string, tag = "2")]
771        StringValue(::prost::alloc::string::String),
772        #[prost(double, tag = "3")]
773        DoubleValue(f64),
774        #[prost(bool, tag = "4")]
775        BooleanValue(bool),
776        #[prost(int64, tag = "5")]
777        IntValue(i64),
778        #[prost(message, tag = "6")]
779        StringsValue(super::Strings),
780        #[prost(string, tag = "7")]
781        IngestJobRid(::prost::alloc::string::String),
782        #[prost(string, tag = "8")]
783        RunRid(::prost::alloc::string::String),
784        #[prost(message, tag = "9")]
785        FileUploadValue(super::FileUploadFieldValue),
786        #[prost(message, tag = "10")]
787        MultiFileUploadValue(super::MultiFileUploadFieldValue),
788    }
789}
790#[derive(Clone, PartialEq, ::prost::Message)]
791pub struct CreateProcedureExecutionRequest {
792    #[prost(string, tag = "1")]
793    pub procedure_rid: ::prost::alloc::string::String,
794    #[prost(string, tag = "2")]
795    pub procedure_commit_id: ::prost::alloc::string::String,
796    #[prost(string, tag = "3")]
797    pub title: ::prost::alloc::string::String,
798    #[prost(string, optional, tag = "4")]
799    pub description: ::core::option::Option<::prost::alloc::string::String>,
800}
801#[derive(Clone, PartialEq, ::prost::Message)]
802pub struct CreateProcedureExecutionResponse {
803    #[prost(message, optional, tag = "1")]
804    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
805}
806#[derive(Clone, PartialEq, ::prost::Message)]
807pub struct StartProcedureExecutionRequest {
808    #[prost(string, tag = "1")]
809    pub procedure_rid: ::prost::alloc::string::String,
810    #[prost(message, optional, tag = "2")]
811    pub branch_or_commit: ::core::option::Option<
812        super::super::super::versioning::v1::BranchOrCommit,
813    >,
814    #[prost(string, tag = "3")]
815    pub title: ::prost::alloc::string::String,
816    #[prost(string, optional, tag = "4")]
817    pub description: ::core::option::Option<::prost::alloc::string::String>,
818}
819#[derive(Clone, PartialEq, ::prost::Message)]
820pub struct StartProcedureExecutionResponse {
821    #[prost(message, optional, tag = "1")]
822    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
823}
824#[derive(Clone, PartialEq, ::prost::Message)]
825pub struct GetProcedureExecutionRequest {
826    #[prost(string, tag = "1")]
827    pub procedure_execution_rid: ::prost::alloc::string::String,
828    /// If true, the display graph will be included in the response.
829    /// Default is false.
830    #[prost(bool, tag = "2")]
831    pub include_display_graph: bool,
832}
833#[derive(Clone, PartialEq, ::prost::Message)]
834pub struct GetProcedureExecutionResponse {
835    #[prost(message, optional, tag = "1")]
836    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
837    /// Included if include_display_graph was set to true. Note that this is the
838    /// procedure template's display graph, not the execution graph.
839    #[prost(message, optional, tag = "2")]
840    pub display_graph: ::core::option::Option<super::super::v1::ProcedureDisplayGraph>,
841}
842#[derive(Clone, PartialEq, ::prost::Message)]
843pub struct UpdateProcedureExecutionMetadataRequest {
844    #[prost(string, tag = "1")]
845    pub procedure_execution_rid: ::prost::alloc::string::String,
846    #[prost(string, optional, tag = "2")]
847    pub title: ::core::option::Option<::prost::alloc::string::String>,
848    #[prost(string, optional, tag = "3")]
849    pub description: ::core::option::Option<::prost::alloc::string::String>,
850    #[prost(string, optional, tag = "4")]
851    pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
852    #[prost(message, optional, tag = "5")]
853    pub labels: ::core::option::Option<super::super::super::types::LabelUpdateWrapper>,
854    #[prost(message, optional, tag = "6")]
855    pub properties: ::core::option::Option<
856        super::super::super::types::PropertyUpdateWrapper,
857    >,
858}
859#[derive(Clone, PartialEq, ::prost::Message)]
860pub struct UpdateProcedureExecutionMetadataResponse {
861    #[prost(message, optional, tag = "1")]
862    pub metadata: ::core::option::Option<ProcedureExecutionMetadata>,
863}
864/// TODO(niwong to pchen): I made an "update metadata" endpoint separately above,
865/// I think it'd be nice to turn this into a dedicated endpoint for changing the state of
866/// the overall execution (start, succeed, abort, fail)
867/// I also think in general we shouldn't be updating the entire ProcedureExecutionState
868/// but rather leveraging updateStep.
869/// TODO(WB-1879): allow to just update the global fields within the ProcExecState.
870#[derive(Clone, PartialEq, ::prost::Message)]
871pub struct UpdateProcedureExecutionRequest {
872    #[prost(string, tag = "1")]
873    pub procedure_execution_rid: ::prost::alloc::string::String,
874    #[prost(string, optional, tag = "2")]
875    pub title: ::core::option::Option<::prost::alloc::string::String>,
876    #[prost(string, optional, tag = "3")]
877    pub description: ::core::option::Option<::prost::alloc::string::String>,
878    #[prost(string, optional, tag = "4")]
879    pub commit_id: ::core::option::Option<::prost::alloc::string::String>,
880    #[prost(message, optional, tag = "5")]
881    pub labels: ::core::option::Option<super::super::super::types::LabelUpdateWrapper>,
882    #[prost(message, optional, tag = "6")]
883    pub properties: ::core::option::Option<
884        super::super::super::types::PropertyUpdateWrapper,
885    >,
886    #[prost(message, optional, tag = "7")]
887    pub state: ::core::option::Option<ProcedureExecutionState>,
888    #[prost(bool, optional, tag = "8")]
889    pub is_aborted: ::core::option::Option<bool>,
890    #[prost(message, optional, tag = "9")]
891    pub started_at: ::core::option::Option<
892        super::super::super::super::google::protobuf::Timestamp,
893    >,
894    #[prost(message, optional, tag = "10")]
895    pub finished_at: ::core::option::Option<
896        super::super::super::super::google::protobuf::Timestamp,
897    >,
898}
899#[derive(Clone, PartialEq, ::prost::Message)]
900pub struct UpdateProcedureExecutionResponse {
901    #[prost(message, optional, tag = "1")]
902    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
903}
904#[derive(Clone, PartialEq, ::prost::Message)]
905pub struct UpdateStepRequest {
906    #[prost(string, tag = "1")]
907    pub procedure_execution_rid: ::prost::alloc::string::String,
908    /// The unique identifier of the execution step to update.
909    #[prost(string, tag = "2")]
910    pub step_id: ::prost::alloc::string::String,
911    /// Setting the value of the step's content. This is only allowed if the step is NOT_STARTED
912    /// or IN_PROGRESS.
913    #[prost(message, optional, tag = "3")]
914    pub value: ::core::option::Option<StepContentValue>,
915    /// Set whether the step has auto-proceed enabled. This is only allowed if the step is NOT_STARTED.
916    /// or IN_PROGRESS.
917    #[prost(message, optional, tag = "4")]
918    pub auto_proceed_config: ::core::option::Option<super::super::v1::AutoProceedConfig>,
919    /// Setting the state of the step. This will occur after the other updates in this request.
920    #[prost(message, optional, tag = "5")]
921    pub target_state: ::core::option::Option<TargetStepStateRequest>,
922}
923#[derive(Clone, PartialEq, ::prost::Message)]
924pub struct UpdateStepResponse {
925    #[prost(message, optional, tag = "1")]
926    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
927}
928#[derive(Clone, PartialEq, ::prost::Message)]
929pub struct UpdateStepSuccessConditionStatusRequest {
930    #[prost(string, tag = "1")]
931    pub procedure_execution_rid: ::prost::alloc::string::String,
932    /// The unique identifier of the execution step to update.
933    #[prost(string, tag = "2")]
934    pub step_id: ::prost::alloc::string::String,
935    /// Setting the success_condition_status is only allowed if the step is SUBMITTED
936    /// and should only be done by the backend while monitoring the condition.
937    /// If the step is SKIPPED, the success_condition_status will still be set but
938    /// no completion actions will be run and the step's state will not be updated.
939    #[prost(message, optional, tag = "3")]
940    pub success_condition_status: ::core::option::Option<SuccessConditionStatus>,
941}
942#[derive(Clone, PartialEq, ::prost::Message)]
943pub struct UpdateStepSuccessConditionStatusResponse {
944    #[prost(message, optional, tag = "1")]
945    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
946}
947#[derive(Clone, PartialEq, ::prost::Message)]
948pub struct RepeatStepRequest {
949    #[prost(string, tag = "1")]
950    pub procedure_execution_rid: ::prost::alloc::string::String,
951    /// The unique identifier of the execution step to repeat/duplicate.
952    #[prost(string, tag = "2")]
953    pub step_id: ::prost::alloc::string::String,
954    /// Behavior for how repeating the step will affect dependants.
955    #[prost(enumeration = "RepeatStepBehavior", tag = "6")]
956    pub behavior: i32,
957    /// Setting the value of the step's content.
958    #[prost(message, optional, tag = "3")]
959    pub value: ::core::option::Option<StepContentValue>,
960    /// Set whether the step has auto-proceed enabled.
961    #[prost(message, optional, tag = "4")]
962    pub auto_proceed_config: ::core::option::Option<super::super::v1::AutoProceedConfig>,
963    /// Setting the state of the step. This will occur after the other updates in this request.
964    #[prost(message, optional, tag = "5")]
965    pub target_state: ::core::option::Option<TargetStepStateRequest>,
966}
967#[derive(Clone, PartialEq, ::prost::Message)]
968pub struct RepeatStepResponse {
969    #[prost(message, optional, tag = "1")]
970    pub procedure_execution: ::core::option::Option<ProcedureExecution>,
971}
972#[derive(Clone, PartialEq, ::prost::Message)]
973pub struct ProcedureExecutionSearchQuery {
974    #[prost(
975        oneof = "procedure_execution_search_query::Query",
976        tags = "1, 2, 3, 4, 5, 6, 7, 8, 9"
977    )]
978    pub query: ::core::option::Option<procedure_execution_search_query::Query>,
979}
980/// Nested message and enum types in `ProcedureExecutionSearchQuery`.
981pub mod procedure_execution_search_query {
982    #[derive(Clone, PartialEq, ::prost::Message)]
983    pub struct ProcedureExecutionSearchAndQuery {
984        #[prost(message, repeated, tag = "1")]
985        pub queries: ::prost::alloc::vec::Vec<super::ProcedureExecutionSearchQuery>,
986    }
987    #[derive(Clone, PartialEq, ::prost::Message)]
988    pub struct ProcedureExecutionSearchOrQuery {
989        #[prost(message, repeated, tag = "1")]
990        pub queries: ::prost::alloc::vec::Vec<super::ProcedureExecutionSearchQuery>,
991    }
992    #[derive(Clone, PartialEq, ::prost::Oneof)]
993    pub enum Query {
994        #[prost(string, tag = "1")]
995        SearchText(::prost::alloc::string::String),
996        #[prost(string, tag = "2")]
997        Label(::prost::alloc::string::String),
998        #[prost(message, tag = "3")]
999        Property(super::super::super::super::types::Property),
1000        #[prost(message, tag = "4")]
1001        And(ProcedureExecutionSearchAndQuery),
1002        #[prost(message, tag = "5")]
1003        Or(ProcedureExecutionSearchOrQuery),
1004        #[prost(string, tag = "6")]
1005        Workspace(::prost::alloc::string::String),
1006        #[prost(string, tag = "7")]
1007        ProcedureRid(::prost::alloc::string::String),
1008        #[prost(string, tag = "8")]
1009        CommitId(::prost::alloc::string::String),
1010        #[prost(string, tag = "9")]
1011        CreatedBy(::prost::alloc::string::String),
1012    }
1013}
1014#[derive(Clone, Copy, PartialEq, ::prost::Message)]
1015pub struct ProcedureExecutionSortOptions {
1016    #[prost(bool, tag = "1")]
1017    pub is_descending: bool,
1018    #[prost(enumeration = "SearchProcedureExecutionsSortField", tag = "2")]
1019    pub sort_field: i32,
1020}
1021#[derive(Clone, PartialEq, ::prost::Message)]
1022pub struct SearchProcedureExecutionsRequest {
1023    #[prost(message, optional, tag = "1")]
1024    pub query: ::core::option::Option<ProcedureExecutionSearchQuery>,
1025    #[prost(message, optional, tag = "2")]
1026    pub sort_options: ::core::option::Option<ProcedureExecutionSortOptions>,
1027    /// Page sizes greater than 1_000 will be rejected. Default pageSize is 100.
1028    #[prost(int32, optional, tag = "3")]
1029    pub page_size: ::core::option::Option<i32>,
1030    #[prost(string, optional, tag = "4")]
1031    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1032}
1033#[derive(Clone, PartialEq, ::prost::Message)]
1034pub struct SearchProcedureExecutionsResponse {
1035    #[prost(message, repeated, tag = "1")]
1036    pub procedure_executions: ::prost::alloc::vec::Vec<ProcedureExecutionMetadata>,
1037    #[prost(string, optional, tag = "2")]
1038    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
1039}
1040#[derive(Clone, PartialEq, ::prost::Message)]
1041pub struct BatchGetProcedureExecutionMetadataRequest {
1042    #[prost(string, repeated, tag = "1")]
1043    pub procedure_execution_rids: ::prost::alloc::vec::Vec<
1044        ::prost::alloc::string::String,
1045    >,
1046}
1047#[derive(Clone, PartialEq, ::prost::Message)]
1048pub struct BatchGetProcedureExecutionMetadataResponse {
1049    #[prost(message, repeated, tag = "1")]
1050    pub procedure_executions: ::prost::alloc::vec::Vec<ProcedureExecutionMetadata>,
1051}
1052#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1053#[repr(i32)]
1054pub enum RepeatStepBehavior {
1055    Unspecified = 0,
1056    /// The targeted step will be repeated, but the original graph will be preserved
1057    /// and only direct children will be checked for state updates
1058    Isolated = 1,
1059}
1060impl RepeatStepBehavior {
1061    /// String value of the enum field names used in the ProtoBuf definition.
1062    ///
1063    /// The values are not transformed in any way and thus are considered stable
1064    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1065    pub fn as_str_name(&self) -> &'static str {
1066        match self {
1067            Self::Unspecified => "REPEAT_STEP_BEHAVIOR_UNSPECIFIED",
1068            Self::Isolated => "REPEAT_STEP_BEHAVIOR_ISOLATED",
1069        }
1070    }
1071    /// Creates an enum from field names used in the ProtoBuf definition.
1072    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1073        match value {
1074            "REPEAT_STEP_BEHAVIOR_UNSPECIFIED" => Some(Self::Unspecified),
1075            "REPEAT_STEP_BEHAVIOR_ISOLATED" => Some(Self::Isolated),
1076            _ => None,
1077        }
1078    }
1079}
1080#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1081#[repr(i32)]
1082pub enum SearchProcedureExecutionsSortField {
1083    Unspecified = 0,
1084    CreatedAt = 1,
1085    StartedAt = 2,
1086    FinishedAt = 3,
1087    UpdatedAt = 4,
1088}
1089impl SearchProcedureExecutionsSortField {
1090    /// String value of the enum field names used in the ProtoBuf definition.
1091    ///
1092    /// The values are not transformed in any way and thus are considered stable
1093    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1094    pub fn as_str_name(&self) -> &'static str {
1095        match self {
1096            Self::Unspecified => "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_UNSPECIFIED",
1097            Self::CreatedAt => "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_CREATED_AT",
1098            Self::StartedAt => "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_STARTED_AT",
1099            Self::FinishedAt => "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_FINISHED_AT",
1100            Self::UpdatedAt => "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_UPDATED_AT",
1101        }
1102    }
1103    /// Creates an enum from field names used in the ProtoBuf definition.
1104    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1105        match value {
1106            "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_UNSPECIFIED" => {
1107                Some(Self::Unspecified)
1108            }
1109            "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_CREATED_AT" => Some(Self::CreatedAt),
1110            "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_STARTED_AT" => Some(Self::StartedAt),
1111            "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_FINISHED_AT" => {
1112                Some(Self::FinishedAt)
1113            }
1114            "SEARCH_PROCEDURE_EXECUTIONS_SORT_FIELD_UPDATED_AT" => Some(Self::UpdatedAt),
1115            _ => None,
1116        }
1117    }
1118}
1119#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1120#[repr(i32)]
1121pub enum ProcedureExecutionsServiceError {
1122    Unspecified = 0,
1123    NotFound = 1,
1124    ProcNotFound = 2,
1125    NodeNotFound = 3,
1126    InvalidNode = 4,
1127    InvalidGraph = 5,
1128    InvalidStepTransition = 6,
1129    InvalidSearchToken = 7,
1130    InvalidStepUpdate = 8,
1131}
1132impl ProcedureExecutionsServiceError {
1133    /// String value of the enum field names used in the ProtoBuf definition.
1134    ///
1135    /// The values are not transformed in any way and thus are considered stable
1136    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1137    pub fn as_str_name(&self) -> &'static str {
1138        match self {
1139            Self::Unspecified => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_UNSPECIFIED",
1140            Self::NotFound => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_NOT_FOUND",
1141            Self::ProcNotFound => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_PROC_NOT_FOUND",
1142            Self::NodeNotFound => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_NODE_NOT_FOUND",
1143            Self::InvalidNode => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_NODE",
1144            Self::InvalidGraph => "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_GRAPH",
1145            Self::InvalidStepTransition => {
1146                "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_STEP_TRANSITION"
1147            }
1148            Self::InvalidSearchToken => {
1149                "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_SEARCH_TOKEN"
1150            }
1151            Self::InvalidStepUpdate => {
1152                "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_STEP_UPDATE"
1153            }
1154        }
1155    }
1156    /// Creates an enum from field names used in the ProtoBuf definition.
1157    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1158        match value {
1159            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_UNSPECIFIED" => Some(Self::Unspecified),
1160            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_NOT_FOUND" => Some(Self::NotFound),
1161            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_PROC_NOT_FOUND" => {
1162                Some(Self::ProcNotFound)
1163            }
1164            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_NODE_NOT_FOUND" => {
1165                Some(Self::NodeNotFound)
1166            }
1167            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_NODE" => Some(Self::InvalidNode),
1168            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_GRAPH" => {
1169                Some(Self::InvalidGraph)
1170            }
1171            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_STEP_TRANSITION" => {
1172                Some(Self::InvalidStepTransition)
1173            }
1174            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_SEARCH_TOKEN" => {
1175                Some(Self::InvalidSearchToken)
1176            }
1177            "PROCEDURE_EXECUTIONS_SERVICE_ERROR_INVALID_STEP_UPDATE" => {
1178                Some(Self::InvalidStepUpdate)
1179            }
1180            _ => None,
1181        }
1182    }
1183}
1184/// Generated client implementations.
1185pub mod procedure_executions_service_client {
1186    #![allow(
1187        unused_variables,
1188        dead_code,
1189        missing_docs,
1190        clippy::wildcard_imports,
1191        clippy::let_unit_value,
1192    )]
1193    use tonic::codegen::*;
1194    use tonic::codegen::http::Uri;
1195    /// Service for creating and managing procedure executions.
1196    #[derive(Debug, Clone)]
1197    pub struct ProcedureExecutionsServiceClient<T> {
1198        inner: tonic::client::Grpc<T>,
1199    }
1200    impl ProcedureExecutionsServiceClient<tonic::transport::Channel> {
1201        /// Attempt to create a new client by connecting to a given endpoint.
1202        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1203        where
1204            D: TryInto<tonic::transport::Endpoint>,
1205            D::Error: Into<StdError>,
1206        {
1207            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1208            Ok(Self::new(conn))
1209        }
1210    }
1211    impl<T> ProcedureExecutionsServiceClient<T>
1212    where
1213        T: tonic::client::GrpcService<tonic::body::Body>,
1214        T::Error: Into<StdError>,
1215        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1216        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1217    {
1218        pub fn new(inner: T) -> Self {
1219            let inner = tonic::client::Grpc::new(inner);
1220            Self { inner }
1221        }
1222        pub fn with_origin(inner: T, origin: Uri) -> Self {
1223            let inner = tonic::client::Grpc::with_origin(inner, origin);
1224            Self { inner }
1225        }
1226        pub fn with_interceptor<F>(
1227            inner: T,
1228            interceptor: F,
1229        ) -> ProcedureExecutionsServiceClient<InterceptedService<T, F>>
1230        where
1231            F: tonic::service::Interceptor,
1232            T::ResponseBody: Default,
1233            T: tonic::codegen::Service<
1234                http::Request<tonic::body::Body>,
1235                Response = http::Response<
1236                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1237                >,
1238            >,
1239            <T as tonic::codegen::Service<
1240                http::Request<tonic::body::Body>,
1241            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1242        {
1243            ProcedureExecutionsServiceClient::new(
1244                InterceptedService::new(inner, interceptor),
1245            )
1246        }
1247        /// Compress requests with the given encoding.
1248        ///
1249        /// This requires the server to support it otherwise it might respond with an
1250        /// error.
1251        #[must_use]
1252        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1253            self.inner = self.inner.send_compressed(encoding);
1254            self
1255        }
1256        /// Enable decompressing responses.
1257        #[must_use]
1258        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1259            self.inner = self.inner.accept_compressed(encoding);
1260            self
1261        }
1262        /// Limits the maximum size of a decoded message.
1263        ///
1264        /// Default: `4MB`
1265        #[must_use]
1266        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1267            self.inner = self.inner.max_decoding_message_size(limit);
1268            self
1269        }
1270        /// Limits the maximum size of an encoded message.
1271        ///
1272        /// Default: `usize::MAX`
1273        #[must_use]
1274        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1275            self.inner = self.inner.max_encoding_message_size(limit);
1276            self
1277        }
1278        /// Create a new procedure execution from a procedure
1279        pub async fn create_procedure_execution(
1280            &mut self,
1281            request: impl tonic::IntoRequest<super::CreateProcedureExecutionRequest>,
1282        ) -> std::result::Result<
1283            tonic::Response<super::CreateProcedureExecutionResponse>,
1284            tonic::Status,
1285        > {
1286            self.inner
1287                .ready()
1288                .await
1289                .map_err(|e| {
1290                    tonic::Status::unknown(
1291                        format!("Service was not ready: {}", e.into()),
1292                    )
1293                })?;
1294            let codec = tonic::codec::ProstCodec::default();
1295            let path = http::uri::PathAndQuery::from_static(
1296                "/nominal.procedures.executions.v1.ProcedureExecutionsService/CreateProcedureExecution",
1297            );
1298            let mut req = request.into_request();
1299            req.extensions_mut()
1300                .insert(
1301                    GrpcMethod::new(
1302                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1303                        "CreateProcedureExecution",
1304                    ),
1305                );
1306            self.inner.unary(req, path, codec).await
1307        }
1308        /// Create a new procedure execution from a procedure and starts the first node, if possible
1309        pub async fn start_procedure_execution(
1310            &mut self,
1311            request: impl tonic::IntoRequest<super::StartProcedureExecutionRequest>,
1312        ) -> std::result::Result<
1313            tonic::Response<super::StartProcedureExecutionResponse>,
1314            tonic::Status,
1315        > {
1316            self.inner
1317                .ready()
1318                .await
1319                .map_err(|e| {
1320                    tonic::Status::unknown(
1321                        format!("Service was not ready: {}", e.into()),
1322                    )
1323                })?;
1324            let codec = tonic::codec::ProstCodec::default();
1325            let path = http::uri::PathAndQuery::from_static(
1326                "/nominal.procedures.executions.v1.ProcedureExecutionsService/StartProcedureExecution",
1327            );
1328            let mut req = request.into_request();
1329            req.extensions_mut()
1330                .insert(
1331                    GrpcMethod::new(
1332                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1333                        "StartProcedureExecution",
1334                    ),
1335                );
1336            self.inner.unary(req, path, codec).await
1337        }
1338        /// Get a procedure execution by its RID
1339        pub async fn get_procedure_execution(
1340            &mut self,
1341            request: impl tonic::IntoRequest<super::GetProcedureExecutionRequest>,
1342        ) -> std::result::Result<
1343            tonic::Response<super::GetProcedureExecutionResponse>,
1344            tonic::Status,
1345        > {
1346            self.inner
1347                .ready()
1348                .await
1349                .map_err(|e| {
1350                    tonic::Status::unknown(
1351                        format!("Service was not ready: {}", e.into()),
1352                    )
1353                })?;
1354            let codec = tonic::codec::ProstCodec::default();
1355            let path = http::uri::PathAndQuery::from_static(
1356                "/nominal.procedures.executions.v1.ProcedureExecutionsService/GetProcedureExecution",
1357            );
1358            let mut req = request.into_request();
1359            req.extensions_mut()
1360                .insert(
1361                    GrpcMethod::new(
1362                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1363                        "GetProcedureExecution",
1364                    ),
1365                );
1366            self.inner.unary(req, path, codec).await
1367        }
1368        /// Update the metadata of a procedure execution
1369        pub async fn update_procedure_execution_metadata(
1370            &mut self,
1371            request: impl tonic::IntoRequest<
1372                super::UpdateProcedureExecutionMetadataRequest,
1373            >,
1374        ) -> std::result::Result<
1375            tonic::Response<super::UpdateProcedureExecutionMetadataResponse>,
1376            tonic::Status,
1377        > {
1378            self.inner
1379                .ready()
1380                .await
1381                .map_err(|e| {
1382                    tonic::Status::unknown(
1383                        format!("Service was not ready: {}", e.into()),
1384                    )
1385                })?;
1386            let codec = tonic::codec::ProstCodec::default();
1387            let path = http::uri::PathAndQuery::from_static(
1388                "/nominal.procedures.executions.v1.ProcedureExecutionsService/UpdateProcedureExecutionMetadata",
1389            );
1390            let mut req = request.into_request();
1391            req.extensions_mut()
1392                .insert(
1393                    GrpcMethod::new(
1394                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1395                        "UpdateProcedureExecutionMetadata",
1396                    ),
1397                );
1398            self.inner.unary(req, path, codec).await
1399        }
1400        /// Heavy-handed update method for procedure execution
1401        /// TODO(pchen): This isn't the expected final endpoint, this is just for editing the graph while we iterate
1402        /// There likely be additional fine-grained methods for editing the procedure
1403        pub async fn update_procedure_execution(
1404            &mut self,
1405            request: impl tonic::IntoRequest<super::UpdateProcedureExecutionRequest>,
1406        ) -> std::result::Result<
1407            tonic::Response<super::UpdateProcedureExecutionResponse>,
1408            tonic::Status,
1409        > {
1410            self.inner
1411                .ready()
1412                .await
1413                .map_err(|e| {
1414                    tonic::Status::unknown(
1415                        format!("Service was not ready: {}", e.into()),
1416                    )
1417                })?;
1418            let codec = tonic::codec::ProstCodec::default();
1419            let path = http::uri::PathAndQuery::from_static(
1420                "/nominal.procedures.executions.v1.ProcedureExecutionsService/UpdateProcedureExecution",
1421            );
1422            let mut req = request.into_request();
1423            req.extensions_mut()
1424                .insert(
1425                    GrpcMethod::new(
1426                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1427                        "UpdateProcedureExecution",
1428                    ),
1429                );
1430            self.inner.unary(req, path, codec).await
1431        }
1432        /// Update the status of a step in a procedure execution. This can only be done if the step is NOT_STARTED,
1433        /// IN_PROGRESS, or SUBMITTED. Other state transitions are managed by the backend.
1434        pub async fn update_step(
1435            &mut self,
1436            request: impl tonic::IntoRequest<super::UpdateStepRequest>,
1437        ) -> std::result::Result<
1438            tonic::Response<super::UpdateStepResponse>,
1439            tonic::Status,
1440        > {
1441            self.inner
1442                .ready()
1443                .await
1444                .map_err(|e| {
1445                    tonic::Status::unknown(
1446                        format!("Service was not ready: {}", e.into()),
1447                    )
1448                })?;
1449            let codec = tonic::codec::ProstCodec::default();
1450            let path = http::uri::PathAndQuery::from_static(
1451                "/nominal.procedures.executions.v1.ProcedureExecutionsService/UpdateStep",
1452            );
1453            let mut req = request.into_request();
1454            req.extensions_mut()
1455                .insert(
1456                    GrpcMethod::new(
1457                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1458                        "UpdateStep",
1459                    ),
1460                );
1461            self.inner.unary(req, path, codec).await
1462        }
1463        /// This should only be called by the backend to update the success_condition_status of a step.
1464        /// This can only be done if the step is SUBMITTED.
1465        pub async fn update_step_success_condition_status(
1466            &mut self,
1467            request: impl tonic::IntoRequest<
1468                super::UpdateStepSuccessConditionStatusRequest,
1469            >,
1470        ) -> std::result::Result<
1471            tonic::Response<super::UpdateStepSuccessConditionStatusResponse>,
1472            tonic::Status,
1473        > {
1474            self.inner
1475                .ready()
1476                .await
1477                .map_err(|e| {
1478                    tonic::Status::unknown(
1479                        format!("Service was not ready: {}", e.into()),
1480                    )
1481                })?;
1482            let codec = tonic::codec::ProstCodec::default();
1483            let path = http::uri::PathAndQuery::from_static(
1484                "/nominal.procedures.executions.v1.ProcedureExecutionsService/UpdateStepSuccessConditionStatus",
1485            );
1486            let mut req = request.into_request();
1487            req.extensions_mut()
1488                .insert(
1489                    GrpcMethod::new(
1490                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1491                        "UpdateStepSuccessConditionStatus",
1492                    ),
1493                );
1494            self.inner.unary(req, path, codec).await
1495        }
1496        /// Repeat a previously finished step in a procedure execution. This can only be done if the given step
1497        /// is in state SUCCEEDED, SKIPPED or ERRORED. Other state transitions are managed by the backend.
1498        pub async fn repeat_step(
1499            &mut self,
1500            request: impl tonic::IntoRequest<super::RepeatStepRequest>,
1501        ) -> std::result::Result<
1502            tonic::Response<super::RepeatStepResponse>,
1503            tonic::Status,
1504        > {
1505            self.inner
1506                .ready()
1507                .await
1508                .map_err(|e| {
1509                    tonic::Status::unknown(
1510                        format!("Service was not ready: {}", e.into()),
1511                    )
1512                })?;
1513            let codec = tonic::codec::ProstCodec::default();
1514            let path = http::uri::PathAndQuery::from_static(
1515                "/nominal.procedures.executions.v1.ProcedureExecutionsService/RepeatStep",
1516            );
1517            let mut req = request.into_request();
1518            req.extensions_mut()
1519                .insert(
1520                    GrpcMethod::new(
1521                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1522                        "RepeatStep",
1523                    ),
1524                );
1525            self.inner.unary(req, path, codec).await
1526        }
1527        /// Search for procedure executions
1528        pub async fn search_procedure_executions(
1529            &mut self,
1530            request: impl tonic::IntoRequest<super::SearchProcedureExecutionsRequest>,
1531        ) -> std::result::Result<
1532            tonic::Response<super::SearchProcedureExecutionsResponse>,
1533            tonic::Status,
1534        > {
1535            self.inner
1536                .ready()
1537                .await
1538                .map_err(|e| {
1539                    tonic::Status::unknown(
1540                        format!("Service was not ready: {}", e.into()),
1541                    )
1542                })?;
1543            let codec = tonic::codec::ProstCodec::default();
1544            let path = http::uri::PathAndQuery::from_static(
1545                "/nominal.procedures.executions.v1.ProcedureExecutionsService/SearchProcedureExecutions",
1546            );
1547            let mut req = request.into_request();
1548            req.extensions_mut()
1549                .insert(
1550                    GrpcMethod::new(
1551                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1552                        "SearchProcedureExecutions",
1553                    ),
1554                );
1555            self.inner.unary(req, path, codec).await
1556        }
1557        /// Batch get procedure execution metadata
1558        pub async fn batch_get_procedure_execution_metadata(
1559            &mut self,
1560            request: impl tonic::IntoRequest<
1561                super::BatchGetProcedureExecutionMetadataRequest,
1562            >,
1563        ) -> std::result::Result<
1564            tonic::Response<super::BatchGetProcedureExecutionMetadataResponse>,
1565            tonic::Status,
1566        > {
1567            self.inner
1568                .ready()
1569                .await
1570                .map_err(|e| {
1571                    tonic::Status::unknown(
1572                        format!("Service was not ready: {}", e.into()),
1573                    )
1574                })?;
1575            let codec = tonic::codec::ProstCodec::default();
1576            let path = http::uri::PathAndQuery::from_static(
1577                "/nominal.procedures.executions.v1.ProcedureExecutionsService/BatchGetProcedureExecutionMetadata",
1578            );
1579            let mut req = request.into_request();
1580            req.extensions_mut()
1581                .insert(
1582                    GrpcMethod::new(
1583                        "nominal.procedures.executions.v1.ProcedureExecutionsService",
1584                        "BatchGetProcedureExecutionMetadata",
1585                    ),
1586                );
1587            self.inner.unary(req, path, codec).await
1588        }
1589    }
1590}