Skip to main content

nominal_api/conjure/clients/upload/api/
upload_service.rs

1use conjure_http::endpoint;
2/// The Upload Service manages file uploads to object storage.
3#[conjure_http::conjure_client(name = "UploadService")]
4pub trait UploadService<
5    #[request_writer]
6    O,
7    #[response_body]
8    I: Iterator<
9            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
10        >,
11> {
12    /// Initiates a multipart upload to object storage.
13    /// Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
14    #[endpoint(
15        method = POST,
16        path = "/upload/v1/multipart-upload",
17        name = "initiateMultipartUpload",
18        accept = conjure_http::client::StdResponseDeserializer
19    )]
20    fn initiate_multipart_upload(
21        &self,
22        #[auth]
23        auth_: &conjure_object::BearerToken,
24        #[body(serializer = conjure_http::client::StdRequestSerializer)]
25        upload_request: &super::super::super::super::objects::ingest::api::InitiateMultipartUploadRequest,
26    ) -> Result<
27        super::super::super::super::objects::ingest::api::InitiateMultipartUploadResponse,
28        conjure_http::private::Error,
29    >;
30    /// Lists the parts that have been uploaded for a given uploadId.
31    #[endpoint(
32        method = GET,
33        path = "/upload/v1/multipart-upload/{uploadId}",
34        name = "listParts",
35        accept = conjure_http::client::conjure::CollectionResponseDeserializer
36    )]
37    fn list_parts(
38        &self,
39        #[auth]
40        auth_: &conjure_object::BearerToken,
41        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
42        upload_id: &str,
43        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
44        key: &str,
45    ) -> Result<
46        Vec<super::super::super::super::objects::ingest::api::PartWithSize>,
47        conjure_http::private::Error,
48    >;
49    /// Signs an upload request for a single part.
50    /// Returns a URL that will execute the upload without further authentication.
51    #[endpoint(
52        method = POST,
53        path = "/upload/v1/multipart-upload/{uploadId}",
54        name = "signPart",
55        accept = conjure_http::client::StdResponseDeserializer
56    )]
57    fn sign_part(
58        &self,
59        #[auth]
60        auth_: &conjure_object::BearerToken,
61        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
62        upload_id: &str,
63        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
64        key: &str,
65        #[query(
66            name = "partNumber",
67            encoder = conjure_http::client::conjure::PlainEncoder
68        )]
69        part_number: i32,
70    ) -> Result<
71        super::super::super::super::objects::ingest::api::SignPartResponse,
72        conjure_http::private::Error,
73    >;
74    /// Completes a multipart upload to object storage.
75    /// This should be called after all parts have been uploaded.
76    /// Will throw EmptyMultipartUpload if there are 0 parts.
77    #[endpoint(
78        method = POST,
79        path = "/upload/v1/multipart-upload/{uploadId}/complete",
80        name = "completeMultipartUpload",
81        accept = conjure_http::client::StdResponseDeserializer
82    )]
83    fn complete_multipart_upload(
84        &self,
85        #[auth]
86        auth_: &conjure_object::BearerToken,
87        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
88        upload_id: &str,
89        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
90        key: &str,
91        #[body(serializer = conjure_http::client::StdRequestSerializer)]
92        parts: &[super::super::super::super::objects::ingest::api::Part],
93    ) -> Result<
94        super::super::super::super::objects::ingest::api::CompleteMultipartUploadResponse,
95        conjure_http::private::Error,
96    >;
97    /// Aborts a multipart upload to S3.
98    /// Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId.
99    #[endpoint(
100        method = POST,
101        path = "/upload/v1/multipart-upload/{uploadId}/abort",
102        name = "abortMultipartUpload",
103        accept = conjure_http::client::conjure::EmptyResponseDeserializer
104    )]
105    fn abort_multipart_upload(
106        &self,
107        #[auth]
108        auth_: &conjure_object::BearerToken,
109        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
110        upload_id: &str,
111        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
112        key: &str,
113    ) -> Result<(), conjure_http::private::Error>;
114    /// Uploads a file to S3. Intended for smaller files.
115    #[endpoint(
116        method = POST,
117        path = "/upload/v1/upload-file",
118        name = "uploadFile",
119        accept = conjure_http::client::StdResponseDeserializer
120    )]
121    fn upload_file(
122        &self,
123        #[auth]
124        auth_: &conjure_object::BearerToken,
125        #[query(
126            name = "fileName",
127            encoder = conjure_http::client::conjure::PlainEncoder
128        )]
129        file_name: &str,
130        #[query(
131            name = "sizeBytes",
132            encoder = conjure_http::client::conjure::PlainSeqEncoder
133        )]
134        size_bytes: Option<conjure_object::SafeLong>,
135        #[query(
136            name = "workspace",
137            encoder = conjure_http::client::conjure::PlainSeqEncoder
138        )]
139        workspace: Option<&super::super::super::super::objects::api::rids::WorkspaceRid>,
140        #[body(serializer = conjure_http::client::conjure::BinaryRequestSerializer)]
141        body: impl conjure_http::client::WriteBody<O>,
142    ) -> Result<
143        super::super::super::super::objects::api::S3Path,
144        conjure_http::private::Error,
145    >;
146}
147/// The Upload Service manages file uploads to object storage.
148#[conjure_http::conjure_client(name = "UploadService")]
149pub trait AsyncUploadService<
150    #[request_writer]
151    O,
152    #[response_body]
153    I: conjure_http::private::Stream<
154            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
155        >,
156> {
157    /// Initiates a multipart upload to object storage.
158    /// Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
159    #[endpoint(
160        method = POST,
161        path = "/upload/v1/multipart-upload",
162        name = "initiateMultipartUpload",
163        accept = conjure_http::client::StdResponseDeserializer
164    )]
165    async fn initiate_multipart_upload(
166        &self,
167        #[auth]
168        auth_: &conjure_object::BearerToken,
169        #[body(serializer = conjure_http::client::StdRequestSerializer)]
170        upload_request: &super::super::super::super::objects::ingest::api::InitiateMultipartUploadRequest,
171    ) -> Result<
172        super::super::super::super::objects::ingest::api::InitiateMultipartUploadResponse,
173        conjure_http::private::Error,
174    >;
175    /// Lists the parts that have been uploaded for a given uploadId.
176    #[endpoint(
177        method = GET,
178        path = "/upload/v1/multipart-upload/{uploadId}",
179        name = "listParts",
180        accept = conjure_http::client::conjure::CollectionResponseDeserializer
181    )]
182    async fn list_parts(
183        &self,
184        #[auth]
185        auth_: &conjure_object::BearerToken,
186        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
187        upload_id: &str,
188        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
189        key: &str,
190    ) -> Result<
191        Vec<super::super::super::super::objects::ingest::api::PartWithSize>,
192        conjure_http::private::Error,
193    >;
194    /// Signs an upload request for a single part.
195    /// Returns a URL that will execute the upload without further authentication.
196    #[endpoint(
197        method = POST,
198        path = "/upload/v1/multipart-upload/{uploadId}",
199        name = "signPart",
200        accept = conjure_http::client::StdResponseDeserializer
201    )]
202    async fn sign_part(
203        &self,
204        #[auth]
205        auth_: &conjure_object::BearerToken,
206        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
207        upload_id: &str,
208        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
209        key: &str,
210        #[query(
211            name = "partNumber",
212            encoder = conjure_http::client::conjure::PlainEncoder
213        )]
214        part_number: i32,
215    ) -> Result<
216        super::super::super::super::objects::ingest::api::SignPartResponse,
217        conjure_http::private::Error,
218    >;
219    /// Completes a multipart upload to object storage.
220    /// This should be called after all parts have been uploaded.
221    /// Will throw EmptyMultipartUpload if there are 0 parts.
222    #[endpoint(
223        method = POST,
224        path = "/upload/v1/multipart-upload/{uploadId}/complete",
225        name = "completeMultipartUpload",
226        accept = conjure_http::client::StdResponseDeserializer
227    )]
228    async fn complete_multipart_upload(
229        &self,
230        #[auth]
231        auth_: &conjure_object::BearerToken,
232        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
233        upload_id: &str,
234        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
235        key: &str,
236        #[body(serializer = conjure_http::client::StdRequestSerializer)]
237        parts: &[super::super::super::super::objects::ingest::api::Part],
238    ) -> Result<
239        super::super::super::super::objects::ingest::api::CompleteMultipartUploadResponse,
240        conjure_http::private::Error,
241    >;
242    /// Aborts a multipart upload to S3.
243    /// Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId.
244    #[endpoint(
245        method = POST,
246        path = "/upload/v1/multipart-upload/{uploadId}/abort",
247        name = "abortMultipartUpload",
248        accept = conjure_http::client::conjure::EmptyResponseDeserializer
249    )]
250    async fn abort_multipart_upload(
251        &self,
252        #[auth]
253        auth_: &conjure_object::BearerToken,
254        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
255        upload_id: &str,
256        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
257        key: &str,
258    ) -> Result<(), conjure_http::private::Error>;
259    /// Uploads a file to S3. Intended for smaller files.
260    #[endpoint(
261        method = POST,
262        path = "/upload/v1/upload-file",
263        name = "uploadFile",
264        accept = conjure_http::client::StdResponseDeserializer
265    )]
266    async fn upload_file(
267        &self,
268        #[auth]
269        auth_: &conjure_object::BearerToken,
270        #[query(
271            name = "fileName",
272            encoder = conjure_http::client::conjure::PlainEncoder
273        )]
274        file_name: &str,
275        #[query(
276            name = "sizeBytes",
277            encoder = conjure_http::client::conjure::PlainSeqEncoder
278        )]
279        size_bytes: Option<conjure_object::SafeLong>,
280        #[query(
281            name = "workspace",
282            encoder = conjure_http::client::conjure::PlainSeqEncoder
283        )]
284        workspace: Option<&super::super::super::super::objects::api::rids::WorkspaceRid>,
285        #[body(serializer = conjure_http::client::conjure::BinaryRequestSerializer)]
286        body: impl conjure_http::client::AsyncWriteBody<O> + Sync + Send,
287    ) -> Result<
288        super::super::super::super::objects::api::S3Path,
289        conjure_http::private::Error,
290    >;
291}
292/// The Upload Service manages file uploads to object storage.
293#[conjure_http::conjure_client(name = "UploadService", local)]
294pub trait LocalAsyncUploadService<
295    #[request_writer]
296    O,
297    #[response_body]
298    I: conjure_http::private::Stream<
299            Item = Result<conjure_http::private::Bytes, conjure_http::private::Error>,
300        >,
301> {
302    /// Initiates a multipart upload to object storage.
303    /// Returns an uploadId that should be used with listParts, signPart, and completeMultipartUpload.
304    #[endpoint(
305        method = POST,
306        path = "/upload/v1/multipart-upload",
307        name = "initiateMultipartUpload",
308        accept = conjure_http::client::StdResponseDeserializer
309    )]
310    async fn initiate_multipart_upload(
311        &self,
312        #[auth]
313        auth_: &conjure_object::BearerToken,
314        #[body(serializer = conjure_http::client::StdRequestSerializer)]
315        upload_request: &super::super::super::super::objects::ingest::api::InitiateMultipartUploadRequest,
316    ) -> Result<
317        super::super::super::super::objects::ingest::api::InitiateMultipartUploadResponse,
318        conjure_http::private::Error,
319    >;
320    /// Lists the parts that have been uploaded for a given uploadId.
321    #[endpoint(
322        method = GET,
323        path = "/upload/v1/multipart-upload/{uploadId}",
324        name = "listParts",
325        accept = conjure_http::client::conjure::CollectionResponseDeserializer
326    )]
327    async fn list_parts(
328        &self,
329        #[auth]
330        auth_: &conjure_object::BearerToken,
331        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
332        upload_id: &str,
333        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
334        key: &str,
335    ) -> Result<
336        Vec<super::super::super::super::objects::ingest::api::PartWithSize>,
337        conjure_http::private::Error,
338    >;
339    /// Signs an upload request for a single part.
340    /// Returns a URL that will execute the upload without further authentication.
341    #[endpoint(
342        method = POST,
343        path = "/upload/v1/multipart-upload/{uploadId}",
344        name = "signPart",
345        accept = conjure_http::client::StdResponseDeserializer
346    )]
347    async fn sign_part(
348        &self,
349        #[auth]
350        auth_: &conjure_object::BearerToken,
351        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
352        upload_id: &str,
353        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
354        key: &str,
355        #[query(
356            name = "partNumber",
357            encoder = conjure_http::client::conjure::PlainEncoder
358        )]
359        part_number: i32,
360    ) -> Result<
361        super::super::super::super::objects::ingest::api::SignPartResponse,
362        conjure_http::private::Error,
363    >;
364    /// Completes a multipart upload to object storage.
365    /// This should be called after all parts have been uploaded.
366    /// Will throw EmptyMultipartUpload if there are 0 parts.
367    #[endpoint(
368        method = POST,
369        path = "/upload/v1/multipart-upload/{uploadId}/complete",
370        name = "completeMultipartUpload",
371        accept = conjure_http::client::StdResponseDeserializer
372    )]
373    async fn complete_multipart_upload(
374        &self,
375        #[auth]
376        auth_: &conjure_object::BearerToken,
377        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
378        upload_id: &str,
379        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
380        key: &str,
381        #[body(serializer = conjure_http::client::StdRequestSerializer)]
382        parts: &[super::super::super::super::objects::ingest::api::Part],
383    ) -> Result<
384        super::super::super::super::objects::ingest::api::CompleteMultipartUploadResponse,
385        conjure_http::private::Error,
386    >;
387    /// Aborts a multipart upload to S3.
388    /// Frees storage used by previously uploaded parts and prevents further uploads to the same uploadId.
389    #[endpoint(
390        method = POST,
391        path = "/upload/v1/multipart-upload/{uploadId}/abort",
392        name = "abortMultipartUpload",
393        accept = conjure_http::client::conjure::EmptyResponseDeserializer
394    )]
395    async fn abort_multipart_upload(
396        &self,
397        #[auth]
398        auth_: &conjure_object::BearerToken,
399        #[path(name = "uploadId", encoder = conjure_http::client::conjure::PlainEncoder)]
400        upload_id: &str,
401        #[query(name = "key", encoder = conjure_http::client::conjure::PlainEncoder)]
402        key: &str,
403    ) -> Result<(), conjure_http::private::Error>;
404    /// Uploads a file to S3. Intended for smaller files.
405    #[endpoint(
406        method = POST,
407        path = "/upload/v1/upload-file",
408        name = "uploadFile",
409        accept = conjure_http::client::StdResponseDeserializer
410    )]
411    async fn upload_file(
412        &self,
413        #[auth]
414        auth_: &conjure_object::BearerToken,
415        #[query(
416            name = "fileName",
417            encoder = conjure_http::client::conjure::PlainEncoder
418        )]
419        file_name: &str,
420        #[query(
421            name = "sizeBytes",
422            encoder = conjure_http::client::conjure::PlainSeqEncoder
423        )]
424        size_bytes: Option<conjure_object::SafeLong>,
425        #[query(
426            name = "workspace",
427            encoder = conjure_http::client::conjure::PlainSeqEncoder
428        )]
429        workspace: Option<&super::super::super::super::objects::api::rids::WorkspaceRid>,
430        #[body(serializer = conjure_http::client::conjure::BinaryRequestSerializer)]
431        body: impl conjure_http::client::LocalAsyncWriteBody<O>,
432    ) -> Result<
433        super::super::super::super::objects::api::S3Path,
434        conjure_http::private::Error,
435    >;
436}