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