1use reqwest;
12use serde::{Deserialize, Serialize, de::Error as _};
13use tokio::fs::File as TokioFile;
14use tokio_util::codec::{BytesCodec, FramedRead};
15
16use super::{ContentType, Error, configuration};
17use crate::{apis::ResponseContent, models};
18
19#[derive(Debug, Clone, Serialize, Deserialize)]
22#[serde(untagged)]
23pub enum AddAdditionalTokenPackageToKnowledgebaseError {
24 Status400(models::GetFinances400Response),
25 Status401(models::GetFinances401Response),
26 Status403(models::GetAccountStatus403Response),
27 Status404(models::GetImage404Response),
28 Status429(models::GetFinances429Response),
29 Status500(models::GetFinances500Response),
30 UnknownValue(serde_json::Value)
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
35#[serde(untagged)]
36pub enum CreateKnowledgebaseError {
37 Status400(models::GetFinances400Response),
38 Status401(models::GetFinances401Response),
39 Status403(models::GetAccountStatus403Response),
40 Status429(models::GetFinances429Response),
41 Status500(models::GetFinances500Response),
42 UnknownValue(serde_json::Value)
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47#[serde(untagged)]
48pub enum DeleteDocumentError {
49 Status400(models::GetFinances400Response),
50 Status401(models::GetFinances401Response),
51 Status403(models::GetAccountStatus403Response),
52 Status404(models::GetImage404Response),
53 Status429(models::GetFinances429Response),
54 Status500(models::GetFinances500Response),
55 UnknownValue(serde_json::Value)
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(untagged)]
61pub enum DeleteKnowledgebaseError {
62 Status400(models::GetFinances400Response),
63 Status401(models::GetFinances401Response),
64 Status403(models::GetAccountStatus403Response),
65 Status404(models::GetImage404Response),
66 Status429(models::GetFinances429Response),
67 Status500(models::GetFinances500Response),
68 UnknownValue(serde_json::Value)
69}
70
71#[derive(Debug, Clone, Serialize, Deserialize)]
73#[serde(untagged)]
74pub enum DownloadDocumentError {
75 Status400(models::GetFinances400Response),
76 Status401(models::GetFinances401Response),
77 Status404(models::GetImage404Response),
78 Status429(models::GetFinances429Response),
79 Status500(models::GetFinances500Response),
80 UnknownValue(serde_json::Value)
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
85#[serde(untagged)]
86pub enum GetKnowledgebaseError {
87 Status400(models::GetFinances400Response),
88 Status401(models::GetFinances401Response),
89 Status403(models::GetAccountStatus403Response),
90 Status404(models::GetImage404Response),
91 Status429(models::GetFinances429Response),
92 Status500(models::GetFinances500Response),
93 UnknownValue(serde_json::Value)
94}
95
96#[derive(Debug, Clone, Serialize, Deserialize)]
98#[serde(untagged)]
99pub enum GetKnowledgebaseDocumentsV2Error {
100 Status400(models::GetFinances400Response),
101 Status401(models::GetFinances401Response),
102 Status403(models::GetAccountStatus403Response),
103 Status404(models::GetImage404Response),
104 Status429(models::GetFinances429Response),
105 Status500(models::GetFinances500Response),
106 UnknownValue(serde_json::Value)
107}
108
109#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(untagged)]
112pub enum GetKnowledgebaseStatisticsError {
113 Status400(models::GetFinances400Response),
114 Status401(models::GetFinances401Response),
115 Status403(models::GetAccountStatus403Response),
116 Status404(models::GetImage404Response),
117 Status429(models::GetFinances429Response),
118 Status500(models::GetFinances500Response),
119 UnknownValue(serde_json::Value)
120}
121
122#[derive(Debug, Clone, Serialize, Deserialize)]
124#[serde(untagged)]
125pub enum GetKnowledgebasesError {
126 Status400(models::GetFinances400Response),
127 Status401(models::GetFinances401Response),
128 Status403(models::GetAccountStatus403Response),
129 Status404(models::GetImage404Response),
130 Status429(models::GetFinances429Response),
131 Status500(models::GetFinances500Response),
132 UnknownValue(serde_json::Value)
133}
134
135#[derive(Debug, Clone, Serialize, Deserialize)]
137#[serde(untagged)]
138pub enum GetKnowledgebasesV2Error {
139 Status400(models::GetFinances400Response),
140 Status401(models::GetFinances401Response),
141 Status403(models::GetAccountStatus403Response),
142 Status404(models::GetImage404Response),
143 Status429(models::GetFinances429Response),
144 Status500(models::GetFinances500Response),
145 UnknownValue(serde_json::Value)
146}
147
148#[derive(Debug, Clone, Serialize, Deserialize)]
150#[serde(untagged)]
151pub enum LinkKnowledgebaseToAgentError {
152 Status400(models::GetFinances400Response),
153 Status401(models::GetFinances401Response),
154 Status403(models::GetAccountStatus403Response),
155 Status404(models::GetImage404Response),
156 Status429(models::GetFinances429Response),
157 Status500(models::GetFinances500Response),
158 UnknownValue(serde_json::Value)
159}
160
161#[derive(Debug, Clone, Serialize, Deserialize)]
163#[serde(untagged)]
164pub enum ReindexDocumentError {
165 Status400(models::GetFinances400Response),
166 Status401(models::GetFinances401Response),
167 Status403(models::GetAccountStatus403Response),
168 Status404(models::GetImage404Response),
169 Status429(models::GetFinances429Response),
170 Status500(models::GetFinances500Response),
171 UnknownValue(serde_json::Value)
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize)]
176#[serde(untagged)]
177pub enum UnlinkKnowledgebaseFromAgentError {
178 Status400(models::GetFinances400Response),
179 Status401(models::GetFinances401Response),
180 Status403(models::GetAccountStatus403Response),
181 Status404(models::GetImage404Response),
182 Status429(models::GetFinances429Response),
183 Status500(models::GetFinances500Response),
184 UnknownValue(serde_json::Value)
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
189#[serde(untagged)]
190pub enum UpdateKnowledgebaseError {
191 Status400(models::GetFinances400Response),
192 Status401(models::GetFinances401Response),
193 Status403(models::GetAccountStatus403Response),
194 Status404(models::GetImage404Response),
195 Status429(models::GetFinances429Response),
196 Status500(models::GetFinances500Response),
197 UnknownValue(serde_json::Value)
198}
199
200#[derive(Debug, Clone, Serialize, Deserialize)]
202#[serde(untagged)]
203pub enum UploadFilesToKnowledgebaseError {
204 Status400(models::GetFinances400Response),
205 Status401(models::GetFinances401Response),
206 Status403(models::GetAccountStatus403Response),
207 Status404(models::GetImage404Response),
208 Status429(models::GetFinances429Response),
209 Status500(models::GetFinances500Response),
210 UnknownValue(serde_json::Value)
211}
212
213pub async fn add_additional_token_package_to_knowledgebase(
217 configuration: &configuration::Configuration,
218 id: i32,
219 add_token_package: Option<models::AddTokenPackage>
220) -> Result<(), Error<AddAdditionalTokenPackageToKnowledgebaseError>> {
221 let p_path_id = id;
223 let p_body_add_token_package = add_token_package;
224
225 let uri_str = format!(
226 "{}/api/v1/cloud-ai/knowledge-bases/{id}/add-additional-token-package",
227 configuration.base_path,
228 id = p_path_id
229 );
230 let mut req_builder = configuration
231 .client
232 .request(reqwest::Method::POST, &uri_str);
233
234 if let Some(ref user_agent) = configuration.user_agent {
235 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
236 }
237 if let Some(ref token) = configuration.bearer_access_token {
238 req_builder = req_builder.bearer_auth(token.to_owned());
239 };
240 req_builder = req_builder.json(&p_body_add_token_package);
241
242 let req = req_builder.build()?;
243 let resp = configuration.client.execute(req).await?;
244
245 let status = resp.status();
246
247 if !status.is_client_error() && !status.is_server_error() {
248 Ok(())
249 } else {
250 let content = resp.text().await?;
251 let entity: Option<AddAdditionalTokenPackageToKnowledgebaseError> =
252 serde_json::from_str(&content).ok();
253 Err(Error::ResponseError(ResponseContent {
254 status,
255 content,
256 entity
257 }))
258 }
259}
260
261pub async fn create_knowledgebase(
266 configuration: &configuration::Configuration,
267 create_knowledgebase: models::CreateKnowledgebase
268) -> Result<models::CreateKnowledgebase201Response, Error<CreateKnowledgebaseError>> {
269 let p_body_create_knowledgebase = create_knowledgebase;
271
272 let uri_str = format!(
273 "{}/api/v1/cloud-ai/knowledge-bases",
274 configuration.base_path
275 );
276 let mut req_builder = configuration
277 .client
278 .request(reqwest::Method::POST, &uri_str);
279
280 if let Some(ref user_agent) = configuration.user_agent {
281 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
282 }
283 if let Some(ref token) = configuration.bearer_access_token {
284 req_builder = req_builder.bearer_auth(token.to_owned());
285 };
286 req_builder = req_builder.json(&p_body_create_knowledgebase);
287
288 let req = req_builder.build()?;
289 let resp = configuration.client.execute(req).await?;
290
291 let status = resp.status();
292 let content_type = resp
293 .headers()
294 .get("content-type")
295 .and_then(|v| v.to_str().ok())
296 .unwrap_or("application/octet-stream");
297 let content_type = super::ContentType::from(content_type);
298
299 if !status.is_client_error() && !status.is_server_error() {
300 let content = resp.text().await?;
301 match content_type {
302 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
303 ContentType::Text => {
304 return Err(Error::from(serde_json::Error::custom(
305 "Received `text/plain` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
306 )));
307 }
308 ContentType::Unsupported(unknown_type) => {
309 return Err(Error::from(serde_json::Error::custom(format!(
310 "Received `{unknown_type}` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
311 ))));
312 }
313 }
314 } else {
315 let content = resp.text().await?;
316 let entity: Option<CreateKnowledgebaseError> = serde_json::from_str(&content).ok();
317 Err(Error::ResponseError(ResponseContent {
318 status,
319 content,
320 entity
321 }))
322 }
323}
324
325pub async fn delete_document(
328 configuration: &configuration::Configuration,
329 id: i32,
330 document_id: i32
331) -> Result<(), Error<DeleteDocumentError>> {
332 let p_path_id = id;
334 let p_path_document_id = document_id;
335
336 let uri_str = format!(
337 "{}/api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}",
338 configuration.base_path,
339 id = p_path_id,
340 document_id = p_path_document_id
341 );
342 let mut req_builder = configuration
343 .client
344 .request(reqwest::Method::DELETE, &uri_str);
345
346 if let Some(ref user_agent) = configuration.user_agent {
347 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
348 }
349 if let Some(ref token) = configuration.bearer_access_token {
350 req_builder = req_builder.bearer_auth(token.to_owned());
351 };
352
353 let req = req_builder.build()?;
354 let resp = configuration.client.execute(req).await?;
355
356 let status = resp.status();
357
358 if !status.is_client_error() && !status.is_server_error() {
359 Ok(())
360 } else {
361 let content = resp.text().await?;
362 let entity: Option<DeleteDocumentError> = serde_json::from_str(&content).ok();
363 Err(Error::ResponseError(ResponseContent {
364 status,
365 content,
366 entity
367 }))
368 }
369}
370
371pub async fn delete_knowledgebase(
374 configuration: &configuration::Configuration,
375 id: i32
376) -> Result<(), Error<DeleteKnowledgebaseError>> {
377 let p_path_id = id;
379
380 let uri_str = format!(
381 "{}/api/v1/cloud-ai/knowledge-bases/{id}",
382 configuration.base_path,
383 id = p_path_id
384 );
385 let mut req_builder = configuration
386 .client
387 .request(reqwest::Method::DELETE, &uri_str);
388
389 if let Some(ref user_agent) = configuration.user_agent {
390 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
391 }
392 if let Some(ref token) = configuration.bearer_access_token {
393 req_builder = req_builder.bearer_auth(token.to_owned());
394 };
395
396 let req = req_builder.build()?;
397 let resp = configuration.client.execute(req).await?;
398
399 let status = resp.status();
400
401 if !status.is_client_error() && !status.is_server_error() {
402 Ok(())
403 } else {
404 let content = resp.text().await?;
405 let entity: Option<DeleteKnowledgebaseError> = serde_json::from_str(&content).ok();
406 Err(Error::ResponseError(ResponseContent {
407 status,
408 content,
409 entity
410 }))
411 }
412}
413
414pub async fn download_document(
417 configuration: &configuration::Configuration,
418 id: i32,
419 document_id: i32
420) -> Result<reqwest::Response, Error<DownloadDocumentError>> {
421 let p_path_id = id;
423 let p_path_document_id = document_id;
424
425 let uri_str = format!(
426 "{}/api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}/download",
427 configuration.base_path,
428 id = p_path_id,
429 document_id = p_path_document_id
430 );
431 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
432
433 if let Some(ref user_agent) = configuration.user_agent {
434 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
435 }
436 if let Some(ref token) = configuration.bearer_access_token {
437 req_builder = req_builder.bearer_auth(token.to_owned());
438 };
439
440 let req = req_builder.build()?;
441 let resp = configuration.client.execute(req).await?;
442
443 let status = resp.status();
444
445 if !status.is_client_error() && !status.is_server_error() {
446 Ok(resp)
447 } else {
448 let content = resp.text().await?;
449 let entity: Option<DownloadDocumentError> = serde_json::from_str(&content).ok();
450 Err(Error::ResponseError(ResponseContent {
451 status,
452 content,
453 entity
454 }))
455 }
456}
457
458pub async fn get_knowledgebase(
461 configuration: &configuration::Configuration,
462 id: i32
463) -> Result<models::CreateKnowledgebase201Response, Error<GetKnowledgebaseError>> {
464 let p_path_id = id;
466
467 let uri_str = format!(
468 "{}/api/v1/cloud-ai/knowledge-bases/{id}",
469 configuration.base_path,
470 id = p_path_id
471 );
472 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
473
474 if let Some(ref user_agent) = configuration.user_agent {
475 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
476 }
477 if let Some(ref token) = configuration.bearer_access_token {
478 req_builder = req_builder.bearer_auth(token.to_owned());
479 };
480
481 let req = req_builder.build()?;
482 let resp = configuration.client.execute(req).await?;
483
484 let status = resp.status();
485 let content_type = resp
486 .headers()
487 .get("content-type")
488 .and_then(|v| v.to_str().ok())
489 .unwrap_or("application/octet-stream");
490 let content_type = super::ContentType::from(content_type);
491
492 if !status.is_client_error() && !status.is_server_error() {
493 let content = resp.text().await?;
494 match content_type {
495 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
496 ContentType::Text => {
497 return Err(Error::from(serde_json::Error::custom(
498 "Received `text/plain` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
499 )));
500 }
501 ContentType::Unsupported(unknown_type) => {
502 return Err(Error::from(serde_json::Error::custom(format!(
503 "Received `{unknown_type}` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
504 ))));
505 }
506 }
507 } else {
508 let content = resp.text().await?;
509 let entity: Option<GetKnowledgebaseError> = serde_json::from_str(&content).ok();
510 Err(Error::ResponseError(ResponseContent {
511 status,
512 content,
513 entity
514 }))
515 }
516}
517
518pub async fn get_knowledgebase_documents_v2(
522 configuration: &configuration::Configuration,
523 id: i32,
524 limit: Option<i32>,
525 offset: Option<i32>,
526 sort_by: Option<&str>,
527 sort_order: Option<&str>
528) -> Result<models::GetKnowledgebaseDocumentsV2200Response, Error<GetKnowledgebaseDocumentsV2Error>>
529{
530 let p_path_id = id;
532 let p_query_limit = limit;
533 let p_query_offset = offset;
534 let p_query_sort_by = sort_by;
535 let p_query_sort_order = sort_order;
536
537 let uri_str = format!(
538 "{}/api/v2/cloud-ai/knowledge-bases/{id}/documents",
539 configuration.base_path,
540 id = p_path_id
541 );
542 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
543
544 if let Some(ref param_value) = p_query_limit {
545 req_builder = req_builder.query(&[("limit", ¶m_value.to_string())]);
546 }
547 if let Some(ref param_value) = p_query_offset {
548 req_builder = req_builder.query(&[("offset", ¶m_value.to_string())]);
549 }
550 if let Some(ref param_value) = p_query_sort_by {
551 req_builder = req_builder.query(&[("sort_by", ¶m_value.to_string())]);
552 }
553 if let Some(ref param_value) = p_query_sort_order {
554 req_builder = req_builder.query(&[("sort_order", ¶m_value.to_string())]);
555 }
556 if let Some(ref user_agent) = configuration.user_agent {
557 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
558 }
559 if let Some(ref token) = configuration.bearer_access_token {
560 req_builder = req_builder.bearer_auth(token.to_owned());
561 };
562
563 let req = req_builder.build()?;
564 let resp = configuration.client.execute(req).await?;
565
566 let status = resp.status();
567 let content_type = resp
568 .headers()
569 .get("content-type")
570 .and_then(|v| v.to_str().ok())
571 .unwrap_or("application/octet-stream");
572 let content_type = super::ContentType::from(content_type);
573
574 if !status.is_client_error() && !status.is_server_error() {
575 let content = resp.text().await?;
576 match content_type {
577 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
578 ContentType::Text => {
579 return Err(Error::from(serde_json::Error::custom(
580 "Received `text/plain` content type response that cannot be converted to `models::GetKnowledgebaseDocumentsV2200Response`"
581 )));
582 }
583 ContentType::Unsupported(unknown_type) => {
584 return Err(Error::from(serde_json::Error::custom(format!(
585 "Received `{unknown_type}` content type response that cannot be converted to `models::GetKnowledgebaseDocumentsV2200Response`"
586 ))));
587 }
588 }
589 } else {
590 let content = resp.text().await?;
591 let entity: Option<GetKnowledgebaseDocumentsV2Error> = serde_json::from_str(&content).ok();
592 Err(Error::ResponseError(ResponseContent {
593 status,
594 content,
595 entity
596 }))
597 }
598}
599
600pub async fn get_knowledgebase_statistics(
604 configuration: &configuration::Configuration,
605 id: i32,
606 start_time: Option<chrono::DateTime<chrono::FixedOffset>>,
607 end_time: Option<chrono::DateTime<chrono::FixedOffset>>,
608 interval: Option<f64>
609) -> Result<models::GetKnowledgebaseStatistics200Response, Error<GetKnowledgebaseStatisticsError>>
610{
611 let p_path_id = id;
613 let p_query_start_time = start_time;
614 let p_query_end_time = end_time;
615 let p_query_interval = interval;
616
617 let uri_str = format!(
618 "{}/api/v1/cloud-ai/knowledge-bases/{id}/statistic",
619 configuration.base_path,
620 id = p_path_id
621 );
622 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
623
624 if let Some(ref param_value) = p_query_start_time {
625 req_builder = req_builder.query(&[("startTime", ¶m_value.to_string())]);
626 }
627 if let Some(ref param_value) = p_query_end_time {
628 req_builder = req_builder.query(&[("endTime", ¶m_value.to_string())]);
629 }
630 if let Some(ref param_value) = p_query_interval {
631 req_builder = req_builder.query(&[("interval", ¶m_value.to_string())]);
632 }
633 if let Some(ref user_agent) = configuration.user_agent {
634 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
635 }
636 if let Some(ref token) = configuration.bearer_access_token {
637 req_builder = req_builder.bearer_auth(token.to_owned());
638 };
639
640 let req = req_builder.build()?;
641 let resp = configuration.client.execute(req).await?;
642
643 let status = resp.status();
644 let content_type = resp
645 .headers()
646 .get("content-type")
647 .and_then(|v| v.to_str().ok())
648 .unwrap_or("application/octet-stream");
649 let content_type = super::ContentType::from(content_type);
650
651 if !status.is_client_error() && !status.is_server_error() {
652 let content = resp.text().await?;
653 match content_type {
654 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
655 ContentType::Text => {
656 return Err(Error::from(serde_json::Error::custom(
657 "Received `text/plain` content type response that cannot be converted to `models::GetKnowledgebaseStatistics200Response`"
658 )));
659 }
660 ContentType::Unsupported(unknown_type) => {
661 return Err(Error::from(serde_json::Error::custom(format!(
662 "Received `{unknown_type}` content type response that cannot be converted to `models::GetKnowledgebaseStatistics200Response`"
663 ))));
664 }
665 }
666 } else {
667 let content = resp.text().await?;
668 let entity: Option<GetKnowledgebaseStatisticsError> = serde_json::from_str(&content).ok();
669 Err(Error::ResponseError(ResponseContent {
670 status,
671 content,
672 entity
673 }))
674 }
675}
676
677#[deprecated]
681pub async fn get_knowledgebases(
682 configuration: &configuration::Configuration
683) -> Result<models::GetKnowledgebases200Response, Error<GetKnowledgebasesError>> {
684 let uri_str = format!(
685 "{}/api/v1/cloud-ai/knowledge-bases",
686 configuration.base_path
687 );
688 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
689
690 if let Some(ref user_agent) = configuration.user_agent {
691 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
692 }
693 if let Some(ref token) = configuration.bearer_access_token {
694 req_builder = req_builder.bearer_auth(token.to_owned());
695 };
696
697 let req = req_builder.build()?;
698 let resp = configuration.client.execute(req).await?;
699
700 let status = resp.status();
701 let content_type = resp
702 .headers()
703 .get("content-type")
704 .and_then(|v| v.to_str().ok())
705 .unwrap_or("application/octet-stream");
706 let content_type = super::ContentType::from(content_type);
707
708 if !status.is_client_error() && !status.is_server_error() {
709 let content = resp.text().await?;
710 match content_type {
711 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
712 ContentType::Text => {
713 return Err(Error::from(serde_json::Error::custom(
714 "Received `text/plain` content type response that cannot be converted to `models::GetKnowledgebases200Response`"
715 )));
716 }
717 ContentType::Unsupported(unknown_type) => {
718 return Err(Error::from(serde_json::Error::custom(format!(
719 "Received `{unknown_type}` content type response that cannot be converted to `models::GetKnowledgebases200Response`"
720 ))));
721 }
722 }
723 } else {
724 let content = resp.text().await?;
725 let entity: Option<GetKnowledgebasesError> = serde_json::from_str(&content).ok();
726 Err(Error::ResponseError(ResponseContent {
727 status,
728 content,
729 entity
730 }))
731 }
732}
733
734pub async fn get_knowledgebases_v2(
740 configuration: &configuration::Configuration
741) -> Result<models::GetKnowledgebasesV2200Response, Error<GetKnowledgebasesV2Error>> {
742 let uri_str = format!(
743 "{}/api/v2/cloud-ai/knowledge-bases",
744 configuration.base_path
745 );
746 let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
747
748 if let Some(ref user_agent) = configuration.user_agent {
749 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
750 }
751 if let Some(ref token) = configuration.bearer_access_token {
752 req_builder = req_builder.bearer_auth(token.to_owned());
753 };
754
755 let req = req_builder.build()?;
756 let resp = configuration.client.execute(req).await?;
757
758 let status = resp.status();
759 let content_type = resp
760 .headers()
761 .get("content-type")
762 .and_then(|v| v.to_str().ok())
763 .unwrap_or("application/octet-stream");
764 let content_type = super::ContentType::from(content_type);
765
766 if !status.is_client_error() && !status.is_server_error() {
767 let content = resp.text().await?;
768 match content_type {
769 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
770 ContentType::Text => {
771 return Err(Error::from(serde_json::Error::custom(
772 "Received `text/plain` content type response that cannot be converted to `models::GetKnowledgebasesV2200Response`"
773 )));
774 }
775 ContentType::Unsupported(unknown_type) => {
776 return Err(Error::from(serde_json::Error::custom(format!(
777 "Received `{unknown_type}` content type response that cannot be converted to `models::GetKnowledgebasesV2200Response`"
778 ))));
779 }
780 }
781 } else {
782 let content = resp.text().await?;
783 let entity: Option<GetKnowledgebasesV2Error> = serde_json::from_str(&content).ok();
784 Err(Error::ResponseError(ResponseContent {
785 status,
786 content,
787 entity
788 }))
789 }
790}
791
792pub async fn link_knowledgebase_to_agent(
795 configuration: &configuration::Configuration,
796 id: i32,
797 agent_id: i32
798) -> Result<(), Error<LinkKnowledgebaseToAgentError>> {
799 let p_path_id = id;
801 let p_path_agent_id = agent_id;
802
803 let uri_str = format!(
804 "{}/api/v1/cloud-ai/knowledge-bases/{id}/link/{agent_id}",
805 configuration.base_path,
806 id = p_path_id,
807 agent_id = p_path_agent_id
808 );
809 let mut req_builder = configuration
810 .client
811 .request(reqwest::Method::POST, &uri_str);
812
813 if let Some(ref user_agent) = configuration.user_agent {
814 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
815 }
816 if let Some(ref token) = configuration.bearer_access_token {
817 req_builder = req_builder.bearer_auth(token.to_owned());
818 };
819
820 let req = req_builder.build()?;
821 let resp = configuration.client.execute(req).await?;
822
823 let status = resp.status();
824
825 if !status.is_client_error() && !status.is_server_error() {
826 Ok(())
827 } else {
828 let content = resp.text().await?;
829 let entity: Option<LinkKnowledgebaseToAgentError> = serde_json::from_str(&content).ok();
830 Err(Error::ResponseError(ResponseContent {
831 status,
832 content,
833 entity
834 }))
835 }
836}
837
838pub async fn reindex_document(
841 configuration: &configuration::Configuration,
842 id: i32,
843 document_id: i32
844) -> Result<(), Error<ReindexDocumentError>> {
845 let p_path_id = id;
847 let p_path_document_id = document_id;
848
849 let uri_str = format!(
850 "{}/api/v1/cloud-ai/knowledge-bases/{id}/documents/{document_id}/reindex",
851 configuration.base_path,
852 id = p_path_id,
853 document_id = p_path_document_id
854 );
855 let mut req_builder = configuration
856 .client
857 .request(reqwest::Method::POST, &uri_str);
858
859 if let Some(ref user_agent) = configuration.user_agent {
860 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
861 }
862 if let Some(ref token) = configuration.bearer_access_token {
863 req_builder = req_builder.bearer_auth(token.to_owned());
864 };
865
866 let req = req_builder.build()?;
867 let resp = configuration.client.execute(req).await?;
868
869 let status = resp.status();
870
871 if !status.is_client_error() && !status.is_server_error() {
872 Ok(())
873 } else {
874 let content = resp.text().await?;
875 let entity: Option<ReindexDocumentError> = serde_json::from_str(&content).ok();
876 Err(Error::ResponseError(ResponseContent {
877 status,
878 content,
879 entity
880 }))
881 }
882}
883
884pub async fn unlink_knowledgebase_from_agent(
887 configuration: &configuration::Configuration,
888 id: i32,
889 agent_id: i32
890) -> Result<(), Error<UnlinkKnowledgebaseFromAgentError>> {
891 let p_path_id = id;
893 let p_path_agent_id = agent_id;
894
895 let uri_str = format!(
896 "{}/api/v1/cloud-ai/knowledge-bases/{id}/link/{agent_id}",
897 configuration.base_path,
898 id = p_path_id,
899 agent_id = p_path_agent_id
900 );
901 let mut req_builder = configuration
902 .client
903 .request(reqwest::Method::DELETE, &uri_str);
904
905 if let Some(ref user_agent) = configuration.user_agent {
906 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
907 }
908 if let Some(ref token) = configuration.bearer_access_token {
909 req_builder = req_builder.bearer_auth(token.to_owned());
910 };
911
912 let req = req_builder.build()?;
913 let resp = configuration.client.execute(req).await?;
914
915 let status = resp.status();
916
917 if !status.is_client_error() && !status.is_server_error() {
918 Ok(())
919 } else {
920 let content = resp.text().await?;
921 let entity: Option<UnlinkKnowledgebaseFromAgentError> =
922 serde_json::from_str(&content).ok();
923 Err(Error::ResponseError(ResponseContent {
924 status,
925 content,
926 entity
927 }))
928 }
929}
930
931pub async fn update_knowledgebase(
934 configuration: &configuration::Configuration,
935 id: i32,
936 update_knowledgebase: models::UpdateKnowledgebase
937) -> Result<models::CreateKnowledgebase201Response, Error<UpdateKnowledgebaseError>> {
938 let p_path_id = id;
940 let p_body_update_knowledgebase = update_knowledgebase;
941
942 let uri_str = format!(
943 "{}/api/v1/cloud-ai/knowledge-bases/{id}",
944 configuration.base_path,
945 id = p_path_id
946 );
947 let mut req_builder = configuration
948 .client
949 .request(reqwest::Method::PATCH, &uri_str);
950
951 if let Some(ref user_agent) = configuration.user_agent {
952 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
953 }
954 if let Some(ref token) = configuration.bearer_access_token {
955 req_builder = req_builder.bearer_auth(token.to_owned());
956 };
957 req_builder = req_builder.json(&p_body_update_knowledgebase);
958
959 let req = req_builder.build()?;
960 let resp = configuration.client.execute(req).await?;
961
962 let status = resp.status();
963 let content_type = resp
964 .headers()
965 .get("content-type")
966 .and_then(|v| v.to_str().ok())
967 .unwrap_or("application/octet-stream");
968 let content_type = super::ContentType::from(content_type);
969
970 if !status.is_client_error() && !status.is_server_error() {
971 let content = resp.text().await?;
972 match content_type {
973 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
974 ContentType::Text => {
975 return Err(Error::from(serde_json::Error::custom(
976 "Received `text/plain` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
977 )));
978 }
979 ContentType::Unsupported(unknown_type) => {
980 return Err(Error::from(serde_json::Error::custom(format!(
981 "Received `{unknown_type}` content type response that cannot be converted to `models::CreateKnowledgebase201Response`"
982 ))));
983 }
984 }
985 } else {
986 let content = resp.text().await?;
987 let entity: Option<UpdateKnowledgebaseError> = serde_json::from_str(&content).ok();
988 Err(Error::ResponseError(ResponseContent {
989 status,
990 content,
991 entity
992 }))
993 }
994}
995
996pub async fn upload_files_to_knowledgebase(
1001 configuration: &configuration::Configuration,
1002 id: i32,
1003 files: Vec<std::path::PathBuf>
1004) -> Result<models::UploadFilesToKnowledgebase200Response, Error<UploadFilesToKnowledgebaseError>>
1005{
1006 let p_path_id = id;
1008 let p_form_files = files;
1009
1010 let uri_str = format!(
1011 "{}/api/v1/cloud-ai/knowledge-bases/{id}/upload",
1012 configuration.base_path,
1013 id = p_path_id
1014 );
1015 let mut req_builder = configuration
1016 .client
1017 .request(reqwest::Method::POST, &uri_str);
1018
1019 if let Some(ref user_agent) = configuration.user_agent {
1020 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1021 }
1022 if let Some(ref token) = configuration.bearer_access_token {
1023 req_builder = req_builder.bearer_auth(token.to_owned());
1024 };
1025 let mut multipart_form = reqwest::multipart::Form::new();
1026 for value in &p_form_files {
1027 let file = TokioFile::open(value).await?;
1028 let stream = FramedRead::new(file, BytesCodec::new());
1029 let file_name = value
1030 .file_name()
1031 .map(|n| n.to_string_lossy().to_string())
1032 .unwrap_or_default();
1033 let file_part = reqwest::multipart::Part::stream(reqwest::Body::wrap_stream(stream))
1034 .file_name(file_name);
1035 multipart_form = multipart_form.part("files", file_part);
1036 }
1037 req_builder = req_builder.multipart(multipart_form);
1038
1039 let req = req_builder.build()?;
1040 let resp = configuration.client.execute(req).await?;
1041
1042 let status = resp.status();
1043 let content_type = resp
1044 .headers()
1045 .get("content-type")
1046 .and_then(|v| v.to_str().ok())
1047 .unwrap_or("application/octet-stream");
1048 let content_type = super::ContentType::from(content_type);
1049
1050 if !status.is_client_error() && !status.is_server_error() {
1051 let content = resp.text().await?;
1052 match content_type {
1053 ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1054 ContentType::Text => {
1055 return Err(Error::from(serde_json::Error::custom(
1056 "Received `text/plain` content type response that cannot be converted to `models::UploadFilesToKnowledgebase200Response`"
1057 )));
1058 }
1059 ContentType::Unsupported(unknown_type) => {
1060 return Err(Error::from(serde_json::Error::custom(format!(
1061 "Received `{unknown_type}` content type response that cannot be converted to `models::UploadFilesToKnowledgebase200Response`"
1062 ))));
1063 }
1064 }
1065 } else {
1066 let content = resp.text().await?;
1067 let entity: Option<UploadFilesToKnowledgebaseError> = serde_json::from_str(&content).ok();
1068 Err(Error::ResponseError(ResponseContent {
1069 status,
1070 content,
1071 entity
1072 }))
1073 }
1074}