Skip to main content

nominal_api_proto/proto/
nominal.plan.v1.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Plan {
4    #[prost(string, tag = "1")]
5    pub rid: ::prost::alloc::string::String,
6    #[prost(message, optional, tag = "2")]
7    pub metadata: ::core::option::Option<PlanMetadata>,
8    #[prost(message, optional, tag = "3")]
9    pub commit: ::core::option::Option<super::super::versioning::v1::Commit>,
10    #[prost(message, optional, tag = "4")]
11    pub content: ::core::option::Option<PlanContent>,
12}
13#[derive(Clone, PartialEq, ::prost::Message)]
14pub struct PlanSummary {
15    #[prost(string, tag = "1")]
16    pub rid: ::prost::alloc::string::String,
17    #[prost(message, optional, tag = "2")]
18    pub metadata: ::core::option::Option<PlanMetadata>,
19    #[prost(message, optional, tag = "3")]
20    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
21    #[prost(message, optional, tag = "4")]
22    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
23    #[prost(message, optional, tag = "5")]
24    pub earliest_scheduled_start: ::core::option::Option<
25        super::super::super::google::protobuf::Timestamp,
26    >,
27    #[prost(message, optional, tag = "6")]
28    pub latest_scheduled_end: ::core::option::Option<
29        super::super::super::google::protobuf::Timestamp,
30    >,
31}
32#[derive(Clone, PartialEq, ::prost::Message)]
33pub struct PlanMetadata {
34    #[prost(string, tag = "1")]
35    pub title: ::prost::alloc::string::String,
36    #[prost(string, tag = "2")]
37    pub description: ::prost::alloc::string::String,
38    #[prost(string, repeated, tag = "3")]
39    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
40    #[prost(map = "string, string", tag = "4")]
41    pub properties: ::std::collections::HashMap<
42        ::prost::alloc::string::String,
43        ::prost::alloc::string::String,
44    >,
45    #[prost(bool, tag = "5")]
46    pub is_archived: bool,
47    #[prost(bool, optional, tag = "6")]
48    pub is_published: ::core::option::Option<bool>,
49    #[prost(string, tag = "7")]
50    pub created_by: ::prost::alloc::string::String,
51    #[prost(message, optional, tag = "8")]
52    pub created_at: ::core::option::Option<
53        super::super::super::google::protobuf::Timestamp,
54    >,
55    #[prost(message, optional, tag = "9")]
56    pub updated_at: ::core::option::Option<
57        super::super::super::google::protobuf::Timestamp,
58    >,
59    #[prost(message, optional, tag = "10")]
60    pub edited_at: ::core::option::Option<
61        super::super::super::google::protobuf::Timestamp,
62    >,
63    #[prost(string, tag = "11")]
64    pub workspace_rid: ::prost::alloc::string::String,
65    #[prost(string, tag = "12")]
66    pub updated_by: ::prost::alloc::string::String,
67    #[prost(message, optional, tag = "13")]
68    pub status: ::core::option::Option<PlanStatus>,
69}
70#[derive(Clone, Copy, PartialEq, ::prost::Message)]
71pub struct PlanStatus {
72    #[prost(oneof = "plan_status::PlanStatus", tags = "1, 2, 3")]
73    pub plan_status: ::core::option::Option<plan_status::PlanStatus>,
74}
75/// Nested message and enum types in `PlanStatus`.
76pub mod plan_status {
77    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
78    pub enum PlanStatus {
79        #[prost(message, tag = "1")]
80        Open(super::OpenPlan),
81        #[prost(message, tag = "2")]
82        Completed(super::CompletedPlan),
83        #[prost(message, tag = "3")]
84        Cancelled(super::CancelledPlan),
85    }
86}
87#[derive(Clone, Copy, PartialEq, ::prost::Message)]
88pub struct OpenPlan {}
89#[derive(Clone, Copy, PartialEq, ::prost::Message)]
90pub struct CompletedPlan {}
91#[derive(Clone, Copy, PartialEq, ::prost::Message)]
92pub struct CancelledPlan {}
93#[derive(Clone, PartialEq, ::prost::Message)]
94pub struct PlanContent {
95    #[prost(oneof = "plan_content::PlanContent", tags = "1")]
96    pub plan_content: ::core::option::Option<plan_content::PlanContent>,
97}
98/// Nested message and enum types in `PlanContent`.
99pub mod plan_content {
100    #[derive(Clone, PartialEq, ::prost::Oneof)]
101    pub enum PlanContent {
102        #[prost(message, tag = "1")]
103        V1(super::PlanContentV1),
104    }
105}
106#[derive(Clone, PartialEq, ::prost::Message)]
107pub struct PlanContentV1 {
108    #[prost(message, optional, tag = "1")]
109    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
110    #[prost(message, optional, tag = "2")]
111    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
112    #[prost(message, repeated, tag = "3")]
113    pub objectives: ::prost::alloc::vec::Vec<Objective>,
114    #[prost(message, repeated, tag = "4")]
115    pub activities: ::prost::alloc::vec::Vec<Activity>,
116    #[prost(message, repeated, tag = "5")]
117    pub segments: ::prost::alloc::vec::Vec<Segment>,
118    #[prost(message, repeated, tag = "6")]
119    pub asset_groups: ::prost::alloc::vec::Vec<AssetGroup>,
120    #[prost(message, repeated, tag = "7")]
121    pub milestones: ::prost::alloc::vec::Vec<Milestone>,
122    #[prost(message, repeated, tag = "8")]
123    pub constraints: ::prost::alloc::vec::Vec<Constraint>,
124    #[prost(string, optional, tag = "9")]
125    pub timezone: ::core::option::Option<::prost::alloc::string::String>,
126    #[prost(message, optional, tag = "10")]
127    pub base_asset_pool: ::core::option::Option<AssetGroup>,
128}
129#[derive(Clone, PartialEq, ::prost::Message)]
130pub struct Milestone {
131    #[prost(string, tag = "1")]
132    pub id: ::prost::alloc::string::String,
133    #[prost(string, tag = "2")]
134    pub name: ::prost::alloc::string::String,
135    #[prost(string, optional, tag = "3")]
136    pub description: ::core::option::Option<::prost::alloc::string::String>,
137}
138#[derive(Clone, PartialEq, ::prost::Message)]
139pub struct Activity {
140    #[prost(string, tag = "1")]
141    pub id: ::prost::alloc::string::String,
142    #[prost(string, tag = "2")]
143    pub name: ::prost::alloc::string::String,
144    #[prost(string, optional, tag = "3")]
145    pub description: ::core::option::Option<::prost::alloc::string::String>,
146    #[prost(message, optional, tag = "4")]
147    pub details: ::core::option::Option<ActivityDetails>,
148    #[prost(message, optional, tag = "5")]
149    pub planned_duration: ::core::option::Option<MinuteDuration>,
150    #[prost(string, repeated, tag = "6")]
151    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
152    #[prost(map = "string, string", tag = "7")]
153    pub properties: ::std::collections::HashMap<
154        ::prost::alloc::string::String,
155        ::prost::alloc::string::String,
156    >,
157    #[prost(string, repeated, tag = "8")]
158    pub attachment_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
159    #[prost(message, repeated, tag = "9")]
160    pub links: ::prost::alloc::vec::Vec<Link>,
161}
162#[derive(Clone, PartialEq, ::prost::Message)]
163pub struct ActivityDetails {
164    #[prost(oneof = "activity_details::ActivityDetails", tags = "1")]
165    pub activity_details: ::core::option::Option<activity_details::ActivityDetails>,
166}
167/// Nested message and enum types in `ActivityDetails`.
168pub mod activity_details {
169    #[derive(Clone, PartialEq, ::prost::Oneof)]
170    pub enum ActivityDetails {
171        #[prost(message, tag = "1")]
172        Single(super::SingleActivity),
173    }
174}
175#[derive(Clone, PartialEq, ::prost::Message)]
176pub struct SingleActivity {
177    #[prost(message, optional, tag = "1")]
178    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
179    #[prost(message, optional, tag = "2")]
180    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
181    #[prost(string, optional, tag = "3")]
182    pub segment_id: ::core::option::Option<::prost::alloc::string::String>,
183    #[prost(string, repeated, tag = "4")]
184    pub objective_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
185    #[prost(message, optional, tag = "5")]
186    pub status: ::core::option::Option<ActivityStatus>,
187    #[prost(message, repeated, tag = "7")]
188    pub asset_assignments: ::prost::alloc::vec::Vec<AssetAssignment>,
189    #[prost(message, optional, tag = "8")]
190    pub pin: ::core::option::Option<ActivityPin>,
191}
192#[derive(Clone, PartialEq, ::prost::Message)]
193pub struct AssetAssignment {
194    #[prost(string, tag = "1")]
195    pub asset_rid: ::prost::alloc::string::String,
196    #[prost(string, repeated, tag = "2")]
197    pub resource_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
198}
199#[derive(Clone, PartialEq, ::prost::Message)]
200pub struct ActivityStatus {
201    #[prost(oneof = "activity_status::ActivityStatus", tags = "1, 2, 3, 4, 5")]
202    pub activity_status: ::core::option::Option<activity_status::ActivityStatus>,
203}
204/// Nested message and enum types in `ActivityStatus`.
205pub mod activity_status {
206    #[derive(Clone, PartialEq, ::prost::Oneof)]
207    pub enum ActivityStatus {
208        #[prost(message, tag = "1")]
209        Created(super::CreatedActivity),
210        #[prost(message, tag = "2")]
211        Finalized(super::FinalizedActivity),
212        #[prost(message, tag = "3")]
213        InProgress(super::InProgressActivity),
214        #[prost(message, tag = "4")]
215        Completed(super::CompletedActivity),
216        #[prost(message, tag = "5")]
217        Cancelled(super::CancelledActivity),
218    }
219}
220#[derive(Clone, Copy, PartialEq, ::prost::Message)]
221pub struct CreatedActivity {}
222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
223pub struct FinalizedActivity {}
224#[derive(Clone, Copy, PartialEq, ::prost::Message)]
225pub struct InProgressActivity {}
226#[derive(Clone, PartialEq, ::prost::Message)]
227pub struct CompletedActivity {
228    #[prost(string, optional, tag = "1")]
229    pub notes: ::core::option::Option<::prost::alloc::string::String>,
230}
231#[derive(Clone, PartialEq, ::prost::Message)]
232pub struct CancelledActivity {
233    #[prost(string, tag = "1")]
234    pub reason: ::prost::alloc::string::String,
235    #[prost(string, optional, tag = "2")]
236    pub notes: ::core::option::Option<::prost::alloc::string::String>,
237}
238#[derive(Clone, Copy, PartialEq, ::prost::Message)]
239pub struct ActivityPin {
240    #[prost(oneof = "activity_pin::ActivityPin", tags = "1")]
241    pub activity_pin: ::core::option::Option<activity_pin::ActivityPin>,
242}
243/// Nested message and enum types in `ActivityPin`.
244pub mod activity_pin {
245    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
246    pub enum ActivityPin {
247        #[prost(message, tag = "1")]
248        Pinned(super::PinnedActivity),
249    }
250}
251#[derive(Clone, Copy, PartialEq, ::prost::Message)]
252pub struct PinnedActivity {}
253#[derive(Clone, PartialEq, ::prost::Message)]
254pub struct Objective {
255    #[prost(string, tag = "1")]
256    pub id: ::prost::alloc::string::String,
257    #[prost(string, tag = "2")]
258    pub name: ::prost::alloc::string::String,
259    #[prost(string, tag = "3")]
260    pub creator: ::prost::alloc::string::String,
261    #[prost(message, optional, tag = "4")]
262    pub created_at: ::core::option::Option<
263        super::super::super::google::protobuf::Timestamp,
264    >,
265    #[prost(enumeration = "super::super::types::Priority", tag = "5")]
266    pub priority: i32,
267    #[prost(string, repeated, tag = "6")]
268    pub milestone_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
269    #[prost(string, optional, tag = "7")]
270    pub description: ::core::option::Option<::prost::alloc::string::String>,
271    #[prost(message, optional, tag = "8")]
272    pub details: ::core::option::Option<ObjectiveDetails>,
273    #[prost(message, optional, tag = "9")]
274    pub status: ::core::option::Option<ObjectiveStatus>,
275    #[prost(message, optional, tag = "10")]
276    pub planned_duration: ::core::option::Option<MinuteDuration>,
277    #[prost(string, repeated, tag = "11")]
278    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
279    #[prost(map = "string, string", tag = "12")]
280    pub properties: ::std::collections::HashMap<
281        ::prost::alloc::string::String,
282        ::prost::alloc::string::String,
283    >,
284    #[prost(string, repeated, tag = "13")]
285    pub attachment_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
286    #[prost(message, repeated, tag = "14")]
287    pub links: ::prost::alloc::vec::Vec<Link>,
288}
289#[derive(Clone, PartialEq, ::prost::Message)]
290pub struct ObjectiveStatus {
291    #[prost(oneof = "objective_status::ObjectiveStatus", tags = "1, 2, 3, 4, 5")]
292    pub objective_status: ::core::option::Option<objective_status::ObjectiveStatus>,
293}
294/// Nested message and enum types in `ObjectiveStatus`.
295pub mod objective_status {
296    #[derive(Clone, PartialEq, ::prost::Oneof)]
297    pub enum ObjectiveStatus {
298        #[prost(message, tag = "1")]
299        Draft(super::DraftObjective),
300        #[prost(message, tag = "2")]
301        Proposed(super::ProposedObjective),
302        #[prost(message, tag = "3")]
303        Finalized(super::FinalizedObjective),
304        #[prost(message, tag = "4")]
305        Completed(super::CompletedObjective),
306        #[prost(message, tag = "5")]
307        Rejected(super::RejectedObjective),
308    }
309}
310#[derive(Clone, Copy, PartialEq, ::prost::Message)]
311pub struct DraftObjective {}
312#[derive(Clone, Copy, PartialEq, ::prost::Message)]
313pub struct ProposedObjective {}
314#[derive(Clone, Copy, PartialEq, ::prost::Message)]
315pub struct FinalizedObjective {}
316#[derive(Clone, PartialEq, ::prost::Message)]
317pub struct CompletedObjective {
318    #[prost(message, optional, tag = "1")]
319    pub disposition: ::core::option::Option<ObjectiveDisposition>,
320}
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct RejectedObjective {
323    #[prost(string, tag = "1")]
324    pub reason: ::prost::alloc::string::String,
325}
326#[derive(Clone, PartialEq, ::prost::Message)]
327pub struct ObjectiveDisposition {
328    #[prost(oneof = "objective_disposition::ObjectiveDisposition", tags = "1, 2")]
329    pub objective_disposition: ::core::option::Option<
330        objective_disposition::ObjectiveDisposition,
331    >,
332}
333/// Nested message and enum types in `ObjectiveDisposition`.
334pub mod objective_disposition {
335    #[derive(Clone, PartialEq, ::prost::Oneof)]
336    pub enum ObjectiveDisposition {
337        #[prost(message, tag = "1")]
338        Successful(super::SuccessfulObjective),
339        #[prost(message, tag = "2")]
340        Failed(super::FailedObjective),
341    }
342}
343#[derive(Clone, PartialEq, ::prost::Message)]
344pub struct SuccessfulObjective {
345    #[prost(string, optional, tag = "1")]
346    pub notes: ::core::option::Option<::prost::alloc::string::String>,
347}
348#[derive(Clone, PartialEq, ::prost::Message)]
349pub struct FailedObjective {
350    #[prost(string, tag = "1")]
351    pub reason: ::prost::alloc::string::String,
352    #[prost(string, optional, tag = "2")]
353    pub notes: ::core::option::Option<::prost::alloc::string::String>,
354}
355#[derive(Clone, PartialEq, ::prost::Message)]
356pub struct ObjectiveDetails {
357    #[prost(oneof = "objective_details::ObjectiveDetails", tags = "1")]
358    pub objective_details: ::core::option::Option<objective_details::ObjectiveDetails>,
359}
360/// Nested message and enum types in `ObjectiveDetails`.
361pub mod objective_details {
362    #[derive(Clone, PartialEq, ::prost::Oneof)]
363    pub enum ObjectiveDetails {
364        #[prost(message, tag = "1")]
365        Simple(super::SimpleObjective),
366    }
367}
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct SimpleObjective {
370    #[prost(message, repeated, tag = "1")]
371    pub resources: ::prost::alloc::vec::Vec<Resource>,
372    #[prost(string, repeated, tag = "2")]
373    pub checklist_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
374    #[prost(string, repeated, tag = "3")]
375    pub procedure_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
376}
377#[derive(Clone, PartialEq, ::prost::Message)]
378pub struct Resource {
379    #[prost(string, tag = "1")]
380    pub name: ::prost::alloc::string::String,
381    #[prost(string, optional, tag = "2")]
382    pub description: ::core::option::Option<::prost::alloc::string::String>,
383    #[prost(int32, optional, tag = "3")]
384    pub count: ::core::option::Option<i32>,
385    #[prost(message, optional, tag = "4")]
386    pub candidate_assets: ::core::option::Option<CandidateAssetGroup>,
387    #[prost(string, tag = "6")]
388    pub id: ::prost::alloc::string::String,
389    #[prost(string, repeated, tag = "7")]
390    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
391    #[prost(map = "string, string", tag = "8")]
392    pub properties: ::std::collections::HashMap<
393        ::prost::alloc::string::String,
394        ::prost::alloc::string::String,
395    >,
396}
397#[derive(Clone, PartialEq, ::prost::Message)]
398pub struct CandidateAssetGroup {
399    #[prost(oneof = "candidate_asset_group::CandidateAssetGroup", tags = "1, 2")]
400    pub candidate_asset_group: ::core::option::Option<
401        candidate_asset_group::CandidateAssetGroup,
402    >,
403}
404/// Nested message and enum types in `CandidateAssetGroup`.
405pub mod candidate_asset_group {
406    #[derive(Clone, PartialEq, ::prost::Oneof)]
407    pub enum CandidateAssetGroup {
408        #[prost(message, tag = "1")]
409        Sources(super::AssetSourceList),
410        #[prost(string, tag = "2")]
411        AssetGroupId(::prost::alloc::string::String),
412    }
413}
414#[derive(Clone, PartialEq, ::prost::Message)]
415pub struct AssetSourceList {
416    #[prost(message, repeated, tag = "1")]
417    pub sources: ::prost::alloc::vec::Vec<AssetSource>,
418}
419#[derive(Clone, PartialEq, ::prost::Message)]
420pub struct AssetGroup {
421    #[prost(string, tag = "1")]
422    pub id: ::prost::alloc::string::String,
423    #[prost(string, tag = "2")]
424    pub name: ::prost::alloc::string::String,
425    #[prost(string, optional, tag = "3")]
426    pub description: ::core::option::Option<::prost::alloc::string::String>,
427    #[prost(message, repeated, tag = "4")]
428    pub sources: ::prost::alloc::vec::Vec<AssetSource>,
429    #[prost(bool, tag = "5")]
430    pub is_exempt_from_base_pool: bool,
431}
432#[derive(Clone, PartialEq, ::prost::Message)]
433pub struct AssetSource {
434    #[prost(oneof = "asset_source::AssetSource", tags = "1, 2")]
435    pub asset_source: ::core::option::Option<asset_source::AssetSource>,
436}
437/// Nested message and enum types in `AssetSource`.
438pub mod asset_source {
439    #[derive(Clone, PartialEq, ::prost::Oneof)]
440    pub enum AssetSource {
441        #[prost(message, tag = "1")]
442        AssetSearch(super::super::super::asset::v2::SearchAssetsQuery),
443        #[prost(string, tag = "2")]
444        AssetRid(::prost::alloc::string::String),
445    }
446}
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct Segment {
449    #[prost(string, tag = "1")]
450    pub id: ::prost::alloc::string::String,
451    #[prost(string, tag = "2")]
452    pub name: ::prost::alloc::string::String,
453    #[prost(message, optional, tag = "3")]
454    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
455    #[prost(message, optional, tag = "4")]
456    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
457    #[prost(message, optional, tag = "5")]
458    pub status: ::core::option::Option<SegmentStatus>,
459    #[prost(string, repeated, tag = "6")]
460    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
461    #[prost(map = "string, string", tag = "7")]
462    pub properties: ::std::collections::HashMap<
463        ::prost::alloc::string::String,
464        ::prost::alloc::string::String,
465    >,
466}
467#[derive(Clone, Copy, PartialEq, ::prost::Message)]
468pub struct SegmentStatus {
469    #[prost(oneof = "segment_status::SegmentStatus", tags = "1, 2")]
470    pub segment_status: ::core::option::Option<segment_status::SegmentStatus>,
471}
472/// Nested message and enum types in `SegmentStatus`.
473pub mod segment_status {
474    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
475    pub enum SegmentStatus {
476        #[prost(message, tag = "1")]
477        Draft(super::DraftSegment),
478        #[prost(message, tag = "2")]
479        Finalized(super::FinalizedSegment),
480    }
481}
482#[derive(Clone, Copy, PartialEq, ::prost::Message)]
483pub struct DraftSegment {}
484#[derive(Clone, Copy, PartialEq, ::prost::Message)]
485pub struct FinalizedSegment {}
486#[derive(Clone, PartialEq, ::prost::Message)]
487pub struct Link {
488    #[prost(string, optional, tag = "1")]
489    pub title: ::core::option::Option<::prost::alloc::string::String>,
490    #[prost(string, tag = "2")]
491    pub url: ::prost::alloc::string::String,
492}
493#[derive(Clone, Copy, PartialEq, ::prost::Message)]
494pub struct MinuteDuration {
495    #[prost(message, optional, tag = "1")]
496    pub value: ::core::option::Option<super::super::types::Duration>,
497}
498#[derive(Clone, PartialEq, ::prost::Message)]
499pub struct Constraint {
500    #[prost(string, tag = "1")]
501    pub id: ::prost::alloc::string::String,
502    #[prost(string, tag = "2")]
503    pub name: ::prost::alloc::string::String,
504    #[prost(message, repeated, tag = "3")]
505    pub subjects: ::prost::alloc::vec::Vec<ConstraintSubject>,
506    #[prost(message, optional, tag = "4")]
507    pub kind: ::core::option::Option<ConstraintKind>,
508}
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct ConstraintSubject {
511    #[prost(oneof = "constraint_subject::Subject", tags = "1, 2, 3, 4, 5, 6, 7")]
512    pub subject: ::core::option::Option<constraint_subject::Subject>,
513}
514/// Nested message and enum types in `ConstraintSubject`.
515pub mod constraint_subject {
516    #[derive(Clone, PartialEq, ::prost::Oneof)]
517    pub enum Subject {
518        #[prost(string, tag = "1")]
519        ActivityId(::prost::alloc::string::String),
520        #[prost(string, tag = "2")]
521        ObjectiveId(::prost::alloc::string::String),
522        #[prost(string, tag = "3")]
523        ResourceId(::prost::alloc::string::String),
524        #[prost(string, tag = "4")]
525        AssetGroupId(::prost::alloc::string::String),
526        #[prost(string, tag = "5")]
527        AssetRid(::prost::alloc::string::String),
528        #[prost(message, tag = "6")]
529        PlanWide(super::PlanWide),
530        #[prost(string, tag = "7")]
531        SegmentId(::prost::alloc::string::String),
532    }
533}
534#[derive(Clone, Copy, PartialEq, ::prost::Message)]
535pub struct PlanWide {}
536#[derive(Clone, PartialEq, ::prost::Message)]
537pub struct ConstraintKind {
538    #[prost(oneof = "constraint_kind::Kind", tags = "1, 2, 3, 4, 5, 6")]
539    pub kind: ::core::option::Option<constraint_kind::Kind>,
540}
541/// Nested message and enum types in `ConstraintKind`.
542pub mod constraint_kind {
543    #[derive(Clone, PartialEq, ::prost::Oneof)]
544    pub enum Kind {
545        #[prost(message, tag = "1")]
546        AllowedWindows(super::AllowedWindowsConstraint),
547        #[prost(message, tag = "2")]
548        Capacity(super::CapacityConstraint),
549        #[prost(message, tag = "3")]
550        Buffer(super::BufferConstraint),
551        #[prost(message, tag = "4")]
552        UsageCeiling(super::UsageCeilingConstraint),
553        #[prost(message, tag = "5")]
554        Precedence(super::PrecedenceConstraint),
555        #[prost(message, tag = "6")]
556        MutualExclusion(super::MutualExclusionConstraint),
557    }
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct AllowedWindowsConstraint {
561    #[prost(oneof = "allowed_windows_constraint::AllowedWindowsConstraint", tags = "1")]
562    pub allowed_windows_constraint: ::core::option::Option<
563        allowed_windows_constraint::AllowedWindowsConstraint,
564    >,
565}
566/// Nested message and enum types in `AllowedWindowsConstraint`.
567pub mod allowed_windows_constraint {
568    #[derive(Clone, PartialEq, ::prost::Oneof)]
569    pub enum AllowedWindowsConstraint {
570        #[prost(message, tag = "1")]
571        Explicit(super::ExplicitWindows),
572    }
573}
574#[derive(Clone, PartialEq, ::prost::Message)]
575pub struct ExplicitWindows {
576    #[prost(string, repeated, tag = "1")]
577    pub segment_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
578    #[prost(message, repeated, tag = "2")]
579    pub ranges: ::prost::alloc::vec::Vec<TimeRange>,
580}
581#[derive(Clone, Copy, PartialEq, ::prost::Message)]
582pub struct TimeRange {
583    #[prost(message, optional, tag = "1")]
584    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
585    #[prost(message, optional, tag = "2")]
586    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
587}
588#[derive(Clone, Copy, PartialEq, ::prost::Message)]
589pub struct CapacityConstraint {
590    #[prost(oneof = "capacity_constraint::CapacityConstraint", tags = "1")]
591    pub capacity_constraint: ::core::option::Option<
592        capacity_constraint::CapacityConstraint,
593    >,
594}
595/// Nested message and enum types in `CapacityConstraint`.
596pub mod capacity_constraint {
597    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
598    pub enum CapacityConstraint {
599        #[prost(message, tag = "1")]
600        Uniform(super::UniformCapacity),
601    }
602}
603#[derive(Clone, Copy, PartialEq, ::prost::Message)]
604pub struct UniformCapacity {
605    #[prost(int32, tag = "1")]
606    pub capacity: i32,
607}
608#[derive(Clone, Copy, PartialEq, ::prost::Message)]
609pub struct BufferConstraint {
610    #[prost(oneof = "buffer_constraint::BufferConstraint", tags = "1")]
611    pub buffer_constraint: ::core::option::Option<buffer_constraint::BufferConstraint>,
612}
613/// Nested message and enum types in `BufferConstraint`.
614pub mod buffer_constraint {
615    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
616    pub enum BufferConstraint {
617        #[prost(message, tag = "1")]
618        Fixed(super::FixedBuffer),
619    }
620}
621#[derive(Clone, Copy, PartialEq, ::prost::Message)]
622pub struct FixedBuffer {
623    #[prost(message, optional, tag = "1")]
624    pub min_gap: ::core::option::Option<MinuteDuration>,
625}
626#[derive(Clone, Copy, PartialEq, ::prost::Message)]
627pub struct UsageCeilingConstraint {
628    #[prost(oneof = "usage_ceiling_constraint::UsageCeilingConstraint", tags = "1")]
629    pub usage_ceiling_constraint: ::core::option::Option<
630        usage_ceiling_constraint::UsageCeilingConstraint,
631    >,
632}
633/// Nested message and enum types in `UsageCeilingConstraint`.
634pub mod usage_ceiling_constraint {
635    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
636    pub enum UsageCeilingConstraint {
637        #[prost(message, tag = "1")]
638        PerCalendarDay(super::DailyUsageCeiling),
639    }
640}
641#[derive(Clone, Copy, PartialEq, ::prost::Message)]
642pub struct DailyUsageCeiling {
643    #[prost(message, optional, tag = "1")]
644    pub max_duration: ::core::option::Option<MinuteDuration>,
645    #[prost(int32, optional, tag = "2")]
646    pub max_count: ::core::option::Option<i32>,
647}
648#[derive(Clone, PartialEq, ::prost::Message)]
649pub struct PrecedenceConstraint {
650    #[prost(oneof = "precedence_constraint::PrecedenceConstraint", tags = "1")]
651    pub precedence_constraint: ::core::option::Option<
652        precedence_constraint::PrecedenceConstraint,
653    >,
654}
655/// Nested message and enum types in `PrecedenceConstraint`.
656pub mod precedence_constraint {
657    #[derive(Clone, PartialEq, ::prost::Oneof)]
658    pub enum PrecedenceConstraint {
659        #[prost(message, tag = "1")]
660        After(super::ConstraintSubject),
661    }
662}
663#[derive(Clone, Copy, PartialEq, ::prost::Message)]
664pub struct MutualExclusionConstraint {
665    #[prost(
666        oneof = "mutual_exclusion_constraint::MutualExclusionConstraint",
667        tags = "1"
668    )]
669    pub mutual_exclusion_constraint: ::core::option::Option<
670        mutual_exclusion_constraint::MutualExclusionConstraint,
671    >,
672}
673/// Nested message and enum types in `MutualExclusionConstraint`.
674pub mod mutual_exclusion_constraint {
675    #[derive(Clone, Copy, PartialEq, ::prost::Oneof)]
676    pub enum MutualExclusionConstraint {
677        #[prost(message, tag = "1")]
678        NoOverlap(super::NoOverlap),
679    }
680}
681#[derive(Clone, Copy, PartialEq, ::prost::Message)]
682pub struct NoOverlap {}
683#[derive(Clone, PartialEq, ::prost::Message)]
684pub struct CreatePlanRequest {
685    #[prost(message, optional, tag = "1")]
686    pub plan: ::core::option::Option<Plan>,
687    #[prost(string, tag = "2")]
688    pub message: ::prost::alloc::string::String,
689}
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct CreatePlanResponse {
692    #[prost(message, optional, tag = "1")]
693    pub plan: ::core::option::Option<Plan>,
694    #[prost(message, repeated, tag = "2")]
695    pub warnings: ::prost::alloc::vec::Vec<PlanViolation>,
696    #[prost(bool, tag = "3")]
697    pub is_warnings_truncated: bool,
698}
699#[derive(Clone, PartialEq, ::prost::Message)]
700pub struct GetPlanRequest {
701    #[prost(string, tag = "1")]
702    pub plan_rid: ::prost::alloc::string::String,
703    #[prost(message, optional, tag = "2")]
704    pub at: ::core::option::Option<super::super::versioning::v1::BranchOrCommit>,
705}
706#[derive(Clone, PartialEq, ::prost::Message)]
707pub struct GetPlanResponse {
708    #[prost(message, optional, tag = "1")]
709    pub plan: ::core::option::Option<Plan>,
710}
711#[derive(Clone, PartialEq, ::prost::Message)]
712pub struct BatchGetPlansRequest {
713    #[prost(string, repeated, tag = "1")]
714    pub plan_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
715}
716#[derive(Clone, PartialEq, ::prost::Message)]
717pub struct BatchGetPlansResponse {
718    #[prost(message, repeated, tag = "1")]
719    pub plans: ::prost::alloc::vec::Vec<Plan>,
720}
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct BatchGetPlanSummariesRequest {
723    #[prost(string, repeated, tag = "1")]
724    pub plan_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
725}
726#[derive(Clone, PartialEq, ::prost::Message)]
727pub struct BatchGetPlanSummariesResponse {
728    #[prost(message, repeated, tag = "1")]
729    pub plans: ::prost::alloc::vec::Vec<PlanSummary>,
730}
731#[derive(Clone, PartialEq, ::prost::Message)]
732pub struct CreatePlanCommitRequest {
733    #[prost(string, tag = "1")]
734    pub plan_rid: ::prost::alloc::string::String,
735    #[prost(message, optional, tag = "2")]
736    pub content: ::core::option::Option<PlanContent>,
737    #[prost(string, optional, tag = "3")]
738    pub branch: ::core::option::Option<::prost::alloc::string::String>,
739    #[prost(string, tag = "4")]
740    pub message: ::prost::alloc::string::String,
741    #[prost(bool, tag = "5")]
742    pub is_working_state: bool,
743    #[prost(string, optional, tag = "6")]
744    pub expected_latest_commit: ::core::option::Option<::prost::alloc::string::String>,
745}
746#[derive(Clone, PartialEq, ::prost::Message)]
747pub struct CreatePlanCommitResponse {
748    #[prost(message, optional, tag = "1")]
749    pub plan: ::core::option::Option<Plan>,
750    #[prost(message, repeated, tag = "2")]
751    pub warnings: ::prost::alloc::vec::Vec<PlanViolation>,
752    #[prost(bool, tag = "3")]
753    pub is_warnings_truncated: bool,
754}
755#[derive(Clone, PartialEq, ::prost::Message)]
756pub struct UpdatePlanMetadataRequest {
757    #[prost(string, tag = "1")]
758    pub plan_rid: ::prost::alloc::string::String,
759    #[prost(string, optional, tag = "2")]
760    pub title: ::core::option::Option<::prost::alloc::string::String>,
761    #[prost(string, optional, tag = "3")]
762    pub description: ::core::option::Option<::prost::alloc::string::String>,
763    #[prost(message, optional, tag = "4")]
764    pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
765    #[prost(message, optional, tag = "5")]
766    pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
767    #[prost(bool, optional, tag = "6")]
768    pub is_archived: ::core::option::Option<bool>,
769    #[prost(bool, optional, tag = "7")]
770    pub is_published: ::core::option::Option<bool>,
771    #[prost(message, optional, tag = "8")]
772    pub status: ::core::option::Option<PlanStatus>,
773}
774#[derive(Clone, PartialEq, ::prost::Message)]
775pub struct UpdatePlanMetadataResponse {
776    #[prost(message, optional, tag = "1")]
777    pub metadata: ::core::option::Option<PlanMetadata>,
778}
779#[derive(Clone, PartialEq, ::prost::Message)]
780pub struct SearchPlansQuery {
781    #[prost(
782        oneof = "search_plans_query::Query",
783        tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15"
784    )]
785    pub query: ::core::option::Option<search_plans_query::Query>,
786}
787/// Nested message and enum types in `SearchPlansQuery`.
788pub mod search_plans_query {
789    #[derive(Clone, PartialEq, ::prost::Oneof)]
790    pub enum Query {
791        #[prost(message, tag = "1")]
792        And(super::SearchPlansQueryList),
793        #[prost(message, tag = "2")]
794        Or(super::SearchPlansQueryList),
795        #[prost(message, tag = "3")]
796        Not(::prost::alloc::boxed::Box<super::SearchPlansQuery>),
797        #[prost(string, tag = "4")]
798        ExactMatch(::prost::alloc::string::String),
799        #[prost(string, tag = "5")]
800        SearchText(::prost::alloc::string::String),
801        #[prost(message, tag = "6")]
802        Labels(super::super::super::types::LabelsFilter),
803        #[prost(message, tag = "7")]
804        Properties(super::super::super::types::PropertiesFilter),
805        #[prost(string, tag = "8")]
806        CreatedBy(::prost::alloc::string::String),
807        #[prost(bool, tag = "9")]
808        IsArchived(bool),
809        #[prost(bool, tag = "10")]
810        IsPublished(bool),
811        #[prost(bool, tag = "11")]
812        AuthorIsCurrentUser(bool),
813        #[prost(message, tag = "12")]
814        AuthorRids(super::UserRidList),
815        #[prost(string, tag = "13")]
816        WorkspaceRid(::prost::alloc::string::String),
817        #[prost(message, tag = "14")]
818        DateRangeOverlaps(super::PlanDateRangeFilter),
819        #[prost(message, tag = "15")]
820        Status(super::PlanStatus),
821    }
822}
823#[derive(Clone, Copy, PartialEq, ::prost::Message)]
824pub struct PlanDateRangeFilter {
825    #[prost(message, optional, tag = "1")]
826    pub start: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
827    #[prost(message, optional, tag = "2")]
828    pub end: ::core::option::Option<super::super::super::google::protobuf::Timestamp>,
829}
830#[derive(Clone, PartialEq, ::prost::Message)]
831pub struct SearchPlansQueryList {
832    #[prost(message, repeated, tag = "1")]
833    pub queries: ::prost::alloc::vec::Vec<SearchPlansQuery>,
834}
835#[derive(Clone, PartialEq, ::prost::Message)]
836pub struct UserRidList {
837    #[prost(string, repeated, tag = "1")]
838    pub user_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
839}
840#[derive(Clone, Copy, PartialEq, ::prost::Message)]
841pub struct PlanSortOptions {
842    #[prost(enumeration = "PlanSortField", tag = "1")]
843    pub field: i32,
844    #[prost(bool, tag = "2")]
845    pub is_descending: bool,
846}
847#[derive(Clone, PartialEq, ::prost::Message)]
848pub struct SearchPlansRequest {
849    #[prost(message, optional, tag = "1")]
850    pub query: ::core::option::Option<SearchPlansQuery>,
851    #[prost(message, optional, tag = "2")]
852    pub sort: ::core::option::Option<PlanSortOptions>,
853    #[prost(string, optional, tag = "3")]
854    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
855    #[prost(int32, optional, tag = "4")]
856    pub page_size: ::core::option::Option<i32>,
857}
858#[derive(Clone, PartialEq, ::prost::Message)]
859pub struct SearchPlansResponse {
860    #[prost(message, repeated, tag = "1")]
861    pub results: ::prost::alloc::vec::Vec<PlanSummary>,
862    #[prost(string, optional, tag = "2")]
863    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
864}
865#[derive(Clone, PartialEq, ::prost::Message)]
866pub struct ValidatePlanRequest {
867    #[prost(oneof = "validate_plan_request::Source", tags = "1, 2")]
868    pub source: ::core::option::Option<validate_plan_request::Source>,
869}
870/// Nested message and enum types in `ValidatePlanRequest`.
871pub mod validate_plan_request {
872    #[derive(Clone, PartialEq, ::prost::Oneof)]
873    pub enum Source {
874        #[prost(message, tag = "1")]
875        Plan(super::StoredPlanRevision),
876        #[prost(message, tag = "2")]
877        Content(super::PlanContent),
878    }
879}
880#[derive(Clone, PartialEq, ::prost::Message)]
881pub struct StoredPlanRevision {
882    #[prost(string, tag = "1")]
883    pub plan_rid: ::prost::alloc::string::String,
884    #[prost(message, optional, tag = "2")]
885    pub at: ::core::option::Option<super::super::versioning::v1::BranchOrCommit>,
886}
887#[derive(Clone, PartialEq, ::prost::Message)]
888pub struct ValidatePlanResponse {
889    #[prost(message, repeated, tag = "1")]
890    pub violations: ::prost::alloc::vec::Vec<PlanViolation>,
891    #[prost(bool, tag = "2")]
892    pub is_truncated: bool,
893    #[prost(message, optional, tag = "3")]
894    pub commit: ::core::option::Option<super::super::versioning::v1::Commit>,
895}
896#[derive(Clone, PartialEq, ::prost::Message)]
897pub struct PlanViolation {
898    #[prost(enumeration = "PlanViolationSeverity", tag = "1")]
899    pub severity: i32,
900    #[prost(string, tag = "2")]
901    pub code: ::prost::alloc::string::String,
902    #[prost(string, tag = "3")]
903    pub message: ::prost::alloc::string::String,
904    #[prost(message, repeated, tag = "4")]
905    pub subjects: ::prost::alloc::vec::Vec<PlanViolationSubject>,
906}
907#[derive(Clone, PartialEq, ::prost::Message)]
908pub struct PlanViolationSubject {
909    #[prost(enumeration = "PlanElementKind", tag = "1")]
910    pub kind: i32,
911    #[prost(string, tag = "2")]
912    pub id: ::prost::alloc::string::String,
913    #[prost(string, tag = "3")]
914    pub path: ::prost::alloc::string::String,
915}
916#[derive(Clone, PartialEq, ::prost::Message)]
917pub struct ListPlanAssetGroupSummariesRequest {
918    #[prost(string, tag = "1")]
919    pub plan_rid: ::prost::alloc::string::String,
920    #[prost(message, optional, tag = "2")]
921    pub at: ::core::option::Option<super::super::versioning::v1::BranchOrCommit>,
922    #[prost(string, optional, tag = "3")]
923    pub containing_asset_rid: ::core::option::Option<::prost::alloc::string::String>,
924}
925#[derive(Clone, PartialEq, ::prost::Message)]
926pub struct ListPlanAssetGroupSummariesResponse {
927    #[prost(message, repeated, tag = "1")]
928    pub asset_group_summaries: ::prost::alloc::vec::Vec<AssetGroupSummary>,
929    #[prost(message, optional, tag = "2")]
930    pub commit: ::core::option::Option<super::super::versioning::v1::Commit>,
931}
932#[derive(Clone, PartialEq, ::prost::Message)]
933pub struct AssetGroupSummary {
934    #[prost(string, tag = "1")]
935    pub asset_group_id: ::prost::alloc::string::String,
936    #[prost(int32, tag = "2")]
937    pub asset_count: i32,
938}
939#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
940#[repr(i32)]
941pub enum PlanSortField {
942    Unspecified = 0,
943    Name = 1,
944    CreatedAt = 2,
945    EditedAt = 3,
946    StartDate = 4,
947    EndDate = 5,
948}
949impl PlanSortField {
950    /// String value of the enum field names used in the ProtoBuf definition.
951    ///
952    /// The values are not transformed in any way and thus are considered stable
953    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
954    pub fn as_str_name(&self) -> &'static str {
955        match self {
956            Self::Unspecified => "PLAN_SORT_FIELD_UNSPECIFIED",
957            Self::Name => "NAME",
958            Self::CreatedAt => "CREATED_AT",
959            Self::EditedAt => "EDITED_AT",
960            Self::StartDate => "START_DATE",
961            Self::EndDate => "END_DATE",
962        }
963    }
964    /// Creates an enum from field names used in the ProtoBuf definition.
965    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
966        match value {
967            "PLAN_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
968            "NAME" => Some(Self::Name),
969            "CREATED_AT" => Some(Self::CreatedAt),
970            "EDITED_AT" => Some(Self::EditedAt),
971            "START_DATE" => Some(Self::StartDate),
972            "END_DATE" => Some(Self::EndDate),
973            _ => None,
974        }
975    }
976}
977#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
978#[repr(i32)]
979pub enum PlanViolationSeverity {
980    Unspecified = 0,
981    Error = 1,
982    Warning = 2,
983}
984impl PlanViolationSeverity {
985    /// String value of the enum field names used in the ProtoBuf definition.
986    ///
987    /// The values are not transformed in any way and thus are considered stable
988    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
989    pub fn as_str_name(&self) -> &'static str {
990        match self {
991            Self::Unspecified => "PLAN_VIOLATION_SEVERITY_UNSPECIFIED",
992            Self::Error => "PLAN_VIOLATION_SEVERITY_ERROR",
993            Self::Warning => "PLAN_VIOLATION_SEVERITY_WARNING",
994        }
995    }
996    /// Creates an enum from field names used in the ProtoBuf definition.
997    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
998        match value {
999            "PLAN_VIOLATION_SEVERITY_UNSPECIFIED" => Some(Self::Unspecified),
1000            "PLAN_VIOLATION_SEVERITY_ERROR" => Some(Self::Error),
1001            "PLAN_VIOLATION_SEVERITY_WARNING" => Some(Self::Warning),
1002            _ => None,
1003        }
1004    }
1005}
1006#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1007#[repr(i32)]
1008pub enum PlanElementKind {
1009    Unspecified = 0,
1010    Plan = 1,
1011    Objective = 2,
1012    Activity = 3,
1013    Segment = 4,
1014    Milestone = 5,
1015    AssetGroup = 6,
1016    Constraint = 7,
1017    Resource = 8,
1018}
1019impl PlanElementKind {
1020    /// String value of the enum field names used in the ProtoBuf definition.
1021    ///
1022    /// The values are not transformed in any way and thus are considered stable
1023    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1024    pub fn as_str_name(&self) -> &'static str {
1025        match self {
1026            Self::Unspecified => "PLAN_ELEMENT_KIND_UNSPECIFIED",
1027            Self::Plan => "PLAN_ELEMENT_KIND_PLAN",
1028            Self::Objective => "PLAN_ELEMENT_KIND_OBJECTIVE",
1029            Self::Activity => "PLAN_ELEMENT_KIND_ACTIVITY",
1030            Self::Segment => "PLAN_ELEMENT_KIND_SEGMENT",
1031            Self::Milestone => "PLAN_ELEMENT_KIND_MILESTONE",
1032            Self::AssetGroup => "PLAN_ELEMENT_KIND_ASSET_GROUP",
1033            Self::Constraint => "PLAN_ELEMENT_KIND_CONSTRAINT",
1034            Self::Resource => "PLAN_ELEMENT_KIND_RESOURCE",
1035        }
1036    }
1037    /// Creates an enum from field names used in the ProtoBuf definition.
1038    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1039        match value {
1040            "PLAN_ELEMENT_KIND_UNSPECIFIED" => Some(Self::Unspecified),
1041            "PLAN_ELEMENT_KIND_PLAN" => Some(Self::Plan),
1042            "PLAN_ELEMENT_KIND_OBJECTIVE" => Some(Self::Objective),
1043            "PLAN_ELEMENT_KIND_ACTIVITY" => Some(Self::Activity),
1044            "PLAN_ELEMENT_KIND_SEGMENT" => Some(Self::Segment),
1045            "PLAN_ELEMENT_KIND_MILESTONE" => Some(Self::Milestone),
1046            "PLAN_ELEMENT_KIND_ASSET_GROUP" => Some(Self::AssetGroup),
1047            "PLAN_ELEMENT_KIND_CONSTRAINT" => Some(Self::Constraint),
1048            "PLAN_ELEMENT_KIND_RESOURCE" => Some(Self::Resource),
1049            _ => None,
1050        }
1051    }
1052}
1053#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1054#[repr(i32)]
1055pub enum PlanError {
1056    PlanNotFound = 0,
1057    BranchOrCommitNotFound = 1,
1058    CommitConflict = 2,
1059    PlanArchived = 3,
1060}
1061impl PlanError {
1062    /// String value of the enum field names used in the ProtoBuf definition.
1063    ///
1064    /// The values are not transformed in any way and thus are considered stable
1065    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1066    pub fn as_str_name(&self) -> &'static str {
1067        match self {
1068            Self::PlanNotFound => "PLAN_ERROR_PLAN_NOT_FOUND",
1069            Self::BranchOrCommitNotFound => "PLAN_ERROR_BRANCH_OR_COMMIT_NOT_FOUND",
1070            Self::CommitConflict => "PLAN_ERROR_COMMIT_CONFLICT",
1071            Self::PlanArchived => "PLAN_ERROR_PLAN_ARCHIVED",
1072        }
1073    }
1074    /// Creates an enum from field names used in the ProtoBuf definition.
1075    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1076        match value {
1077            "PLAN_ERROR_PLAN_NOT_FOUND" => Some(Self::PlanNotFound),
1078            "PLAN_ERROR_BRANCH_OR_COMMIT_NOT_FOUND" => Some(Self::BranchOrCommitNotFound),
1079            "PLAN_ERROR_COMMIT_CONFLICT" => Some(Self::CommitConflict),
1080            "PLAN_ERROR_PLAN_ARCHIVED" => Some(Self::PlanArchived),
1081            _ => None,
1082        }
1083    }
1084}
1085/// Generated client implementations.
1086pub mod plan_service_client {
1087    #![allow(
1088        unused_variables,
1089        dead_code,
1090        missing_docs,
1091        clippy::wildcard_imports,
1092        clippy::let_unit_value,
1093    )]
1094    use tonic::codegen::*;
1095    use tonic::codegen::http::Uri;
1096    #[derive(Debug, Clone)]
1097    pub struct PlanServiceClient<T> {
1098        inner: tonic::client::Grpc<T>,
1099    }
1100    impl PlanServiceClient<tonic::transport::Channel> {
1101        /// Attempt to create a new client by connecting to a given endpoint.
1102        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1103        where
1104            D: TryInto<tonic::transport::Endpoint>,
1105            D::Error: Into<StdError>,
1106        {
1107            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1108            Ok(Self::new(conn))
1109        }
1110    }
1111    impl<T> PlanServiceClient<T>
1112    where
1113        T: tonic::client::GrpcService<tonic::body::Body>,
1114        T::Error: Into<StdError>,
1115        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1116        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1117    {
1118        pub fn new(inner: T) -> Self {
1119            let inner = tonic::client::Grpc::new(inner);
1120            Self { inner }
1121        }
1122        pub fn with_origin(inner: T, origin: Uri) -> Self {
1123            let inner = tonic::client::Grpc::with_origin(inner, origin);
1124            Self { inner }
1125        }
1126        pub fn with_interceptor<F>(
1127            inner: T,
1128            interceptor: F,
1129        ) -> PlanServiceClient<InterceptedService<T, F>>
1130        where
1131            F: tonic::service::Interceptor,
1132            T::ResponseBody: Default,
1133            T: tonic::codegen::Service<
1134                http::Request<tonic::body::Body>,
1135                Response = http::Response<
1136                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1137                >,
1138            >,
1139            <T as tonic::codegen::Service<
1140                http::Request<tonic::body::Body>,
1141            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1142        {
1143            PlanServiceClient::new(InterceptedService::new(inner, interceptor))
1144        }
1145        /// Compress requests with the given encoding.
1146        ///
1147        /// This requires the server to support it otherwise it might respond with an
1148        /// error.
1149        #[must_use]
1150        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1151            self.inner = self.inner.send_compressed(encoding);
1152            self
1153        }
1154        /// Enable decompressing responses.
1155        #[must_use]
1156        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1157            self.inner = self.inner.accept_compressed(encoding);
1158            self
1159        }
1160        /// Limits the maximum size of a decoded message.
1161        ///
1162        /// Default: `4MB`
1163        #[must_use]
1164        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1165            self.inner = self.inner.max_decoding_message_size(limit);
1166            self
1167        }
1168        /// Limits the maximum size of an encoded message.
1169        ///
1170        /// Default: `usize::MAX`
1171        #[must_use]
1172        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1173            self.inner = self.inner.max_encoding_message_size(limit);
1174            self
1175        }
1176        pub async fn create_plan(
1177            &mut self,
1178            request: impl tonic::IntoRequest<super::CreatePlanRequest>,
1179        ) -> std::result::Result<
1180            tonic::Response<super::CreatePlanResponse>,
1181            tonic::Status,
1182        > {
1183            self.inner
1184                .ready()
1185                .await
1186                .map_err(|e| {
1187                    tonic::Status::unknown(
1188                        format!("Service was not ready: {}", e.into()),
1189                    )
1190                })?;
1191            let codec = tonic::codec::ProstCodec::default();
1192            let path = http::uri::PathAndQuery::from_static(
1193                "/nominal.plan.v1.PlanService/CreatePlan",
1194            );
1195            let mut req = request.into_request();
1196            req.extensions_mut()
1197                .insert(GrpcMethod::new("nominal.plan.v1.PlanService", "CreatePlan"));
1198            self.inner.unary(req, path, codec).await
1199        }
1200        pub async fn get_plan(
1201            &mut self,
1202            request: impl tonic::IntoRequest<super::GetPlanRequest>,
1203        ) -> std::result::Result<
1204            tonic::Response<super::GetPlanResponse>,
1205            tonic::Status,
1206        > {
1207            self.inner
1208                .ready()
1209                .await
1210                .map_err(|e| {
1211                    tonic::Status::unknown(
1212                        format!("Service was not ready: {}", e.into()),
1213                    )
1214                })?;
1215            let codec = tonic::codec::ProstCodec::default();
1216            let path = http::uri::PathAndQuery::from_static(
1217                "/nominal.plan.v1.PlanService/GetPlan",
1218            );
1219            let mut req = request.into_request();
1220            req.extensions_mut()
1221                .insert(GrpcMethod::new("nominal.plan.v1.PlanService", "GetPlan"));
1222            self.inner.unary(req, path, codec).await
1223        }
1224        pub async fn batch_get_plans(
1225            &mut self,
1226            request: impl tonic::IntoRequest<super::BatchGetPlansRequest>,
1227        ) -> std::result::Result<
1228            tonic::Response<super::BatchGetPlansResponse>,
1229            tonic::Status,
1230        > {
1231            self.inner
1232                .ready()
1233                .await
1234                .map_err(|e| {
1235                    tonic::Status::unknown(
1236                        format!("Service was not ready: {}", e.into()),
1237                    )
1238                })?;
1239            let codec = tonic::codec::ProstCodec::default();
1240            let path = http::uri::PathAndQuery::from_static(
1241                "/nominal.plan.v1.PlanService/BatchGetPlans",
1242            );
1243            let mut req = request.into_request();
1244            req.extensions_mut()
1245                .insert(GrpcMethod::new("nominal.plan.v1.PlanService", "BatchGetPlans"));
1246            self.inner.unary(req, path, codec).await
1247        }
1248        pub async fn batch_get_plan_summaries(
1249            &mut self,
1250            request: impl tonic::IntoRequest<super::BatchGetPlanSummariesRequest>,
1251        ) -> std::result::Result<
1252            tonic::Response<super::BatchGetPlanSummariesResponse>,
1253            tonic::Status,
1254        > {
1255            self.inner
1256                .ready()
1257                .await
1258                .map_err(|e| {
1259                    tonic::Status::unknown(
1260                        format!("Service was not ready: {}", e.into()),
1261                    )
1262                })?;
1263            let codec = tonic::codec::ProstCodec::default();
1264            let path = http::uri::PathAndQuery::from_static(
1265                "/nominal.plan.v1.PlanService/BatchGetPlanSummaries",
1266            );
1267            let mut req = request.into_request();
1268            req.extensions_mut()
1269                .insert(
1270                    GrpcMethod::new(
1271                        "nominal.plan.v1.PlanService",
1272                        "BatchGetPlanSummaries",
1273                    ),
1274                );
1275            self.inner.unary(req, path, codec).await
1276        }
1277        pub async fn create_plan_commit(
1278            &mut self,
1279            request: impl tonic::IntoRequest<super::CreatePlanCommitRequest>,
1280        ) -> std::result::Result<
1281            tonic::Response<super::CreatePlanCommitResponse>,
1282            tonic::Status,
1283        > {
1284            self.inner
1285                .ready()
1286                .await
1287                .map_err(|e| {
1288                    tonic::Status::unknown(
1289                        format!("Service was not ready: {}", e.into()),
1290                    )
1291                })?;
1292            let codec = tonic::codec::ProstCodec::default();
1293            let path = http::uri::PathAndQuery::from_static(
1294                "/nominal.plan.v1.PlanService/CreatePlanCommit",
1295            );
1296            let mut req = request.into_request();
1297            req.extensions_mut()
1298                .insert(
1299                    GrpcMethod::new("nominal.plan.v1.PlanService", "CreatePlanCommit"),
1300                );
1301            self.inner.unary(req, path, codec).await
1302        }
1303        pub async fn update_plan_metadata(
1304            &mut self,
1305            request: impl tonic::IntoRequest<super::UpdatePlanMetadataRequest>,
1306        ) -> std::result::Result<
1307            tonic::Response<super::UpdatePlanMetadataResponse>,
1308            tonic::Status,
1309        > {
1310            self.inner
1311                .ready()
1312                .await
1313                .map_err(|e| {
1314                    tonic::Status::unknown(
1315                        format!("Service was not ready: {}", e.into()),
1316                    )
1317                })?;
1318            let codec = tonic::codec::ProstCodec::default();
1319            let path = http::uri::PathAndQuery::from_static(
1320                "/nominal.plan.v1.PlanService/UpdatePlanMetadata",
1321            );
1322            let mut req = request.into_request();
1323            req.extensions_mut()
1324                .insert(
1325                    GrpcMethod::new("nominal.plan.v1.PlanService", "UpdatePlanMetadata"),
1326                );
1327            self.inner.unary(req, path, codec).await
1328        }
1329        pub async fn search_plans(
1330            &mut self,
1331            request: impl tonic::IntoRequest<super::SearchPlansRequest>,
1332        ) -> std::result::Result<
1333            tonic::Response<super::SearchPlansResponse>,
1334            tonic::Status,
1335        > {
1336            self.inner
1337                .ready()
1338                .await
1339                .map_err(|e| {
1340                    tonic::Status::unknown(
1341                        format!("Service was not ready: {}", e.into()),
1342                    )
1343                })?;
1344            let codec = tonic::codec::ProstCodec::default();
1345            let path = http::uri::PathAndQuery::from_static(
1346                "/nominal.plan.v1.PlanService/SearchPlans",
1347            );
1348            let mut req = request.into_request();
1349            req.extensions_mut()
1350                .insert(GrpcMethod::new("nominal.plan.v1.PlanService", "SearchPlans"));
1351            self.inner.unary(req, path, codec).await
1352        }
1353        pub async fn validate_plan(
1354            &mut self,
1355            request: impl tonic::IntoRequest<super::ValidatePlanRequest>,
1356        ) -> std::result::Result<
1357            tonic::Response<super::ValidatePlanResponse>,
1358            tonic::Status,
1359        > {
1360            self.inner
1361                .ready()
1362                .await
1363                .map_err(|e| {
1364                    tonic::Status::unknown(
1365                        format!("Service was not ready: {}", e.into()),
1366                    )
1367                })?;
1368            let codec = tonic::codec::ProstCodec::default();
1369            let path = http::uri::PathAndQuery::from_static(
1370                "/nominal.plan.v1.PlanService/ValidatePlan",
1371            );
1372            let mut req = request.into_request();
1373            req.extensions_mut()
1374                .insert(GrpcMethod::new("nominal.plan.v1.PlanService", "ValidatePlan"));
1375            self.inner.unary(req, path, codec).await
1376        }
1377        pub async fn list_plan_asset_group_summaries(
1378            &mut self,
1379            request: impl tonic::IntoRequest<super::ListPlanAssetGroupSummariesRequest>,
1380        ) -> std::result::Result<
1381            tonic::Response<super::ListPlanAssetGroupSummariesResponse>,
1382            tonic::Status,
1383        > {
1384            self.inner
1385                .ready()
1386                .await
1387                .map_err(|e| {
1388                    tonic::Status::unknown(
1389                        format!("Service was not ready: {}", e.into()),
1390                    )
1391                })?;
1392            let codec = tonic::codec::ProstCodec::default();
1393            let path = http::uri::PathAndQuery::from_static(
1394                "/nominal.plan.v1.PlanService/ListPlanAssetGroupSummaries",
1395            );
1396            let mut req = request.into_request();
1397            req.extensions_mut()
1398                .insert(
1399                    GrpcMethod::new(
1400                        "nominal.plan.v1.PlanService",
1401                        "ListPlanAssetGroupSummaries",
1402                    ),
1403                );
1404            self.inner.unary(req, path, codec).await
1405        }
1406    }
1407}