trieve_client/apis/
chunk_group_api.rs

1/*
2 * Trieve API
3 *
4 * Trieve OpenAPI Specification. This document describes all of the operations available through the Trieve API.
5 *
6 * The version of the OpenAPI document: 0.11.7
7 * Contact: developers@trieve.ai
8 * Generated by: https://openapi-generator.tech
9 */
10
11use reqwest;
12
13use super::{configuration, Error};
14use crate::{apis::ResponseContent, models};
15
16/// struct for typed errors of method [`add_chunk_to_group`]
17#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(untagged)]
19pub enum AddChunkToGroupError {
20    Status400(models::ErrorResponseBody),
21    UnknownValue(serde_json::Value),
22}
23
24/// struct for typed errors of method [`add_chunk_to_group_by_tracking_id`]
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(untagged)]
27pub enum AddChunkToGroupByTrackingIdError {
28    Status400(models::ErrorResponseBody),
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`create_chunk_group`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum CreateChunkGroupError {
36    Status400(models::ErrorResponseBody),
37    Status413(models::ErrorResponseBody),
38    UnknownValue(serde_json::Value),
39}
40
41/// struct for typed errors of method [`delete_chunk_group`]
42#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(untagged)]
44pub enum DeleteChunkGroupError {
45    Status400(models::ErrorResponseBody),
46    UnknownValue(serde_json::Value),
47}
48
49/// struct for typed errors of method [`delete_group_by_tracking_id`]
50#[derive(Debug, Clone, Serialize, Deserialize)]
51#[serde(untagged)]
52pub enum DeleteGroupByTrackingIdError {
53    Status400(models::ErrorResponseBody),
54    UnknownValue(serde_json::Value),
55}
56
57/// struct for typed errors of method [`get_chunk_group`]
58#[derive(Debug, Clone, Serialize, Deserialize)]
59#[serde(untagged)]
60pub enum GetChunkGroupError {
61    Status400(models::ErrorResponseBody),
62    Status404(models::ErrorResponseBody),
63    UnknownValue(serde_json::Value),
64}
65
66/// struct for typed errors of method [`get_chunks_in_group`]
67#[derive(Debug, Clone, Serialize, Deserialize)]
68#[serde(untagged)]
69pub enum GetChunksInGroupError {
70    Status400(models::ErrorResponseBody),
71    Status404(models::ErrorResponseBody),
72    UnknownValue(serde_json::Value),
73}
74
75/// struct for typed errors of method [`get_chunks_in_group_by_tracking_id`]
76#[derive(Debug, Clone, Serialize, Deserialize)]
77#[serde(untagged)]
78pub enum GetChunksInGroupByTrackingIdError {
79    Status400(models::ErrorResponseBody),
80    Status404(models::ErrorResponseBody),
81    UnknownValue(serde_json::Value),
82}
83
84/// struct for typed errors of method [`get_group_by_tracking_id`]
85#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(untagged)]
87pub enum GetGroupByTrackingIdError {
88    Status400(models::ErrorResponseBody),
89    Status404(models::ErrorResponseBody),
90    UnknownValue(serde_json::Value),
91}
92
93/// struct for typed errors of method [`get_groups_for_chunks`]
94#[derive(Debug, Clone, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum GetGroupsForChunksError {
97    Status400(models::ErrorResponseBody),
98    UnknownValue(serde_json::Value),
99}
100
101/// struct for typed errors of method [`get_groups_for_dataset`]
102#[derive(Debug, Clone, Serialize, Deserialize)]
103#[serde(untagged)]
104pub enum GetGroupsForDatasetError {
105    Status400(models::ErrorResponseBody),
106    UnknownValue(serde_json::Value),
107}
108
109/// struct for typed errors of method [`get_recommended_groups`]
110#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(untagged)]
112pub enum GetRecommendedGroupsError {
113    Status400(models::ErrorResponseBody),
114    UnknownValue(serde_json::Value),
115}
116
117/// struct for typed errors of method [`remove_chunk_from_group`]
118#[derive(Debug, Clone, Serialize, Deserialize)]
119#[serde(untagged)]
120pub enum RemoveChunkFromGroupError {
121    Status400(models::ErrorResponseBody),
122    UnknownValue(serde_json::Value),
123}
124
125/// struct for typed errors of method [`search_over_groups`]
126#[derive(Debug, Clone, Serialize, Deserialize)]
127#[serde(untagged)]
128pub enum SearchOverGroupsError {
129    Status400(models::ErrorResponseBody),
130    UnknownValue(serde_json::Value),
131}
132
133/// struct for typed errors of method [`search_within_group`]
134#[derive(Debug, Clone, Serialize, Deserialize)]
135#[serde(untagged)]
136pub enum SearchWithinGroupError {
137    Status400(models::ErrorResponseBody),
138    UnknownValue(serde_json::Value),
139}
140
141/// struct for typed errors of method [`update_chunk_group`]
142#[derive(Debug, Clone, Serialize, Deserialize)]
143#[serde(untagged)]
144pub enum UpdateChunkGroupError {
145    Status400(models::ErrorResponseBody),
146    UnknownValue(serde_json::Value),
147}
148
149/// struct for typed errors of method [`update_group_by_tracking_id`]
150#[derive(Debug, Clone, Serialize, Deserialize)]
151#[serde(untagged)]
152pub enum UpdateGroupByTrackingIdError {
153    Status400(models::ErrorResponseBody),
154    UnknownValue(serde_json::Value),
155}
156
157/// Route to add a chunk to a group. One of chunk_id or chunk_tracking_id must be provided. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
158pub async fn add_chunk_to_group(
159    configuration: &configuration::Configuration,
160    tr_dataset: &str,
161    group_id: &str,
162    add_chunk_to_group_req_payload: models::AddChunkToGroupReqPayload,
163) -> Result<(), Error<AddChunkToGroupError>> {
164    let local_var_configuration = configuration;
165
166    let local_var_client = &local_var_configuration.client;
167
168    let local_var_uri_str = format!(
169        "{}/api/chunk_group/chunk/{group_id}",
170        local_var_configuration.base_path,
171        group_id = crate::apis::urlencode(group_id)
172    );
173    let mut local_var_req_builder =
174        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
175
176    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
177        local_var_req_builder =
178            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
179    }
180    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
181    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
182        let local_var_key = local_var_apikey.key.clone();
183        let local_var_value = match local_var_apikey.prefix {
184            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
185            None => local_var_key,
186        };
187        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
188    };
189    local_var_req_builder = local_var_req_builder.json(&add_chunk_to_group_req_payload);
190
191    let local_var_req = local_var_req_builder.build()?;
192    let local_var_resp = local_var_client.execute(local_var_req).await?;
193
194    let local_var_status = local_var_resp.status();
195    let local_var_content = local_var_resp.text().await?;
196
197    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
198        Ok(())
199    } else {
200        let local_var_entity: Option<AddChunkToGroupError> =
201            serde_json::from_str(&local_var_content).ok();
202        let local_var_error = ResponseContent {
203            status: local_var_status,
204            content: local_var_content,
205            entity: local_var_entity,
206        };
207        Err(Error::ResponseError(local_var_error))
208    }
209}
210
211/// Route to add a chunk to a group by tracking id. One of chunk_id or chunk_tracking_id must be provided. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
212pub async fn add_chunk_to_group_by_tracking_id(
213    configuration: &configuration::Configuration,
214    tr_dataset: &str,
215    tracking_id: &str,
216    add_chunk_to_group_req_payload: models::AddChunkToGroupReqPayload,
217) -> Result<(), Error<AddChunkToGroupByTrackingIdError>> {
218    let local_var_configuration = configuration;
219
220    let local_var_client = &local_var_configuration.client;
221
222    let local_var_uri_str = format!(
223        "{}/api/chunk_group/tracking_id/{tracking_id}",
224        local_var_configuration.base_path,
225        tracking_id = crate::apis::urlencode(tracking_id)
226    );
227    let mut local_var_req_builder =
228        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
229
230    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
231        local_var_req_builder =
232            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
233    }
234    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
235    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
236        let local_var_key = local_var_apikey.key.clone();
237        let local_var_value = match local_var_apikey.prefix {
238            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
239            None => local_var_key,
240        };
241        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
242    };
243    local_var_req_builder = local_var_req_builder.json(&add_chunk_to_group_req_payload);
244
245    let local_var_req = local_var_req_builder.build()?;
246    let local_var_resp = local_var_client.execute(local_var_req).await?;
247
248    let local_var_status = local_var_resp.status();
249    let local_var_content = local_var_resp.text().await?;
250
251    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
252        Ok(())
253    } else {
254        let local_var_entity: Option<AddChunkToGroupByTrackingIdError> =
255            serde_json::from_str(&local_var_content).ok();
256        let local_var_error = ResponseContent {
257            status: local_var_status,
258            content: local_var_content,
259            entity: local_var_entity,
260        };
261        Err(Error::ResponseError(local_var_error))
262    }
263}
264
265/// Create new chunk_group(s). This is a way to group chunks together. If you try to create a chunk_group with the same tracking_id as an existing chunk_group, this operation will fail. Only 1000 chunk groups can be created at a time. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
266pub async fn create_chunk_group(
267    configuration: &configuration::Configuration,
268    tr_dataset: &str,
269    create_chunk_group_req_payload_enum: models::CreateChunkGroupReqPayloadEnum,
270) -> Result<models::CreateChunkGroupResponseEnum, Error<CreateChunkGroupError>> {
271    let local_var_configuration = configuration;
272
273    let local_var_client = &local_var_configuration.client;
274
275    let local_var_uri_str = format!("{}/api/chunk_group", local_var_configuration.base_path);
276    let mut local_var_req_builder =
277        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
278
279    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
280        local_var_req_builder =
281            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
282    }
283    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
284    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
285        let local_var_key = local_var_apikey.key.clone();
286        let local_var_value = match local_var_apikey.prefix {
287            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
288            None => local_var_key,
289        };
290        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
291    };
292    local_var_req_builder = local_var_req_builder.json(&create_chunk_group_req_payload_enum);
293
294    let local_var_req = local_var_req_builder.build()?;
295    let local_var_resp = local_var_client.execute(local_var_req).await?;
296
297    let local_var_status = local_var_resp.status();
298    let local_var_content = local_var_resp.text().await?;
299
300    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
301        serde_json::from_str(&local_var_content).map_err(Error::from)
302    } else {
303        let local_var_entity: Option<CreateChunkGroupError> =
304            serde_json::from_str(&local_var_content).ok();
305        let local_var_error = ResponseContent {
306            status: local_var_status,
307            content: local_var_content,
308            entity: local_var_entity,
309        };
310        Err(Error::ResponseError(local_var_error))
311    }
312}
313
314/// This will delete a chunk_group. If you set delete_chunks to true, it will also delete the chunks within the group. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
315pub async fn delete_chunk_group(
316    configuration: &configuration::Configuration,
317    tr_dataset: &str,
318    group_id: &str,
319    delete_chunks: bool,
320) -> Result<(), Error<DeleteChunkGroupError>> {
321    let local_var_configuration = configuration;
322
323    let local_var_client = &local_var_configuration.client;
324
325    let local_var_uri_str = format!(
326        "{}/api/chunk_group/{group_id}",
327        local_var_configuration.base_path,
328        group_id = crate::apis::urlencode(group_id)
329    );
330    let mut local_var_req_builder =
331        local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
332
333    local_var_req_builder =
334        local_var_req_builder.query(&[("delete_chunks", &delete_chunks.to_string())]);
335    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
336        local_var_req_builder =
337            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
338    }
339    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
340    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
341        let local_var_key = local_var_apikey.key.clone();
342        let local_var_value = match local_var_apikey.prefix {
343            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
344            None => local_var_key,
345        };
346        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
347    };
348
349    let local_var_req = local_var_req_builder.build()?;
350    let local_var_resp = local_var_client.execute(local_var_req).await?;
351
352    let local_var_status = local_var_resp.status();
353    let local_var_content = local_var_resp.text().await?;
354
355    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
356        Ok(())
357    } else {
358        let local_var_entity: Option<DeleteChunkGroupError> =
359            serde_json::from_str(&local_var_content).ok();
360        let local_var_error = ResponseContent {
361            status: local_var_status,
362            content: local_var_content,
363            entity: local_var_entity,
364        };
365        Err(Error::ResponseError(local_var_error))
366    }
367}
368
369/// Delete a chunk_group with the given tracking id. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
370pub async fn delete_group_by_tracking_id(
371    configuration: &configuration::Configuration,
372    tr_dataset: &str,
373    tracking_id: &str,
374    delete_chunks: bool,
375) -> Result<(), Error<DeleteGroupByTrackingIdError>> {
376    let local_var_configuration = configuration;
377
378    let local_var_client = &local_var_configuration.client;
379
380    let local_var_uri_str = format!(
381        "{}/api/chunk_group/tracking_id/{tracking_id}",
382        local_var_configuration.base_path,
383        tracking_id = crate::apis::urlencode(tracking_id)
384    );
385    let mut local_var_req_builder =
386        local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
387
388    local_var_req_builder =
389        local_var_req_builder.query(&[("delete_chunks", &delete_chunks.to_string())]);
390    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
391        local_var_req_builder =
392            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
393    }
394    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
395    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
396        let local_var_key = local_var_apikey.key.clone();
397        let local_var_value = match local_var_apikey.prefix {
398            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
399            None => local_var_key,
400        };
401        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
402    };
403
404    let local_var_req = local_var_req_builder.build()?;
405    let local_var_resp = local_var_client.execute(local_var_req).await?;
406
407    let local_var_status = local_var_resp.status();
408    let local_var_content = local_var_resp.text().await?;
409
410    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
411        Ok(())
412    } else {
413        let local_var_entity: Option<DeleteGroupByTrackingIdError> =
414            serde_json::from_str(&local_var_content).ok();
415        let local_var_error = ResponseContent {
416            status: local_var_status,
417            content: local_var_content,
418            entity: local_var_entity,
419        };
420        Err(Error::ResponseError(local_var_error))
421    }
422}
423
424/// Fetch the group with the given id. get_group
425pub async fn get_chunk_group(
426    configuration: &configuration::Configuration,
427    tr_dataset: &str,
428    group_id: &str,
429) -> Result<models::ChunkGroupAndFileId, Error<GetChunkGroupError>> {
430    let local_var_configuration = configuration;
431
432    let local_var_client = &local_var_configuration.client;
433
434    let local_var_uri_str = format!(
435        "{}/api/chunk_group/{group_id}",
436        local_var_configuration.base_path,
437        group_id = crate::apis::urlencode(group_id)
438    );
439    let mut local_var_req_builder =
440        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
441
442    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
443        local_var_req_builder =
444            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
445    }
446    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
447    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
448        let local_var_key = local_var_apikey.key.clone();
449        let local_var_value = match local_var_apikey.prefix {
450            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
451            None => local_var_key,
452        };
453        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
454    };
455
456    let local_var_req = local_var_req_builder.build()?;
457    let local_var_resp = local_var_client.execute(local_var_req).await?;
458
459    let local_var_status = local_var_resp.status();
460    let local_var_content = local_var_resp.text().await?;
461
462    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
463        serde_json::from_str(&local_var_content).map_err(Error::from)
464    } else {
465        let local_var_entity: Option<GetChunkGroupError> =
466            serde_json::from_str(&local_var_content).ok();
467        let local_var_error = ResponseContent {
468            status: local_var_status,
469            content: local_var_content,
470            entity: local_var_entity,
471        };
472        Err(Error::ResponseError(local_var_error))
473    }
474}
475
476/// Route to get all chunks for a group. The response is paginated, with each page containing 10 chunks. Page is 1-indexed.
477pub async fn get_chunks_in_group(
478    configuration: &configuration::Configuration,
479    tr_dataset: &str,
480    group_id: &str,
481    page: Option<i64>,
482    x_api_version: Option<models::ApiVersion>,
483) -> Result<models::GetChunksInGroupResponse, Error<GetChunksInGroupError>> {
484    let local_var_configuration = configuration;
485
486    let local_var_client = &local_var_configuration.client;
487
488    let local_var_uri_str = format!(
489        "{}/api/chunk_group/{group_id}/{page}",
490        local_var_configuration.base_path,
491        group_id = crate::apis::urlencode(group_id),
492        page = page.unwrap()
493    );
494    let mut local_var_req_builder =
495        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
496
497    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
498        local_var_req_builder =
499            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
500    }
501    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
502    if let Some(local_var_param_value) = x_api_version {
503        local_var_req_builder =
504            local_var_req_builder.header("X-API-Version", local_var_param_value.to_string());
505    }
506    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
507        let local_var_key = local_var_apikey.key.clone();
508        let local_var_value = match local_var_apikey.prefix {
509            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
510            None => local_var_key,
511        };
512        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
513    };
514
515    let local_var_req = local_var_req_builder.build()?;
516    let local_var_resp = local_var_client.execute(local_var_req).await?;
517
518    let local_var_status = local_var_resp.status();
519    let local_var_content = local_var_resp.text().await?;
520
521    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
522        serde_json::from_str(&local_var_content).map_err(Error::from)
523    } else {
524        let local_var_entity: Option<GetChunksInGroupError> =
525            serde_json::from_str(&local_var_content).ok();
526        let local_var_error = ResponseContent {
527            status: local_var_status,
528            content: local_var_content,
529            entity: local_var_entity,
530        };
531        Err(Error::ResponseError(local_var_error))
532    }
533}
534
535/// Route to get all chunks for a group. The response is paginated, with each page containing 10 chunks. Support for custom page size is coming soon. Page is 1-indexed.
536pub async fn get_chunks_in_group_by_tracking_id(
537    configuration: &configuration::Configuration,
538    tr_dataset: &str,
539    group_tracking_id: &str,
540    page: i64,
541    x_api_version: Option<models::ApiVersion>,
542) -> Result<models::GetChunksInGroupResponse, Error<GetChunksInGroupByTrackingIdError>> {
543    let local_var_configuration = configuration;
544
545    let local_var_client = &local_var_configuration.client;
546
547    let local_var_uri_str = format!(
548        "{}/api/chunk_group/tracking_id/{group_tracking_id}/{page}",
549        local_var_configuration.base_path,
550        group_tracking_id = crate::apis::urlencode(group_tracking_id),
551        page = page
552    );
553    let mut local_var_req_builder =
554        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
555
556    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
557        local_var_req_builder =
558            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
559    }
560    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
561    if let Some(local_var_param_value) = x_api_version {
562        local_var_req_builder =
563            local_var_req_builder.header("X-API-Version", local_var_param_value.to_string());
564    }
565    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
566        let local_var_key = local_var_apikey.key.clone();
567        let local_var_value = match local_var_apikey.prefix {
568            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
569            None => local_var_key,
570        };
571        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
572    };
573
574    let local_var_req = local_var_req_builder.build()?;
575    let local_var_resp = local_var_client.execute(local_var_req).await?;
576
577    let local_var_status = local_var_resp.status();
578    let local_var_content = local_var_resp.text().await?;
579
580    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
581        serde_json::from_str(&local_var_content).map_err(Error::from)
582    } else {
583        let local_var_entity: Option<GetChunksInGroupByTrackingIdError> =
584            serde_json::from_str(&local_var_content).ok();
585        let local_var_error = ResponseContent {
586            status: local_var_status,
587            content: local_var_content,
588            entity: local_var_entity,
589        };
590        Err(Error::ResponseError(local_var_error))
591    }
592}
593
594/// Fetch the group with the given tracking id. get_group_by_tracking_id
595pub async fn get_group_by_tracking_id(
596    configuration: &configuration::Configuration,
597    tr_dataset: &str,
598    tracking_id: &str,
599) -> Result<models::ChunkGroupAndFileId, Error<GetGroupByTrackingIdError>> {
600    let local_var_configuration = configuration;
601
602    let local_var_client = &local_var_configuration.client;
603
604    let local_var_uri_str = format!(
605        "{}/api/chunk_group/tracking_id/{tracking_id}",
606        local_var_configuration.base_path,
607        tracking_id = crate::apis::urlencode(tracking_id)
608    );
609    let mut local_var_req_builder =
610        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
611
612    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
613        local_var_req_builder =
614            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
615    }
616    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
617    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
618        let local_var_key = local_var_apikey.key.clone();
619        let local_var_value = match local_var_apikey.prefix {
620            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
621            None => local_var_key,
622        };
623        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
624    };
625
626    let local_var_req = local_var_req_builder.build()?;
627    let local_var_resp = local_var_client.execute(local_var_req).await?;
628
629    let local_var_status = local_var_resp.status();
630    let local_var_content = local_var_resp.text().await?;
631
632    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
633        serde_json::from_str(&local_var_content).map_err(Error::from)
634    } else {
635        let local_var_entity: Option<GetGroupByTrackingIdError> =
636            serde_json::from_str(&local_var_content).ok();
637        let local_var_error = ResponseContent {
638            status: local_var_status,
639            content: local_var_content,
640            entity: local_var_entity,
641        };
642        Err(Error::ResponseError(local_var_error))
643    }
644}
645
646/// Route to get the groups that a chunk is in.
647pub async fn get_groups_for_chunks(
648    configuration: &configuration::Configuration,
649    tr_dataset: &str,
650    get_groups_for_chunks_req_payload: models::GetGroupsForChunksReqPayload,
651) -> Result<Vec<models::GroupsForChunk>, Error<GetGroupsForChunksError>> {
652    let local_var_configuration = configuration;
653
654    let local_var_client = &local_var_configuration.client;
655
656    let local_var_uri_str = format!(
657        "{}/api/chunk_group/chunks",
658        local_var_configuration.base_path
659    );
660    let mut local_var_req_builder =
661        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
662
663    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
664        local_var_req_builder =
665            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
666    }
667    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
668    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
669        let local_var_key = local_var_apikey.key.clone();
670        let local_var_value = match local_var_apikey.prefix {
671            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
672            None => local_var_key,
673        };
674        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
675    };
676    local_var_req_builder = local_var_req_builder.json(&get_groups_for_chunks_req_payload);
677
678    let local_var_req = local_var_req_builder.build()?;
679    let local_var_resp = local_var_client.execute(local_var_req).await?;
680
681    let local_var_status = local_var_resp.status();
682    let local_var_content = local_var_resp.text().await?;
683
684    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
685        serde_json::from_str(&local_var_content).map_err(Error::from)
686    } else {
687        let local_var_entity: Option<GetGroupsForChunksError> =
688            serde_json::from_str(&local_var_content).ok();
689        let local_var_error = ResponseContent {
690            status: local_var_status,
691            content: local_var_content,
692            entity: local_var_entity,
693        };
694        Err(Error::ResponseError(local_var_error))
695    }
696}
697
698/// Fetch the groups which belong to a dataset specified by its id.
699pub async fn get_groups_for_dataset(
700    configuration: &configuration::Configuration,
701    tr_dataset: &str,
702    dataset_id: &str,
703    page: i64,
704) -> Result<models::GroupData, Error<GetGroupsForDatasetError>> {
705    let local_var_configuration = configuration;
706
707    let local_var_client = &local_var_configuration.client;
708
709    let local_var_uri_str = format!(
710        "{}/api/dataset/groups/{dataset_id}/{page}",
711        local_var_configuration.base_path,
712        dataset_id = crate::apis::urlencode(dataset_id),
713        page = page
714    );
715    let mut local_var_req_builder =
716        local_var_client.request(reqwest::Method::GET, local_var_uri_str.as_str());
717
718    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
719        local_var_req_builder =
720            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
721    }
722    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
723    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
724        let local_var_key = local_var_apikey.key.clone();
725        let local_var_value = match local_var_apikey.prefix {
726            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
727            None => local_var_key,
728        };
729        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
730    };
731
732    let local_var_req = local_var_req_builder.build()?;
733    let local_var_resp = local_var_client.execute(local_var_req).await?;
734
735    let local_var_status = local_var_resp.status();
736    let local_var_content = local_var_resp.text().await?;
737
738    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
739        serde_json::from_str(&local_var_content).map_err(Error::from)
740    } else {
741        let local_var_entity: Option<GetGroupsForDatasetError> =
742            serde_json::from_str(&local_var_content).ok();
743        let local_var_error = ResponseContent {
744            status: local_var_status,
745            content: local_var_content,
746            entity: local_var_entity,
747        };
748        Err(Error::ResponseError(local_var_error))
749    }
750}
751
752/// Route to get recommended groups. This route will return groups which are similar to the groups in the request body. You must provide at least one positive group id or group tracking id.
753pub async fn get_recommended_groups(
754    configuration: &configuration::Configuration,
755    tr_dataset: &str,
756    recommend_groups_req_payload: models::RecommendGroupsReqPayload,
757    x_api_version: Option<models::ApiVersion>,
758) -> Result<models::RecommendGroupsResponse, Error<GetRecommendedGroupsError>> {
759    let local_var_configuration = configuration;
760
761    let local_var_client = &local_var_configuration.client;
762
763    let local_var_uri_str = format!(
764        "{}/api/chunk_group/recommend",
765        local_var_configuration.base_path
766    );
767    let mut local_var_req_builder =
768        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
769
770    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
771        local_var_req_builder =
772            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
773    }
774    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
775    if let Some(local_var_param_value) = x_api_version {
776        local_var_req_builder =
777            local_var_req_builder.header("X-API-Version", local_var_param_value.to_string());
778    }
779    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
780        let local_var_key = local_var_apikey.key.clone();
781        let local_var_value = match local_var_apikey.prefix {
782            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
783            None => local_var_key,
784        };
785        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
786    };
787    local_var_req_builder = local_var_req_builder.json(&recommend_groups_req_payload);
788
789    let local_var_req = local_var_req_builder.build()?;
790    let local_var_resp = local_var_client.execute(local_var_req).await?;
791
792    let local_var_status = local_var_resp.status();
793    let local_var_content = local_var_resp.text().await?;
794
795    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
796        serde_json::from_str(&local_var_content).map_err(Error::from)
797    } else {
798        let local_var_entity: Option<GetRecommendedGroupsError> =
799            serde_json::from_str(&local_var_content).ok();
800        let local_var_error = ResponseContent {
801            status: local_var_status,
802            content: local_var_content,
803            entity: local_var_entity,
804        };
805        Err(Error::ResponseError(local_var_error))
806    }
807}
808
809/// Route to remove a chunk from a group. Auth'ed user or api key must be an admin or owner of the dataset's organization to remove a chunk from a group.
810pub async fn remove_chunk_from_group(
811    configuration: &configuration::Configuration,
812    tr_dataset: &str,
813    group_id: &str,
814    chunk_id: Option<&str>,
815    remove_chunk_from_group_req_payload: Option<models::RemoveChunkFromGroupReqPayload>,
816) -> Result<(), Error<RemoveChunkFromGroupError>> {
817    let local_var_configuration = configuration;
818
819    let local_var_client = &local_var_configuration.client;
820
821    let local_var_uri_str = format!(
822        "{}/api/chunk_group/chunk/{group_id}",
823        local_var_configuration.base_path,
824        group_id = crate::apis::urlencode(group_id)
825    );
826    let mut local_var_req_builder =
827        local_var_client.request(reqwest::Method::DELETE, local_var_uri_str.as_str());
828
829    if let Some(ref local_var_str) = chunk_id {
830        local_var_req_builder =
831            local_var_req_builder.query(&[("chunk_id", &local_var_str.to_string())]);
832    }
833    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
834        local_var_req_builder =
835            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
836    }
837    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
838    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
839        let local_var_key = local_var_apikey.key.clone();
840        let local_var_value = match local_var_apikey.prefix {
841            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
842            None => local_var_key,
843        };
844        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
845    };
846    local_var_req_builder = local_var_req_builder.json(&remove_chunk_from_group_req_payload);
847
848    let local_var_req = local_var_req_builder.build()?;
849    let local_var_resp = local_var_client.execute(local_var_req).await?;
850
851    let local_var_status = local_var_resp.status();
852    let local_var_content = local_var_resp.text().await?;
853
854    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
855        Ok(())
856    } else {
857        let local_var_entity: Option<RemoveChunkFromGroupError> =
858            serde_json::from_str(&local_var_content).ok();
859        let local_var_error = ResponseContent {
860            status: local_var_status,
861            content: local_var_content,
862            entity: local_var_entity,
863        };
864        Err(Error::ResponseError(local_var_error))
865    }
866}
867
868/// This route allows you to get groups as results instead of chunks. Each group returned will have the matching chunks sorted by similarity within the group. This is useful for when you want to get groups of chunks which are similar to the search query. If choosing hybrid search, the results will be re-ranked using scores from a cross encoder model. Compatible with semantic, fulltext, or hybrid search modes.
869pub async fn search_over_groups(
870    configuration: &configuration::Configuration,
871    tr_dataset: &str,
872    search_over_groups_req_payload: models::SearchOverGroupsReqPayload,
873    x_api_version: Option<models::ApiVersion>,
874) -> Result<models::SearchOverGroupsResponseTypes, Error<SearchOverGroupsError>> {
875    let local_var_configuration = configuration;
876
877    let local_var_client = &local_var_configuration.client;
878
879    let local_var_uri_str = format!(
880        "{}/api/chunk_group/group_oriented_search",
881        local_var_configuration.base_path
882    );
883    let mut local_var_req_builder =
884        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
885
886    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
887        local_var_req_builder =
888            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
889    }
890    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
891    if let Some(local_var_param_value) = x_api_version {
892        local_var_req_builder =
893            local_var_req_builder.header("X-API-Version", local_var_param_value.to_string());
894    }
895    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
896        let local_var_key = local_var_apikey.key.clone();
897        let local_var_value = match local_var_apikey.prefix {
898            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
899            None => local_var_key,
900        };
901        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
902    };
903    local_var_req_builder = local_var_req_builder.json(&search_over_groups_req_payload);
904
905    let local_var_req = local_var_req_builder.build()?;
906    let local_var_resp = local_var_client.execute(local_var_req).await?;
907
908    let local_var_status = local_var_resp.status();
909    let local_var_content = local_var_resp.text().await?;
910
911    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
912        serde_json::from_str(&local_var_content).map_err(Error::from)
913    } else {
914        let local_var_entity: Option<SearchOverGroupsError> =
915            serde_json::from_str(&local_var_content).ok();
916        let local_var_error = ResponseContent {
917            status: local_var_status,
918            content: local_var_content,
919            entity: local_var_entity,
920        };
921        Err(Error::ResponseError(local_var_error))
922    }
923}
924
925/// This route allows you to search only within a group. This is useful for when you only want search results to contain chunks which are members of a specific group. If choosing hybrid search, the results will be re-ranked using scores from a cross encoder model.
926pub async fn search_within_group(
927    configuration: &configuration::Configuration,
928    tr_dataset: &str,
929    search_within_group_req_payload: models::SearchWithinGroupReqPayload,
930    x_api_version: Option<models::ApiVersion>,
931) -> Result<models::SearchGroupResponseTypes, Error<SearchWithinGroupError>> {
932    let local_var_configuration = configuration;
933
934    let local_var_client = &local_var_configuration.client;
935
936    let local_var_uri_str = format!(
937        "{}/api/chunk_group/search",
938        local_var_configuration.base_path
939    );
940    let mut local_var_req_builder =
941        local_var_client.request(reqwest::Method::POST, local_var_uri_str.as_str());
942
943    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
944        local_var_req_builder =
945            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
946    }
947    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
948    if let Some(local_var_param_value) = x_api_version {
949        local_var_req_builder =
950            local_var_req_builder.header("X-API-Version", local_var_param_value.to_string());
951    }
952    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
953        let local_var_key = local_var_apikey.key.clone();
954        let local_var_value = match local_var_apikey.prefix {
955            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
956            None => local_var_key,
957        };
958        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
959    };
960    local_var_req_builder = local_var_req_builder.json(&search_within_group_req_payload);
961
962    let local_var_req = local_var_req_builder.build()?;
963    let local_var_resp = local_var_client.execute(local_var_req).await?;
964
965    let local_var_status = local_var_resp.status();
966    let local_var_content = local_var_resp.text().await?;
967
968    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
969        serde_json::from_str(&local_var_content).map_err(Error::from)
970    } else {
971        let local_var_entity: Option<SearchWithinGroupError> =
972            serde_json::from_str(&local_var_content).ok();
973        let local_var_error = ResponseContent {
974            status: local_var_status,
975            content: local_var_content,
976            entity: local_var_entity,
977        };
978        Err(Error::ResponseError(local_var_error))
979    }
980}
981
982/// Update a chunk_group. One of group_id or tracking_id must be provided. If you try to change the tracking_id to one that already exists, this operation will fail. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
983pub async fn update_chunk_group(
984    configuration: &configuration::Configuration,
985    tr_dataset: &str,
986    update_chunk_group_req_payload: models::UpdateChunkGroupReqPayload,
987) -> Result<(), Error<UpdateChunkGroupError>> {
988    let local_var_configuration = configuration;
989
990    let local_var_client = &local_var_configuration.client;
991
992    let local_var_uri_str = format!("{}/api/chunk_group", local_var_configuration.base_path);
993    let mut local_var_req_builder =
994        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
995
996    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
997        local_var_req_builder =
998            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
999    }
1000    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
1001    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1002        let local_var_key = local_var_apikey.key.clone();
1003        let local_var_value = match local_var_apikey.prefix {
1004            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1005            None => local_var_key,
1006        };
1007        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
1008    };
1009    local_var_req_builder = local_var_req_builder.json(&update_chunk_group_req_payload);
1010
1011    let local_var_req = local_var_req_builder.build()?;
1012    let local_var_resp = local_var_client.execute(local_var_req).await?;
1013
1014    let local_var_status = local_var_resp.status();
1015    let local_var_content = local_var_resp.text().await?;
1016
1017    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1018        Ok(())
1019    } else {
1020        let local_var_entity: Option<UpdateChunkGroupError> =
1021            serde_json::from_str(&local_var_content).ok();
1022        let local_var_error = ResponseContent {
1023            status: local_var_status,
1024            content: local_var_content,
1025            entity: local_var_entity,
1026        };
1027        Err(Error::ResponseError(local_var_error))
1028    }
1029}
1030
1031/// Update a chunk_group with the given tracking id. Auth'ed user or api key must have an admin or owner role for the specified dataset's organization.
1032pub async fn update_group_by_tracking_id(
1033    configuration: &configuration::Configuration,
1034    tr_dataset: &str,
1035    tracking_id: &str,
1036    update_group_by_tracking_id_req_payload: models::UpdateGroupByTrackingIdReqPayload,
1037) -> Result<(), Error<UpdateGroupByTrackingIdError>> {
1038    let local_var_configuration = configuration;
1039
1040    let local_var_client = &local_var_configuration.client;
1041
1042    let local_var_uri_str = format!(
1043        "{}/api/chunk_group/tracking_id/{tracking_id}",
1044        local_var_configuration.base_path,
1045        tracking_id = crate::apis::urlencode(tracking_id)
1046    );
1047    let mut local_var_req_builder =
1048        local_var_client.request(reqwest::Method::PUT, local_var_uri_str.as_str());
1049
1050    if let Some(ref local_var_user_agent) = local_var_configuration.user_agent {
1051        local_var_req_builder =
1052            local_var_req_builder.header(reqwest::header::USER_AGENT, local_var_user_agent.clone());
1053    }
1054    local_var_req_builder = local_var_req_builder.header("TR-Dataset", tr_dataset.to_string());
1055    if let Some(ref local_var_apikey) = local_var_configuration.api_key {
1056        let local_var_key = local_var_apikey.key.clone();
1057        let local_var_value = match local_var_apikey.prefix {
1058            Some(ref local_var_prefix) => format!("{} {}", local_var_prefix, local_var_key),
1059            None => local_var_key,
1060        };
1061        local_var_req_builder = local_var_req_builder.header("Authorization", local_var_value);
1062    };
1063    local_var_req_builder = local_var_req_builder.json(&update_group_by_tracking_id_req_payload);
1064
1065    let local_var_req = local_var_req_builder.build()?;
1066    let local_var_resp = local_var_client.execute(local_var_req).await?;
1067
1068    let local_var_status = local_var_resp.status();
1069    let local_var_content = local_var_resp.text().await?;
1070
1071    if !local_var_status.is_client_error() && !local_var_status.is_server_error() {
1072        Ok(())
1073    } else {
1074        let local_var_entity: Option<UpdateGroupByTrackingIdError> =
1075            serde_json::from_str(&local_var_content).ok();
1076        let local_var_error = ResponseContent {
1077            status: local_var_status,
1078            content: local_var_content,
1079            entity: local_var_entity,
1080        };
1081        Err(Error::ResponseError(local_var_error))
1082    }
1083}