Skip to main content

ahri_tre_protocol/
request.rs

1use crate::{
2    access_request::{
3        BrowserCustodianStudyAccessRequestApproveRequest,
4        BrowserCustodianStudyAccessRequestListRequest,
5        BrowserCustodianStudyAccessRequestRejectRequest,
6        BrowserRequesterStudyAccessRequestDetailRequest,
7        BrowserRequesterStudyAccessRequestListRequest,
8        BrowserRequesterStudyAccessRequestWithdrawRequest,
9        BrowserStudyAccessRequestSubmissionRequest,
10    },
11    asset::{
12        AssetDuoClearRequest, AssetDuoListRequest, AssetDuoReplaceRequest, AssetGetRequest,
13        AssetListRequest, AssetVersionsRequest,
14    },
15    datafile::GetDataFileMetadataRequest,
16    datafile::{
17        BrowserDataFileSearchRequest, ExportDataFileRequest, ListDataFilesRequest,
18        SearchDataFilesRequest,
19    },
20    dataset::{
21        BrowserDatasetSearchRequest, DatasetDataRequest, DatasetTransformRequest,
22        ExportDatasetRequest, GetDatasetMetadataRequest, ListDatasetsRequest,
23        PreviewDatasetRequest, SearchDatasetsRequest,
24    },
25    datastore::{BrowserDatastoreDiscoveryRequest, DatastoreInfoRequest, DatastorePingRequest},
26    dictionary::{
27        AddVariableRequest, AddVocabularyRequest, BrowserVariableSearchRequest, GetVariableRequest,
28        GetVocabularyRequest, ListVariablesRequest, ListVocabulariesRequest,
29        SearchVariablesRequest, UpdateVariableRequest,
30    },
31    dictionary_discovery::BrowserDictionaryDiscoveryRequest,
32    domain::{
33        AddDomainRequest, BrowserDomainCollectionRequest, BrowserDomainDetailRequest,
34        BrowserDomainStudyCollectionRequest, BrowserDomainVariableCollectionRequest,
35        BrowserDomainVariableDetailRequest, BrowserVocabularyDetailRequest,
36        BrowserVocabularyItemCollectionRequest, BrowserVocabularyMappingCollectionRequest,
37        GetDomainRequest, ListDomainsRequest,
38    },
39    execution_profile::{ExecutionProfileListRequest, ExecutionProfileSelectRequest},
40    ingest::{
41        DatasetCreateFromDatafileRequest, IngestDatasetFileRequest, IngestFileRequest,
42        IngestRedcapRequest, IngestSqlRequest,
43    },
44    lifecycle::{
45        AssetDeleteRequest, DataFileDeleteRequest, DatasetDeleteRequest, DatasetWithdrawRequest,
46        SemanticDeleteRequest, StudyDeleteRequest,
47    },
48    model::{
49        AddEntityRequest, AddRelationRequest, BrowserEntitySearchRequest,
50        BrowserRelationSearchRequest, EntityInstanceAddRequest, EntityInstanceAssetLinkAddRequest,
51        EntityInstanceAssetLinkListRequest, EntityInstanceDatasetLinkAddRequest,
52        EntityInstanceDatasetLinkGetRequest, EntityInstanceDatasetLinkListRequest,
53        EntityInstanceDatasetsRequest, EntityInstanceEnsureFromDatasetRequest,
54        EntityInstanceGetRequest, EntityInstanceListRequest, EntityInstanceMapAddRequest,
55        EntityInstanceMapGetRequest, EntityInstanceMapListRequest, GetEntityRequest,
56        GetRelationRequest, ListEntitiesRequest, ListRelationsRequest, RelationInstanceAddRequest,
57        RelationInstanceAssetLinkAddRequest, RelationInstanceAssetLinkListRequest,
58        RelationInstanceDatasetLinkAddRequest, RelationInstanceDatasetLinkGetRequest,
59        RelationInstanceDatasetLinkListRequest, RelationInstanceEnsureFromDatasetRequest,
60        RelationInstanceGetRequest, RelationInstanceListRequest, RelationInstanceMapAddRequest,
61        RelationInstanceMapGetRequest, RelationInstanceMapListRequest, SearchEntitiesRequest,
62        SearchRelationsRequest,
63    },
64    operation::OperationRef,
65    pagination::PageRequest,
66    readiness::{DaemonDoctorRequest, DaemonVersionRequest},
67    resource_discovery::BrowserResourceDiscoveryRequest,
68    runtime_capabilities::RuntimeCapabilitiesRequest,
69    semantic_discovery::BrowserSemanticCatalogDiscoveryRequest,
70    session::{
71        CurrentStudyClearRequest, CurrentStudyCurrentRequest, CurrentStudySetRequest,
72        SessionCloseAllRequest, SessionCloseRequest, SessionListRequest, SessionOpenRequest,
73        SessionStatusRequest, SessionUseRequest, StudyContextListRequest,
74    },
75    study::{
76        AddStudyDomainRequest, AddStudyRequest, BrowserStudyDetailRequest,
77        BrowserStudyDiscoveryRequest, BrowserStudySearchRequest, GetStudyRequest,
78        ListStudiesRequest, SearchStudiesRequest, StudyAccessGrantRequest, StudyAccessListRequest,
79        StudyAccessRevokeRequest, StudyCustodianMutationRequest, StudyCustodiansListRequest,
80        StudyDuoListRequest, StudyDuoReplaceRequest,
81    },
82    tag::{TagGetRequest, TagListRequest, TagSetRequest},
83    transformation::TransformationListRequest,
84};
85use serde::{Deserialize, Serialize};
86
87pub mod kind {
88    pub const PROTOCOL_INVALID_REQUEST: &str = "protocol.invalid_request";
89    pub const RUNTIME_CAPABILITIES: &str = "runtime.capabilities";
90    pub const EXECUTION_PROFILE_LIST: &str = "execution_profile.list";
91    pub const EXECUTION_PROFILE_SELECT: &str = "execution_profile.select";
92    pub const DAEMON_VERSION: &str = "daemon.version";
93    pub const DAEMON_DOCTOR: &str = "daemon.doctor";
94    pub const DATASTORE_INFO: &str = "datastore.info";
95    pub const DATASTORE_PING: &str = "datastore.ping";
96    pub const BROWSER_DATASTORE_LIST: &str = "browser.datastore.list";
97    pub const BROWSER_STUDY_LIST: &str = "browser.study.list";
98    pub const BROWSER_STUDY_GET: &str = "browser.study.get";
99    pub const BROWSER_STUDY_SEARCH: &str = "browser.study.search";
100    pub const BROWSER_RESOURCE_LIST: &str = "browser.resource.list";
101    pub const BROWSER_DATASET_SEARCH: &str = "browser.dataset.search";
102    pub const BROWSER_DATAFILE_SEARCH: &str = "browser.datafile.search";
103    pub const BROWSER_DICTIONARY_GET: &str = "browser.dictionary.get";
104    pub const BROWSER_VARIABLE_SEARCH: &str = "browser.dictionary.variable.search";
105    pub const BROWSER_DOMAIN_LIST: &str = "browser.domain.list";
106    pub const BROWSER_DOMAIN_GET: &str = "browser.domain.get";
107    pub const BROWSER_DOMAIN_STUDY_LIST: &str = "browser.domain.study.list";
108    pub const BROWSER_DOMAIN_VARIABLE_LIST: &str = "browser.domain.variable.list";
109    pub const BROWSER_DOMAIN_VARIABLE_GET: &str = "browser.domain.variable.get";
110    pub const BROWSER_VOCABULARY_GET: &str = "browser.vocabulary.get";
111    pub const BROWSER_VOCABULARY_ITEM_LIST: &str = "browser.vocabulary.item.list";
112    pub const BROWSER_VOCABULARY_MAPPING_LIST: &str = "browser.vocabulary.mapping.list";
113    pub const BROWSER_SEMANTIC_CATALOG_GET: &str = "browser.semantic_catalog.get";
114    pub const BROWSER_MODEL_ENTITY_SEARCH: &str = "browser.model.entity.search";
115    pub const BROWSER_MODEL_RELATION_SEARCH: &str = "browser.model.relation.search";
116    pub const BROWSER_ACCESS_REQUEST_SUBMIT: &str = "browser.access_request.submit";
117    pub const BROWSER_ACCESS_REQUEST_LIST: &str = "browser.access_request.list";
118    pub const BROWSER_ACCESS_REQUEST_GET: &str = "browser.access_request.get";
119    pub const BROWSER_ACCESS_REQUEST_WITHDRAW: &str = "browser.access_request.withdraw";
120    pub const BROWSER_CUSTODIAN_ACCESS_REQUEST_LIST: &str = "browser.custodian.access_request.list";
121    pub const BROWSER_CUSTODIAN_ACCESS_REQUEST_APPROVE: &str =
122        "browser.custodian.access_request.approve";
123    pub const BROWSER_CUSTODIAN_ACCESS_REQUEST_REJECT: &str =
124        "browser.custodian.access_request.reject";
125    pub const SESSION_LIST: &str = "session.list";
126    pub const SESSION_OPEN: &str = "session.open";
127    pub const SESSION_STATUS: &str = "session.status";
128    pub const SESSION_USE: &str = "session.use";
129    pub const SESSION_CLOSE: &str = "session.close";
130    pub const SESSION_CLOSE_ALL: &str = "session.close_all";
131    pub const CURRENT_STUDY_SET: &str = "study.current.set";
132    pub const CURRENT_STUDY_GET: &str = "study.current.get";
133    pub const CURRENT_STUDY_CLEAR: &str = "study.current.clear";
134    pub const STUDY_CONTEXT_LIST: &str = "study.context.list";
135    pub const DOMAIN_LIST: &str = "domain.list";
136    pub const DOMAIN_GET: &str = "domain.get";
137    pub const DOMAIN_ADD: &str = "domain.add";
138    pub const STUDY_LIST: &str = "study.list";
139    pub const STUDY_SEARCH: &str = "study.search";
140    pub const STUDY_GET: &str = "study.get";
141    pub const STUDY_ADD: &str = "study.add";
142    pub const STUDY_ADD_DOMAIN: &str = "study.add_domain";
143    pub const STUDY_DELETE: &str = "study.delete";
144    pub const STUDY_ACCESS_LIST: &str = "study.access.list";
145    pub const STUDY_ACCESS_GRANT: &str = "study.access.grant";
146    pub const STUDY_ACCESS_REVOKE: &str = "study.access.revoke";
147    pub const STUDY_CUSTODIANS_LIST: &str = "study.custodians.list";
148    pub const STUDY_CUSTODIANS_ADD_DELEGATE: &str = "study.custodians.add_delegate";
149    pub const STUDY_CUSTODIANS_TRANSFER_PRIMARY: &str = "study.custodians.transfer_primary";
150    pub const STUDY_CUSTODIANS_REMOVE_DELEGATE: &str = "study.custodians.remove_delegate";
151    pub const STUDY_DUO_LIST: &str = "study.duo.list";
152    pub const STUDY_DUO_REPLACE: &str = "study.duo.replace";
153    pub const ASSET_LIST: &str = "asset.list";
154    pub const ASSET_GET: &str = "asset.get";
155    pub const ASSET_VERSIONS: &str = "asset.versions";
156    pub const ASSET_DUO_LIST: &str = "asset.duo.list";
157    pub const ASSET_DUO_REPLACE: &str = "asset.duo.replace";
158    pub const ASSET_DUO_CLEAR: &str = "asset.duo.clear";
159    pub const ASSET_DELETE: &str = "asset.delete";
160    pub const DATAFILE_LIST: &str = "datafile.list";
161    pub const DATAFILE_METADATA: &str = "datafile.metadata";
162    pub const DATAFILE_EXPORT: &str = "datafile.export";
163    pub const DATAFILE_DELETE: &str = "datafile.delete";
164    pub const DATAFILE_SEARCH: &str = "datafile.search";
165    pub const DATASET_LIST: &str = "dataset.list";
166    pub const DATASET_METADATA: &str = "dataset.metadata";
167    pub const DATASET_PREVIEW: &str = "dataset.preview";
168    pub const DATASET_DATA: &str = "dataset.data";
169    pub const DATASET_EXPORT: &str = "dataset.export";
170    pub const DATASET_DELETE: &str = "dataset.delete";
171    pub const DATASET_TRANSFORM: &str = "dataset.transform";
172    pub const DATASET_WITHDRAW: &str = "dataset.withdraw";
173    pub const SEMANTIC_DELETE: &str = "semantic.delete";
174    pub const INGEST_DATAFILE: &str = "ingest.datafile";
175    pub const INGEST_DATASET_TABLE: &str = "ingest.dataset.table";
176    pub const INGEST_DATASET_FROM_DATAFILE: &str = "ingest.dataset.from_datafile";
177    pub const INGEST_DATASET_FROM_SQL: &str = "ingest.dataset.from_sql";
178    pub const INGEST_REDCAP_PROJECT: &str = "ingest.redcap.project";
179    pub const TRANSFORMATION_LIST: &str = "transformation.list";
180    pub const DATASET_SEARCH: &str = "dataset.search";
181    pub const VARIABLE_LIST: &str = "variable.list";
182    pub const VARIABLE_GET: &str = "variable.get";
183    pub const VARIABLE_ADD: &str = "variable.add";
184    pub const VARIABLE_UPDATE: &str = "variable.update";
185    pub const VOCABULARY_LIST: &str = "vocabulary.list";
186    pub const VOCABULARY_GET: &str = "vocabulary.get";
187    pub const VOCABULARY_ADD: &str = "vocabulary.add";
188    pub const TAG_LIST: &str = "tag.list";
189    pub const TAG_GET: &str = "tag.get";
190    pub const TAG_SET: &str = "tag.set";
191    pub const DICTIONARY_VARIABLE_SEARCH: &str = "dictionary.variable.search";
192    pub const MODEL_ENTITY_SEARCH: &str = "model.entity.search";
193    pub const MODEL_RELATION_SEARCH: &str = "model.relation.search";
194    pub const ENTITY_LIST: &str = "entity.list";
195    pub const ENTITY_GET: &str = "entity.get";
196    pub const ENTITY_ADD: &str = "entity.add";
197    pub const ENTITY_INSTANCE_GET: &str = "entity.instance.get";
198    pub const ENTITY_INSTANCE_LIST: &str = "entity.instance.list";
199    pub const ENTITY_INSTANCE_ADD: &str = "entity.instance.add";
200    pub const ENTITY_INSTANCE_ENSURE_FROM_DATASET: &str = "entity.instance.ensure_from_dataset";
201    pub const ENTITY_INSTANCE_MAP_ADD: &str = "entity.instance.map.add";
202    pub const ENTITY_INSTANCE_MAP_GET: &str = "entity.instance.map.get";
203    pub const ENTITY_INSTANCE_MAP_LIST: &str = "entity.instance.map.list";
204    pub const ENTITY_INSTANCE_ASSET_LINK_ADD: &str = "entity.instance.asset_link.add";
205    pub const ENTITY_INSTANCE_ASSET_LINK_LIST: &str = "entity.instance.asset_link.list";
206    pub const ENTITY_INSTANCE_DATASET_LINK_ADD: &str = "entity.instance.dataset_link.add";
207    pub const ENTITY_INSTANCE_DATASETS: &str = "entity.instance.datasets";
208    pub const ENTITY_INSTANCE_DATASET_LINK_GET: &str = "entity.instance.dataset_link.get";
209    pub const ENTITY_INSTANCE_DATASET_LINK_LIST: &str = "entity.instance.dataset_link.list";
210    pub const ENTITY_RELATION_LIST: &str = "entity_relation.list";
211    pub const ENTITY_RELATION_GET: &str = "entity_relation.get";
212    pub const ENTITY_RELATION_ADD: &str = "entity_relation.add";
213    pub const RELATION_INSTANCE_GET: &str = "entity_relation.instance.get";
214    pub const RELATION_INSTANCE_LIST: &str = "entity_relation.instance.list";
215    pub const RELATION_INSTANCE_ADD: &str = "entity_relation.instance.add";
216    pub const RELATION_INSTANCE_ENSURE_FROM_DATASET: &str =
217        "entity_relation.instance.ensure_from_dataset";
218    pub const RELATION_INSTANCE_MAP_ADD: &str = "entity_relation.instance.map.add";
219    pub const RELATION_INSTANCE_MAP_GET: &str = "entity_relation.instance.map.get";
220    pub const RELATION_INSTANCE_MAP_LIST: &str = "entity_relation.instance.map.list";
221    pub const RELATION_INSTANCE_ASSET_LINK_ADD: &str = "entity_relation.instance.asset_link.add";
222    pub const RELATION_INSTANCE_ASSET_LINK_LIST: &str = "entity_relation.instance.asset_link.list";
223    pub const RELATION_INSTANCE_DATASET_LINK_ADD: &str =
224        "entity_relation.instance.dataset_link.add";
225    pub const RELATION_INSTANCE_DATASET_LINK_GET: &str =
226        "entity_relation.instance.dataset_link.get";
227    pub const RELATION_INSTANCE_DATASET_LINK_LIST: &str =
228        "entity_relation.instance.dataset_link.list";
229    pub const OPERATION_GET: &str = "operation.get";
230    pub const OPERATION_CANCEL: &str = "operation.cancel";
231    pub const OPERATION_LIST: &str = "operation.list";
232    pub const OPERATION_RESULT_GET: &str = "operation.result.get";
233}
234
235#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
236#[serde(tag = "kind", content = "body")]
237pub enum ProtocolRequest {
238    #[serde(rename = "runtime.capabilities")]
239    RuntimeCapabilities(RuntimeCapabilitiesRequest),
240    #[serde(rename = "execution_profile.list")]
241    ExecutionProfileList(ExecutionProfileListRequest),
242    #[serde(rename = "execution_profile.select")]
243    ExecutionProfileSelect(ExecutionProfileSelectRequest),
244    #[serde(rename = "daemon.version")]
245    DaemonVersion(DaemonVersionRequest),
246    #[serde(rename = "daemon.doctor")]
247    DaemonDoctor(DaemonDoctorRequest),
248    #[serde(rename = "datastore.ping")]
249    DatastorePing(DatastorePingRequest),
250    #[serde(rename = "datastore.info")]
251    DatastoreInfo(DatastoreInfoRequest),
252    #[serde(rename = "browser.datastore.list")]
253    BrowserDatastoreList(BrowserDatastoreDiscoveryRequest),
254    #[serde(rename = "browser.study.list")]
255    BrowserStudyList(BrowserStudyDiscoveryRequest),
256    #[serde(rename = "browser.study.get")]
257    BrowserStudyGet(BrowserStudyDetailRequest),
258    #[serde(rename = "browser.study.search")]
259    BrowserStudySearch(BrowserStudySearchRequest),
260    #[serde(rename = "browser.resource.list")]
261    BrowserResourceList(BrowserResourceDiscoveryRequest),
262    #[serde(rename = "browser.dataset.search")]
263    BrowserDatasetSearch(BrowserDatasetSearchRequest),
264    #[serde(rename = "browser.datafile.search")]
265    BrowserDataFileSearch(BrowserDataFileSearchRequest),
266    #[serde(rename = "browser.dictionary.get")]
267    BrowserDictionaryGet(BrowserDictionaryDiscoveryRequest),
268    #[serde(rename = "browser.dictionary.variable.search")]
269    BrowserVariableSearch(BrowserVariableSearchRequest),
270    #[serde(rename = "browser.domain.list")]
271    BrowserDomainList(BrowserDomainCollectionRequest),
272    #[serde(rename = "browser.domain.get")]
273    BrowserDomainGet(BrowserDomainDetailRequest),
274    #[serde(rename = "browser.domain.study.list")]
275    BrowserDomainStudyList(BrowserDomainStudyCollectionRequest),
276    #[serde(rename = "browser.domain.variable.list")]
277    BrowserDomainVariableList(BrowserDomainVariableCollectionRequest),
278    #[serde(rename = "browser.domain.variable.get")]
279    BrowserDomainVariableGet(BrowserDomainVariableDetailRequest),
280    #[serde(rename = "browser.vocabulary.get")]
281    BrowserVocabularyGet(BrowserVocabularyDetailRequest),
282    #[serde(rename = "browser.vocabulary.item.list")]
283    BrowserVocabularyItemList(BrowserVocabularyItemCollectionRequest),
284    #[serde(rename = "browser.vocabulary.mapping.list")]
285    BrowserVocabularyMappingList(BrowserVocabularyMappingCollectionRequest),
286    #[serde(rename = "browser.semantic_catalog.get")]
287    BrowserSemanticCatalogGet(BrowserSemanticCatalogDiscoveryRequest),
288    #[serde(rename = "browser.model.entity.search")]
289    BrowserModelEntitySearch(BrowserEntitySearchRequest),
290    #[serde(rename = "browser.model.relation.search")]
291    BrowserModelRelationSearch(BrowserRelationSearchRequest),
292    #[serde(rename = "browser.access_request.submit")]
293    BrowserAccessRequestSubmit(BrowserStudyAccessRequestSubmissionRequest),
294    #[serde(rename = "browser.access_request.list")]
295    BrowserAccessRequestList(BrowserRequesterStudyAccessRequestListRequest),
296    #[serde(rename = "browser.access_request.get")]
297    BrowserAccessRequestGet(BrowserRequesterStudyAccessRequestDetailRequest),
298    #[serde(rename = "browser.access_request.withdraw")]
299    BrowserAccessRequestWithdraw(BrowserRequesterStudyAccessRequestWithdrawRequest),
300    #[serde(rename = "browser.custodian.access_request.list")]
301    BrowserCustodianAccessRequestList(BrowserCustodianStudyAccessRequestListRequest),
302    #[serde(rename = "browser.custodian.access_request.approve")]
303    BrowserCustodianAccessRequestApprove(BrowserCustodianStudyAccessRequestApproveRequest),
304    #[serde(rename = "browser.custodian.access_request.reject")]
305    BrowserCustodianAccessRequestReject(BrowserCustodianStudyAccessRequestRejectRequest),
306    #[serde(rename = "session.list")]
307    SessionList(SessionListRequest),
308    #[serde(rename = "session.open")]
309    SessionOpen(SessionOpenRequest),
310    #[serde(rename = "session.status")]
311    SessionStatus(SessionStatusRequest),
312    #[serde(rename = "session.use")]
313    SessionUse(SessionUseRequest),
314    #[serde(rename = "session.close")]
315    SessionClose(SessionCloseRequest),
316    #[serde(rename = "session.close_all")]
317    SessionCloseAll(SessionCloseAllRequest),
318    #[serde(rename = "study.current.set")]
319    CurrentStudySet(CurrentStudySetRequest),
320    #[serde(rename = "study.current.get")]
321    CurrentStudyCurrent(CurrentStudyCurrentRequest),
322    #[serde(rename = "study.current.clear")]
323    CurrentStudyClear(CurrentStudyClearRequest),
324    #[serde(rename = "study.context.list")]
325    StudyContextList(StudyContextListRequest),
326    #[serde(rename = "domain.list")]
327    DomainList(ListDomainsRequest),
328    #[serde(rename = "domain.get")]
329    DomainGet(GetDomainRequest),
330    #[serde(rename = "domain.add")]
331    DomainAdd(AddDomainRequest),
332    #[serde(rename = "study.list")]
333    StudyList(ListStudiesRequest),
334    #[serde(rename = "study.search")]
335    StudySearch(SearchStudiesRequest),
336    #[serde(rename = "study.get")]
337    StudyGet(GetStudyRequest),
338    #[serde(rename = "study.add")]
339    StudyAdd(AddStudyRequest),
340    #[serde(rename = "study.add_domain")]
341    StudyAddDomain(AddStudyDomainRequest),
342    #[serde(rename = "study.delete")]
343    StudyDelete(StudyDeleteRequest),
344    #[serde(rename = "study.access.list")]
345    StudyAccessList(StudyAccessListRequest),
346    #[serde(rename = "study.access.grant")]
347    StudyAccessGrant(StudyAccessGrantRequest),
348    #[serde(rename = "study.access.revoke")]
349    StudyAccessRevoke(StudyAccessRevokeRequest),
350    #[serde(rename = "study.custodians.list")]
351    StudyCustodiansList(StudyCustodiansListRequest),
352    #[serde(rename = "study.custodians.add_delegate")]
353    StudyCustodiansAddDelegate(StudyCustodianMutationRequest),
354    #[serde(rename = "study.custodians.transfer_primary")]
355    StudyCustodiansTransferPrimary(StudyCustodianMutationRequest),
356    #[serde(rename = "study.custodians.remove_delegate")]
357    StudyCustodiansRemoveDelegate(StudyCustodianMutationRequest),
358    #[serde(rename = "study.duo.list")]
359    StudyDuoList(StudyDuoListRequest),
360    #[serde(rename = "study.duo.replace")]
361    StudyDuoReplace(StudyDuoReplaceRequest),
362    #[serde(rename = "asset.list")]
363    AssetList(AssetListRequest),
364    #[serde(rename = "asset.get")]
365    AssetGet(AssetGetRequest),
366    #[serde(rename = "asset.versions")]
367    AssetVersions(AssetVersionsRequest),
368    #[serde(rename = "asset.duo.list")]
369    AssetDuoList(AssetDuoListRequest),
370    #[serde(rename = "asset.duo.replace")]
371    AssetDuoReplace(AssetDuoReplaceRequest),
372    #[serde(rename = "asset.duo.clear")]
373    AssetDuoClear(AssetDuoClearRequest),
374    #[serde(rename = "asset.delete")]
375    AssetDelete(AssetDeleteRequest),
376    #[serde(rename = "datafile.list")]
377    DataFileList(ListDataFilesRequest),
378    #[serde(rename = "datafile.metadata")]
379    DataFileMetadata(GetDataFileMetadataRequest),
380    #[serde(rename = "datafile.export")]
381    DataFileExport(ExportDataFileRequest),
382    #[serde(rename = "datafile.delete")]
383    DataFileDelete(DataFileDeleteRequest),
384    #[serde(rename = "datafile.search")]
385    DataFileSearch(SearchDataFilesRequest),
386    #[serde(rename = "dataset.list")]
387    DatasetList(ListDatasetsRequest),
388    #[serde(rename = "dataset.metadata")]
389    DatasetMetadata(GetDatasetMetadataRequest),
390    #[serde(rename = "dataset.preview")]
391    DatasetPreview(PreviewDatasetRequest),
392    #[serde(rename = "dataset.data")]
393    DatasetData(DatasetDataRequest),
394    #[serde(rename = "dataset.export")]
395    DatasetExport(ExportDatasetRequest),
396    #[serde(rename = "dataset.delete")]
397    DatasetDelete(DatasetDeleteRequest),
398    #[serde(rename = "dataset.transform")]
399    DatasetTransform(DatasetTransformRequest),
400    #[serde(rename = "dataset.withdraw")]
401    DatasetWithdraw(DatasetWithdrawRequest),
402    #[serde(rename = "semantic.delete")]
403    SemanticDelete(SemanticDeleteRequest),
404    #[serde(rename = "ingest.datafile")]
405    IngestFile(IngestFileRequest),
406    #[serde(rename = "ingest.dataset.table")]
407    IngestDatasetFile(IngestDatasetFileRequest),
408    #[serde(rename = "ingest.dataset.from_datafile")]
409    DatasetCreateFromDatafile(DatasetCreateFromDatafileRequest),
410    #[serde(rename = "ingest.dataset.from_sql")]
411    IngestSql(IngestSqlRequest),
412    #[serde(rename = "ingest.redcap.project")]
413    IngestRedcap(IngestRedcapRequest),
414    #[serde(rename = "transformation.list")]
415    TransformationList(TransformationListRequest),
416    #[serde(rename = "dataset.search")]
417    DatasetSearch(SearchDatasetsRequest),
418    #[serde(rename = "variable.list")]
419    VariableList(ListVariablesRequest),
420    #[serde(rename = "variable.get")]
421    VariableGet(GetVariableRequest),
422    #[serde(rename = "variable.add")]
423    VariableAdd(AddVariableRequest),
424    #[serde(rename = "variable.update")]
425    VariableUpdate(UpdateVariableRequest),
426    #[serde(rename = "vocabulary.list")]
427    VocabularyList(ListVocabulariesRequest),
428    #[serde(rename = "vocabulary.get")]
429    VocabularyGet(GetVocabularyRequest),
430    #[serde(rename = "vocabulary.add")]
431    VocabularyAdd(AddVocabularyRequest),
432    #[serde(rename = "tag.list")]
433    TagList(TagListRequest),
434    #[serde(rename = "tag.get")]
435    TagGet(TagGetRequest),
436    #[serde(rename = "tag.set")]
437    TagSet(TagSetRequest),
438    #[serde(rename = "dictionary.variable.search")]
439    DictionaryVariableSearch(SearchVariablesRequest),
440    #[serde(rename = "model.entity.search")]
441    ModelEntitySearch(SearchEntitiesRequest),
442    #[serde(rename = "model.relation.search")]
443    ModelRelationSearch(SearchRelationsRequest),
444    #[serde(rename = "entity.list")]
445    EntityList(ListEntitiesRequest),
446    #[serde(rename = "entity.get")]
447    EntityGet(GetEntityRequest),
448    #[serde(rename = "entity.add")]
449    EntityAdd(AddEntityRequest),
450    #[serde(rename = "entity.instance.get")]
451    EntityInstanceGet(EntityInstanceGetRequest),
452    #[serde(rename = "entity.instance.list")]
453    EntityInstanceList(EntityInstanceListRequest),
454    #[serde(rename = "entity.instance.add")]
455    EntityInstanceAdd(EntityInstanceAddRequest),
456    #[serde(rename = "entity.instance.ensure_from_dataset")]
457    EntityInstanceEnsureFromDataset(EntityInstanceEnsureFromDatasetRequest),
458    #[serde(rename = "entity.instance.map.add")]
459    EntityInstanceMapAdd(EntityInstanceMapAddRequest),
460    #[serde(rename = "entity.instance.map.get")]
461    EntityInstanceMapGet(EntityInstanceMapGetRequest),
462    #[serde(rename = "entity.instance.map.list")]
463    EntityInstanceMapList(EntityInstanceMapListRequest),
464    #[serde(rename = "entity.instance.asset_link.add")]
465    EntityInstanceAssetLinkAdd(EntityInstanceAssetLinkAddRequest),
466    #[serde(rename = "entity.instance.asset_link.list")]
467    EntityInstanceAssetLinkList(EntityInstanceAssetLinkListRequest),
468    #[serde(rename = "entity.instance.dataset_link.add")]
469    EntityInstanceDatasetLinkAdd(EntityInstanceDatasetLinkAddRequest),
470    #[serde(rename = "entity.instance.datasets")]
471    EntityInstanceDatasets(EntityInstanceDatasetsRequest),
472    #[serde(rename = "entity.instance.dataset_link.get")]
473    EntityInstanceDatasetLinkGet(EntityInstanceDatasetLinkGetRequest),
474    #[serde(rename = "entity.instance.dataset_link.list")]
475    EntityInstanceDatasetLinkList(EntityInstanceDatasetLinkListRequest),
476    #[serde(rename = "entity_relation.list")]
477    EntityRelationList(ListRelationsRequest),
478    #[serde(rename = "entity_relation.get")]
479    EntityRelationGet(GetRelationRequest),
480    #[serde(rename = "entity_relation.add")]
481    EntityRelationAdd(AddRelationRequest),
482    #[serde(rename = "entity_relation.instance.get")]
483    RelationInstanceGet(RelationInstanceGetRequest),
484    #[serde(rename = "entity_relation.instance.list")]
485    RelationInstanceList(RelationInstanceListRequest),
486    #[serde(rename = "entity_relation.instance.add")]
487    RelationInstanceAdd(RelationInstanceAddRequest),
488    #[serde(rename = "entity_relation.instance.ensure_from_dataset")]
489    RelationInstanceEnsureFromDataset(RelationInstanceEnsureFromDatasetRequest),
490    #[serde(rename = "entity_relation.instance.map.add")]
491    RelationInstanceMapAdd(RelationInstanceMapAddRequest),
492    #[serde(rename = "entity_relation.instance.map.get")]
493    RelationInstanceMapGet(RelationInstanceMapGetRequest),
494    #[serde(rename = "entity_relation.instance.map.list")]
495    RelationInstanceMapList(RelationInstanceMapListRequest),
496    #[serde(rename = "entity_relation.instance.asset_link.add")]
497    RelationInstanceAssetLinkAdd(RelationInstanceAssetLinkAddRequest),
498    #[serde(rename = "entity_relation.instance.asset_link.list")]
499    RelationInstanceAssetLinkList(RelationInstanceAssetLinkListRequest),
500    #[serde(rename = "entity_relation.instance.dataset_link.add")]
501    RelationInstanceDatasetLinkAdd(RelationInstanceDatasetLinkAddRequest),
502    #[serde(rename = "entity_relation.instance.dataset_link.get")]
503    RelationInstanceDatasetLinkGet(RelationInstanceDatasetLinkGetRequest),
504    #[serde(rename = "entity_relation.instance.dataset_link.list")]
505    RelationInstanceDatasetLinkList(RelationInstanceDatasetLinkListRequest),
506    #[serde(rename = "operation.get")]
507    OperationGet(OperationGetRequest),
508    #[serde(rename = "operation.cancel")]
509    OperationCancel(OperationCancelRequest),
510    #[serde(rename = "operation.list")]
511    OperationList(OperationListRequest),
512    #[serde(rename = "operation.result.get")]
513    OperationResultGet(OperationResultGetRequest),
514}
515
516impl ProtocolRequest {
517    pub const fn kind(&self) -> &'static str {
518        match self {
519            Self::RuntimeCapabilities(_) => kind::RUNTIME_CAPABILITIES,
520            Self::ExecutionProfileList(_) => kind::EXECUTION_PROFILE_LIST,
521            Self::ExecutionProfileSelect(_) => kind::EXECUTION_PROFILE_SELECT,
522            Self::DaemonVersion(_) => kind::DAEMON_VERSION,
523            Self::DaemonDoctor(_) => kind::DAEMON_DOCTOR,
524            Self::DatastorePing(_) => kind::DATASTORE_PING,
525            Self::DatastoreInfo(_) => kind::DATASTORE_INFO,
526            Self::BrowserDatastoreList(_) => kind::BROWSER_DATASTORE_LIST,
527            Self::BrowserStudyList(_) => kind::BROWSER_STUDY_LIST,
528            Self::BrowserStudyGet(_) => kind::BROWSER_STUDY_GET,
529            Self::BrowserStudySearch(_) => kind::BROWSER_STUDY_SEARCH,
530            Self::BrowserResourceList(_) => kind::BROWSER_RESOURCE_LIST,
531            Self::BrowserDatasetSearch(_) => kind::BROWSER_DATASET_SEARCH,
532            Self::BrowserDataFileSearch(_) => kind::BROWSER_DATAFILE_SEARCH,
533            Self::BrowserDictionaryGet(_) => kind::BROWSER_DICTIONARY_GET,
534            Self::BrowserVariableSearch(_) => kind::BROWSER_VARIABLE_SEARCH,
535            Self::BrowserDomainList(_) => kind::BROWSER_DOMAIN_LIST,
536            Self::BrowserDomainGet(_) => kind::BROWSER_DOMAIN_GET,
537            Self::BrowserDomainStudyList(_) => kind::BROWSER_DOMAIN_STUDY_LIST,
538            Self::BrowserDomainVariableList(_) => kind::BROWSER_DOMAIN_VARIABLE_LIST,
539            Self::BrowserDomainVariableGet(_) => kind::BROWSER_DOMAIN_VARIABLE_GET,
540            Self::BrowserVocabularyGet(_) => kind::BROWSER_VOCABULARY_GET,
541            Self::BrowserVocabularyItemList(_) => kind::BROWSER_VOCABULARY_ITEM_LIST,
542            Self::BrowserVocabularyMappingList(_) => kind::BROWSER_VOCABULARY_MAPPING_LIST,
543            Self::BrowserSemanticCatalogGet(_) => kind::BROWSER_SEMANTIC_CATALOG_GET,
544            Self::BrowserModelEntitySearch(_) => kind::BROWSER_MODEL_ENTITY_SEARCH,
545            Self::BrowserModelRelationSearch(_) => kind::BROWSER_MODEL_RELATION_SEARCH,
546            Self::BrowserAccessRequestSubmit(_) => kind::BROWSER_ACCESS_REQUEST_SUBMIT,
547            Self::BrowserAccessRequestList(_) => kind::BROWSER_ACCESS_REQUEST_LIST,
548            Self::BrowserAccessRequestGet(_) => kind::BROWSER_ACCESS_REQUEST_GET,
549            Self::BrowserAccessRequestWithdraw(_) => kind::BROWSER_ACCESS_REQUEST_WITHDRAW,
550            Self::BrowserCustodianAccessRequestList(_) => {
551                kind::BROWSER_CUSTODIAN_ACCESS_REQUEST_LIST
552            }
553            Self::BrowserCustodianAccessRequestApprove(_) => {
554                kind::BROWSER_CUSTODIAN_ACCESS_REQUEST_APPROVE
555            }
556            Self::BrowserCustodianAccessRequestReject(_) => {
557                kind::BROWSER_CUSTODIAN_ACCESS_REQUEST_REJECT
558            }
559            Self::SessionList(_) => kind::SESSION_LIST,
560            Self::SessionOpen(_) => kind::SESSION_OPEN,
561            Self::SessionStatus(_) => kind::SESSION_STATUS,
562            Self::SessionUse(_) => kind::SESSION_USE,
563            Self::SessionClose(_) => kind::SESSION_CLOSE,
564            Self::SessionCloseAll(_) => kind::SESSION_CLOSE_ALL,
565            Self::CurrentStudySet(_) => kind::CURRENT_STUDY_SET,
566            Self::CurrentStudyCurrent(_) => kind::CURRENT_STUDY_GET,
567            Self::CurrentStudyClear(_) => kind::CURRENT_STUDY_CLEAR,
568            Self::StudyContextList(_) => kind::STUDY_CONTEXT_LIST,
569            Self::DomainList(_) => kind::DOMAIN_LIST,
570            Self::DomainGet(_) => kind::DOMAIN_GET,
571            Self::DomainAdd(_) => kind::DOMAIN_ADD,
572            Self::StudyList(_) => kind::STUDY_LIST,
573            Self::StudySearch(_) => kind::STUDY_SEARCH,
574            Self::StudyGet(_) => kind::STUDY_GET,
575            Self::StudyAdd(_) => kind::STUDY_ADD,
576            Self::StudyAddDomain(_) => kind::STUDY_ADD_DOMAIN,
577            Self::StudyDelete(_) => kind::STUDY_DELETE,
578            Self::StudyAccessList(_) => kind::STUDY_ACCESS_LIST,
579            Self::StudyAccessGrant(_) => kind::STUDY_ACCESS_GRANT,
580            Self::StudyAccessRevoke(_) => kind::STUDY_ACCESS_REVOKE,
581            Self::StudyCustodiansList(_) => kind::STUDY_CUSTODIANS_LIST,
582            Self::StudyCustodiansAddDelegate(_) => kind::STUDY_CUSTODIANS_ADD_DELEGATE,
583            Self::StudyCustodiansTransferPrimary(_) => kind::STUDY_CUSTODIANS_TRANSFER_PRIMARY,
584            Self::StudyCustodiansRemoveDelegate(_) => kind::STUDY_CUSTODIANS_REMOVE_DELEGATE,
585            Self::StudyDuoList(_) => kind::STUDY_DUO_LIST,
586            Self::StudyDuoReplace(_) => kind::STUDY_DUO_REPLACE,
587            Self::AssetList(_) => kind::ASSET_LIST,
588            Self::AssetGet(_) => kind::ASSET_GET,
589            Self::AssetVersions(_) => kind::ASSET_VERSIONS,
590            Self::AssetDuoList(_) => kind::ASSET_DUO_LIST,
591            Self::AssetDuoReplace(_) => kind::ASSET_DUO_REPLACE,
592            Self::AssetDuoClear(_) => kind::ASSET_DUO_CLEAR,
593            Self::AssetDelete(_) => kind::ASSET_DELETE,
594            Self::DataFileList(_) => kind::DATAFILE_LIST,
595            Self::DataFileMetadata(_) => kind::DATAFILE_METADATA,
596            Self::DataFileExport(_) => kind::DATAFILE_EXPORT,
597            Self::DataFileDelete(_) => kind::DATAFILE_DELETE,
598            Self::DataFileSearch(_) => kind::DATAFILE_SEARCH,
599            Self::DatasetList(_) => kind::DATASET_LIST,
600            Self::DatasetMetadata(_) => kind::DATASET_METADATA,
601            Self::DatasetPreview(_) => kind::DATASET_PREVIEW,
602            Self::DatasetData(_) => kind::DATASET_DATA,
603            Self::DatasetExport(_) => kind::DATASET_EXPORT,
604            Self::DatasetDelete(_) => kind::DATASET_DELETE,
605            Self::DatasetTransform(_) => kind::DATASET_TRANSFORM,
606            Self::DatasetWithdraw(_) => kind::DATASET_WITHDRAW,
607            Self::SemanticDelete(_) => kind::SEMANTIC_DELETE,
608            Self::IngestFile(_) => kind::INGEST_DATAFILE,
609            Self::IngestDatasetFile(_) => kind::INGEST_DATASET_TABLE,
610            Self::DatasetCreateFromDatafile(_) => kind::INGEST_DATASET_FROM_DATAFILE,
611            Self::IngestSql(_) => kind::INGEST_DATASET_FROM_SQL,
612            Self::IngestRedcap(_) => kind::INGEST_REDCAP_PROJECT,
613            Self::TransformationList(_) => kind::TRANSFORMATION_LIST,
614            Self::DatasetSearch(_) => kind::DATASET_SEARCH,
615            Self::VariableList(_) => kind::VARIABLE_LIST,
616            Self::VariableGet(_) => kind::VARIABLE_GET,
617            Self::VariableAdd(_) => kind::VARIABLE_ADD,
618            Self::VariableUpdate(_) => kind::VARIABLE_UPDATE,
619            Self::VocabularyList(_) => kind::VOCABULARY_LIST,
620            Self::VocabularyGet(_) => kind::VOCABULARY_GET,
621            Self::VocabularyAdd(_) => kind::VOCABULARY_ADD,
622            Self::TagList(_) => kind::TAG_LIST,
623            Self::TagGet(_) => kind::TAG_GET,
624            Self::TagSet(_) => kind::TAG_SET,
625            Self::DictionaryVariableSearch(_) => kind::DICTIONARY_VARIABLE_SEARCH,
626            Self::ModelEntitySearch(_) => kind::MODEL_ENTITY_SEARCH,
627            Self::ModelRelationSearch(_) => kind::MODEL_RELATION_SEARCH,
628            Self::EntityList(_) => kind::ENTITY_LIST,
629            Self::EntityGet(_) => kind::ENTITY_GET,
630            Self::EntityAdd(_) => kind::ENTITY_ADD,
631            Self::EntityInstanceGet(_) => kind::ENTITY_INSTANCE_GET,
632            Self::EntityInstanceList(_) => kind::ENTITY_INSTANCE_LIST,
633            Self::EntityInstanceAdd(_) => kind::ENTITY_INSTANCE_ADD,
634            Self::EntityInstanceEnsureFromDataset(_) => kind::ENTITY_INSTANCE_ENSURE_FROM_DATASET,
635            Self::EntityInstanceMapAdd(_) => kind::ENTITY_INSTANCE_MAP_ADD,
636            Self::EntityInstanceMapGet(_) => kind::ENTITY_INSTANCE_MAP_GET,
637            Self::EntityInstanceMapList(_) => kind::ENTITY_INSTANCE_MAP_LIST,
638            Self::EntityInstanceAssetLinkAdd(_) => kind::ENTITY_INSTANCE_ASSET_LINK_ADD,
639            Self::EntityInstanceAssetLinkList(_) => kind::ENTITY_INSTANCE_ASSET_LINK_LIST,
640            Self::EntityInstanceDatasetLinkAdd(_) => kind::ENTITY_INSTANCE_DATASET_LINK_ADD,
641            Self::EntityInstanceDatasets(_) => kind::ENTITY_INSTANCE_DATASETS,
642            Self::EntityInstanceDatasetLinkGet(_) => kind::ENTITY_INSTANCE_DATASET_LINK_GET,
643            Self::EntityInstanceDatasetLinkList(_) => kind::ENTITY_INSTANCE_DATASET_LINK_LIST,
644            Self::EntityRelationList(_) => kind::ENTITY_RELATION_LIST,
645            Self::EntityRelationGet(_) => kind::ENTITY_RELATION_GET,
646            Self::EntityRelationAdd(_) => kind::ENTITY_RELATION_ADD,
647            Self::RelationInstanceGet(_) => kind::RELATION_INSTANCE_GET,
648            Self::RelationInstanceList(_) => kind::RELATION_INSTANCE_LIST,
649            Self::RelationInstanceAdd(_) => kind::RELATION_INSTANCE_ADD,
650            Self::RelationInstanceEnsureFromDataset(_) => {
651                kind::RELATION_INSTANCE_ENSURE_FROM_DATASET
652            }
653            Self::RelationInstanceMapAdd(_) => kind::RELATION_INSTANCE_MAP_ADD,
654            Self::RelationInstanceMapGet(_) => kind::RELATION_INSTANCE_MAP_GET,
655            Self::RelationInstanceMapList(_) => kind::RELATION_INSTANCE_MAP_LIST,
656            Self::RelationInstanceAssetLinkAdd(_) => kind::RELATION_INSTANCE_ASSET_LINK_ADD,
657            Self::RelationInstanceAssetLinkList(_) => kind::RELATION_INSTANCE_ASSET_LINK_LIST,
658            Self::RelationInstanceDatasetLinkAdd(_) => kind::RELATION_INSTANCE_DATASET_LINK_ADD,
659            Self::RelationInstanceDatasetLinkGet(_) => kind::RELATION_INSTANCE_DATASET_LINK_GET,
660            Self::RelationInstanceDatasetLinkList(_) => kind::RELATION_INSTANCE_DATASET_LINK_LIST,
661            Self::OperationGet(_) => kind::OPERATION_GET,
662            Self::OperationCancel(_) => kind::OPERATION_CANCEL,
663            Self::OperationList(_) => kind::OPERATION_LIST,
664            Self::OperationResultGet(_) => kind::OPERATION_RESULT_GET,
665        }
666    }
667}
668
669#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
670pub struct OperationGetRequest {
671    #[serde(default, skip_serializing_if = "Option::is_none")]
672    pub events: Option<PageRequest>,
673    pub session: crate::refs::SessionSelector,
674    pub operation: OperationRef,
675}
676
677#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
678pub struct OperationCancelRequest {
679    pub session: crate::refs::SessionSelector,
680    pub operation: OperationRef,
681}
682
683#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
684pub struct OperationListRequest {
685    pub session: crate::refs::SessionSelector,
686    pub scope: crate::operation::OperationScope,
687    pub page: PageRequest,
688    #[serde(default, skip_serializing_if = "Vec::is_empty")]
689    pub statuses: Vec<crate::operation::OperationStatus>,
690    #[serde(default, skip_serializing_if = "Option::is_none")]
691    pub operation_kind: Option<crate::operation::OperationKind>,
692    #[serde(default, skip_serializing_if = "Option::is_none")]
693    pub created_after: Option<String>,
694    #[serde(default, skip_serializing_if = "Option::is_none")]
695    pub created_before: Option<String>,
696}
697
698#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
699pub struct OperationResultGetRequest {
700    pub session: crate::refs::SessionSelector,
701    pub operation: OperationRef,
702}