Skip to main content

rust_genai_types/
documents.rs

1use serde::{Deserialize, Serialize};
2
3use crate::enums::DocumentState;
4use crate::http::{HttpOptions, HttpResponse};
5
6/// User provided string values assigned to a single metadata key.
7#[derive(Debug, Clone, Serialize, Deserialize, Default)]
8#[serde(rename_all = "camelCase")]
9pub struct StringList {
10    #[serde(default)]
11    pub values: Vec<String>,
12}
13
14/// User provided metadata stored as key-value pairs.
15#[derive(Debug, Clone, Serialize, Deserialize, Default)]
16#[serde(rename_all = "camelCase")]
17pub struct CustomMetadata {
18    pub key: String,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub numeric_value: Option<f32>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    pub string_list_value: Option<StringList>,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub string_value: Option<String>,
25}
26
27/// A Document is a collection of chunks.
28#[derive(Debug, Clone, Serialize, Deserialize, Default)]
29#[serde(rename_all = "camelCase")]
30pub struct Document {
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub name: Option<String>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub display_name: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub state: Option<DocumentState>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub size_bytes: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub mime_type: Option<String>,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub create_time: Option<String>,
43    #[serde(skip_serializing_if = "Option::is_none")]
44    pub update_time: Option<String>,
45    #[serde(skip_serializing_if = "Option::is_none")]
46    pub custom_metadata: Option<Vec<CustomMetadata>>,
47}
48
49/// Optional parameters for getting a Document.
50#[derive(Debug, Clone, Serialize, Deserialize, Default)]
51#[serde(rename_all = "camelCase")]
52pub struct GetDocumentConfig {
53    /// Optional. HTTP request overrides (SDK only, not sent to API).
54    #[serde(skip_serializing, skip_deserializing)]
55    pub http_options: Option<HttpOptions>,
56}
57
58/// Optional parameters for deleting a Document.
59#[derive(Debug, Clone, Serialize, Deserialize, Default)]
60#[serde(rename_all = "camelCase")]
61pub struct DeleteDocumentConfig {
62    /// Optional. HTTP request overrides (SDK only, not sent to API).
63    #[serde(skip_serializing, skip_deserializing)]
64    pub http_options: Option<HttpOptions>,
65    /// Optional. Force delete related chunks and objects.
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub force: Option<bool>,
68}
69
70/// Optional parameters for listing Documents.
71#[derive(Debug, Clone, Serialize, Deserialize, Default)]
72#[serde(rename_all = "camelCase")]
73pub struct ListDocumentsConfig {
74    /// Optional. HTTP request overrides (SDK only, not sent to API).
75    #[serde(skip_serializing, skip_deserializing)]
76    pub http_options: Option<HttpOptions>,
77    /// Optional. Page size.
78    #[serde(skip_serializing_if = "Option::is_none")]
79    pub page_size: Option<i32>,
80    /// Optional. Page token.
81    #[serde(skip_serializing_if = "Option::is_none")]
82    pub page_token: Option<String>,
83}
84
85/// Response for listing Documents.
86#[derive(Debug, Clone, Serialize, Deserialize, Default)]
87#[serde(rename_all = "camelCase")]
88pub struct ListDocumentsResponse {
89    /// Optional. Used to retain the full HTTP response.
90    #[serde(skip_serializing_if = "Option::is_none")]
91    pub sdk_http_response: Option<HttpResponse>,
92    #[serde(skip_serializing_if = "Option::is_none")]
93    pub next_page_token: Option<String>,
94    #[serde(skip_serializing_if = "Option::is_none")]
95    pub documents: Option<Vec<Document>>,
96}