Skip to main content

nominal_api_proto/proto/
nominal.asset.v2.rs

1// This file is @generated by prost-build.
2#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct Asset {
4    #[prost(string, tag = "1")]
5    pub rid: ::prost::alloc::string::String,
6    #[prost(string, tag = "2")]
7    pub title: ::prost::alloc::string::String,
8    #[prost(string, optional, tag = "3")]
9    pub description: ::core::option::Option<::prost::alloc::string::String>,
10    #[prost(map = "string, string", tag = "4")]
11    pub properties: ::std::collections::HashMap<
12        ::prost::alloc::string::String,
13        ::prost::alloc::string::String,
14    >,
15    #[prost(string, repeated, tag = "5")]
16    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
17    #[prost(message, repeated, tag = "6")]
18    pub links: ::prost::alloc::vec::Vec<Link>,
19    #[prost(message, repeated, tag = "7")]
20    pub data_scopes: ::prost::alloc::vec::Vec<DataScope>,
21    #[prost(string, optional, tag = "8")]
22    pub created_by: ::core::option::Option<::prost::alloc::string::String>,
23    #[prost(message, optional, tag = "9")]
24    pub created_at: ::core::option::Option<
25        super::super::super::google::protobuf::Timestamp,
26    >,
27    #[prost(message, optional, tag = "10")]
28    pub updated_at: ::core::option::Option<
29        super::super::super::google::protobuf::Timestamp,
30    >,
31    #[prost(string, repeated, tag = "11")]
32    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
33    #[prost(string, repeated, tag = "17")]
34    pub types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
35    #[prost(bool, tag = "13")]
36    pub is_staged: bool,
37    #[prost(bool, tag = "14")]
38    pub is_archived: bool,
39    #[prost(map = "string, message", tag = "15")]
40    pub typed_properties: ::std::collections::HashMap<
41        ::prost::alloc::string::String,
42        super::super::types::TypedPropertyValue,
43    >,
44    #[deprecated]
45    #[prost(string, optional, tag = "16")]
46    pub dataset_rid: ::core::option::Option<::prost::alloc::string::String>,
47    #[prost(bool, optional, tag = "18")]
48    pub is_live: ::core::option::Option<bool>,
49    #[prost(message, optional, tag = "19")]
50    pub data: ::core::option::Option<AssetData>,
51    #[prost(string, optional, tag = "20")]
52    pub icon_name: ::core::option::Option<::prost::alloc::string::String>,
53}
54#[derive(Clone, PartialEq, ::prost::Message)]
55pub struct AssetData {
56    #[prost(oneof = "asset_data::Data", tags = "1, 2")]
57    pub data: ::core::option::Option<asset_data::Data>,
58}
59/// Nested message and enum types in `AssetData`.
60pub mod asset_data {
61    #[derive(Clone, PartialEq, ::prost::Oneof)]
62    pub enum Data {
63        #[prost(string, tag = "1")]
64        PipelineRid(::prost::alloc::string::String),
65        #[prost(string, tag = "2")]
66        DatasetRid(::prost::alloc::string::String),
67    }
68}
69#[derive(Clone, PartialEq, ::prost::Message)]
70pub struct Type {
71    #[prost(string, tag = "1")]
72    pub rid: ::prost::alloc::string::String,
73    #[prost(string, tag = "2")]
74    pub name: ::prost::alloc::string::String,
75    #[prost(string, optional, tag = "3")]
76    pub description: ::core::option::Option<::prost::alloc::string::String>,
77    #[prost(map = "string, message", tag = "4")]
78    pub property_configs: ::std::collections::HashMap<
79        ::prost::alloc::string::String,
80        PropertyConfig,
81    >,
82    #[prost(message, optional, tag = "5")]
83    pub created_at: ::core::option::Option<
84        super::super::super::google::protobuf::Timestamp,
85    >,
86    #[prost(string, optional, tag = "6")]
87    pub icon_name: ::core::option::Option<::prost::alloc::string::String>,
88    #[prost(string, tag = "8")]
89    pub primary_key: ::prost::alloc::string::String,
90    #[prost(bool, tag = "9")]
91    pub is_archived: bool,
92    #[prost(message, optional, tag = "10")]
93    pub data_requirements: ::core::option::Option<DataRequirements>,
94    #[prost(message, repeated, tag = "11")]
95    pub outgoing_links: ::prost::alloc::vec::Vec<LinkDefinition>,
96    #[prost(message, repeated, tag = "12")]
97    pub incoming_links: ::prost::alloc::vec::Vec<LinkDefinition>,
98}
99#[derive(Clone, PartialEq, ::prost::Message)]
100pub struct LinkDefinition {
101    #[prost(string, optional, tag = "1")]
102    pub rid: ::core::option::Option<::prost::alloc::string::String>,
103    #[prost(string, optional, tag = "2")]
104    pub source_type_rid: ::core::option::Option<::prost::alloc::string::String>,
105    #[prost(string, tag = "3")]
106    pub target_type_rid: ::prost::alloc::string::String,
107    #[prost(string, optional, tag = "4")]
108    pub forward_label: ::core::option::Option<::prost::alloc::string::String>,
109    #[prost(string, optional, tag = "5")]
110    pub inverse_label: ::core::option::Option<::prost::alloc::string::String>,
111    #[prost(oneof = "link_definition::Kind", tags = "6")]
112    pub kind: ::core::option::Option<link_definition::Kind>,
113}
114/// Nested message and enum types in `LinkDefinition`.
115pub mod link_definition {
116    #[derive(Clone, PartialEq, ::prost::Oneof)]
117    pub enum Kind {
118        #[prost(message, tag = "6")]
119        Direct(super::DirectLink),
120    }
121}
122#[derive(Clone, PartialEq, ::prost::Message)]
123pub struct DirectLink {
124    #[prost(string, tag = "1")]
125    pub source_property: ::prost::alloc::string::String,
126}
127#[derive(Clone, PartialEq, ::prost::Message)]
128pub struct DataRequirements {
129    #[prost(oneof = "data_requirements::Requirements", tags = "1")]
130    pub requirements: ::core::option::Option<data_requirements::Requirements>,
131}
132/// Nested message and enum types in `DataRequirements`.
133pub mod data_requirements {
134    #[derive(Clone, PartialEq, ::prost::Oneof)]
135    pub enum Requirements {
136        #[prost(message, tag = "1")]
137        Series(super::SeriesRequirements),
138    }
139}
140#[derive(Clone, PartialEq, ::prost::Message)]
141pub struct SeriesRequirements {
142    #[prost(message, repeated, tag = "1")]
143    pub series: ::prost::alloc::vec::Vec<SeriesRequirement>,
144}
145#[derive(Clone, PartialEq, ::prost::Message)]
146pub struct SeriesRequirement {
147    #[prost(string, tag = "1")]
148    pub name: ::prost::alloc::string::String,
149    #[prost(enumeration = "series_requirement::SeriesType", tag = "2")]
150    pub r#type: i32,
151}
152/// Nested message and enum types in `SeriesRequirement`.
153pub mod series_requirement {
154    #[derive(
155        Clone,
156        Copy,
157        Debug,
158        PartialEq,
159        Eq,
160        Hash,
161        PartialOrd,
162        Ord,
163        ::prost::Enumeration
164    )]
165    #[repr(i32)]
166    pub enum SeriesType {
167        Unspecified = 0,
168        Numeric = 1,
169        String = 2,
170        Log = 3,
171        NumericArray = 4,
172        StringArray = 5,
173        Struct = 6,
174    }
175    impl SeriesType {
176        /// String value of the enum field names used in the ProtoBuf definition.
177        ///
178        /// The values are not transformed in any way and thus are considered stable
179        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
180        pub fn as_str_name(&self) -> &'static str {
181            match self {
182                Self::Unspecified => "SERIES_TYPE_UNSPECIFIED",
183                Self::Numeric => "NUMERIC",
184                Self::String => "STRING",
185                Self::Log => "LOG",
186                Self::NumericArray => "NUMERIC_ARRAY",
187                Self::StringArray => "STRING_ARRAY",
188                Self::Struct => "STRUCT",
189            }
190        }
191        /// Creates an enum from field names used in the ProtoBuf definition.
192        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
193            match value {
194                "SERIES_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
195                "NUMERIC" => Some(Self::Numeric),
196                "STRING" => Some(Self::String),
197                "LOG" => Some(Self::Log),
198                "NUMERIC_ARRAY" => Some(Self::NumericArray),
199                "STRING_ARRAY" => Some(Self::StringArray),
200                "STRUCT" => Some(Self::Struct),
201                _ => None,
202            }
203        }
204    }
205}
206#[derive(Clone, Copy, PartialEq, ::prost::Message)]
207pub struct PropertyConfig {
208    #[prost(enumeration = "PropertyRequirement", tag = "3")]
209    pub requirement: i32,
210    #[prost(enumeration = "PropertyValueType", tag = "4")]
211    pub value_type: i32,
212}
213#[derive(Clone, PartialEq, ::prost::Message)]
214pub struct DataScope {
215    #[prost(string, tag = "1")]
216    pub data_scope_name: ::prost::alloc::string::String,
217    #[prost(message, optional, tag = "2")]
218    pub data_source: ::core::option::Option<DataSource>,
219    #[prost(message, optional, tag = "3")]
220    pub offset: ::core::option::Option<super::super::types::Duration>,
221    #[prost(enumeration = "super::super::run::v1::WeakTimestampType", tag = "4")]
222    pub timestamp_type: i32,
223    #[prost(map = "string, string", tag = "5")]
224    pub series_tags: ::std::collections::HashMap<
225        ::prost::alloc::string::String,
226        ::prost::alloc::string::String,
227    >,
228}
229#[derive(Clone, PartialEq, ::prost::Message)]
230pub struct CreateAssetDataScope {
231    #[prost(string, tag = "1")]
232    pub data_scope_name: ::prost::alloc::string::String,
233    #[prost(message, optional, tag = "2")]
234    pub data_source: ::core::option::Option<DataSource>,
235    #[prost(message, optional, tag = "3")]
236    pub offset: ::core::option::Option<super::super::types::Duration>,
237    #[prost(map = "string, string", tag = "4")]
238    pub series_tags: ::std::collections::HashMap<
239        ::prost::alloc::string::String,
240        ::prost::alloc::string::String,
241    >,
242}
243#[derive(Clone, PartialEq, ::prost::Message)]
244pub struct DataSource {
245    #[prost(oneof = "data_source::DataSource", tags = "1, 2, 3, 4, 5")]
246    pub data_source: ::core::option::Option<data_source::DataSource>,
247}
248/// Nested message and enum types in `DataSource`.
249pub mod data_source {
250    #[derive(Clone, PartialEq, ::prost::Oneof)]
251    pub enum DataSource {
252        #[prost(string, tag = "1")]
253        Dataset(::prost::alloc::string::String),
254        #[prost(string, tag = "2")]
255        Connection(::prost::alloc::string::String),
256        #[prost(string, tag = "3")]
257        LogSet(::prost::alloc::string::String),
258        #[prost(string, tag = "4")]
259        Video(::prost::alloc::string::String),
260        #[prost(string, tag = "5")]
261        Spatial(::prost::alloc::string::String),
262    }
263}
264#[derive(Clone, PartialEq, ::prost::Message)]
265pub struct Link {
266    #[prost(string, optional, tag = "1")]
267    pub title: ::core::option::Option<::prost::alloc::string::String>,
268    #[prost(string, tag = "2")]
269    pub url: ::prost::alloc::string::String,
270}
271#[derive(Clone, PartialEq, ::prost::Message)]
272pub struct PropertiesFilter {
273    #[prost(string, tag = "1")]
274    pub name: ::prost::alloc::string::String,
275    #[prost(string, repeated, tag = "2")]
276    pub values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
277}
278#[derive(Clone, PartialEq, ::prost::Message)]
279pub struct LabelsFilter {
280    #[prost(enumeration = "SetOperator", tag = "1")]
281    pub operator: i32,
282    #[prost(string, repeated, tag = "2")]
283    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
284}
285#[derive(Clone, PartialEq, ::prost::Message)]
286pub struct AssetTypesFilter {
287    #[prost(string, repeated, tag = "1")]
288    pub asset_types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
289}
290#[derive(Clone, PartialEq, ::prost::Message)]
291pub struct AssetRidsFilter {
292    #[prost(string, repeated, tag = "1")]
293    pub asset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
294}
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct AssetSortOptions {
297    #[prost(bool, tag = "1")]
298    pub is_descending: bool,
299    #[prost(enumeration = "AssetSortField", optional, tag = "2")]
300    pub field: ::core::option::Option<i32>,
301    #[prost(message, optional, tag = "3")]
302    pub sort_key: ::core::option::Option<SortKey>,
303}
304#[derive(Clone, PartialEq, ::prost::Message)]
305pub struct SortKey {
306    #[prost(oneof = "sort_key::SortKey", tags = "1, 2, 3")]
307    pub sort_key: ::core::option::Option<sort_key::SortKey>,
308}
309/// Nested message and enum types in `SortKey`.
310pub mod sort_key {
311    #[derive(Clone, PartialEq, ::prost::Oneof)]
312    pub enum SortKey {
313        #[prost(enumeration = "super::AssetSortField", tag = "1")]
314        Field(i32),
315        #[prost(message, tag = "2")]
316        Property(super::SortProperty),
317        #[prost(message, tag = "3")]
318        NumericProperty(super::SortProperty),
319    }
320}
321#[derive(Clone, PartialEq, ::prost::Message)]
322pub struct SortProperty {
323    #[prost(string, tag = "1")]
324    pub name: ::prost::alloc::string::String,
325}
326#[derive(Clone, Copy, PartialEq, ::prost::Message)]
327pub struct TypeSortOptions {
328    #[prost(bool, tag = "1")]
329    pub is_descending: bool,
330    #[prost(enumeration = "type_sort_options::TypeSortField", tag = "2")]
331    pub field: i32,
332}
333/// Nested message and enum types in `TypeSortOptions`.
334pub mod type_sort_options {
335    #[derive(
336        Clone,
337        Copy,
338        Debug,
339        PartialEq,
340        Eq,
341        Hash,
342        PartialOrd,
343        Ord,
344        ::prost::Enumeration
345    )]
346    #[repr(i32)]
347    pub enum TypeSortField {
348        Unspecified = 0,
349        CreatedAt = 1,
350    }
351    impl TypeSortField {
352        /// String value of the enum field names used in the ProtoBuf definition.
353        ///
354        /// The values are not transformed in any way and thus are considered stable
355        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
356        pub fn as_str_name(&self) -> &'static str {
357            match self {
358                Self::Unspecified => "TYPE_SORT_FIELD_UNSPECIFIED",
359                Self::CreatedAt => "CREATED_AT",
360            }
361        }
362        /// Creates an enum from field names used in the ProtoBuf definition.
363        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
364            match value {
365                "TYPE_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
366                "CREATED_AT" => Some(Self::CreatedAt),
367                _ => None,
368            }
369        }
370    }
371}
372#[derive(Clone, PartialEq, ::prost::Message)]
373pub struct SearchAssetsQuery {
374    #[prost(
375        oneof = "search_assets_query::Query",
376        tags = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19"
377    )]
378    pub query: ::core::option::Option<search_assets_query::Query>,
379}
380/// Nested message and enum types in `SearchAssetsQuery`.
381pub mod search_assets_query {
382    #[derive(Clone, PartialEq, ::prost::Oneof)]
383    pub enum Query {
384        #[prost(string, tag = "1")]
385        SearchText(::prost::alloc::string::String),
386        #[prost(string, tag = "2")]
387        ExactSubstring(::prost::alloc::string::String),
388        #[prost(string, tag = "3")]
389        Label(::prost::alloc::string::String),
390        #[prost(message, tag = "4")]
391        Labels(super::LabelsFilter),
392        #[prost(message, tag = "5")]
393        Property(super::super::super::types::Property),
394        #[prost(string, tag = "6")]
395        PropertyKey(::prost::alloc::string::String),
396        #[prost(message, tag = "7")]
397        Properties(super::PropertiesFilter),
398        #[prost(string, tag = "8")]
399        TypeRid(::prost::alloc::string::String),
400        #[prost(message, tag = "9")]
401        AssetTypes(super::AssetTypesFilter),
402        #[prost(bool, tag = "10")]
403        IsStaged(bool),
404        #[prost(bool, tag = "11")]
405        Archived(bool),
406        #[prost(message, tag = "12")]
407        And(super::SearchAssetsQueryList),
408        #[prost(message, tag = "13")]
409        Or(super::SearchAssetsQueryList),
410        #[prost(message, tag = "14")]
411        Not(::prost::alloc::boxed::Box<super::SearchAssetsQuery>),
412        #[prost(string, tag = "15")]
413        Workspace(::prost::alloc::string::String),
414        #[prost(message, tag = "16")]
415        NumericProperty(super::super::super::types::NumericPropertyPredicate),
416        #[prost(message, tag = "17")]
417        NumericPropertyRange(super::super::super::types::NumericPropertyRangePredicate),
418        #[prost(message, tag = "18")]
419        AssetRids(super::AssetRidsFilter),
420        #[prost(bool, tag = "19")]
421        Live(bool),
422    }
423}
424#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct SearchAssetsQueryList {
426    #[prost(message, repeated, tag = "1")]
427    pub queries: ::prost::alloc::vec::Vec<SearchAssetsQuery>,
428}
429#[derive(Clone, PartialEq, ::prost::Message)]
430pub struct SearchTypesQuery {
431    #[prost(oneof = "search_types_query::Query", tags = "1, 2, 3, 4, 5")]
432    pub query: ::core::option::Option<search_types_query::Query>,
433}
434/// Nested message and enum types in `SearchTypesQuery`.
435pub mod search_types_query {
436    #[derive(Clone, PartialEq, ::prost::Oneof)]
437    pub enum Query {
438        #[prost(string, tag = "1")]
439        SearchText(::prost::alloc::string::String),
440        #[prost(string, tag = "2")]
441        Property(::prost::alloc::string::String),
442        #[prost(message, tag = "3")]
443        And(super::SearchTypesQueryList),
444        #[prost(message, tag = "4")]
445        Or(super::SearchTypesQueryList),
446        #[prost(string, tag = "5")]
447        Workspace(::prost::alloc::string::String),
448    }
449}
450#[derive(Clone, PartialEq, ::prost::Message)]
451pub struct SearchTypesQueryList {
452    #[prost(message, repeated, tag = "1")]
453    pub queries: ::prost::alloc::vec::Vec<SearchTypesQuery>,
454}
455#[derive(Clone, PartialEq, ::prost::Message)]
456pub struct MetadataChange {
457    #[prost(oneof = "metadata_change::MetadataChange", tags = "1, 2, 3")]
458    pub metadata_change: ::core::option::Option<metadata_change::MetadataChange>,
459}
460/// Nested message and enum types in `MetadataChange`.
461pub mod metadata_change {
462    #[derive(Clone, PartialEq, ::prost::Oneof)]
463    pub enum MetadataChange {
464        #[prost(message, tag = "1")]
465        RenameLabel(super::RenameLabel),
466        #[prost(message, tag = "2")]
467        RenamePropertyKey(super::RenamePropertyKey),
468        #[prost(message, tag = "3")]
469        MergePropertyValuesForKey(super::MergePropertyValuesForKey),
470    }
471}
472#[derive(Clone, PartialEq, ::prost::Message)]
473pub struct RenameLabel {
474    #[prost(string, repeated, tag = "1")]
475    pub source: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
476    #[prost(string, tag = "2")]
477    pub target: ::prost::alloc::string::String,
478}
479#[derive(Clone, PartialEq, ::prost::Message)]
480pub struct RenamePropertyKey {
481    #[prost(string, repeated, tag = "1")]
482    pub source: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
483    #[prost(string, tag = "2")]
484    pub target: ::prost::alloc::string::String,
485    #[prost(message, optional, tag = "3")]
486    pub on_conflict: ::core::option::Option<ConflictBehavior>,
487}
488#[derive(Clone, PartialEq, ::prost::Message)]
489pub struct MergePropertyValuesForKey {
490    #[prost(string, tag = "1")]
491    pub key: ::prost::alloc::string::String,
492    #[prost(string, repeated, tag = "2")]
493    pub source: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
494    #[prost(string, tag = "3")]
495    pub target: ::prost::alloc::string::String,
496}
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct ConflictBehavior {
499    #[prost(oneof = "conflict_behavior::ConflictBehavior", tags = "1, 2")]
500    pub conflict_behavior: ::core::option::Option<conflict_behavior::ConflictBehavior>,
501}
502/// Nested message and enum types in `ConflictBehavior`.
503pub mod conflict_behavior {
504    #[derive(Clone, PartialEq, ::prost::Oneof)]
505    pub enum ConflictBehavior {
506        #[prost(message, tag = "1")]
507        Skip(super::SkipOnConflict),
508        #[prost(message, tag = "2")]
509        Overwrite(super::OverwriteOnConflict),
510    }
511}
512#[derive(Clone, Copy, PartialEq, ::prost::Message)]
513pub struct SkipOnConflict {}
514#[derive(Clone, PartialEq, ::prost::Message)]
515pub struct OverwriteOnConflict {
516    #[prost(string, repeated, tag = "1")]
517    pub priority: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
518}
519#[derive(Clone, PartialEq, ::prost::Message)]
520pub struct LinkList {
521    #[prost(message, repeated, tag = "1")]
522    pub links: ::prost::alloc::vec::Vec<Link>,
523}
524#[derive(Clone, PartialEq, ::prost::Message)]
525pub struct TypeRidList {
526    #[prost(string, repeated, tag = "1")]
527    pub types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
528}
529#[derive(Clone, PartialEq, ::prost::Message)]
530pub struct CreateAssetDataScopeList {
531    #[prost(message, repeated, tag = "1")]
532    pub data_scopes: ::prost::alloc::vec::Vec<CreateAssetDataScope>,
533}
534#[derive(Clone, PartialEq, ::prost::Message)]
535pub struct PropertyConfigMap {
536    #[prost(map = "string, message", tag = "1")]
537    pub property_configs: ::std::collections::HashMap<
538        ::prost::alloc::string::String,
539        PropertyConfig,
540    >,
541}
542#[derive(Clone, PartialEq, ::prost::Message)]
543pub struct ArchivedStatusSet {
544    #[prost(enumeration = "super::super::types::ArchivedStatus", repeated, tag = "1")]
545    pub archived_statuses: ::prost::alloc::vec::Vec<i32>,
546}
547#[derive(Clone, PartialEq, ::prost::Message)]
548pub struct LinkDefinitionList {
549    #[prost(message, repeated, tag = "1")]
550    pub links: ::prost::alloc::vec::Vec<LinkDefinition>,
551}
552#[derive(Clone, PartialEq, ::prost::Message)]
553pub struct LinkRef {
554    #[prost(string, tag = "1")]
555    pub link_rid: ::prost::alloc::string::String,
556    #[prost(enumeration = "LinkDirection", tag = "2")]
557    pub direction: i32,
558}
559#[derive(Clone, PartialEq, ::prost::Message)]
560pub struct CreateAssetRequest {
561    #[prost(string, tag = "1")]
562    pub title: ::prost::alloc::string::String,
563    #[prost(string, optional, tag = "2")]
564    pub description: ::core::option::Option<::prost::alloc::string::String>,
565    #[prost(map = "string, string", tag = "3")]
566    pub properties: ::std::collections::HashMap<
567        ::prost::alloc::string::String,
568        ::prost::alloc::string::String,
569    >,
570    #[prost(string, repeated, tag = "4")]
571    pub labels: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
572    #[prost(message, repeated, tag = "5")]
573    pub links: ::prost::alloc::vec::Vec<Link>,
574    #[prost(message, repeated, tag = "6")]
575    pub data_scopes: ::prost::alloc::vec::Vec<CreateAssetDataScope>,
576    #[prost(string, repeated, tag = "7")]
577    pub attachments: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
578    #[prost(string, optional, tag = "9")]
579    pub workspace: ::core::option::Option<::prost::alloc::string::String>,
580    #[prost(map = "string, message", tag = "10")]
581    pub typed_properties: ::std::collections::HashMap<
582        ::prost::alloc::string::String,
583        super::super::types::TypedPropertyValue,
584    >,
585    #[deprecated]
586    #[prost(string, optional, tag = "11")]
587    pub dataset_rid: ::core::option::Option<::prost::alloc::string::String>,
588    #[prost(string, repeated, tag = "12")]
589    pub types: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
590    #[prost(message, optional, tag = "13")]
591    pub data: ::core::option::Option<AssetData>,
592}
593#[derive(Clone, PartialEq, ::prost::Message)]
594pub struct CreateAssetResponse {
595    #[prost(message, optional, tag = "1")]
596    pub asset: ::core::option::Option<Asset>,
597}
598#[derive(Clone, PartialEq, ::prost::Message)]
599pub struct CreateOrUpdateAssetByPrimaryKeyRequest {
600    #[prost(string, tag = "1")]
601    pub type_rid: ::prost::alloc::string::String,
602    #[prost(message, optional, tag = "2")]
603    pub asset: ::core::option::Option<CreateAssetRequest>,
604    #[prost(enumeration = "IfAssetExists", tag = "3")]
605    pub if_exists: i32,
606}
607#[derive(Clone, PartialEq, ::prost::Message)]
608pub struct CreateOrUpdateAssetByPrimaryKeyResponse {
609    #[prost(message, optional, tag = "1")]
610    pub asset: ::core::option::Option<Asset>,
611    #[prost(bool, tag = "2")]
612    pub created: bool,
613}
614#[derive(Clone, PartialEq, ::prost::Message)]
615pub struct UpdateAssetRequest {
616    #[prost(string, tag = "1")]
617    pub asset_rid: ::prost::alloc::string::String,
618    #[prost(string, optional, tag = "2")]
619    pub title: ::core::option::Option<::prost::alloc::string::String>,
620    #[prost(string, optional, tag = "3")]
621    pub description: ::core::option::Option<::prost::alloc::string::String>,
622    #[deprecated]
623    #[prost(message, optional, tag = "4")]
624    pub properties: ::core::option::Option<super::super::types::PropertyUpdateWrapper>,
625    #[prost(message, optional, tag = "5")]
626    pub labels: ::core::option::Option<super::super::types::LabelUpdateWrapper>,
627    #[prost(message, optional, tag = "6")]
628    pub links: ::core::option::Option<LinkList>,
629    #[prost(message, optional, tag = "7")]
630    pub data_scopes: ::core::option::Option<CreateAssetDataScopeList>,
631    #[prost(bool, optional, tag = "9")]
632    pub is_staged: ::core::option::Option<bool>,
633    #[prost(message, optional, tag = "10")]
634    pub typed_properties: ::core::option::Option<
635        super::super::types::TypedPropertyUpdateWrapper,
636    >,
637    #[prost(message, optional, tag = "11")]
638    pub types: ::core::option::Option<TypeRidList>,
639    #[prost(message, optional, tag = "12")]
640    pub data: ::core::option::Option<AssetData>,
641}
642#[derive(Clone, PartialEq, ::prost::Message)]
643pub struct UpdateAssetResponse {
644    #[prost(message, optional, tag = "1")]
645    pub asset: ::core::option::Option<Asset>,
646}
647#[derive(Clone, PartialEq, ::prost::Message)]
648pub struct AddDataScopesToAssetRequest {
649    #[prost(string, tag = "1")]
650    pub asset_rid: ::prost::alloc::string::String,
651    #[prost(message, repeated, tag = "2")]
652    pub data_scopes: ::prost::alloc::vec::Vec<CreateAssetDataScope>,
653}
654#[derive(Clone, PartialEq, ::prost::Message)]
655pub struct AddDataScopesToAssetResponse {
656    #[prost(message, optional, tag = "1")]
657    pub asset: ::core::option::Option<Asset>,
658}
659#[derive(Clone, PartialEq, ::prost::Message)]
660pub struct GetAssetsRequest {
661    #[prost(string, repeated, tag = "1")]
662    pub rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
663}
664#[derive(Clone, PartialEq, ::prost::Message)]
665pub struct GetAssetsResponse {
666    #[prost(map = "string, message", tag = "1")]
667    pub responses: ::std::collections::HashMap<::prost::alloc::string::String, Asset>,
668}
669#[derive(Clone, PartialEq, ::prost::Message)]
670pub struct GetAssetDataConformanceRequest {
671    #[prost(string, repeated, tag = "1")]
672    pub asset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
673}
674#[derive(Clone, PartialEq, ::prost::Message)]
675pub struct GetAssetDataConformanceResponse {
676    #[prost(map = "string, message", tag = "1")]
677    pub assets: ::std::collections::HashMap<
678        ::prost::alloc::string::String,
679        AssetDataConformance,
680    >,
681}
682#[derive(Clone, PartialEq, ::prost::Message)]
683pub struct AssetDataConformance {
684    #[prost(map = "string, message", tag = "1")]
685    pub types: ::std::collections::HashMap<
686        ::prost::alloc::string::String,
687        TypeDataConformance,
688    >,
689}
690#[derive(Clone, PartialEq, ::prost::Message)]
691pub struct TypeDataConformance {
692    #[prost(oneof = "type_data_conformance::Conformance", tags = "1, 2, 3")]
693    pub conformance: ::core::option::Option<type_data_conformance::Conformance>,
694}
695/// Nested message and enum types in `TypeDataConformance`.
696pub mod type_data_conformance {
697    #[derive(Clone, PartialEq, ::prost::Oneof)]
698    pub enum Conformance {
699        #[prost(message, tag = "1")]
700        Met(super::DataRequirementsMet),
701        #[prost(message, tag = "2")]
702        Unmet(super::DataRequirementsUnmet),
703        #[prost(message, tag = "3")]
704        Unknown(super::DataRequirementsUnknown),
705    }
706}
707#[derive(Clone, Copy, PartialEq, ::prost::Message)]
708pub struct DataRequirementsMet {}
709#[derive(Clone, PartialEq, ::prost::Message)]
710pub struct DataRequirementsUnmet {
711    #[prost(message, repeated, tag = "1")]
712    pub missing_series: ::prost::alloc::vec::Vec<SeriesRequirement>,
713}
714#[derive(Clone, Copy, PartialEq, ::prost::Message)]
715pub struct DataRequirementsUnknown {}
716#[derive(Clone, PartialEq, ::prost::Message)]
717pub struct GetAssetsByDataSourceRequest {
718    #[prost(string, tag = "1")]
719    pub data_source_rid: ::prost::alloc::string::String,
720}
721#[derive(Clone, PartialEq, ::prost::Message)]
722pub struct GetAssetsByDataSourceResponse {
723    #[prost(message, repeated, tag = "1")]
724    pub assets: ::prost::alloc::vec::Vec<Asset>,
725}
726#[derive(Clone, PartialEq, ::prost::Message)]
727pub struct ArchiveRequest {
728    #[prost(string, tag = "1")]
729    pub asset_rid: ::prost::alloc::string::String,
730    #[prost(bool, optional, tag = "2")]
731    pub include_linked_workbooks: ::core::option::Option<bool>,
732}
733#[derive(Clone, Copy, PartialEq, ::prost::Message)]
734pub struct ArchiveResponse {}
735#[derive(Clone, PartialEq, ::prost::Message)]
736pub struct UnarchiveRequest {
737    #[prost(string, tag = "1")]
738    pub asset_rid: ::prost::alloc::string::String,
739    #[prost(bool, optional, tag = "2")]
740    pub include_linked_workbooks: ::core::option::Option<bool>,
741}
742#[derive(Clone, Copy, PartialEq, ::prost::Message)]
743pub struct UnarchiveResponse {}
744#[derive(Clone, PartialEq, ::prost::Message)]
745pub struct SearchAssetsRequest {
746    #[prost(message, optional, tag = "1")]
747    pub sort: ::core::option::Option<AssetSortOptions>,
748    #[prost(int32, optional, tag = "2")]
749    pub page_size: ::core::option::Option<i32>,
750    #[prost(string, optional, tag = "3")]
751    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
752    #[prost(message, optional, tag = "4")]
753    pub query: ::core::option::Option<SearchAssetsQuery>,
754    #[prost(message, optional, tag = "5")]
755    pub archived_statuses: ::core::option::Option<ArchivedStatusSet>,
756    #[prost(bool, optional, tag = "6")]
757    pub include_match_count: ::core::option::Option<bool>,
758    #[prost(bool, optional, tag = "7")]
759    pub include_liveness: ::core::option::Option<bool>,
760}
761#[derive(Clone, PartialEq, ::prost::Message)]
762pub struct SearchAssetsResponse {
763    #[prost(message, repeated, tag = "1")]
764    pub results: ::prost::alloc::vec::Vec<Asset>,
765    #[prost(string, optional, tag = "2")]
766    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
767    #[prost(int32, optional, tag = "3")]
768    pub total_count: ::core::option::Option<i32>,
769}
770#[derive(Clone, PartialEq, ::prost::Message)]
771pub struct BatchEditAssetMetadataRequest {
772    #[prost(message, optional, tag = "1")]
773    pub asset_search_query: ::core::option::Option<SearchAssetsQuery>,
774    #[prost(message, optional, tag = "2")]
775    pub operation: ::core::option::Option<MetadataChange>,
776}
777#[derive(Clone, PartialEq, ::prost::Message)]
778pub struct BatchEditAssetMetadataResponse {
779    #[prost(string, repeated, tag = "1")]
780    pub modified_asset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
781    #[prost(string, repeated, tag = "2")]
782    pub conflicting_asset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
783}
784#[derive(Clone, PartialEq, ::prost::Message)]
785pub struct SearchTypesRequest {
786    #[prost(message, optional, tag = "1")]
787    pub sort: ::core::option::Option<TypeSortOptions>,
788    #[prost(int32, optional, tag = "2")]
789    pub page_size: ::core::option::Option<i32>,
790    #[prost(string, optional, tag = "3")]
791    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
792    #[prost(message, optional, tag = "4")]
793    pub query: ::core::option::Option<SearchTypesQuery>,
794    #[prost(message, optional, tag = "5")]
795    pub archived_statuses: ::core::option::Option<ArchivedStatusSet>,
796}
797#[derive(Clone, PartialEq, ::prost::Message)]
798pub struct SearchTypesResponse {
799    #[prost(message, repeated, tag = "1")]
800    pub results: ::prost::alloc::vec::Vec<Type>,
801    #[prost(string, optional, tag = "2")]
802    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
803}
804#[derive(Clone, PartialEq, ::prost::Message)]
805pub struct UpdateAssetAttachmentsRequest {
806    #[prost(string, tag = "1")]
807    pub asset_rid: ::prost::alloc::string::String,
808    #[prost(string, repeated, tag = "2")]
809    pub attachments_to_add: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
810    #[prost(string, repeated, tag = "3")]
811    pub attachments_to_remove: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
812}
813#[derive(Clone, Copy, PartialEq, ::prost::Message)]
814pub struct UpdateAssetAttachmentsResponse {}
815#[derive(Clone, PartialEq, ::prost::Message)]
816pub struct UpdateAssetRefNamesRequest {
817    #[prost(string, tag = "1")]
818    pub asset_rid: ::prost::alloc::string::String,
819    #[prost(map = "string, string", tag = "2")]
820    pub data_scope_ref_name_updates: ::std::collections::HashMap<
821        ::prost::alloc::string::String,
822        ::prost::alloc::string::String,
823    >,
824}
825#[derive(Clone, Copy, PartialEq, ::prost::Message)]
826pub struct UpdateAssetRefNamesResponse {}
827#[derive(Clone, PartialEq, ::prost::Message)]
828pub struct CreateTypeRequest {
829    #[prost(string, tag = "1")]
830    pub name: ::prost::alloc::string::String,
831    #[prost(map = "string, message", tag = "2")]
832    pub property_configs: ::std::collections::HashMap<
833        ::prost::alloc::string::String,
834        PropertyConfig,
835    >,
836    #[prost(string, optional, tag = "3")]
837    pub description: ::core::option::Option<::prost::alloc::string::String>,
838    #[prost(string, optional, tag = "4")]
839    pub icon_name: ::core::option::Option<::prost::alloc::string::String>,
840    #[prost(string, optional, tag = "5")]
841    pub workspace: ::core::option::Option<::prost::alloc::string::String>,
842    #[prost(string, tag = "7")]
843    pub primary_key: ::prost::alloc::string::String,
844    #[prost(message, optional, tag = "8")]
845    pub data_requirements: ::core::option::Option<DataRequirements>,
846    #[prost(message, repeated, tag = "9")]
847    pub links: ::prost::alloc::vec::Vec<LinkDefinition>,
848}
849#[derive(Clone, PartialEq, ::prost::Message)]
850pub struct CreateTypeResponse {
851    #[prost(message, optional, tag = "1")]
852    pub r#type: ::core::option::Option<Type>,
853}
854#[derive(Clone, PartialEq, ::prost::Message)]
855pub struct UpdateTypeRequest {
856    #[prost(string, tag = "1")]
857    pub type_rid: ::prost::alloc::string::String,
858    #[prost(string, optional, tag = "2")]
859    pub name: ::core::option::Option<::prost::alloc::string::String>,
860    #[prost(message, optional, tag = "3")]
861    pub property_configs: ::core::option::Option<PropertyConfigMap>,
862    #[prost(string, optional, tag = "4")]
863    pub description: ::core::option::Option<::prost::alloc::string::String>,
864    #[prost(string, optional, tag = "5")]
865    pub icon_name: ::core::option::Option<::prost::alloc::string::String>,
866    #[prost(string, optional, tag = "7")]
867    pub primary_key: ::core::option::Option<::prost::alloc::string::String>,
868    #[prost(message, optional, tag = "8")]
869    pub data_requirements: ::core::option::Option<DataRequirements>,
870    #[prost(message, optional, tag = "9")]
871    pub links: ::core::option::Option<LinkDefinitionList>,
872}
873#[derive(Clone, PartialEq, ::prost::Message)]
874pub struct UpdateTypeResponse {
875    #[prost(message, optional, tag = "1")]
876    pub r#type: ::core::option::Option<Type>,
877}
878#[derive(Clone, PartialEq, ::prost::Message)]
879pub struct GetTypesRequest {
880    #[prost(string, repeated, tag = "1")]
881    pub rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
882}
883#[derive(Clone, PartialEq, ::prost::Message)]
884pub struct GetTypesResponse {
885    #[prost(map = "string, message", tag = "1")]
886    pub responses: ::std::collections::HashMap<::prost::alloc::string::String, Type>,
887}
888#[derive(Clone, PartialEq, ::prost::Message)]
889pub struct DeleteTypeRequest {
890    #[prost(string, tag = "1")]
891    pub type_rid: ::prost::alloc::string::String,
892}
893#[derive(Clone, Copy, PartialEq, ::prost::Message)]
894pub struct DeleteTypeResponse {}
895#[derive(Clone, PartialEq, ::prost::Message)]
896pub struct ArchiveTypeRequest {
897    #[prost(string, tag = "1")]
898    pub type_rid: ::prost::alloc::string::String,
899}
900#[derive(Clone, Copy, PartialEq, ::prost::Message)]
901pub struct ArchiveTypeResponse {}
902#[derive(Clone, PartialEq, ::prost::Message)]
903pub struct UnarchiveTypeRequest {
904    #[prost(string, tag = "1")]
905    pub type_rid: ::prost::alloc::string::String,
906}
907#[derive(Clone, Copy, PartialEq, ::prost::Message)]
908pub struct UnarchiveTypeResponse {}
909#[derive(Clone, PartialEq, ::prost::Message)]
910pub struct TraverseLinksRequest {
911    #[prost(string, repeated, tag = "1")]
912    pub asset_rids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
913    #[prost(message, optional, tag = "2")]
914    pub link: ::core::option::Option<LinkRef>,
915    #[prost(int32, optional, tag = "3")]
916    pub page_size: ::core::option::Option<i32>,
917    #[prost(string, optional, tag = "4")]
918    pub page_token: ::core::option::Option<::prost::alloc::string::String>,
919}
920#[derive(Clone, PartialEq, ::prost::Message)]
921pub struct TraverseLinksResponse {
922    #[prost(message, repeated, tag = "1")]
923    pub edges: ::prost::alloc::vec::Vec<LinkEdge>,
924    #[prost(string, optional, tag = "2")]
925    pub next_page_token: ::core::option::Option<::prost::alloc::string::String>,
926}
927#[derive(Clone, PartialEq, ::prost::Message)]
928pub struct LinkEdge {
929    #[prost(string, tag = "1")]
930    pub requested_asset_rid: ::prost::alloc::string::String,
931    #[prost(oneof = "link_edge::End", tags = "2, 3")]
932    pub end: ::core::option::Option<link_edge::End>,
933}
934/// Nested message and enum types in `LinkEdge`.
935pub mod link_edge {
936    #[derive(Clone, PartialEq, ::prost::Oneof)]
937    pub enum End {
938        #[prost(string, tag = "2")]
939        LinkedAssetRid(::prost::alloc::string::String),
940        #[prost(string, tag = "3")]
941        UnresolvedValue(::prost::alloc::string::String),
942    }
943}
944#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
945#[repr(i32)]
946pub enum PropertyRequirement {
947    Unspecified = 0,
948    Required = 1,
949    Suggested = 2,
950}
951impl PropertyRequirement {
952    /// String value of the enum field names used in the ProtoBuf definition.
953    ///
954    /// The values are not transformed in any way and thus are considered stable
955    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
956    pub fn as_str_name(&self) -> &'static str {
957        match self {
958            Self::Unspecified => "PROPERTY_REQUIREMENT_UNSPECIFIED",
959            Self::Required => "REQUIRED",
960            Self::Suggested => "SUGGESTED",
961        }
962    }
963    /// Creates an enum from field names used in the ProtoBuf definition.
964    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
965        match value {
966            "PROPERTY_REQUIREMENT_UNSPECIFIED" => Some(Self::Unspecified),
967            "REQUIRED" => Some(Self::Required),
968            "SUGGESTED" => Some(Self::Suggested),
969            _ => None,
970        }
971    }
972}
973#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
974#[repr(i32)]
975pub enum PropertyValueType {
976    Unspecified = 0,
977    String = 1,
978    Number = 2,
979}
980impl PropertyValueType {
981    /// String value of the enum field names used in the ProtoBuf definition.
982    ///
983    /// The values are not transformed in any way and thus are considered stable
984    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
985    pub fn as_str_name(&self) -> &'static str {
986        match self {
987            Self::Unspecified => "PROPERTY_VALUE_TYPE_UNSPECIFIED",
988            Self::String => "STRING",
989            Self::Number => "NUMBER",
990        }
991    }
992    /// Creates an enum from field names used in the ProtoBuf definition.
993    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
994        match value {
995            "PROPERTY_VALUE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
996            "STRING" => Some(Self::String),
997            "NUMBER" => Some(Self::Number),
998            _ => None,
999        }
1000    }
1001}
1002#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1003#[repr(i32)]
1004pub enum SetOperator {
1005    Unspecified = 0,
1006    And = 1,
1007    Or = 2,
1008}
1009impl SetOperator {
1010    /// String value of the enum field names used in the ProtoBuf definition.
1011    ///
1012    /// The values are not transformed in any way and thus are considered stable
1013    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1014    pub fn as_str_name(&self) -> &'static str {
1015        match self {
1016            Self::Unspecified => "SET_OPERATOR_UNSPECIFIED",
1017            Self::And => "AND",
1018            Self::Or => "OR",
1019        }
1020    }
1021    /// Creates an enum from field names used in the ProtoBuf definition.
1022    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1023        match value {
1024            "SET_OPERATOR_UNSPECIFIED" => Some(Self::Unspecified),
1025            "AND" => Some(Self::And),
1026            "OR" => Some(Self::Or),
1027            _ => None,
1028        }
1029    }
1030}
1031#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1032#[repr(i32)]
1033pub enum AssetSortField {
1034    Unspecified = 0,
1035    Name = 1,
1036    CreatedAt = 2,
1037    MostRecentRunStart = 3,
1038}
1039impl AssetSortField {
1040    /// String value of the enum field names used in the ProtoBuf definition.
1041    ///
1042    /// The values are not transformed in any way and thus are considered stable
1043    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1044    pub fn as_str_name(&self) -> &'static str {
1045        match self {
1046            Self::Unspecified => "ASSET_SORT_FIELD_UNSPECIFIED",
1047            Self::Name => "NAME",
1048            Self::CreatedAt => "CREATED_AT",
1049            Self::MostRecentRunStart => "MOST_RECENT_RUN_START",
1050        }
1051    }
1052    /// Creates an enum from field names used in the ProtoBuf definition.
1053    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1054        match value {
1055            "ASSET_SORT_FIELD_UNSPECIFIED" => Some(Self::Unspecified),
1056            "NAME" => Some(Self::Name),
1057            "CREATED_AT" => Some(Self::CreatedAt),
1058            "MOST_RECENT_RUN_START" => Some(Self::MostRecentRunStart),
1059            _ => None,
1060        }
1061    }
1062}
1063#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1064#[repr(i32)]
1065pub enum LinkDirection {
1066    Unspecified = 0,
1067    Forward = 1,
1068    Inverse = 2,
1069}
1070impl LinkDirection {
1071    /// String value of the enum field names used in the ProtoBuf definition.
1072    ///
1073    /// The values are not transformed in any way and thus are considered stable
1074    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1075    pub fn as_str_name(&self) -> &'static str {
1076        match self {
1077            Self::Unspecified => "LINK_DIRECTION_UNSPECIFIED",
1078            Self::Forward => "LINK_DIRECTION_FORWARD",
1079            Self::Inverse => "LINK_DIRECTION_INVERSE",
1080        }
1081    }
1082    /// Creates an enum from field names used in the ProtoBuf definition.
1083    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1084        match value {
1085            "LINK_DIRECTION_UNSPECIFIED" => Some(Self::Unspecified),
1086            "LINK_DIRECTION_FORWARD" => Some(Self::Forward),
1087            "LINK_DIRECTION_INVERSE" => Some(Self::Inverse),
1088            _ => None,
1089        }
1090    }
1091}
1092#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1093#[repr(i32)]
1094pub enum IfAssetExists {
1095    Unspecified = 0,
1096    ReturnExisting = 1,
1097    UpdateExisting = 2,
1098}
1099impl IfAssetExists {
1100    /// String value of the enum field names used in the ProtoBuf definition.
1101    ///
1102    /// The values are not transformed in any way and thus are considered stable
1103    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1104    pub fn as_str_name(&self) -> &'static str {
1105        match self {
1106            Self::Unspecified => "IF_ASSET_EXISTS_UNSPECIFIED",
1107            Self::ReturnExisting => "RETURN_EXISTING",
1108            Self::UpdateExisting => "UPDATE_EXISTING",
1109        }
1110    }
1111    /// Creates an enum from field names used in the ProtoBuf definition.
1112    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1113        match value {
1114            "IF_ASSET_EXISTS_UNSPECIFIED" => Some(Self::Unspecified),
1115            "RETURN_EXISTING" => Some(Self::ReturnExisting),
1116            "UPDATE_EXISTING" => Some(Self::UpdateExisting),
1117            _ => None,
1118        }
1119    }
1120}
1121#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1122#[repr(i32)]
1123pub enum AssetError {
1124    InvalidRequest = 0,
1125    PermissionDenied = 1,
1126    LinkNotFound = 2,
1127}
1128impl AssetError {
1129    /// String value of the enum field names used in the ProtoBuf definition.
1130    ///
1131    /// The values are not transformed in any way and thus are considered stable
1132    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1133    pub fn as_str_name(&self) -> &'static str {
1134        match self {
1135            Self::InvalidRequest => "ASSET_ERROR_INVALID_REQUEST",
1136            Self::PermissionDenied => "ASSET_ERROR_PERMISSION_DENIED",
1137            Self::LinkNotFound => "ASSET_ERROR_LINK_NOT_FOUND",
1138        }
1139    }
1140    /// Creates an enum from field names used in the ProtoBuf definition.
1141    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1142        match value {
1143            "ASSET_ERROR_INVALID_REQUEST" => Some(Self::InvalidRequest),
1144            "ASSET_ERROR_PERMISSION_DENIED" => Some(Self::PermissionDenied),
1145            "ASSET_ERROR_LINK_NOT_FOUND" => Some(Self::LinkNotFound),
1146            _ => None,
1147        }
1148    }
1149}
1150/// Generated client implementations.
1151pub mod asset_service_client {
1152    #![allow(
1153        unused_variables,
1154        dead_code,
1155        missing_docs,
1156        clippy::wildcard_imports,
1157        clippy::let_unit_value,
1158    )]
1159    use tonic::codegen::*;
1160    use tonic::codegen::http::Uri;
1161    #[derive(Debug, Clone)]
1162    pub struct AssetServiceClient<T> {
1163        inner: tonic::client::Grpc<T>,
1164    }
1165    impl AssetServiceClient<tonic::transport::Channel> {
1166        /// Attempt to create a new client by connecting to a given endpoint.
1167        pub async fn connect<D>(dst: D) -> Result<Self, tonic::transport::Error>
1168        where
1169            D: TryInto<tonic::transport::Endpoint>,
1170            D::Error: Into<StdError>,
1171        {
1172            let conn = tonic::transport::Endpoint::new(dst)?.connect().await?;
1173            Ok(Self::new(conn))
1174        }
1175    }
1176    impl<T> AssetServiceClient<T>
1177    where
1178        T: tonic::client::GrpcService<tonic::body::Body>,
1179        T::Error: Into<StdError>,
1180        T::ResponseBody: Body<Data = Bytes> + std::marker::Send + 'static,
1181        <T::ResponseBody as Body>::Error: Into<StdError> + std::marker::Send,
1182    {
1183        pub fn new(inner: T) -> Self {
1184            let inner = tonic::client::Grpc::new(inner);
1185            Self { inner }
1186        }
1187        pub fn with_origin(inner: T, origin: Uri) -> Self {
1188            let inner = tonic::client::Grpc::with_origin(inner, origin);
1189            Self { inner }
1190        }
1191        pub fn with_interceptor<F>(
1192            inner: T,
1193            interceptor: F,
1194        ) -> AssetServiceClient<InterceptedService<T, F>>
1195        where
1196            F: tonic::service::Interceptor,
1197            T::ResponseBody: Default,
1198            T: tonic::codegen::Service<
1199                http::Request<tonic::body::Body>,
1200                Response = http::Response<
1201                    <T as tonic::client::GrpcService<tonic::body::Body>>::ResponseBody,
1202                >,
1203            >,
1204            <T as tonic::codegen::Service<
1205                http::Request<tonic::body::Body>,
1206            >>::Error: Into<StdError> + std::marker::Send + std::marker::Sync,
1207        {
1208            AssetServiceClient::new(InterceptedService::new(inner, interceptor))
1209        }
1210        /// Compress requests with the given encoding.
1211        ///
1212        /// This requires the server to support it otherwise it might respond with an
1213        /// error.
1214        #[must_use]
1215        pub fn send_compressed(mut self, encoding: CompressionEncoding) -> Self {
1216            self.inner = self.inner.send_compressed(encoding);
1217            self
1218        }
1219        /// Enable decompressing responses.
1220        #[must_use]
1221        pub fn accept_compressed(mut self, encoding: CompressionEncoding) -> Self {
1222            self.inner = self.inner.accept_compressed(encoding);
1223            self
1224        }
1225        /// Limits the maximum size of a decoded message.
1226        ///
1227        /// Default: `4MB`
1228        #[must_use]
1229        pub fn max_decoding_message_size(mut self, limit: usize) -> Self {
1230            self.inner = self.inner.max_decoding_message_size(limit);
1231            self
1232        }
1233        /// Limits the maximum size of an encoded message.
1234        ///
1235        /// Default: `usize::MAX`
1236        #[must_use]
1237        pub fn max_encoding_message_size(mut self, limit: usize) -> Self {
1238            self.inner = self.inner.max_encoding_message_size(limit);
1239            self
1240        }
1241        pub async fn create_asset(
1242            &mut self,
1243            request: impl tonic::IntoRequest<super::CreateAssetRequest>,
1244        ) -> std::result::Result<
1245            tonic::Response<super::CreateAssetResponse>,
1246            tonic::Status,
1247        > {
1248            self.inner
1249                .ready()
1250                .await
1251                .map_err(|e| {
1252                    tonic::Status::unknown(
1253                        format!("Service was not ready: {}", e.into()),
1254                    )
1255                })?;
1256            let codec = tonic::codec::ProstCodec::default();
1257            let path = http::uri::PathAndQuery::from_static(
1258                "/nominal.asset.v2.AssetService/CreateAsset",
1259            );
1260            let mut req = request.into_request();
1261            req.extensions_mut()
1262                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "CreateAsset"));
1263            self.inner.unary(req, path, codec).await
1264        }
1265        pub async fn create_or_update_asset_by_primary_key(
1266            &mut self,
1267            request: impl tonic::IntoRequest<
1268                super::CreateOrUpdateAssetByPrimaryKeyRequest,
1269            >,
1270        ) -> std::result::Result<
1271            tonic::Response<super::CreateOrUpdateAssetByPrimaryKeyResponse>,
1272            tonic::Status,
1273        > {
1274            self.inner
1275                .ready()
1276                .await
1277                .map_err(|e| {
1278                    tonic::Status::unknown(
1279                        format!("Service was not ready: {}", e.into()),
1280                    )
1281                })?;
1282            let codec = tonic::codec::ProstCodec::default();
1283            let path = http::uri::PathAndQuery::from_static(
1284                "/nominal.asset.v2.AssetService/CreateOrUpdateAssetByPrimaryKey",
1285            );
1286            let mut req = request.into_request();
1287            req.extensions_mut()
1288                .insert(
1289                    GrpcMethod::new(
1290                        "nominal.asset.v2.AssetService",
1291                        "CreateOrUpdateAssetByPrimaryKey",
1292                    ),
1293                );
1294            self.inner.unary(req, path, codec).await
1295        }
1296        pub async fn update_asset(
1297            &mut self,
1298            request: impl tonic::IntoRequest<super::UpdateAssetRequest>,
1299        ) -> std::result::Result<
1300            tonic::Response<super::UpdateAssetResponse>,
1301            tonic::Status,
1302        > {
1303            self.inner
1304                .ready()
1305                .await
1306                .map_err(|e| {
1307                    tonic::Status::unknown(
1308                        format!("Service was not ready: {}", e.into()),
1309                    )
1310                })?;
1311            let codec = tonic::codec::ProstCodec::default();
1312            let path = http::uri::PathAndQuery::from_static(
1313                "/nominal.asset.v2.AssetService/UpdateAsset",
1314            );
1315            let mut req = request.into_request();
1316            req.extensions_mut()
1317                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "UpdateAsset"));
1318            self.inner.unary(req, path, codec).await
1319        }
1320        pub async fn add_data_scopes_to_asset(
1321            &mut self,
1322            request: impl tonic::IntoRequest<super::AddDataScopesToAssetRequest>,
1323        ) -> std::result::Result<
1324            tonic::Response<super::AddDataScopesToAssetResponse>,
1325            tonic::Status,
1326        > {
1327            self.inner
1328                .ready()
1329                .await
1330                .map_err(|e| {
1331                    tonic::Status::unknown(
1332                        format!("Service was not ready: {}", e.into()),
1333                    )
1334                })?;
1335            let codec = tonic::codec::ProstCodec::default();
1336            let path = http::uri::PathAndQuery::from_static(
1337                "/nominal.asset.v2.AssetService/AddDataScopesToAsset",
1338            );
1339            let mut req = request.into_request();
1340            req.extensions_mut()
1341                .insert(
1342                    GrpcMethod::new(
1343                        "nominal.asset.v2.AssetService",
1344                        "AddDataScopesToAsset",
1345                    ),
1346                );
1347            self.inner.unary(req, path, codec).await
1348        }
1349        pub async fn get_assets(
1350            &mut self,
1351            request: impl tonic::IntoRequest<super::GetAssetsRequest>,
1352        ) -> std::result::Result<
1353            tonic::Response<super::GetAssetsResponse>,
1354            tonic::Status,
1355        > {
1356            self.inner
1357                .ready()
1358                .await
1359                .map_err(|e| {
1360                    tonic::Status::unknown(
1361                        format!("Service was not ready: {}", e.into()),
1362                    )
1363                })?;
1364            let codec = tonic::codec::ProstCodec::default();
1365            let path = http::uri::PathAndQuery::from_static(
1366                "/nominal.asset.v2.AssetService/GetAssets",
1367            );
1368            let mut req = request.into_request();
1369            req.extensions_mut()
1370                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "GetAssets"));
1371            self.inner.unary(req, path, codec).await
1372        }
1373        pub async fn get_asset_data_conformance(
1374            &mut self,
1375            request: impl tonic::IntoRequest<super::GetAssetDataConformanceRequest>,
1376        ) -> std::result::Result<
1377            tonic::Response<super::GetAssetDataConformanceResponse>,
1378            tonic::Status,
1379        > {
1380            self.inner
1381                .ready()
1382                .await
1383                .map_err(|e| {
1384                    tonic::Status::unknown(
1385                        format!("Service was not ready: {}", e.into()),
1386                    )
1387                })?;
1388            let codec = tonic::codec::ProstCodec::default();
1389            let path = http::uri::PathAndQuery::from_static(
1390                "/nominal.asset.v2.AssetService/GetAssetDataConformance",
1391            );
1392            let mut req = request.into_request();
1393            req.extensions_mut()
1394                .insert(
1395                    GrpcMethod::new(
1396                        "nominal.asset.v2.AssetService",
1397                        "GetAssetDataConformance",
1398                    ),
1399                );
1400            self.inner.unary(req, path, codec).await
1401        }
1402        pub async fn get_assets_by_data_source(
1403            &mut self,
1404            request: impl tonic::IntoRequest<super::GetAssetsByDataSourceRequest>,
1405        ) -> std::result::Result<
1406            tonic::Response<super::GetAssetsByDataSourceResponse>,
1407            tonic::Status,
1408        > {
1409            self.inner
1410                .ready()
1411                .await
1412                .map_err(|e| {
1413                    tonic::Status::unknown(
1414                        format!("Service was not ready: {}", e.into()),
1415                    )
1416                })?;
1417            let codec = tonic::codec::ProstCodec::default();
1418            let path = http::uri::PathAndQuery::from_static(
1419                "/nominal.asset.v2.AssetService/GetAssetsByDataSource",
1420            );
1421            let mut req = request.into_request();
1422            req.extensions_mut()
1423                .insert(
1424                    GrpcMethod::new(
1425                        "nominal.asset.v2.AssetService",
1426                        "GetAssetsByDataSource",
1427                    ),
1428                );
1429            self.inner.unary(req, path, codec).await
1430        }
1431        pub async fn archive(
1432            &mut self,
1433            request: impl tonic::IntoRequest<super::ArchiveRequest>,
1434        ) -> std::result::Result<
1435            tonic::Response<super::ArchiveResponse>,
1436            tonic::Status,
1437        > {
1438            self.inner
1439                .ready()
1440                .await
1441                .map_err(|e| {
1442                    tonic::Status::unknown(
1443                        format!("Service was not ready: {}", e.into()),
1444                    )
1445                })?;
1446            let codec = tonic::codec::ProstCodec::default();
1447            let path = http::uri::PathAndQuery::from_static(
1448                "/nominal.asset.v2.AssetService/Archive",
1449            );
1450            let mut req = request.into_request();
1451            req.extensions_mut()
1452                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "Archive"));
1453            self.inner.unary(req, path, codec).await
1454        }
1455        pub async fn unarchive(
1456            &mut self,
1457            request: impl tonic::IntoRequest<super::UnarchiveRequest>,
1458        ) -> std::result::Result<
1459            tonic::Response<super::UnarchiveResponse>,
1460            tonic::Status,
1461        > {
1462            self.inner
1463                .ready()
1464                .await
1465                .map_err(|e| {
1466                    tonic::Status::unknown(
1467                        format!("Service was not ready: {}", e.into()),
1468                    )
1469                })?;
1470            let codec = tonic::codec::ProstCodec::default();
1471            let path = http::uri::PathAndQuery::from_static(
1472                "/nominal.asset.v2.AssetService/Unarchive",
1473            );
1474            let mut req = request.into_request();
1475            req.extensions_mut()
1476                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "Unarchive"));
1477            self.inner.unary(req, path, codec).await
1478        }
1479        pub async fn search_assets(
1480            &mut self,
1481            request: impl tonic::IntoRequest<super::SearchAssetsRequest>,
1482        ) -> std::result::Result<
1483            tonic::Response<super::SearchAssetsResponse>,
1484            tonic::Status,
1485        > {
1486            self.inner
1487                .ready()
1488                .await
1489                .map_err(|e| {
1490                    tonic::Status::unknown(
1491                        format!("Service was not ready: {}", e.into()),
1492                    )
1493                })?;
1494            let codec = tonic::codec::ProstCodec::default();
1495            let path = http::uri::PathAndQuery::from_static(
1496                "/nominal.asset.v2.AssetService/SearchAssets",
1497            );
1498            let mut req = request.into_request();
1499            req.extensions_mut()
1500                .insert(
1501                    GrpcMethod::new("nominal.asset.v2.AssetService", "SearchAssets"),
1502                );
1503            self.inner.unary(req, path, codec).await
1504        }
1505        pub async fn batch_edit_asset_metadata(
1506            &mut self,
1507            request: impl tonic::IntoRequest<super::BatchEditAssetMetadataRequest>,
1508        ) -> std::result::Result<
1509            tonic::Response<super::BatchEditAssetMetadataResponse>,
1510            tonic::Status,
1511        > {
1512            self.inner
1513                .ready()
1514                .await
1515                .map_err(|e| {
1516                    tonic::Status::unknown(
1517                        format!("Service was not ready: {}", e.into()),
1518                    )
1519                })?;
1520            let codec = tonic::codec::ProstCodec::default();
1521            let path = http::uri::PathAndQuery::from_static(
1522                "/nominal.asset.v2.AssetService/BatchEditAssetMetadata",
1523            );
1524            let mut req = request.into_request();
1525            req.extensions_mut()
1526                .insert(
1527                    GrpcMethod::new(
1528                        "nominal.asset.v2.AssetService",
1529                        "BatchEditAssetMetadata",
1530                    ),
1531                );
1532            self.inner.unary(req, path, codec).await
1533        }
1534        pub async fn search_types(
1535            &mut self,
1536            request: impl tonic::IntoRequest<super::SearchTypesRequest>,
1537        ) -> std::result::Result<
1538            tonic::Response<super::SearchTypesResponse>,
1539            tonic::Status,
1540        > {
1541            self.inner
1542                .ready()
1543                .await
1544                .map_err(|e| {
1545                    tonic::Status::unknown(
1546                        format!("Service was not ready: {}", e.into()),
1547                    )
1548                })?;
1549            let codec = tonic::codec::ProstCodec::default();
1550            let path = http::uri::PathAndQuery::from_static(
1551                "/nominal.asset.v2.AssetService/SearchTypes",
1552            );
1553            let mut req = request.into_request();
1554            req.extensions_mut()
1555                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "SearchTypes"));
1556            self.inner.unary(req, path, codec).await
1557        }
1558        pub async fn update_asset_attachments(
1559            &mut self,
1560            request: impl tonic::IntoRequest<super::UpdateAssetAttachmentsRequest>,
1561        ) -> std::result::Result<
1562            tonic::Response<super::UpdateAssetAttachmentsResponse>,
1563            tonic::Status,
1564        > {
1565            self.inner
1566                .ready()
1567                .await
1568                .map_err(|e| {
1569                    tonic::Status::unknown(
1570                        format!("Service was not ready: {}", e.into()),
1571                    )
1572                })?;
1573            let codec = tonic::codec::ProstCodec::default();
1574            let path = http::uri::PathAndQuery::from_static(
1575                "/nominal.asset.v2.AssetService/UpdateAssetAttachments",
1576            );
1577            let mut req = request.into_request();
1578            req.extensions_mut()
1579                .insert(
1580                    GrpcMethod::new(
1581                        "nominal.asset.v2.AssetService",
1582                        "UpdateAssetAttachments",
1583                    ),
1584                );
1585            self.inner.unary(req, path, codec).await
1586        }
1587        pub async fn update_asset_ref_names(
1588            &mut self,
1589            request: impl tonic::IntoRequest<super::UpdateAssetRefNamesRequest>,
1590        ) -> std::result::Result<
1591            tonic::Response<super::UpdateAssetRefNamesResponse>,
1592            tonic::Status,
1593        > {
1594            self.inner
1595                .ready()
1596                .await
1597                .map_err(|e| {
1598                    tonic::Status::unknown(
1599                        format!("Service was not ready: {}", e.into()),
1600                    )
1601                })?;
1602            let codec = tonic::codec::ProstCodec::default();
1603            let path = http::uri::PathAndQuery::from_static(
1604                "/nominal.asset.v2.AssetService/UpdateAssetRefNames",
1605            );
1606            let mut req = request.into_request();
1607            req.extensions_mut()
1608                .insert(
1609                    GrpcMethod::new(
1610                        "nominal.asset.v2.AssetService",
1611                        "UpdateAssetRefNames",
1612                    ),
1613                );
1614            self.inner.unary(req, path, codec).await
1615        }
1616        pub async fn create_type(
1617            &mut self,
1618            request: impl tonic::IntoRequest<super::CreateTypeRequest>,
1619        ) -> std::result::Result<
1620            tonic::Response<super::CreateTypeResponse>,
1621            tonic::Status,
1622        > {
1623            self.inner
1624                .ready()
1625                .await
1626                .map_err(|e| {
1627                    tonic::Status::unknown(
1628                        format!("Service was not ready: {}", e.into()),
1629                    )
1630                })?;
1631            let codec = tonic::codec::ProstCodec::default();
1632            let path = http::uri::PathAndQuery::from_static(
1633                "/nominal.asset.v2.AssetService/CreateType",
1634            );
1635            let mut req = request.into_request();
1636            req.extensions_mut()
1637                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "CreateType"));
1638            self.inner.unary(req, path, codec).await
1639        }
1640        pub async fn update_type(
1641            &mut self,
1642            request: impl tonic::IntoRequest<super::UpdateTypeRequest>,
1643        ) -> std::result::Result<
1644            tonic::Response<super::UpdateTypeResponse>,
1645            tonic::Status,
1646        > {
1647            self.inner
1648                .ready()
1649                .await
1650                .map_err(|e| {
1651                    tonic::Status::unknown(
1652                        format!("Service was not ready: {}", e.into()),
1653                    )
1654                })?;
1655            let codec = tonic::codec::ProstCodec::default();
1656            let path = http::uri::PathAndQuery::from_static(
1657                "/nominal.asset.v2.AssetService/UpdateType",
1658            );
1659            let mut req = request.into_request();
1660            req.extensions_mut()
1661                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "UpdateType"));
1662            self.inner.unary(req, path, codec).await
1663        }
1664        pub async fn get_types(
1665            &mut self,
1666            request: impl tonic::IntoRequest<super::GetTypesRequest>,
1667        ) -> std::result::Result<
1668            tonic::Response<super::GetTypesResponse>,
1669            tonic::Status,
1670        > {
1671            self.inner
1672                .ready()
1673                .await
1674                .map_err(|e| {
1675                    tonic::Status::unknown(
1676                        format!("Service was not ready: {}", e.into()),
1677                    )
1678                })?;
1679            let codec = tonic::codec::ProstCodec::default();
1680            let path = http::uri::PathAndQuery::from_static(
1681                "/nominal.asset.v2.AssetService/GetTypes",
1682            );
1683            let mut req = request.into_request();
1684            req.extensions_mut()
1685                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "GetTypes"));
1686            self.inner.unary(req, path, codec).await
1687        }
1688        pub async fn delete_type(
1689            &mut self,
1690            request: impl tonic::IntoRequest<super::DeleteTypeRequest>,
1691        ) -> std::result::Result<
1692            tonic::Response<super::DeleteTypeResponse>,
1693            tonic::Status,
1694        > {
1695            self.inner
1696                .ready()
1697                .await
1698                .map_err(|e| {
1699                    tonic::Status::unknown(
1700                        format!("Service was not ready: {}", e.into()),
1701                    )
1702                })?;
1703            let codec = tonic::codec::ProstCodec::default();
1704            let path = http::uri::PathAndQuery::from_static(
1705                "/nominal.asset.v2.AssetService/DeleteType",
1706            );
1707            let mut req = request.into_request();
1708            req.extensions_mut()
1709                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "DeleteType"));
1710            self.inner.unary(req, path, codec).await
1711        }
1712        pub async fn archive_type(
1713            &mut self,
1714            request: impl tonic::IntoRequest<super::ArchiveTypeRequest>,
1715        ) -> std::result::Result<
1716            tonic::Response<super::ArchiveTypeResponse>,
1717            tonic::Status,
1718        > {
1719            self.inner
1720                .ready()
1721                .await
1722                .map_err(|e| {
1723                    tonic::Status::unknown(
1724                        format!("Service was not ready: {}", e.into()),
1725                    )
1726                })?;
1727            let codec = tonic::codec::ProstCodec::default();
1728            let path = http::uri::PathAndQuery::from_static(
1729                "/nominal.asset.v2.AssetService/ArchiveType",
1730            );
1731            let mut req = request.into_request();
1732            req.extensions_mut()
1733                .insert(GrpcMethod::new("nominal.asset.v2.AssetService", "ArchiveType"));
1734            self.inner.unary(req, path, codec).await
1735        }
1736        pub async fn unarchive_type(
1737            &mut self,
1738            request: impl tonic::IntoRequest<super::UnarchiveTypeRequest>,
1739        ) -> std::result::Result<
1740            tonic::Response<super::UnarchiveTypeResponse>,
1741            tonic::Status,
1742        > {
1743            self.inner
1744                .ready()
1745                .await
1746                .map_err(|e| {
1747                    tonic::Status::unknown(
1748                        format!("Service was not ready: {}", e.into()),
1749                    )
1750                })?;
1751            let codec = tonic::codec::ProstCodec::default();
1752            let path = http::uri::PathAndQuery::from_static(
1753                "/nominal.asset.v2.AssetService/UnarchiveType",
1754            );
1755            let mut req = request.into_request();
1756            req.extensions_mut()
1757                .insert(
1758                    GrpcMethod::new("nominal.asset.v2.AssetService", "UnarchiveType"),
1759                );
1760            self.inner.unary(req, path, codec).await
1761        }
1762        pub async fn traverse_links(
1763            &mut self,
1764            request: impl tonic::IntoRequest<super::TraverseLinksRequest>,
1765        ) -> std::result::Result<
1766            tonic::Response<super::TraverseLinksResponse>,
1767            tonic::Status,
1768        > {
1769            self.inner
1770                .ready()
1771                .await
1772                .map_err(|e| {
1773                    tonic::Status::unknown(
1774                        format!("Service was not ready: {}", e.into()),
1775                    )
1776                })?;
1777            let codec = tonic::codec::ProstCodec::default();
1778            let path = http::uri::PathAndQuery::from_static(
1779                "/nominal.asset.v2.AssetService/TraverseLinks",
1780            );
1781            let mut req = request.into_request();
1782            req.extensions_mut()
1783                .insert(
1784                    GrpcMethod::new("nominal.asset.v2.AssetService", "TraverseLinks"),
1785                );
1786            self.inner.unary(req, path, codec).await
1787        }
1788    }
1789}