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