1use std::sync::Arc;
10
11use async_trait::async_trait;
12use reqwest;
13use serde::{Deserialize, Serialize};
14
15use super::{configuration, Error};
16use crate::apis::ResponseContent;
17use crate::models;
18
19#[async_trait]
20pub trait DocumentsApi: Send + Sync {
21 async fn delete_document(&self, params: DeleteDocumentParams) -> Result<serde_json::Value, Error<DeleteDocumentError>>;
22 async fn delete_documents(
23 &self,
24 params: DeleteDocumentsParams,
25 ) -> Result<models::DeleteDocuments200Response, Error<DeleteDocumentsError>>;
26 async fn delete_search_override(
27 &self,
28 params: DeleteSearchOverrideParams,
29 ) -> Result<models::SearchOverride, Error<DeleteSearchOverrideError>>;
30 async fn delete_search_synonym(
31 &self,
32 params: DeleteSearchSynonymParams,
33 ) -> Result<models::SearchSynonym, Error<DeleteSearchSynonymError>>;
34 async fn export_documents(&self, params: ExportDocumentsParams) -> Result<String, Error<ExportDocumentsError>>;
35 async fn get_document(&self, params: GetDocumentParams) -> Result<serde_json::Value, Error<GetDocumentError>>;
36 async fn get_search_override(
37 &self,
38 params: GetSearchOverrideParams,
39 ) -> Result<models::SearchOverride, Error<GetSearchOverrideError>>;
40 async fn get_search_overrides(
41 &self,
42 params: GetSearchOverridesParams,
43 ) -> Result<models::SearchOverridesResponse, Error<GetSearchOverridesError>>;
44 async fn get_search_synonym(
45 &self,
46 params: GetSearchSynonymParams,
47 ) -> Result<models::SearchSynonym, Error<GetSearchSynonymError>>;
48 async fn get_search_synonyms(
49 &self,
50 params: GetSearchSynonymsParams,
51 ) -> Result<models::SearchSynonymsResponse, Error<GetSearchSynonymsError>>;
52 async fn import_documents(&self, params: ImportDocumentsParams) -> Result<String, Error<ImportDocumentsError>>;
53 async fn index_document(&self, params: IndexDocumentParams) -> Result<serde_json::Value, Error<IndexDocumentError>>;
54 async fn multi_search(&self, params: MultiSearchParams) -> Result<models::MultiSearchResult, Error<MultiSearchError>>;
55 async fn search_collection(
56 &self,
57 params: SearchCollectionParams,
58 ) -> Result<models::SearchResult, Error<SearchCollectionError>>;
59 async fn update_document(&self, params: UpdateDocumentParams) -> Result<serde_json::Value, Error<UpdateDocumentError>>;
60 async fn update_documents(
61 &self,
62 params: UpdateDocumentsParams,
63 ) -> Result<models::UpdateDocuments200Response, Error<UpdateDocumentsError>>;
64 async fn upsert_search_override(
65 &self,
66 params: UpsertSearchOverrideParams,
67 ) -> Result<models::SearchOverride, Error<UpsertSearchOverrideError>>;
68 async fn upsert_search_synonym(
69 &self,
70 params: UpsertSearchSynonymParams,
71 ) -> Result<models::SearchSynonym, Error<UpsertSearchSynonymError>>;
72}
73
74pub struct DocumentsApiClient {
75 configuration: Arc<configuration::Configuration>,
76}
77
78impl DocumentsApiClient {
79 pub fn new(configuration: Arc<configuration::Configuration>) -> Self {
80 Self { configuration }
81 }
82}
83
84#[derive(Clone, Debug)]
86#[cfg_attr(feature = "bon", derive(::bon::Builder))]
87pub struct DeleteDocumentParams {
88 pub collection_name: String,
90 pub document_id: String,
92}
93
94#[derive(Clone, Debug)]
96#[cfg_attr(feature = "bon", derive(::bon::Builder))]
97pub struct DeleteDocumentsParams {
98 pub collection_name: String,
100 pub filter_by: String,
101 pub batch_size: Option<i32>,
102 pub ignore_not_found: Option<bool>,
103}
104
105#[derive(Clone, Debug)]
107#[cfg_attr(feature = "bon", derive(::bon::Builder))]
108pub struct DeleteSearchOverrideParams {
109 pub collection_name: String,
111 pub override_id: String,
113}
114
115#[derive(Clone, Debug)]
117#[cfg_attr(feature = "bon", derive(::bon::Builder))]
118pub struct DeleteSearchSynonymParams {
119 pub collection_name: String,
121 pub synonym_id: String,
123}
124
125#[derive(Clone, Debug)]
127#[cfg_attr(feature = "bon", derive(::bon::Builder))]
128pub struct ExportDocumentsParams {
129 pub collection_name: String,
131 pub filter_by: Option<String>,
132 pub include_fields: Option<String>,
133 pub exclude_fields: Option<String>,
134}
135
136#[derive(Clone, Debug)]
138#[cfg_attr(feature = "bon", derive(::bon::Builder))]
139pub struct GetDocumentParams {
140 pub collection_name: String,
142 pub document_id: String,
144}
145
146#[derive(Clone, Debug)]
148#[cfg_attr(feature = "bon", derive(::bon::Builder))]
149pub struct GetSearchOverrideParams {
150 pub collection_name: String,
152 pub override_id: String,
154}
155
156#[derive(Clone, Debug)]
158#[cfg_attr(feature = "bon", derive(::bon::Builder))]
159pub struct GetSearchOverridesParams {
160 pub collection_name: String,
162}
163
164#[derive(Clone, Debug)]
166#[cfg_attr(feature = "bon", derive(::bon::Builder))]
167pub struct GetSearchSynonymParams {
168 pub collection_name: String,
170 pub synonym_id: String,
172}
173
174#[derive(Clone, Debug)]
176#[cfg_attr(feature = "bon", derive(::bon::Builder))]
177pub struct GetSearchSynonymsParams {
178 pub collection_name: String,
180}
181
182#[derive(Clone, Debug)]
184#[cfg_attr(feature = "bon", derive(::bon::Builder))]
185pub struct ImportDocumentsParams {
186 pub collection_name: String,
188 pub body: String,
190 pub batch_size: Option<i32>,
191 pub return_id: Option<bool>,
192 pub remote_embedding_batch_size: Option<i32>,
193 pub return_doc: Option<bool>,
194 pub action: Option<models::IndexAction>,
195 pub dirty_values: Option<models::DirtyValues>,
196}
197
198#[derive(Clone, Debug)]
200#[cfg_attr(feature = "bon", derive(::bon::Builder))]
201pub struct IndexDocumentParams {
202 pub collection_name: String,
204 pub body: serde_json::Value,
206 pub action: Option<String>,
208 pub dirty_values: Option<models::DirtyValues>,
210}
211
212#[derive(Clone, Debug)]
214#[cfg_attr(feature = "bon", derive(::bon::Builder))]
215pub struct MultiSearchParams {
216 pub q: Option<String>,
217 pub query_by: Option<String>,
218 pub query_by_weights: Option<String>,
219 pub text_match_type: Option<String>,
220 pub prefix: Option<String>,
221 pub infix: Option<String>,
222 pub max_extra_prefix: Option<i32>,
223 pub max_extra_suffix: Option<i32>,
224 pub filter_by: Option<String>,
225 pub sort_by: Option<String>,
226 pub facet_by: Option<String>,
227 pub max_facet_values: Option<i32>,
228 pub facet_query: Option<String>,
229 pub num_typos: Option<String>,
230 pub page: Option<i32>,
231 pub per_page: Option<i32>,
232 pub limit: Option<i32>,
233 pub offset: Option<i32>,
234 pub group_by: Option<String>,
235 pub group_limit: Option<i32>,
236 pub group_missing_values: Option<bool>,
237 pub include_fields: Option<String>,
238 pub exclude_fields: Option<String>,
239 pub highlight_full_fields: Option<String>,
240 pub highlight_affix_num_tokens: Option<i32>,
241 pub highlight_start_tag: Option<String>,
242 pub highlight_end_tag: Option<String>,
243 pub snippet_threshold: Option<i32>,
244 pub drop_tokens_threshold: Option<i32>,
245 pub drop_tokens_mode: Option<models::DropTokensMode>,
246 pub typo_tokens_threshold: Option<i32>,
247 pub enable_typos_for_alpha_numerical_tokens: Option<bool>,
248 pub filter_curated_hits: Option<bool>,
249 pub enable_synonyms: Option<bool>,
250 pub synonym_prefix: Option<bool>,
251 pub synonym_num_typos: Option<i32>,
252 pub pinned_hits: Option<String>,
253 pub hidden_hits: Option<String>,
254 pub override_tags: Option<String>,
255 pub highlight_fields: Option<String>,
256 pub pre_segmented_query: Option<bool>,
257 pub preset: Option<String>,
258 pub enable_overrides: Option<bool>,
259 pub prioritize_exact_match: Option<bool>,
260 pub prioritize_token_position: Option<bool>,
261 pub prioritize_num_matching_fields: Option<bool>,
262 pub enable_typos_for_numerical_tokens: Option<bool>,
263 pub exhaustive_search: Option<bool>,
264 pub search_cutoff_ms: Option<i32>,
265 pub use_cache: Option<bool>,
266 pub cache_ttl: Option<i32>,
267 pub min_len_1typo: Option<i32>,
268 pub min_len_2typo: Option<i32>,
269 pub vector_query: Option<String>,
270 pub remote_embedding_timeout_ms: Option<i32>,
271 pub remote_embedding_num_tries: Option<i32>,
272 pub facet_strategy: Option<String>,
273 pub stopwords: Option<String>,
274 pub facet_return_parent: Option<String>,
275 pub voice_query: Option<String>,
276 pub conversation: Option<bool>,
277 pub conversation_model_id: Option<String>,
278 pub conversation_id: Option<String>,
279 pub multi_search_searches_parameter: Option<models::MultiSearchSearchesParameter>,
280}
281
282#[derive(Clone, Debug)]
284#[cfg_attr(feature = "bon", derive(::bon::Builder))]
285pub struct SearchCollectionParams {
286 pub collection_name: String,
288 pub q: String,
289 pub query_by: String,
290 pub query_by_weights: Option<String>,
291 pub text_match_type: Option<String>,
292 pub prefix: Option<String>,
293 pub infix: Option<String>,
294 pub max_extra_prefix: Option<i32>,
295 pub max_extra_suffix: Option<i32>,
296 pub filter_by: Option<String>,
297 pub sort_by: Option<String>,
298 pub facet_by: Option<String>,
299 pub max_facet_values: Option<i32>,
300 pub facet_query: Option<String>,
301 pub num_typos: Option<String>,
302 pub page: Option<i32>,
303 pub per_page: Option<i32>,
304 pub limit: Option<i32>,
305 pub offset: Option<i32>,
306 pub group_by: Option<String>,
307 pub group_limit: Option<i32>,
308 pub group_missing_values: Option<bool>,
309 pub include_fields: Option<String>,
310 pub exclude_fields: Option<String>,
311 pub highlight_full_fields: Option<String>,
312 pub highlight_affix_num_tokens: Option<i32>,
313 pub highlight_start_tag: Option<String>,
314 pub highlight_end_tag: Option<String>,
315 pub enable_highlight_v1: Option<bool>,
316 pub snippet_threshold: Option<i32>,
317 pub drop_tokens_threshold: Option<i32>,
318 pub drop_tokens_mode: Option<models::DropTokensMode>,
319 pub typo_tokens_threshold: Option<i32>,
320 pub enable_typos_for_alpha_numerical_tokens: Option<bool>,
321 pub filter_curated_hits: Option<bool>,
322 pub enable_synonyms: Option<bool>,
323 pub synonym_prefix: Option<bool>,
324 pub synonym_num_typos: Option<i32>,
325 pub pinned_hits: Option<String>,
326 pub hidden_hits: Option<String>,
327 pub override_tags: Option<String>,
328 pub highlight_fields: Option<String>,
329 pub split_join_tokens: Option<String>,
330 pub pre_segmented_query: Option<bool>,
331 pub preset: Option<String>,
332 pub enable_overrides: Option<bool>,
333 pub prioritize_exact_match: Option<bool>,
334 pub max_candidates: Option<i32>,
335 pub prioritize_token_position: Option<bool>,
336 pub prioritize_num_matching_fields: Option<bool>,
337 pub enable_typos_for_numerical_tokens: Option<bool>,
338 pub exhaustive_search: Option<bool>,
339 pub search_cutoff_ms: Option<i32>,
340 pub use_cache: Option<bool>,
341 pub cache_ttl: Option<i32>,
342 pub min_len_1typo: Option<i32>,
343 pub min_len_2typo: Option<i32>,
344 pub vector_query: Option<String>,
345 pub remote_embedding_timeout_ms: Option<i32>,
346 pub remote_embedding_num_tries: Option<i32>,
347 pub facet_strategy: Option<String>,
348 pub stopwords: Option<String>,
349 pub facet_return_parent: Option<String>,
350 pub voice_query: Option<String>,
351 pub conversation: Option<bool>,
352 pub conversation_model_id: Option<String>,
353 pub conversation_id: Option<String>,
354}
355
356#[derive(Clone, Debug)]
358#[cfg_attr(feature = "bon", derive(::bon::Builder))]
359pub struct UpdateDocumentParams {
360 pub collection_name: String,
362 pub document_id: String,
364 pub body: serde_json::Value,
366 pub dirty_values: Option<models::DirtyValues>,
368}
369
370#[derive(Clone, Debug)]
372#[cfg_attr(feature = "bon", derive(::bon::Builder))]
373pub struct UpdateDocumentsParams {
374 pub collection_name: String,
376 pub body: serde_json::Value,
378 pub filter_by: Option<String>,
379}
380
381#[derive(Clone, Debug)]
383#[cfg_attr(feature = "bon", derive(::bon::Builder))]
384pub struct UpsertSearchOverrideParams {
385 pub collection_name: String,
387 pub override_id: String,
389 pub search_override_schema: models::SearchOverrideSchema,
391}
392
393#[derive(Clone, Debug)]
395#[cfg_attr(feature = "bon", derive(::bon::Builder))]
396pub struct UpsertSearchSynonymParams {
397 pub collection_name: String,
399 pub synonym_id: String,
401 pub search_synonym_schema: models::SearchSynonymSchema,
403}
404
405#[async_trait]
406impl DocumentsApi for DocumentsApiClient {
407 async fn delete_document(&self, params: DeleteDocumentParams) -> Result<serde_json::Value, Error<DeleteDocumentError>> {
409 let DeleteDocumentParams {
410 collection_name,
411 document_id,
412 } = params;
413
414 let local_var_configuration = &self.configuration;
415
416 let local_var_client = &local_var_configuration.client;
417
418 let local_var_uri_str = format!(
419 "{}/collections/{collectionName}/documents/{documentId}",
420 local_var_configuration.base_path,
421 collectionName = crate::apis::urlencode(collection_name),
422 documentId = crate::apis::urlencode(document_id)
423 );
424 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
425
426 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
427 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
428 }
429 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
430 let local_var_key = local_var_apikey.key.clone();
431 let local_var_value = match local_var_apikey.prefix {
432 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
433 None => local_var_key,
434 };
435 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
436 };
437
438 let local_var_req = local_var_req_builder.build()?;
439 let local_var_resp = local_var_client.execute(local_var_req).await?;
440
441 let local_var_status = local_var_resp.status();
442 let local_var_content = local_var_resp.text().await?;
443
444 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
445 serde_json::from_str(&local_var_content).map_err(Error::from)
446 } else {
447 let local_var_entity: Option<DeleteDocumentError> = serde_json::from_str(&local_var_content).ok();
448 let local_var_error = ResponseContent {
449 status: local_var_status,
450 content: local_var_content,
451 entity: local_var_entity,
452 };
453 Err(Error::ResponseError(local_var_error))
454 }
455 }
456
457 async fn delete_documents(
462 &self,
463 params: DeleteDocumentsParams,
464 ) -> Result<models::DeleteDocuments200Response, Error<DeleteDocumentsError>> {
465 let DeleteDocumentsParams {
466 collection_name,
467 filter_by,
468 batch_size,
469 ignore_not_found,
470 } = params;
471
472 let local_var_configuration = &self.configuration;
473
474 let local_var_client = &local_var_configuration.client;
475
476 let local_var_uri_str = format!(
477 "{}/collections/{collectionName}/documents",
478 local_var_configuration.base_path,
479 collectionName = crate::apis::urlencode(collection_name)
480 );
481 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
482
483 local_var_req_builder = local_var_req_builder.query(&[("filter_by", &filter_by.to_string())]);
484 if let Some(ref local_var_str) = batch_size {
485 local_var_req_builder = local_var_req_builder.query(&[("batch_size", &local_var_str.to_string())]);
486 }
487 if let Some(ref local_var_str) = ignore_not_found {
488 local_var_req_builder = local_var_req_builder.query(&[("ignore_not_found", &local_var_str.to_string())]);
489 }
490 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
491 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
492 }
493 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
494 let local_var_key = local_var_apikey.key.clone();
495 let local_var_value = match local_var_apikey.prefix {
496 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
497 None => local_var_key,
498 };
499 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
500 };
501
502 let local_var_req = local_var_req_builder.build()?;
503 let local_var_resp = local_var_client.execute(local_var_req).await?;
504
505 let local_var_status = local_var_resp.status();
506 let local_var_content = local_var_resp.text().await?;
507
508 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
509 serde_json::from_str(&local_var_content).map_err(Error::from)
510 } else {
511 let local_var_entity: Option<DeleteDocumentsError> = serde_json::from_str(&local_var_content).ok();
512 let local_var_error = ResponseContent {
513 status: local_var_status,
514 content: local_var_content,
515 entity: local_var_entity,
516 };
517 Err(Error::ResponseError(local_var_error))
518 }
519 }
520
521 async fn delete_search_override(
522 &self,
523 params: DeleteSearchOverrideParams,
524 ) -> Result<models::SearchOverride, Error<DeleteSearchOverrideError>> {
525 let DeleteSearchOverrideParams {
526 collection_name,
527 override_id,
528 } = params;
529
530 let local_var_configuration = &self.configuration;
531
532 let local_var_client = &local_var_configuration.client;
533
534 let local_var_uri_str = format!(
535 "{}/collections/{collectionName}/overrides/{overrideId}",
536 local_var_configuration.base_path,
537 collectionName = crate::apis::urlencode(collection_name),
538 overrideId = crate::apis::urlencode(override_id)
539 );
540 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
541
542 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
543 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
544 }
545 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
546 let local_var_key = local_var_apikey.key.clone();
547 let local_var_value = match local_var_apikey.prefix {
548 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
549 None => local_var_key,
550 };
551 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
552 };
553
554 let local_var_req = local_var_req_builder.build()?;
555 let local_var_resp = local_var_client.execute(local_var_req).await?;
556
557 let local_var_status = local_var_resp.status();
558 let local_var_content = local_var_resp.text().await?;
559
560 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
561 serde_json::from_str(&local_var_content).map_err(Error::from)
562 } else {
563 let local_var_entity: Option<DeleteSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
564 let local_var_error = ResponseContent {
565 status: local_var_status,
566 content: local_var_content,
567 entity: local_var_entity,
568 };
569 Err(Error::ResponseError(local_var_error))
570 }
571 }
572
573 async fn delete_search_synonym(
574 &self,
575 params: DeleteSearchSynonymParams,
576 ) -> Result<models::SearchSynonym, Error<DeleteSearchSynonymError>> {
577 let DeleteSearchSynonymParams {
578 collection_name,
579 synonym_id,
580 } = params;
581
582 let local_var_configuration = &self.configuration;
583
584 let local_var_client = &local_var_configuration.client;
585
586 let local_var_uri_str = format!(
587 "{}/collections/{collectionName}/synonyms/{synonymId}",
588 local_var_configuration.base_path,
589 collectionName = crate::apis::urlencode(collection_name),
590 synonymId = crate::apis::urlencode(synonym_id)
591 );
592 let mut local_var_req_builder = local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
593
594 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
595 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
596 }
597 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
598 let local_var_key = local_var_apikey.key.clone();
599 let local_var_value = match local_var_apikey.prefix {
600 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
601 None => local_var_key,
602 };
603 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
604 };
605
606 let local_var_req = local_var_req_builder.build()?;
607 let local_var_resp = local_var_client.execute(local_var_req).await?;
608
609 let local_var_status = local_var_resp.status();
610 let local_var_content = local_var_resp.text().await?;
611
612 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
613 serde_json::from_str(&local_var_content).map_err(Error::from)
614 } else {
615 let local_var_entity: Option<DeleteSearchSynonymError> = serde_json::from_str(&local_var_content).ok();
616 let local_var_error = ResponseContent {
617 status: local_var_status,
618 content: local_var_content,
619 entity: local_var_entity,
620 };
621 Err(Error::ResponseError(local_var_error))
622 }
623 }
624
625 async fn export_documents(&self, params: ExportDocumentsParams) -> Result<String, Error<ExportDocumentsError>> {
627 let ExportDocumentsParams {
628 collection_name,
629 filter_by,
630 include_fields,
631 exclude_fields,
632 } = params;
633
634 let local_var_configuration = &self.configuration;
635
636 let local_var_client = &local_var_configuration.client;
637
638 let local_var_uri_str = format!(
639 "{}/collections/{collectionName}/documents/export",
640 local_var_configuration.base_path,
641 collectionName = crate::apis::urlencode(collection_name)
642 );
643 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
644
645 if let Some(ref local_var_str) = filter_by {
646 local_var_req_builder = local_var_req_builder.query(&[("filter_by", &local_var_str.to_string())]);
647 }
648 if let Some(ref local_var_str) = include_fields {
649 local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
650 }
651 if let Some(ref local_var_str) = exclude_fields {
652 local_var_req_builder = local_var_req_builder.query(&[("exclude_fields", &local_var_str.to_string())]);
653 }
654 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
655 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
656 }
657 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
658 let local_var_key = local_var_apikey.key.clone();
659 let local_var_value = match local_var_apikey.prefix {
660 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
661 None => local_var_key,
662 };
663 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
664 };
665
666 let local_var_req = local_var_req_builder.build()?;
667 let local_var_resp = local_var_client.execute(local_var_req).await?;
668
669 let local_var_status = local_var_resp.status();
670 let local_var_content = local_var_resp.text().await?;
671
672 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
673 Ok(local_var_content)
675 } else {
676 let local_var_entity: Option<ExportDocumentsError> = serde_json::from_str(&local_var_content).ok();
677 let local_var_error = ResponseContent {
678 status: local_var_status,
679 content: local_var_content,
680 entity: local_var_entity,
681 };
682 Err(Error::ResponseError(local_var_error))
683 }
684 }
685
686 async fn get_document(&self, params: GetDocumentParams) -> Result<serde_json::Value, Error<GetDocumentError>> {
688 let GetDocumentParams {
689 collection_name,
690 document_id,
691 } = params;
692
693 let local_var_configuration = &self.configuration;
694
695 let local_var_client = &local_var_configuration.client;
696
697 let local_var_uri_str = format!(
698 "{}/collections/{collectionName}/documents/{documentId}",
699 local_var_configuration.base_path,
700 collectionName = crate::apis::urlencode(collection_name),
701 documentId = crate::apis::urlencode(document_id)
702 );
703 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
704
705 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
706 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
707 }
708 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
709 let local_var_key = local_var_apikey.key.clone();
710 let local_var_value = match local_var_apikey.prefix {
711 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
712 None => local_var_key,
713 };
714 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
715 };
716
717 let local_var_req = local_var_req_builder.build()?;
718 let local_var_resp = local_var_client.execute(local_var_req).await?;
719
720 let local_var_status = local_var_resp.status();
721 let local_var_content = local_var_resp.text().await?;
722
723 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
724 serde_json::from_str(&local_var_content).map_err(Error::from)
725 } else {
726 let local_var_entity: Option<GetDocumentError> = serde_json::from_str(&local_var_content).ok();
727 let local_var_error = ResponseContent {
728 status: local_var_status,
729 content: local_var_content,
730 entity: local_var_entity,
731 };
732 Err(Error::ResponseError(local_var_error))
733 }
734 }
735
736 async fn get_search_override(
738 &self,
739 params: GetSearchOverrideParams,
740 ) -> Result<models::SearchOverride, Error<GetSearchOverrideError>> {
741 let GetSearchOverrideParams {
742 collection_name,
743 override_id,
744 } = params;
745
746 let local_var_configuration = &self.configuration;
747
748 let local_var_client = &local_var_configuration.client;
749
750 let local_var_uri_str = format!(
751 "{}/collections/{collectionName}/overrides/{overrideId}",
752 local_var_configuration.base_path,
753 collectionName = crate::apis::urlencode(collection_name),
754 overrideId = crate::apis::urlencode(override_id)
755 );
756 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
757
758 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
759 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
760 }
761 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
762 let local_var_key = local_var_apikey.key.clone();
763 let local_var_value = match local_var_apikey.prefix {
764 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
765 None => local_var_key,
766 };
767 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
768 };
769
770 let local_var_req = local_var_req_builder.build()?;
771 let local_var_resp = local_var_client.execute(local_var_req).await?;
772
773 let local_var_status = local_var_resp.status();
774 let local_var_content = local_var_resp.text().await?;
775
776 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
777 serde_json::from_str(&local_var_content).map_err(Error::from)
778 } else {
779 let local_var_entity: Option<GetSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
780 let local_var_error = ResponseContent {
781 status: local_var_status,
782 content: local_var_content,
783 entity: local_var_entity,
784 };
785 Err(Error::ResponseError(local_var_error))
786 }
787 }
788
789 async fn get_search_overrides(
790 &self,
791 params: GetSearchOverridesParams,
792 ) -> Result<models::SearchOverridesResponse, Error<GetSearchOverridesError>> {
793 let GetSearchOverridesParams { collection_name } = params;
794
795 let local_var_configuration = &self.configuration;
796
797 let local_var_client = &local_var_configuration.client;
798
799 let local_var_uri_str = format!(
800 "{}/collections/{collectionName}/overrides",
801 local_var_configuration.base_path,
802 collectionName = crate::apis::urlencode(collection_name)
803 );
804 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
805
806 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
807 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
808 }
809 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
810 let local_var_key = local_var_apikey.key.clone();
811 let local_var_value = match local_var_apikey.prefix {
812 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
813 None => local_var_key,
814 };
815 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
816 };
817
818 let local_var_req = local_var_req_builder.build()?;
819 let local_var_resp = local_var_client.execute(local_var_req).await?;
820
821 let local_var_status = local_var_resp.status();
822 let local_var_content = local_var_resp.text().await?;
823
824 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
825 serde_json::from_str(&local_var_content).map_err(Error::from)
826 } else {
827 let local_var_entity: Option<GetSearchOverridesError> = serde_json::from_str(&local_var_content).ok();
828 let local_var_error = ResponseContent {
829 status: local_var_status,
830 content: local_var_content,
831 entity: local_var_entity,
832 };
833 Err(Error::ResponseError(local_var_error))
834 }
835 }
836
837 async fn get_search_synonym(
839 &self,
840 params: GetSearchSynonymParams,
841 ) -> Result<models::SearchSynonym, Error<GetSearchSynonymError>> {
842 let GetSearchSynonymParams {
843 collection_name,
844 synonym_id,
845 } = params;
846
847 let local_var_configuration = &self.configuration;
848
849 let local_var_client = &local_var_configuration.client;
850
851 let local_var_uri_str = format!(
852 "{}/collections/{collectionName}/synonyms/{synonymId}",
853 local_var_configuration.base_path,
854 collectionName = crate::apis::urlencode(collection_name),
855 synonymId = crate::apis::urlencode(synonym_id)
856 );
857 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
858
859 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
860 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
861 }
862 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
863 let local_var_key = local_var_apikey.key.clone();
864 let local_var_value = match local_var_apikey.prefix {
865 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
866 None => local_var_key,
867 };
868 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
869 };
870
871 let local_var_req = local_var_req_builder.build()?;
872 let local_var_resp = local_var_client.execute(local_var_req).await?;
873
874 let local_var_status = local_var_resp.status();
875 let local_var_content = local_var_resp.text().await?;
876
877 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
878 serde_json::from_str(&local_var_content).map_err(Error::from)
879 } else {
880 let local_var_entity: Option<GetSearchSynonymError> = serde_json::from_str(&local_var_content).ok();
881 let local_var_error = ResponseContent {
882 status: local_var_status,
883 content: local_var_content,
884 entity: local_var_entity,
885 };
886 Err(Error::ResponseError(local_var_error))
887 }
888 }
889
890 async fn get_search_synonyms(
891 &self,
892 params: GetSearchSynonymsParams,
893 ) -> Result<models::SearchSynonymsResponse, Error<GetSearchSynonymsError>> {
894 let GetSearchSynonymsParams { collection_name } = params;
895
896 let local_var_configuration = &self.configuration;
897
898 let local_var_client = &local_var_configuration.client;
899
900 let local_var_uri_str = format!(
901 "{}/collections/{collectionName}/synonyms",
902 local_var_configuration.base_path,
903 collectionName = crate::apis::urlencode(collection_name)
904 );
905 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
906
907 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
908 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
909 }
910 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
911 let local_var_key = local_var_apikey.key.clone();
912 let local_var_value = match local_var_apikey.prefix {
913 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
914 None => local_var_key,
915 };
916 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
917 };
918
919 let local_var_req = local_var_req_builder.build()?;
920 let local_var_resp = local_var_client.execute(local_var_req).await?;
921
922 let local_var_status = local_var_resp.status();
923 let local_var_content = local_var_resp.text().await?;
924
925 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
926 serde_json::from_str(&local_var_content).map_err(Error::from)
927 } else {
928 let local_var_entity: Option<GetSearchSynonymsError> = serde_json::from_str(&local_var_content).ok();
929 let local_var_error = ResponseContent {
930 status: local_var_status,
931 content: local_var_content,
932 entity: local_var_entity,
933 };
934 Err(Error::ResponseError(local_var_error))
935 }
936 }
937
938 async fn import_documents(&self, params: ImportDocumentsParams) -> Result<String, Error<ImportDocumentsError>> {
942 let ImportDocumentsParams {
943 collection_name,
944 body,
945 batch_size,
946 return_id,
947 remote_embedding_batch_size,
948 return_doc,
949 action,
950 dirty_values,
951 } = params;
952
953 let local_var_configuration = &self.configuration;
954
955 let local_var_client = &local_var_configuration.client;
956
957 let local_var_uri_str = format!(
958 "{}/collections/{collectionName}/documents/import",
959 local_var_configuration.base_path,
960 collectionName = crate::apis::urlencode(collection_name)
961 );
962 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
963
964 if let Some(ref local_var_str) = batch_size {
965 local_var_req_builder = local_var_req_builder.query(&[("batch_size", &local_var_str.to_string())]);
966 }
967 if let Some(ref local_var_str) = return_id {
968 local_var_req_builder = local_var_req_builder.query(&[("return_id", &local_var_str.to_string())]);
969 }
970 if let Some(ref local_var_str) = remote_embedding_batch_size {
971 local_var_req_builder =
972 local_var_req_builder.query(&[("remote_embedding_batch_size", &local_var_str.to_string())]);
973 }
974 if let Some(ref local_var_str) = return_doc {
975 local_var_req_builder = local_var_req_builder.query(&[("return_doc", &local_var_str.to_string())]);
976 }
977 if let Some(ref local_var_str) = action {
978 local_var_req_builder = local_var_req_builder.query(&[("action", &local_var_str.to_string())]);
979 }
980 if let Some(ref local_var_str) = dirty_values {
981 local_var_req_builder = local_var_req_builder.query(&[("dirty_values", &local_var_str.to_string())]);
982 }
983 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
984 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
985 }
986 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
987 let local_var_key = local_var_apikey.key.clone();
988 let local_var_value = match local_var_apikey.prefix {
989 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
990 None => local_var_key,
991 };
992 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
993 };
994 local_var_req_builder = local_var_req_builder.body(body);
996
997 let local_var_req = local_var_req_builder.build()?;
998 let local_var_resp = local_var_client.execute(local_var_req).await?;
999
1000 let local_var_status = local_var_resp.status();
1001 let local_var_content = local_var_resp.text().await?;
1002
1003 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1004 Ok(local_var_content)
1006 } else {
1007 let local_var_entity: Option<ImportDocumentsError> = serde_json::from_str(&local_var_content).ok();
1008 let local_var_error = ResponseContent {
1009 status: local_var_status,
1010 content: local_var_content,
1011 entity: local_var_entity,
1012 };
1013 Err(Error::ResponseError(local_var_error))
1014 }
1015 }
1016
1017 async fn index_document(&self, params: IndexDocumentParams) -> Result<serde_json::Value, Error<IndexDocumentError>> {
1020 let IndexDocumentParams {
1021 collection_name,
1022 body,
1023 action,
1024 dirty_values,
1025 } = params;
1026
1027 let local_var_configuration = &self.configuration;
1028
1029 let local_var_client = &local_var_configuration.client;
1030
1031 let local_var_uri_str = format!(
1032 "{}/collections/{collectionName}/documents",
1033 local_var_configuration.base_path,
1034 collectionName = crate::apis::urlencode(collection_name)
1035 );
1036 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
1037
1038 if let Some(ref local_var_str) = action {
1039 local_var_req_builder = local_var_req_builder.query(&[("action", &local_var_str.to_string())]);
1040 }
1041 if let Some(ref local_var_str) = dirty_values {
1042 local_var_req_builder = local_var_req_builder.query(&[("dirty_values", &local_var_str.to_string())]);
1043 }
1044 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1045 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1046 }
1047 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1048 let local_var_key = local_var_apikey.key.clone();
1049 let local_var_value = match local_var_apikey.prefix {
1050 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1051 None => local_var_key,
1052 };
1053 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1054 };
1055 local_var_req_builder = local_var_req_builder.json(&body);
1056
1057 let local_var_req = local_var_req_builder.build()?;
1058 let local_var_resp = local_var_client.execute(local_var_req).await?;
1059
1060 let local_var_status = local_var_resp.status();
1061 let local_var_content = local_var_resp.text().await?;
1062
1063 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1064 serde_json::from_str(&local_var_content).map_err(Error::from)
1065 } else {
1066 let local_var_entity: Option<IndexDocumentError> = serde_json::from_str(&local_var_content).ok();
1067 let local_var_error = ResponseContent {
1068 status: local_var_status,
1069 content: local_var_content,
1070 entity: local_var_entity,
1071 };
1072 Err(Error::ResponseError(local_var_error))
1073 }
1074 }
1075
1076 async fn multi_search(&self, params: MultiSearchParams) -> Result<models::MultiSearchResult, Error<MultiSearchError>> {
1081 let MultiSearchParams {
1082 q,
1083 query_by,
1084 query_by_weights,
1085 text_match_type,
1086 prefix,
1087 infix,
1088 max_extra_prefix,
1089 max_extra_suffix,
1090 filter_by,
1091 sort_by,
1092 facet_by,
1093 max_facet_values,
1094 facet_query,
1095 num_typos,
1096 page,
1097 per_page,
1098 limit,
1099 offset,
1100 group_by,
1101 group_limit,
1102 group_missing_values,
1103 include_fields,
1104 exclude_fields,
1105 highlight_full_fields,
1106 highlight_affix_num_tokens,
1107 highlight_start_tag,
1108 highlight_end_tag,
1109 snippet_threshold,
1110 drop_tokens_threshold,
1111 drop_tokens_mode,
1112 typo_tokens_threshold,
1113 enable_typos_for_alpha_numerical_tokens,
1114 filter_curated_hits,
1115 enable_synonyms,
1116 synonym_prefix,
1117 synonym_num_typos,
1118 pinned_hits,
1119 hidden_hits,
1120 override_tags,
1121 highlight_fields,
1122 pre_segmented_query,
1123 preset,
1124 enable_overrides,
1125 prioritize_exact_match,
1126 prioritize_token_position,
1127 prioritize_num_matching_fields,
1128 enable_typos_for_numerical_tokens,
1129 exhaustive_search,
1130 search_cutoff_ms,
1131 use_cache,
1132 cache_ttl,
1133 min_len_1typo,
1134 min_len_2typo,
1135 vector_query,
1136 remote_embedding_timeout_ms,
1137 remote_embedding_num_tries,
1138 facet_strategy,
1139 stopwords,
1140 facet_return_parent,
1141 voice_query,
1142 conversation,
1143 conversation_model_id,
1144 conversation_id,
1145 multi_search_searches_parameter,
1146 } = params;
1147
1148 let local_var_configuration = &self.configuration;
1149
1150 let local_var_client = &local_var_configuration.client;
1151
1152 let local_var_uri_str = format!("{}/multi_search", local_var_configuration.base_path);
1153 let mut local_var_req_builder = local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
1154
1155 if let Some(ref local_var_str) = q {
1156 local_var_req_builder = local_var_req_builder.query(&[("q", &local_var_str.to_string())]);
1157 }
1158 if let Some(ref local_var_str) = query_by {
1159 local_var_req_builder = local_var_req_builder.query(&[("query_by", &local_var_str.to_string())]);
1160 }
1161 if let Some(ref local_var_str) = query_by_weights {
1162 local_var_req_builder = local_var_req_builder.query(&[("query_by_weights", &local_var_str.to_string())]);
1163 }
1164 if let Some(ref local_var_str) = text_match_type {
1165 local_var_req_builder = local_var_req_builder.query(&[("text_match_type", &local_var_str.to_string())]);
1166 }
1167 if let Some(ref local_var_str) = prefix {
1168 local_var_req_builder = local_var_req_builder.query(&[("prefix", &local_var_str.to_string())]);
1169 }
1170 if let Some(ref local_var_str) = infix {
1171 local_var_req_builder = local_var_req_builder.query(&[("infix", &local_var_str.to_string())]);
1172 }
1173 if let Some(ref local_var_str) = max_extra_prefix {
1174 local_var_req_builder = local_var_req_builder.query(&[("max_extra_prefix", &local_var_str.to_string())]);
1175 }
1176 if let Some(ref local_var_str) = max_extra_suffix {
1177 local_var_req_builder = local_var_req_builder.query(&[("max_extra_suffix", &local_var_str.to_string())]);
1178 }
1179 if let Some(ref local_var_str) = filter_by {
1180 local_var_req_builder = local_var_req_builder.query(&[("filter_by", &local_var_str.to_string())]);
1181 }
1182 if let Some(ref local_var_str) = sort_by {
1183 local_var_req_builder = local_var_req_builder.query(&[("sort_by", &local_var_str.to_string())]);
1184 }
1185 if let Some(ref local_var_str) = facet_by {
1186 local_var_req_builder = local_var_req_builder.query(&[("facet_by", &local_var_str.to_string())]);
1187 }
1188 if let Some(ref local_var_str) = max_facet_values {
1189 local_var_req_builder = local_var_req_builder.query(&[("max_facet_values", &local_var_str.to_string())]);
1190 }
1191 if let Some(ref local_var_str) = facet_query {
1192 local_var_req_builder = local_var_req_builder.query(&[("facet_query", &local_var_str.to_string())]);
1193 }
1194 if let Some(ref local_var_str) = num_typos {
1195 local_var_req_builder = local_var_req_builder.query(&[("num_typos", &local_var_str.to_string())]);
1196 }
1197 if let Some(ref local_var_str) = page {
1198 local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
1199 }
1200 if let Some(ref local_var_str) = per_page {
1201 local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
1202 }
1203 if let Some(ref local_var_str) = limit {
1204 local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
1205 }
1206 if let Some(ref local_var_str) = offset {
1207 local_var_req_builder = local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
1208 }
1209 if let Some(ref local_var_str) = group_by {
1210 local_var_req_builder = local_var_req_builder.query(&[("group_by", &local_var_str.to_string())]);
1211 }
1212 if let Some(ref local_var_str) = group_limit {
1213 local_var_req_builder = local_var_req_builder.query(&[("group_limit", &local_var_str.to_string())]);
1214 }
1215 if let Some(ref local_var_str) = group_missing_values {
1216 local_var_req_builder = local_var_req_builder.query(&[("group_missing_values", &local_var_str.to_string())]);
1217 }
1218 if let Some(ref local_var_str) = include_fields {
1219 local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
1220 }
1221 if let Some(ref local_var_str) = exclude_fields {
1222 local_var_req_builder = local_var_req_builder.query(&[("exclude_fields", &local_var_str.to_string())]);
1223 }
1224 if let Some(ref local_var_str) = highlight_full_fields {
1225 local_var_req_builder = local_var_req_builder.query(&[("highlight_full_fields", &local_var_str.to_string())]);
1226 }
1227 if let Some(ref local_var_str) = highlight_affix_num_tokens {
1228 local_var_req_builder =
1229 local_var_req_builder.query(&[("highlight_affix_num_tokens", &local_var_str.to_string())]);
1230 }
1231 if let Some(ref local_var_str) = highlight_start_tag {
1232 local_var_req_builder = local_var_req_builder.query(&[("highlight_start_tag", &local_var_str.to_string())]);
1233 }
1234 if let Some(ref local_var_str) = highlight_end_tag {
1235 local_var_req_builder = local_var_req_builder.query(&[("highlight_end_tag", &local_var_str.to_string())]);
1236 }
1237 if let Some(ref local_var_str) = snippet_threshold {
1238 local_var_req_builder = local_var_req_builder.query(&[("snippet_threshold", &local_var_str.to_string())]);
1239 }
1240 if let Some(ref local_var_str) = drop_tokens_threshold {
1241 local_var_req_builder = local_var_req_builder.query(&[("drop_tokens_threshold", &local_var_str.to_string())]);
1242 }
1243 if let Some(ref local_var_str) = drop_tokens_mode {
1244 local_var_req_builder = local_var_req_builder.query(&[("drop_tokens_mode", &local_var_str.to_string())]);
1245 }
1246 if let Some(ref local_var_str) = typo_tokens_threshold {
1247 local_var_req_builder = local_var_req_builder.query(&[("typo_tokens_threshold", &local_var_str.to_string())]);
1248 }
1249 if let Some(ref local_var_str) = enable_typos_for_alpha_numerical_tokens {
1250 local_var_req_builder =
1251 local_var_req_builder.query(&[("enable_typos_for_alpha_numerical_tokens", &local_var_str.to_string())]);
1252 }
1253 if let Some(ref local_var_str) = filter_curated_hits {
1254 local_var_req_builder = local_var_req_builder.query(&[("filter_curated_hits", &local_var_str.to_string())]);
1255 }
1256 if let Some(ref local_var_str) = enable_synonyms {
1257 local_var_req_builder = local_var_req_builder.query(&[("enable_synonyms", &local_var_str.to_string())]);
1258 }
1259 if let Some(ref local_var_str) = synonym_prefix {
1260 local_var_req_builder = local_var_req_builder.query(&[("synonym_prefix", &local_var_str.to_string())]);
1261 }
1262 if let Some(ref local_var_str) = synonym_num_typos {
1263 local_var_req_builder = local_var_req_builder.query(&[("synonym_num_typos", &local_var_str.to_string())]);
1264 }
1265 if let Some(ref local_var_str) = pinned_hits {
1266 local_var_req_builder = local_var_req_builder.query(&[("pinned_hits", &local_var_str.to_string())]);
1267 }
1268 if let Some(ref local_var_str) = hidden_hits {
1269 local_var_req_builder = local_var_req_builder.query(&[("hidden_hits", &local_var_str.to_string())]);
1270 }
1271 if let Some(ref local_var_str) = override_tags {
1272 local_var_req_builder = local_var_req_builder.query(&[("override_tags", &local_var_str.to_string())]);
1273 }
1274 if let Some(ref local_var_str) = highlight_fields {
1275 local_var_req_builder = local_var_req_builder.query(&[("highlight_fields", &local_var_str.to_string())]);
1276 }
1277 if let Some(ref local_var_str) = pre_segmented_query {
1278 local_var_req_builder = local_var_req_builder.query(&[("pre_segmented_query", &local_var_str.to_string())]);
1279 }
1280 if let Some(ref local_var_str) = preset {
1281 local_var_req_builder = local_var_req_builder.query(&[("preset", &local_var_str.to_string())]);
1282 }
1283 if let Some(ref local_var_str) = enable_overrides {
1284 local_var_req_builder = local_var_req_builder.query(&[("enable_overrides", &local_var_str.to_string())]);
1285 }
1286 if let Some(ref local_var_str) = prioritize_exact_match {
1287 local_var_req_builder = local_var_req_builder.query(&[("prioritize_exact_match", &local_var_str.to_string())]);
1288 }
1289 if let Some(ref local_var_str) = prioritize_token_position {
1290 local_var_req_builder =
1291 local_var_req_builder.query(&[("prioritize_token_position", &local_var_str.to_string())]);
1292 }
1293 if let Some(ref local_var_str) = prioritize_num_matching_fields {
1294 local_var_req_builder =
1295 local_var_req_builder.query(&[("prioritize_num_matching_fields", &local_var_str.to_string())]);
1296 }
1297 if let Some(ref local_var_str) = enable_typos_for_numerical_tokens {
1298 local_var_req_builder =
1299 local_var_req_builder.query(&[("enable_typos_for_numerical_tokens", &local_var_str.to_string())]);
1300 }
1301 if let Some(ref local_var_str) = exhaustive_search {
1302 local_var_req_builder = local_var_req_builder.query(&[("exhaustive_search", &local_var_str.to_string())]);
1303 }
1304 if let Some(ref local_var_str) = search_cutoff_ms {
1305 local_var_req_builder = local_var_req_builder.query(&[("search_cutoff_ms", &local_var_str.to_string())]);
1306 }
1307 if let Some(ref local_var_str) = use_cache {
1308 local_var_req_builder = local_var_req_builder.query(&[("use_cache", &local_var_str.to_string())]);
1309 }
1310 if let Some(ref local_var_str) = cache_ttl {
1311 local_var_req_builder = local_var_req_builder.query(&[("cache_ttl", &local_var_str.to_string())]);
1312 }
1313 if let Some(ref local_var_str) = min_len_1typo {
1314 local_var_req_builder = local_var_req_builder.query(&[("min_len_1typo", &local_var_str.to_string())]);
1315 }
1316 if let Some(ref local_var_str) = min_len_2typo {
1317 local_var_req_builder = local_var_req_builder.query(&[("min_len_2typo", &local_var_str.to_string())]);
1318 }
1319 if let Some(ref local_var_str) = vector_query {
1320 local_var_req_builder = local_var_req_builder.query(&[("vector_query", &local_var_str.to_string())]);
1321 }
1322 if let Some(ref local_var_str) = remote_embedding_timeout_ms {
1323 local_var_req_builder =
1324 local_var_req_builder.query(&[("remote_embedding_timeout_ms", &local_var_str.to_string())]);
1325 }
1326 if let Some(ref local_var_str) = remote_embedding_num_tries {
1327 local_var_req_builder =
1328 local_var_req_builder.query(&[("remote_embedding_num_tries", &local_var_str.to_string())]);
1329 }
1330 if let Some(ref local_var_str) = facet_strategy {
1331 local_var_req_builder = local_var_req_builder.query(&[("facet_strategy", &local_var_str.to_string())]);
1332 }
1333 if let Some(ref local_var_str) = stopwords {
1334 local_var_req_builder = local_var_req_builder.query(&[("stopwords", &local_var_str.to_string())]);
1335 }
1336 if let Some(ref local_var_str) = facet_return_parent {
1337 local_var_req_builder = local_var_req_builder.query(&[("facet_return_parent", &local_var_str.to_string())]);
1338 }
1339 if let Some(ref local_var_str) = voice_query {
1340 local_var_req_builder = local_var_req_builder.query(&[("voice_query", &local_var_str.to_string())]);
1341 }
1342 if let Some(ref local_var_str) = conversation {
1343 local_var_req_builder = local_var_req_builder.query(&[("conversation", &local_var_str.to_string())]);
1344 }
1345 if let Some(ref local_var_str) = conversation_model_id {
1346 local_var_req_builder = local_var_req_builder.query(&[("conversation_model_id", &local_var_str.to_string())]);
1347 }
1348 if let Some(ref local_var_str) = conversation_id {
1349 local_var_req_builder = local_var_req_builder.query(&[("conversation_id", &local_var_str.to_string())]);
1350 }
1351 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1352 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1353 }
1354 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1355 let local_var_key = local_var_apikey.key.clone();
1356 let local_var_value = match local_var_apikey.prefix {
1357 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1358 None => local_var_key,
1359 };
1360 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1361 };
1362 local_var_req_builder = local_var_req_builder.json(&multi_search_searches_parameter);
1363
1364 let local_var_req = local_var_req_builder.build()?;
1365 let local_var_resp = local_var_client.execute(local_var_req).await?;
1366
1367 let local_var_status = local_var_resp.status();
1368 let local_var_content = local_var_resp.text().await?;
1369
1370 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1371 serde_json::from_str(&local_var_content).map_err(Error::from)
1372 } else {
1373 let local_var_entity: Option<MultiSearchError> = serde_json::from_str(&local_var_content).ok();
1374 let local_var_error = ResponseContent {
1375 status: local_var_status,
1376 content: local_var_content,
1377 entity: local_var_entity,
1378 };
1379 Err(Error::ResponseError(local_var_error))
1380 }
1381 }
1382
1383 async fn search_collection(
1385 &self,
1386 params: SearchCollectionParams,
1387 ) -> Result<models::SearchResult, Error<SearchCollectionError>> {
1388 let SearchCollectionParams {
1389 collection_name,
1390 q,
1391 query_by,
1392 query_by_weights,
1393 text_match_type,
1394 prefix,
1395 infix,
1396 max_extra_prefix,
1397 max_extra_suffix,
1398 filter_by,
1399 sort_by,
1400 facet_by,
1401 max_facet_values,
1402 facet_query,
1403 num_typos,
1404 page,
1405 per_page,
1406 limit,
1407 offset,
1408 group_by,
1409 group_limit,
1410 group_missing_values,
1411 include_fields,
1412 exclude_fields,
1413 highlight_full_fields,
1414 highlight_affix_num_tokens,
1415 highlight_start_tag,
1416 highlight_end_tag,
1417 enable_highlight_v1,
1418 snippet_threshold,
1419 drop_tokens_threshold,
1420 drop_tokens_mode,
1421 typo_tokens_threshold,
1422 enable_typos_for_alpha_numerical_tokens,
1423 filter_curated_hits,
1424 enable_synonyms,
1425 synonym_prefix,
1426 synonym_num_typos,
1427 pinned_hits,
1428 hidden_hits,
1429 override_tags,
1430 highlight_fields,
1431 split_join_tokens,
1432 pre_segmented_query,
1433 preset,
1434 enable_overrides,
1435 prioritize_exact_match,
1436 max_candidates,
1437 prioritize_token_position,
1438 prioritize_num_matching_fields,
1439 enable_typos_for_numerical_tokens,
1440 exhaustive_search,
1441 search_cutoff_ms,
1442 use_cache,
1443 cache_ttl,
1444 min_len_1typo,
1445 min_len_2typo,
1446 vector_query,
1447 remote_embedding_timeout_ms,
1448 remote_embedding_num_tries,
1449 facet_strategy,
1450 stopwords,
1451 facet_return_parent,
1452 voice_query,
1453 conversation,
1454 conversation_model_id,
1455 conversation_id,
1456 } = params;
1457
1458 let local_var_configuration = &self.configuration;
1459
1460 let local_var_client = &local_var_configuration.client;
1461
1462 let local_var_uri_str = format!(
1463 "{}/collections/{collectionName}/documents/search",
1464 local_var_configuration.base_path,
1465 collectionName = crate::apis::urlencode(collection_name)
1466 );
1467 let mut local_var_req_builder = local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
1468
1469 local_var_req_builder = local_var_req_builder.query(&[("q", &q.to_string())]);
1470 local_var_req_builder = local_var_req_builder.query(&[("query_by", &query_by.to_string())]);
1471 if let Some(ref local_var_str) = query_by_weights {
1472 local_var_req_builder = local_var_req_builder.query(&[("query_by_weights", &local_var_str.to_string())]);
1473 }
1474 if let Some(ref local_var_str) = text_match_type {
1475 local_var_req_builder = local_var_req_builder.query(&[("text_match_type", &local_var_str.to_string())]);
1476 }
1477 if let Some(ref local_var_str) = prefix {
1478 local_var_req_builder = local_var_req_builder.query(&[("prefix", &local_var_str.to_string())]);
1479 }
1480 if let Some(ref local_var_str) = infix {
1481 local_var_req_builder = local_var_req_builder.query(&[("infix", &local_var_str.to_string())]);
1482 }
1483 if let Some(ref local_var_str) = max_extra_prefix {
1484 local_var_req_builder = local_var_req_builder.query(&[("max_extra_prefix", &local_var_str.to_string())]);
1485 }
1486 if let Some(ref local_var_str) = max_extra_suffix {
1487 local_var_req_builder = local_var_req_builder.query(&[("max_extra_suffix", &local_var_str.to_string())]);
1488 }
1489 if let Some(ref local_var_str) = filter_by {
1490 local_var_req_builder = local_var_req_builder.query(&[("filter_by", &local_var_str.to_string())]);
1491 }
1492 if let Some(ref local_var_str) = sort_by {
1493 local_var_req_builder = local_var_req_builder.query(&[("sort_by", &local_var_str.to_string())]);
1494 }
1495 if let Some(ref local_var_str) = facet_by {
1496 local_var_req_builder = local_var_req_builder.query(&[("facet_by", &local_var_str.to_string())]);
1497 }
1498 if let Some(ref local_var_str) = max_facet_values {
1499 local_var_req_builder = local_var_req_builder.query(&[("max_facet_values", &local_var_str.to_string())]);
1500 }
1501 if let Some(ref local_var_str) = facet_query {
1502 local_var_req_builder = local_var_req_builder.query(&[("facet_query", &local_var_str.to_string())]);
1503 }
1504 if let Some(ref local_var_str) = num_typos {
1505 local_var_req_builder = local_var_req_builder.query(&[("num_typos", &local_var_str.to_string())]);
1506 }
1507 if let Some(ref local_var_str) = page {
1508 local_var_req_builder = local_var_req_builder.query(&[("page", &local_var_str.to_string())]);
1509 }
1510 if let Some(ref local_var_str) = per_page {
1511 local_var_req_builder = local_var_req_builder.query(&[("per_page", &local_var_str.to_string())]);
1512 }
1513 if let Some(ref local_var_str) = limit {
1514 local_var_req_builder = local_var_req_builder.query(&[("limit", &local_var_str.to_string())]);
1515 }
1516 if let Some(ref local_var_str) = offset {
1517 local_var_req_builder = local_var_req_builder.query(&[("offset", &local_var_str.to_string())]);
1518 }
1519 if let Some(ref local_var_str) = group_by {
1520 local_var_req_builder = local_var_req_builder.query(&[("group_by", &local_var_str.to_string())]);
1521 }
1522 if let Some(ref local_var_str) = group_limit {
1523 local_var_req_builder = local_var_req_builder.query(&[("group_limit", &local_var_str.to_string())]);
1524 }
1525 if let Some(ref local_var_str) = group_missing_values {
1526 local_var_req_builder = local_var_req_builder.query(&[("group_missing_values", &local_var_str.to_string())]);
1527 }
1528 if let Some(ref local_var_str) = include_fields {
1529 local_var_req_builder = local_var_req_builder.query(&[("include_fields", &local_var_str.to_string())]);
1530 }
1531 if let Some(ref local_var_str) = exclude_fields {
1532 local_var_req_builder = local_var_req_builder.query(&[("exclude_fields", &local_var_str.to_string())]);
1533 }
1534 if let Some(ref local_var_str) = highlight_full_fields {
1535 local_var_req_builder = local_var_req_builder.query(&[("highlight_full_fields", &local_var_str.to_string())]);
1536 }
1537 if let Some(ref local_var_str) = highlight_affix_num_tokens {
1538 local_var_req_builder =
1539 local_var_req_builder.query(&[("highlight_affix_num_tokens", &local_var_str.to_string())]);
1540 }
1541 if let Some(ref local_var_str) = highlight_start_tag {
1542 local_var_req_builder = local_var_req_builder.query(&[("highlight_start_tag", &local_var_str.to_string())]);
1543 }
1544 if let Some(ref local_var_str) = highlight_end_tag {
1545 local_var_req_builder = local_var_req_builder.query(&[("highlight_end_tag", &local_var_str.to_string())]);
1546 }
1547 if let Some(ref local_var_str) = enable_highlight_v1 {
1548 local_var_req_builder = local_var_req_builder.query(&[("enable_highlight_v1", &local_var_str.to_string())]);
1549 }
1550 if let Some(ref local_var_str) = snippet_threshold {
1551 local_var_req_builder = local_var_req_builder.query(&[("snippet_threshold", &local_var_str.to_string())]);
1552 }
1553 if let Some(ref local_var_str) = drop_tokens_threshold {
1554 local_var_req_builder = local_var_req_builder.query(&[("drop_tokens_threshold", &local_var_str.to_string())]);
1555 }
1556 if let Some(ref local_var_str) = drop_tokens_mode {
1557 local_var_req_builder = local_var_req_builder.query(&[("drop_tokens_mode", &local_var_str.to_string())]);
1558 }
1559 if let Some(ref local_var_str) = typo_tokens_threshold {
1560 local_var_req_builder = local_var_req_builder.query(&[("typo_tokens_threshold", &local_var_str.to_string())]);
1561 }
1562 if let Some(ref local_var_str) = enable_typos_for_alpha_numerical_tokens {
1563 local_var_req_builder =
1564 local_var_req_builder.query(&[("enable_typos_for_alpha_numerical_tokens", &local_var_str.to_string())]);
1565 }
1566 if let Some(ref local_var_str) = filter_curated_hits {
1567 local_var_req_builder = local_var_req_builder.query(&[("filter_curated_hits", &local_var_str.to_string())]);
1568 }
1569 if let Some(ref local_var_str) = enable_synonyms {
1570 local_var_req_builder = local_var_req_builder.query(&[("enable_synonyms", &local_var_str.to_string())]);
1571 }
1572 if let Some(ref local_var_str) = synonym_prefix {
1573 local_var_req_builder = local_var_req_builder.query(&[("synonym_prefix", &local_var_str.to_string())]);
1574 }
1575 if let Some(ref local_var_str) = synonym_num_typos {
1576 local_var_req_builder = local_var_req_builder.query(&[("synonym_num_typos", &local_var_str.to_string())]);
1577 }
1578 if let Some(ref local_var_str) = pinned_hits {
1579 local_var_req_builder = local_var_req_builder.query(&[("pinned_hits", &local_var_str.to_string())]);
1580 }
1581 if let Some(ref local_var_str) = hidden_hits {
1582 local_var_req_builder = local_var_req_builder.query(&[("hidden_hits", &local_var_str.to_string())]);
1583 }
1584 if let Some(ref local_var_str) = override_tags {
1585 local_var_req_builder = local_var_req_builder.query(&[("override_tags", &local_var_str.to_string())]);
1586 }
1587 if let Some(ref local_var_str) = highlight_fields {
1588 local_var_req_builder = local_var_req_builder.query(&[("highlight_fields", &local_var_str.to_string())]);
1589 }
1590 if let Some(ref local_var_str) = split_join_tokens {
1591 local_var_req_builder = local_var_req_builder.query(&[("split_join_tokens", &local_var_str.to_string())]);
1592 }
1593 if let Some(ref local_var_str) = pre_segmented_query {
1594 local_var_req_builder = local_var_req_builder.query(&[("pre_segmented_query", &local_var_str.to_string())]);
1595 }
1596 if let Some(ref local_var_str) = preset {
1597 local_var_req_builder = local_var_req_builder.query(&[("preset", &local_var_str.to_string())]);
1598 }
1599 if let Some(ref local_var_str) = enable_overrides {
1600 local_var_req_builder = local_var_req_builder.query(&[("enable_overrides", &local_var_str.to_string())]);
1601 }
1602 if let Some(ref local_var_str) = prioritize_exact_match {
1603 local_var_req_builder = local_var_req_builder.query(&[("prioritize_exact_match", &local_var_str.to_string())]);
1604 }
1605 if let Some(ref local_var_str) = max_candidates {
1606 local_var_req_builder = local_var_req_builder.query(&[("max_candidates", &local_var_str.to_string())]);
1607 }
1608 if let Some(ref local_var_str) = prioritize_token_position {
1609 local_var_req_builder =
1610 local_var_req_builder.query(&[("prioritize_token_position", &local_var_str.to_string())]);
1611 }
1612 if let Some(ref local_var_str) = prioritize_num_matching_fields {
1613 local_var_req_builder =
1614 local_var_req_builder.query(&[("prioritize_num_matching_fields", &local_var_str.to_string())]);
1615 }
1616 if let Some(ref local_var_str) = enable_typos_for_numerical_tokens {
1617 local_var_req_builder =
1618 local_var_req_builder.query(&[("enable_typos_for_numerical_tokens", &local_var_str.to_string())]);
1619 }
1620 if let Some(ref local_var_str) = exhaustive_search {
1621 local_var_req_builder = local_var_req_builder.query(&[("exhaustive_search", &local_var_str.to_string())]);
1622 }
1623 if let Some(ref local_var_str) = search_cutoff_ms {
1624 local_var_req_builder = local_var_req_builder.query(&[("search_cutoff_ms", &local_var_str.to_string())]);
1625 }
1626 if let Some(ref local_var_str) = use_cache {
1627 local_var_req_builder = local_var_req_builder.query(&[("use_cache", &local_var_str.to_string())]);
1628 }
1629 if let Some(ref local_var_str) = cache_ttl {
1630 local_var_req_builder = local_var_req_builder.query(&[("cache_ttl", &local_var_str.to_string())]);
1631 }
1632 if let Some(ref local_var_str) = min_len_1typo {
1633 local_var_req_builder = local_var_req_builder.query(&[("min_len_1typo", &local_var_str.to_string())]);
1634 }
1635 if let Some(ref local_var_str) = min_len_2typo {
1636 local_var_req_builder = local_var_req_builder.query(&[("min_len_2typo", &local_var_str.to_string())]);
1637 }
1638 if let Some(ref local_var_str) = vector_query {
1639 local_var_req_builder = local_var_req_builder.query(&[("vector_query", &local_var_str.to_string())]);
1640 }
1641 if let Some(ref local_var_str) = remote_embedding_timeout_ms {
1642 local_var_req_builder =
1643 local_var_req_builder.query(&[("remote_embedding_timeout_ms", &local_var_str.to_string())]);
1644 }
1645 if let Some(ref local_var_str) = remote_embedding_num_tries {
1646 local_var_req_builder =
1647 local_var_req_builder.query(&[("remote_embedding_num_tries", &local_var_str.to_string())]);
1648 }
1649 if let Some(ref local_var_str) = facet_strategy {
1650 local_var_req_builder = local_var_req_builder.query(&[("facet_strategy", &local_var_str.to_string())]);
1651 }
1652 if let Some(ref local_var_str) = stopwords {
1653 local_var_req_builder = local_var_req_builder.query(&[("stopwords", &local_var_str.to_string())]);
1654 }
1655 if let Some(ref local_var_str) = facet_return_parent {
1656 local_var_req_builder = local_var_req_builder.query(&[("facet_return_parent", &local_var_str.to_string())]);
1657 }
1658 if let Some(ref local_var_str) = voice_query {
1659 local_var_req_builder = local_var_req_builder.query(&[("voice_query", &local_var_str.to_string())]);
1660 }
1661 if let Some(ref local_var_str) = conversation {
1662 local_var_req_builder = local_var_req_builder.query(&[("conversation", &local_var_str.to_string())]);
1663 }
1664 if let Some(ref local_var_str) = conversation_model_id {
1665 local_var_req_builder = local_var_req_builder.query(&[("conversation_model_id", &local_var_str.to_string())]);
1666 }
1667 if let Some(ref local_var_str) = conversation_id {
1668 local_var_req_builder = local_var_req_builder.query(&[("conversation_id", &local_var_str.to_string())]);
1669 }
1670 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1671 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1672 }
1673 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1674 let local_var_key = local_var_apikey.key.clone();
1675 let local_var_value = match local_var_apikey.prefix {
1676 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1677 None => local_var_key,
1678 };
1679 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1680 };
1681
1682 let local_var_req = local_var_req_builder.build()?;
1683 let local_var_resp = local_var_client.execute(local_var_req).await?;
1684
1685 let local_var_status = local_var_resp.status();
1686 let local_var_content = local_var_resp.text().await?;
1687
1688 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1689 serde_json::from_str(&local_var_content).map_err(Error::from)
1690 } else {
1691 let local_var_entity: Option<SearchCollectionError> = serde_json::from_str(&local_var_content).ok();
1692 let local_var_error = ResponseContent {
1693 status: local_var_status,
1694 content: local_var_content,
1695 entity: local_var_entity,
1696 };
1697 Err(Error::ResponseError(local_var_error))
1698 }
1699 }
1700
1701 async fn update_document(&self, params: UpdateDocumentParams) -> Result<serde_json::Value, Error<UpdateDocumentError>> {
1704 let UpdateDocumentParams {
1705 collection_name,
1706 document_id,
1707 body,
1708 dirty_values,
1709 } = params;
1710
1711 let local_var_configuration = &self.configuration;
1712
1713 let local_var_client = &local_var_configuration.client;
1714
1715 let local_var_uri_str = format!(
1716 "{}/collections/{collectionName}/documents/{documentId}",
1717 local_var_configuration.base_path,
1718 collectionName = crate::apis::urlencode(collection_name),
1719 documentId = crate::apis::urlencode(document_id)
1720 );
1721 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
1722
1723 if let Some(ref local_var_str) = dirty_values {
1724 local_var_req_builder = local_var_req_builder.query(&[("dirty_values", &local_var_str.to_string())]);
1725 }
1726 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1727 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1728 }
1729 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1730 let local_var_key = local_var_apikey.key.clone();
1731 let local_var_value = match local_var_apikey.prefix {
1732 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1733 None => local_var_key,
1734 };
1735 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1736 };
1737 local_var_req_builder = local_var_req_builder.json(&body);
1738
1739 let local_var_req = local_var_req_builder.build()?;
1740 let local_var_resp = local_var_client.execute(local_var_req).await?;
1741
1742 let local_var_status = local_var_resp.status();
1743 let local_var_content = local_var_resp.text().await?;
1744
1745 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1746 serde_json::from_str(&local_var_content).map_err(Error::from)
1747 } else {
1748 let local_var_entity: Option<UpdateDocumentError> = serde_json::from_str(&local_var_content).ok();
1749 let local_var_error = ResponseContent {
1750 status: local_var_status,
1751 content: local_var_content,
1752 entity: local_var_entity,
1753 };
1754 Err(Error::ResponseError(local_var_error))
1755 }
1756 }
1757
1758 async fn update_documents(
1764 &self,
1765 params: UpdateDocumentsParams,
1766 ) -> Result<models::UpdateDocuments200Response, Error<UpdateDocumentsError>> {
1767 let UpdateDocumentsParams {
1768 collection_name,
1769 body,
1770 filter_by,
1771 } = params;
1772
1773 let local_var_configuration = &self.configuration;
1774
1775 let local_var_client = &local_var_configuration.client;
1776
1777 let local_var_uri_str = format!(
1778 "{}/collections/{collectionName}/documents",
1779 local_var_configuration.base_path,
1780 collectionName = crate::apis::urlencode(collection_name)
1781 );
1782 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PATCH, local_var_uri_str.as_str());
1783
1784 if let Some(ref local_var_str) = filter_by {
1785 local_var_req_builder = local_var_req_builder.query(&[("filter_by", &local_var_str.to_string())]);
1786 }
1787 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1788 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1789 }
1790 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1791 let local_var_key = local_var_apikey.key.clone();
1792 let local_var_value = match local_var_apikey.prefix {
1793 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1794 None => local_var_key,
1795 };
1796 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1797 };
1798 local_var_req_builder = local_var_req_builder.json(&body);
1799
1800 let local_var_req = local_var_req_builder.build()?;
1801 let local_var_resp = local_var_client.execute(local_var_req).await?;
1802
1803 let local_var_status = local_var_resp.status();
1804 let local_var_content = local_var_resp.text().await?;
1805
1806 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1807 serde_json::from_str(&local_var_content).map_err(Error::from)
1808 } else {
1809 let local_var_entity: Option<UpdateDocumentsError> = serde_json::from_str(&local_var_content).ok();
1810 let local_var_error = ResponseContent {
1811 status: local_var_status,
1812 content: local_var_content,
1813 entity: local_var_entity,
1814 };
1815 Err(Error::ResponseError(local_var_error))
1816 }
1817 }
1818
1819 async fn upsert_search_override(
1823 &self,
1824 params: UpsertSearchOverrideParams,
1825 ) -> Result<models::SearchOverride, Error<UpsertSearchOverrideError>> {
1826 let UpsertSearchOverrideParams {
1827 collection_name,
1828 override_id,
1829 search_override_schema,
1830 } = params;
1831
1832 let local_var_configuration = &self.configuration;
1833
1834 let local_var_client = &local_var_configuration.client;
1835
1836 let local_var_uri_str = format!(
1837 "{}/collections/{collectionName}/overrides/{overrideId}",
1838 local_var_configuration.base_path,
1839 collectionName = crate::apis::urlencode(collection_name),
1840 overrideId = crate::apis::urlencode(override_id)
1841 );
1842 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1843
1844 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1845 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1846 }
1847 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1848 let local_var_key = local_var_apikey.key.clone();
1849 let local_var_value = match local_var_apikey.prefix {
1850 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1851 None => local_var_key,
1852 };
1853 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1854 };
1855 local_var_req_builder = local_var_req_builder.json(&search_override_schema);
1856
1857 let local_var_req = local_var_req_builder.build()?;
1858 let local_var_resp = local_var_client.execute(local_var_req).await?;
1859
1860 let local_var_status = local_var_resp.status();
1861 let local_var_content = local_var_resp.text().await?;
1862
1863 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1864 serde_json::from_str(&local_var_content).map_err(Error::from)
1865 } else {
1866 let local_var_entity: Option<UpsertSearchOverrideError> = serde_json::from_str(&local_var_content).ok();
1867 let local_var_error = ResponseContent {
1868 status: local_var_status,
1869 content: local_var_content,
1870 entity: local_var_entity,
1871 };
1872 Err(Error::ResponseError(local_var_error))
1873 }
1874 }
1875
1876 async fn upsert_search_synonym(
1879 &self,
1880 params: UpsertSearchSynonymParams,
1881 ) -> Result<models::SearchSynonym, Error<UpsertSearchSynonymError>> {
1882 let UpsertSearchSynonymParams {
1883 collection_name,
1884 synonym_id,
1885 search_synonym_schema,
1886 } = params;
1887
1888 let local_var_configuration = &self.configuration;
1889
1890 let local_var_client = &local_var_configuration.client;
1891
1892 let local_var_uri_str = format!(
1893 "{}/collections/{collectionName}/synonyms/{synonymId}",
1894 local_var_configuration.base_path,
1895 collectionName = crate::apis::urlencode(collection_name),
1896 synonymId = crate::apis::urlencode(synonym_id)
1897 );
1898 let mut local_var_req_builder = local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1899
1900 if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1901 local_var_req_builder = local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1902 }
1903 if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1904 let local_var_key = local_var_apikey.key.clone();
1905 let local_var_value = match local_var_apikey.prefix {
1906 Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1907 None => local_var_key,
1908 };
1909 local_var_req_builder = local_var_req_builder.header("X-TYPESENSE-API-KEY", local_var_value);
1910 };
1911 local_var_req_builder = local_var_req_builder.json(&search_synonym_schema);
1912
1913 let local_var_req = local_var_req_builder.build()?;
1914 let local_var_resp = local_var_client.execute(local_var_req).await?;
1915
1916 let local_var_status = local_var_resp.status();
1917 let local_var_content = local_var_resp.text().await?;
1918
1919 if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1920 serde_json::from_str(&local_var_content).map_err(Error::from)
1921 } else {
1922 let local_var_entity: Option<UpsertSearchSynonymError> = serde_json::from_str(&local_var_content).ok();
1923 let local_var_error = ResponseContent {
1924 status: local_var_status,
1925 content: local_var_content,
1926 entity: local_var_entity,
1927 };
1928 Err(Error::ResponseError(local_var_error))
1929 }
1930 }
1931}
1932
1933#[derive(Debug, Clone, Serialize, Deserialize)]
1935#[serde(untagged)]
1936pub enum DeleteDocumentError {
1937 Status404(models::ApiResponse),
1938 UnknownValue(serde_json::Value),
1939}
1940
1941#[derive(Debug, Clone, Serialize, Deserialize)]
1943#[serde(untagged)]
1944pub enum DeleteDocumentsError {
1945 Status404(models::ApiResponse),
1946 UnknownValue(serde_json::Value),
1947}
1948
1949#[derive(Debug, Clone, Serialize, Deserialize)]
1951#[serde(untagged)]
1952pub enum DeleteSearchOverrideError {
1953 Status404(models::ApiResponse),
1954 UnknownValue(serde_json::Value),
1955}
1956
1957#[derive(Debug, Clone, Serialize, Deserialize)]
1959#[serde(untagged)]
1960pub enum DeleteSearchSynonymError {
1961 Status404(models::ApiResponse),
1962 UnknownValue(serde_json::Value),
1963}
1964
1965#[derive(Debug, Clone, Serialize, Deserialize)]
1967#[serde(untagged)]
1968pub enum ExportDocumentsError {
1969 Status404(models::ApiResponse),
1970 UnknownValue(serde_json::Value),
1971}
1972
1973#[derive(Debug, Clone, Serialize, Deserialize)]
1975#[serde(untagged)]
1976pub enum GetDocumentError {
1977 Status404(models::ApiResponse),
1978 UnknownValue(serde_json::Value),
1979}
1980
1981#[derive(Debug, Clone, Serialize, Deserialize)]
1983#[serde(untagged)]
1984pub enum GetSearchOverrideError {
1985 UnknownValue(serde_json::Value),
1986}
1987
1988#[derive(Debug, Clone, Serialize, Deserialize)]
1990#[serde(untagged)]
1991pub enum GetSearchOverridesError {
1992 UnknownValue(serde_json::Value),
1993}
1994
1995#[derive(Debug, Clone, Serialize, Deserialize)]
1997#[serde(untagged)]
1998pub enum GetSearchSynonymError {
1999 Status404(models::ApiResponse),
2000 UnknownValue(serde_json::Value),
2001}
2002
2003#[derive(Debug, Clone, Serialize, Deserialize)]
2005#[serde(untagged)]
2006pub enum GetSearchSynonymsError {
2007 Status404(models::ApiResponse),
2008 UnknownValue(serde_json::Value),
2009}
2010
2011#[derive(Debug, Clone, Serialize, Deserialize)]
2013#[serde(untagged)]
2014pub enum ImportDocumentsError {
2015 Status400(models::ApiResponse),
2016 Status404(models::ApiResponse),
2017 UnknownValue(serde_json::Value),
2018}
2019
2020#[derive(Debug, Clone, Serialize, Deserialize)]
2022#[serde(untagged)]
2023pub enum IndexDocumentError {
2024 Status404(models::ApiResponse),
2025 UnknownValue(serde_json::Value),
2026}
2027
2028#[derive(Debug, Clone, Serialize, Deserialize)]
2030#[serde(untagged)]
2031pub enum MultiSearchError {
2032 Status400(models::ApiResponse),
2033 UnknownValue(serde_json::Value),
2034}
2035
2036#[derive(Debug, Clone, Serialize, Deserialize)]
2038#[serde(untagged)]
2039pub enum SearchCollectionError {
2040 Status400(models::ApiResponse),
2041 Status404(models::ApiResponse),
2042 UnknownValue(serde_json::Value),
2043}
2044
2045#[derive(Debug, Clone, Serialize, Deserialize)]
2047#[serde(untagged)]
2048pub enum UpdateDocumentError {
2049 Status404(models::ApiResponse),
2050 UnknownValue(serde_json::Value),
2051}
2052
2053#[derive(Debug, Clone, Serialize, Deserialize)]
2055#[serde(untagged)]
2056pub enum UpdateDocumentsError {
2057 Status400(models::ApiResponse),
2058 Status404(models::ApiResponse),
2059 UnknownValue(serde_json::Value),
2060}
2061
2062#[derive(Debug, Clone, Serialize, Deserialize)]
2064#[serde(untagged)]
2065pub enum UpsertSearchOverrideError {
2066 Status404(models::ApiResponse),
2067 UnknownValue(serde_json::Value),
2068}
2069
2070#[derive(Debug, Clone, Serialize, Deserialize)]
2072#[serde(untagged)]
2073pub enum UpsertSearchSynonymError {
2074 Status404(models::ApiResponse),
2075 UnknownValue(serde_json::Value),
2076}