use crate::{ConversaError, ConversaResult, OpenAIClient};
use crate::types::*;
use serde::{Serialize, Deserialize};
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateSpeechResponse {
ApplicationOctetStream(Vec<u8>),
TextEventStream(crate::types::CreateSpeechResponseStreamEvent),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateTranscriptionResponse {
ApplicationJson(crate::types::CreateTranscriptionResponseJson),
ApplicationJsonVerbose(crate::types::CreateTranscriptionResponseVerboseJson),
TextEventStream(crate::types::CreateTranscriptionResponseStreamEvent),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateTranslationResponse {
CreateTranslationResponseJson(CreateTranslationResponseJson),
CreateTranslationResponseVerboseJson(CreateTranslationResponseVerboseJson),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateBatchRequestBodyEndpoint {
#[serde(rename="/v1/responses")]
V1Responses,
#[serde(rename="/v1/chat/completions")]
V1ChatCompletions,
#[serde(rename="/v1/embeddings")]
V1Embeddings,
#[serde(rename="/v1/completions")]
V1Completions,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateBatchRequestBodyCompletionWindow {
#[serde(rename="24h")]
Size24h,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateBatchRequestBody {
pub input_file_id: String,
pub endpoint: CreateBatchRequestBodyEndpoint,
pub completion_window: CreateBatchRequestBodyCompletionWindow,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateChatCompletionResponse {
ApplicationJson(crate::types::CreateChatCompletionResponse),
TextEventStream(crate::types::CreateChatCompletionStreamResponse),
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateChatCompletionRequestBody {
pub metadata: Metadata,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct UpdateEvalRequestBody {
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<Metadata>,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct DeleteEvalResponse {
pub object: String,
pub deleted: bool,
pub eval_id: String,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct DeleteEvalRunResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub run_id: Option<String>,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ListPaginatedFineTuningJobsQuery(pub String);
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct AdminApiKeysCreateRequestBody {
pub name: String,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct AdminApiKeysDeleteResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub object: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deleted: Option<bool>,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub struct ListAuditLogsQuery {
#[serde(skip_serializing_if = "Option::is_none")]
pub gt: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub gte: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lt: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lte: Option<u64>,
}
#[derive(Debug, PartialEq, Serialize, Deserialize)]
pub enum CreateResponseResponse {
ApplicationJson(crate::types::Response),
TextEventStream(crate::types::ResponseStreamEvent),
}
impl OpenAIClient {
pub async fn list_assistants(&self, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, ) -> ConversaResult<crate::types::ListAssistantsResponse> {
let address = format!("{}/assistants", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_assistant(&self, request_body: crate::types::CreateAssistantRequest, ) -> ConversaResult<crate::types::AssistantObject> {
let address = format!("{}/assistants", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_assistant(&self, assistant_id: &str, ) -> ConversaResult<crate::types::AssistantObject> {
let address = format!("{}/assistants/{assistant_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_assistant(&self, assistant_id: &str, request_body: crate::types::ModifyAssistantRequest, ) -> ConversaResult<crate::types::AssistantObject> {
let address = format!("{}/assistants/{assistant_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_assistant(&self, assistant_id: &str, ) -> ConversaResult<crate::types::DeleteAssistantResponse> {
let address = format!("{}/assistants/{assistant_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_speech(&self, request_body: crate::types::CreateSpeechRequest, ) -> ConversaResult<CreateSpeechResponse> {
let address = format!("{}/audio/speech", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
match _content_type.as_str() {
"application/octet-stream" => Ok(CreateSpeechResponse::ApplicationOctetStream(serde_json::from_slice(&response_bytes)?)),
"text/event-stream" => Ok(CreateSpeechResponse::TextEventStream(serde_json::from_slice(&response_bytes)?)),
_ => Err(ConversaError::UnexpectedContentType(_content_type)),
}
}
pub async fn create_transcription(&self, request_body: crate::types::CreateTranscriptionRequest, ) -> ConversaResult<CreateTranscriptionResponse> {
let address = format!("{}/audio/transcriptions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
match _content_type.as_str() {
"application/json" => Ok(CreateTranscriptionResponse::ApplicationJson(serde_json::from_slice(&response_bytes)?)),
"text/event-stream" => Ok(CreateTranscriptionResponse::TextEventStream(serde_json::from_slice(&response_bytes)?)),
_ => Err(ConversaError::UnexpectedContentType(_content_type)),
}
}
pub async fn create_translation(&self, request_body: crate::types::CreateTranslationRequest, ) -> ConversaResult<CreateTranslationResponse> {
let address = format!("{}/audio/translations", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_batch(&self, request_body: CreateBatchRequestBody, ) -> ConversaResult<crate::types::Batch> {
let address = format!("{}/batches", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_batches(&self, after: Option<&str>, limit: Option<u64>, ) -> ConversaResult<crate::types::ListBatchesResponse> {
let address = format!("{}/batches", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_batch(&self, batch_id: &str, ) -> ConversaResult<crate::types::Batch> {
let address = format!("{}/batches/{batch_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_batch(&self, batch_id: &str, ) -> ConversaResult<crate::types::Batch> {
let address = format!("{}/batches/{batch_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_chat_completions(&self, model: Option<&str>, metadata: Option<&crate::types::Metadata>, after: Option<&str>, limit: Option<u64>, order: Option<&str>, ) -> ConversaResult<crate::types::ChatCompletionList> {
let address = format!("{}/chat/completions", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = model {
request = request.query(&[("model", q)]);
}
if let Some(q) = metadata {
request = request.query(&[("metadata", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_chat_completion(&self, request_body: crate::types::CreateChatCompletionRequest, ) -> ConversaResult<CreateChatCompletionResponse> {
let address = format!("{}/chat/completions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
match _content_type.as_str() {
"application/json" => Ok(CreateChatCompletionResponse::ApplicationJson(serde_json::from_slice(&response_bytes)?)),
"text/event-stream" => Ok(CreateChatCompletionResponse::TextEventStream(serde_json::from_slice(&response_bytes)?)),
_ => Err(ConversaError::UnexpectedContentType(_content_type)),
}
}
pub async fn get_chat_completion(&self, completion_id: &str, ) -> ConversaResult<crate::types::CreateChatCompletionResponse> {
let address = format!("{}/chat/completions/{completion_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn update_chat_completion(&self, completion_id: &str, request_body: UpdateChatCompletionRequestBody, ) -> ConversaResult<crate::types::CreateChatCompletionResponse> {
let address = format!("{}/chat/completions/{completion_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_chat_completion(&self, completion_id: &str, ) -> ConversaResult<crate::types::ChatCompletionDeleted> {
let address = format!("{}/chat/completions/{completion_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_chat_completion_messages(&self, completion_id: &str, after: Option<&str>, limit: Option<u64>, order: Option<&str>, ) -> ConversaResult<crate::types::ChatCompletionMessageList> {
let address = format!("{}/chat/completions/{completion_id}/messages", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_completion(&self, request_body: crate::types::CreateCompletionRequest, ) -> ConversaResult<crate::types::CreateCompletionResponse> {
let address = format!("{}/completions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_containers(&self, limit: Option<u64>, order: Option<&str>, after: Option<&str>, ) -> ConversaResult<crate::types::ContainerListResource> {
let address = format!("{}/containers", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_container(&self, request_body: Option<crate::types::CreateContainerBody>, ) -> ConversaResult<crate::types::ContainerResource> {
let address = format!("{}/containers", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
if let Some(b) = request_body {
request = request.body(serde_json::to_string(&b)?);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_container(&self, container_id: &str, ) -> ConversaResult<crate::types::ContainerResource> {
let address = format!("{}/containers/{container_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_container(&self, container_id: &str, ) -> ConversaResult<()> {
let address = format!("{}/containers/{container_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(())
}
pub async fn create_container_file(&self, container_id: &str, request_body: crate::types::CreateContainerFileBody, ) -> ConversaResult<crate::types::ContainerFileResource> {
let address = format!("{}/containers/{container_id}/files", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_container_files(&self, container_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, ) -> ConversaResult<crate::types::ContainerFileListResource> {
let address = format!("{}/containers/{container_id}/files", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_container_file(&self, container_id: &str, file_id: &str, ) -> ConversaResult<crate::types::ContainerFileResource> {
let address = format!("{}/containers/{container_id}/files/{file_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_container_file(&self, container_id: &str, file_id: &str, ) -> ConversaResult<()> {
let address = format!("{}/containers/{container_id}/files/{file_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(())
}
pub async fn retrieve_container_file_content(&self, container_id: &str, file_id: &str, ) -> ConversaResult<()> {
let address = format!("{}/containers/{container_id}/files/{file_id}/content", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(())
}
pub async fn create_embedding(&self, request_body: crate::types::CreateEmbeddingRequest, ) -> ConversaResult<crate::types::CreateEmbeddingResponse> {
let address = format!("{}/embeddings", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_evals(&self, after: Option<&str>, limit: Option<u64>, order: Option<&str>, order_by: Option<&str>, ) -> ConversaResult<crate::types::EvalList> {
let address = format!("{}/evals", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = order_by {
request = request.query(&[("order_by", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_eval(&self, request_body: crate::types::CreateEvalRequest, ) -> ConversaResult<crate::types::Eval> {
let address = format!("{}/evals", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 201 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_eval(&self, eval_id: &str, ) -> ConversaResult<crate::types::Eval> {
let address = format!("{}/evals/{eval_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn update_eval(&self, eval_id: &str, request_body: UpdateEvalRequestBody, ) -> ConversaResult<crate::types::Eval> {
let address = format!("{}/evals/{eval_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_eval(&self, eval_id: &str, ) -> ConversaResult<DeleteEvalResponse> {
let address = format!("{}/evals/{eval_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_eval_runs(&self, eval_id: &str, after: Option<&str>, limit: Option<u64>, order: Option<&str>, status: Option<&str>, ) -> ConversaResult<crate::types::EvalRunList> {
let address = format!("{}/evals/{eval_id}/runs", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = status {
request = request.query(&[("status", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_eval_run(&self, eval_id: &str, request_body: crate::types::CreateEvalRunRequest, ) -> ConversaResult<crate::types::EvalRun> {
let address = format!("{}/evals/{eval_id}/runs", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 201 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_eval_run(&self, eval_id: &str, run_id: &str, ) -> ConversaResult<crate::types::EvalRun> {
let address = format!("{}/evals/{eval_id}/runs/{run_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_eval_run(&self, eval_id: &str, run_id: &str, ) -> ConversaResult<crate::types::EvalRun> {
let address = format!("{}/evals/{eval_id}/runs/{run_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_eval_run(&self, eval_id: &str, run_id: &str, ) -> ConversaResult<DeleteEvalRunResponse> {
let address = format!("{}/evals/{eval_id}/runs/{run_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_eval_run_output_items(&self, eval_id: &str, run_id: &str, after: Option<&str>, limit: Option<u64>, status: Option<&str>, order: Option<&str>, ) -> ConversaResult<crate::types::EvalRunOutputItemList> {
let address = format!("{}/evals/{eval_id}/runs/{run_id}/output_items", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = status {
request = request.query(&[("status", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_eval_run_output_item(&self, eval_id: &str, run_id: &str, output_item_id: &str, ) -> ConversaResult<crate::types::EvalRunOutputItem> {
let address = format!("{}/evals/{eval_id}/runs/{run_id}/output_items/{output_item_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_files(&self, purpose: Option<&str>, limit: Option<u64>, order: Option<&str>, after: Option<&str>, ) -> ConversaResult<crate::types::ListFilesResponse> {
let address = format!("{}/files", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = purpose {
request = request.query(&[("purpose", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_file(&self, request_body: crate::types::CreateFileRequest, ) -> ConversaResult<crate::types::OpenAIFile> {
let address = format!("{}/files", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_file(&self, file_id: &str, ) -> ConversaResult<crate::types::DeleteFileResponse> {
let address = format!("{}/files/{file_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_file(&self, file_id: &str, ) -> ConversaResult<crate::types::OpenAIFile> {
let address = format!("{}/files/{file_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn download_file(&self, file_id: &str, ) -> ConversaResult<String> {
let address = format!("{}/files/{file_id}/content", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(String::from_utf8(response_bytes.to_vec())?)
}
pub async fn run_grader(&self, request_body: crate::types::RunGraderRequest, ) -> ConversaResult<crate::types::RunGraderResponse> {
let address = format!("{}/fine_tuning/alpha/graders/run", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn validate_grader(&self, request_body: crate::types::ValidateGraderRequest, ) -> ConversaResult<crate::types::ValidateGraderResponse> {
let address = format!("{}/fine_tuning/alpha/graders/validate", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_fine_tuning_checkpoint_permissions(&self, fine_tuned_model_checkpoint: &str, project_id: Option<&str>, after: Option<&str>, limit: Option<u64>, order: Option<&str>, ) -> ConversaResult<crate::types::ListFineTuningCheckpointPermissionResponse> {
let address = format!("{}/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = project_id {
request = request.query(&[("project_id", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_fine_tuning_checkpoint_permission(&self, fine_tuned_model_checkpoint: &str, request_body: crate::types::CreateFineTuningCheckpointPermissionRequest, ) -> ConversaResult<crate::types::ListFineTuningCheckpointPermissionResponse> {
let address = format!("{}/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_fine_tuning_checkpoint_permission(&self, fine_tuned_model_checkpoint: &str, permission_id: &str, ) -> ConversaResult<crate::types::DeleteFineTuningCheckpointPermissionResponse> {
let address = format!("{}/fine_tuning/checkpoints/{fine_tuned_model_checkpoint}/permissions/{permission_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_fine_tuning_job(&self, request_body: crate::types::CreateFineTuningJobRequest, ) -> ConversaResult<crate::types::FineTuningJob> {
let address = format!("{}/fine_tuning/jobs", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_paginated_fine_tuning_jobs(&self, after: Option<&str>, limit: Option<u64>, metadata: Option<ListPaginatedFineTuningJobsQuery>, ) -> ConversaResult<crate::types::ListPaginatedFineTuningJobsResponse> {
let address = format!("{}/fine_tuning/jobs", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = metadata {
request = request.query(&[("metadata", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_fine_tuning_job(&self, fine_tuning_job_id: &str, ) -> ConversaResult<crate::types::FineTuningJob> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_fine_tuning_job(&self, fine_tuning_job_id: &str, ) -> ConversaResult<crate::types::FineTuningJob> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_fine_tuning_job_checkpoints(&self, fine_tuning_job_id: &str, after: Option<&str>, limit: Option<u64>, ) -> ConversaResult<crate::types::ListFineTuningJobCheckpointsResponse> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}/checkpoints", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_fine_tuning_events(&self, fine_tuning_job_id: &str, after: Option<&str>, limit: Option<u64>, ) -> ConversaResult<crate::types::ListFineTuningJobEventsResponse> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}/events", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn pause_fine_tuning_job(&self, fine_tuning_job_id: &str, ) -> ConversaResult<crate::types::FineTuningJob> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}/pause", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn resume_fine_tuning_job(&self, fine_tuning_job_id: &str, ) -> ConversaResult<crate::types::FineTuningJob> {
let address = format!("{}/fine_tuning/jobs/{fine_tuning_job_id}/resume", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_image_edit(&self, request_body: crate::types::CreateImageEditRequest, ) -> ConversaResult<crate::types::ImagesResponse> {
let address = format!("{}/images/edits", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_image(&self, request_body: crate::types::CreateImageRequest, ) -> ConversaResult<crate::types::ImagesResponse> {
let address = format!("{}/images/generations", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_image_variation(&self, request_body: crate::types::CreateImageVariationRequest, ) -> ConversaResult<crate::types::ImagesResponse> {
let address = format!("{}/images/variations", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_models(&self, ) -> ConversaResult<crate::types::ListModelsResponse> {
let address = format!("{}/models", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_model(&self, model: &str, ) -> ConversaResult<crate::types::Model> {
let address = format!("{}/models/{model}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_model(&self, model: &str, ) -> ConversaResult<crate::types::DeleteModelResponse> {
let address = format!("{}/models/{model}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_moderation(&self, request_body: crate::types::CreateModerationRequest, ) -> ConversaResult<crate::types::CreateModerationResponse> {
let address = format!("{}/moderations", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn admin_api_keys_list(&self, after: Option<&str>, order: Option<&str>, limit: Option<u64>, ) -> ConversaResult<crate::types::ApiKeyList> {
let address = format!("{}/organization/admin_api_keys", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn admin_api_keys_create(&self, request_body: AdminApiKeysCreateRequestBody, ) -> ConversaResult<crate::types::AdminApiKey> {
let address = format!("{}/organization/admin_api_keys", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn admin_api_keys_get(&self, key_id: &str, ) -> ConversaResult<crate::types::AdminApiKey> {
let address = format!("{}/organization/admin_api_keys/{key_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn admin_api_keys_delete(&self, key_id: &str, ) -> ConversaResult<AdminApiKeysDeleteResponse> {
let address = format!("{}/organization/admin_api_keys/{key_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_audit_logs(&self, effective_at: Option<ListAuditLogsQuery>, project_ids: Option<&[String]>, event_types: Option<&[crate::types::AuditLogEventType]>, actor_ids: Option<&[String]>, actor_emails: Option<&[String]>, resource_ids: Option<&[String]>, limit: Option<u64>, after: Option<&str>, before: Option<&str>, ) -> ConversaResult<crate::types::ListAuditLogsResponse> {
let address = format!("{}/organization/audit_logs", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = effective_at {
request = request.query(&[("effective_at", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = event_types {
request = request.query(&[("event_types", q)]);
}
if let Some(q) = actor_ids {
request = request.query(&[("actor_ids", q)]);
}
if let Some(q) = actor_emails {
request = request.query(&[("actor_emails", q)]);
}
if let Some(q) = resource_ids {
request = request.query(&[("resource_ids", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_organization_certificates(&self, limit: Option<u64>, after: Option<&str>, order: Option<&str>, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/certificates", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn upload_certificate(&self, request_body: crate::types::UploadCertificateRequest, ) -> ConversaResult<crate::types::Certificate> {
let address = format!("{}/organization/certificates", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn activate_organization_certificates(&self, request_body: crate::types::ToggleCertificatesRequest, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/certificates/activate", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn deactivate_organization_certificates(&self, request_body: crate::types::ToggleCertificatesRequest, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/certificates/deactivate", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_certificate(&self, certificate_id: &str, include: Option<&[String]>, ) -> ConversaResult<crate::types::Certificate> {
let address = format!("{}/organization/certificates/{certificate_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_certificate(&self, certificate_id: &str, request_body: crate::types::ModifyCertificateRequest, ) -> ConversaResult<crate::types::Certificate> {
let address = format!("{}/organization/certificates/{certificate_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_certificate(&self, certificate_id: &str, ) -> ConversaResult<crate::types::DeleteCertificateResponse> {
let address = format!("{}/organization/certificates/{certificate_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_costs(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/costs", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_invites(&self, limit: Option<u64>, after: Option<&str>, ) -> ConversaResult<crate::types::InviteListResponse> {
let address = format!("{}/organization/invites", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn invite_user(&self, request_body: crate::types::InviteRequest, ) -> ConversaResult<crate::types::Invite> {
let address = format!("{}/organization/invites", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_invite(&self, invite_id: &str, ) -> ConversaResult<crate::types::Invite> {
let address = format!("{}/organization/invites/{invite_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_invite(&self, invite_id: &str, ) -> ConversaResult<crate::types::InviteDeleteResponse> {
let address = format!("{}/organization/invites/{invite_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_projects(&self, limit: Option<u64>, after: Option<&str>, include_archived: Option<bool>, ) -> ConversaResult<crate::types::ProjectListResponse> {
let address = format!("{}/organization/projects", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = include_archived {
request = request.query(&[("include_archived", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_project(&self, request_body: crate::types::ProjectCreateRequest, ) -> ConversaResult<crate::types::Project> {
let address = format!("{}/organization/projects", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_project(&self, project_id: &str, ) -> ConversaResult<crate::types::Project> {
let address = format!("{}/organization/projects/{project_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_project(&self, project_id: &str, request_body: crate::types::ProjectUpdateRequest, ) -> ConversaResult<crate::types::Project> {
let address = format!("{}/organization/projects/{project_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_project_api_keys(&self, project_id: &str, limit: Option<u64>, after: Option<&str>, ) -> ConversaResult<crate::types::ProjectApiKeyListResponse> {
let address = format!("{}/organization/projects/{project_id}/api_keys", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_project_api_key(&self, project_id: &str, key_id: &str, ) -> ConversaResult<crate::types::ProjectApiKey> {
let address = format!("{}/organization/projects/{project_id}/api_keys/{key_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_project_api_key(&self, project_id: &str, key_id: &str, ) -> ConversaResult<crate::types::ProjectApiKeyDeleteResponse> {
let address = format!("{}/organization/projects/{project_id}/api_keys/{key_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn archive_project(&self, project_id: &str, ) -> ConversaResult<crate::types::Project> {
let address = format!("{}/organization/projects/{project_id}/archive", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_project_certificates(&self, project_id: &str, limit: Option<u64>, after: Option<&str>, order: Option<&str>, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/projects/{project_id}/certificates", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn activate_project_certificates(&self, project_id: &str, request_body: crate::types::ToggleCertificatesRequest, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/projects/{project_id}/certificates/activate", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn deactivate_project_certificates(&self, project_id: &str, request_body: crate::types::ToggleCertificatesRequest, ) -> ConversaResult<crate::types::ListCertificatesResponse> {
let address = format!("{}/organization/projects/{project_id}/certificates/deactivate", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_project_rate_limits(&self, project_id: &str, limit: Option<u64>, after: Option<&str>, before: Option<&str>, ) -> ConversaResult<crate::types::ProjectRateLimitListResponse> {
let address = format!("{}/organization/projects/{project_id}/rate_limits", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn update_project_rate_limits(&self, project_id: &str, rate_limit_id: &str, request_body: crate::types::ProjectRateLimitUpdateRequest, ) -> ConversaResult<crate::types::ProjectRateLimit> {
let address = format!("{}/organization/projects/{project_id}/rate_limits/{rate_limit_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_project_service_accounts(&self, project_id: &str, limit: Option<u64>, after: Option<&str>, ) -> ConversaResult<crate::types::ProjectServiceAccountListResponse> {
let address = format!("{}/organization/projects/{project_id}/service_accounts", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_project_service_account(&self, project_id: &str, request_body: crate::types::ProjectServiceAccountCreateRequest, ) -> ConversaResult<crate::types::ProjectServiceAccountCreateResponse> {
let address = format!("{}/organization/projects/{project_id}/service_accounts", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_project_service_account(&self, project_id: &str, service_account_id: &str, ) -> ConversaResult<crate::types::ProjectServiceAccount> {
let address = format!("{}/organization/projects/{project_id}/service_accounts/{service_account_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_project_service_account(&self, project_id: &str, service_account_id: &str, ) -> ConversaResult<crate::types::ProjectServiceAccountDeleteResponse> {
let address = format!("{}/organization/projects/{project_id}/service_accounts/{service_account_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_project_users(&self, project_id: &str, limit: Option<u64>, after: Option<&str>, ) -> ConversaResult<crate::types::ProjectUserListResponse> {
let address = format!("{}/organization/projects/{project_id}/users", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_project_user(&self, project_id: &str, request_body: crate::types::ProjectUserCreateRequest, ) -> ConversaResult<crate::types::ProjectUser> {
let address = format!("{}/organization/projects/{project_id}/users", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_project_user(&self, project_id: &str, user_id: &str, ) -> ConversaResult<crate::types::ProjectUser> {
let address = format!("{}/organization/projects/{project_id}/users/{user_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_project_user(&self, project_id: &str, user_id: &str, request_body: crate::types::ProjectUserUpdateRequest, ) -> ConversaResult<crate::types::ProjectUser> {
let address = format!("{}/organization/projects/{project_id}/users/{user_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_project_user(&self, project_id: &str, user_id: &str, ) -> ConversaResult<crate::types::ProjectUserDeleteResponse> {
let address = format!("{}/organization/projects/{project_id}/users/{user_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_audio_speeches(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/audio_speeches", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_audio_transcriptions(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/audio_transcriptions", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_code_interpreter_sessions(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/code_interpreter_sessions", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_completions(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, batch: Option<bool>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/completions", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = batch {
request = request.query(&[("batch", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_embeddings(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/embeddings", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_images(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, sources: Option<&[String]>, sizes: Option<&[String]>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/images", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = sources {
request = request.query(&[("sources", q)]);
}
if let Some(q) = sizes {
request = request.query(&[("sizes", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_moderations(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, user_ids: Option<&[String]>, api_key_ids: Option<&[String]>, models: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/moderations", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = user_ids {
request = request.query(&[("user_ids", q)]);
}
if let Some(q) = api_key_ids {
request = request.query(&[("api_key_ids", q)]);
}
if let Some(q) = models {
request = request.query(&[("models", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn usage_vector_stores(&self, start_time: u64, end_time: Option<u64>, bucket_width: Option<&str>, project_ids: Option<&[String]>, group_by: Option<&[String]>, limit: Option<u64>, page: Option<&str>, ) -> ConversaResult<crate::types::UsageResponse> {
let address = format!("{}/organization/usage/vector_stores", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
request = request.query(&[("start_time",start_time)]);
if let Some(q) = end_time {
request = request.query(&[("end_time", q)]);
}
if let Some(q) = bucket_width {
request = request.query(&[("bucket_width", q)]);
}
if let Some(q) = project_ids {
request = request.query(&[("project_ids", q)]);
}
if let Some(q) = group_by {
request = request.query(&[("group_by", q)]);
}
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = page {
request = request.query(&[("page", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_users(&self, limit: Option<u64>, after: Option<&str>, emails: Option<&[String]>, ) -> ConversaResult<crate::types::UserListResponse> {
let address = format!("{}/organization/users", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = emails {
request = request.query(&[("emails", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_user(&self, user_id: &str, ) -> ConversaResult<crate::types::User> {
let address = format!("{}/organization/users/{user_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_user(&self, user_id: &str, request_body: crate::types::UserRoleUpdateRequest, ) -> ConversaResult<crate::types::User> {
let address = format!("{}/organization/users/{user_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_user(&self, user_id: &str, ) -> ConversaResult<crate::types::UserDeleteResponse> {
let address = format!("{}/organization/users/{user_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_realtime_session(&self, request_body: crate::types::RealtimeSessionCreateRequest, ) -> ConversaResult<crate::types::RealtimeSessionCreateResponse> {
let address = format!("{}/realtime/sessions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_realtime_transcription_session(&self, request_body: crate::types::RealtimeTranscriptionSessionCreateRequest, ) -> ConversaResult<crate::types::RealtimeTranscriptionSessionCreateResponse> {
let address = format!("{}/realtime/transcription_sessions", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_response(&self, request_body: crate::types::CreateResponse, ) -> ConversaResult<CreateResponseResponse> {
let address = format!("{}/responses", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
match _content_type.as_str() {
"application/json" => Ok(CreateResponseResponse::ApplicationJson(serde_json::from_slice(&response_bytes)?)),
"text/event-stream" => Ok(CreateResponseResponse::TextEventStream(serde_json::from_slice(&response_bytes)?)),
_ => Err(ConversaError::UnexpectedContentType(_content_type)),
}
}
pub async fn get_response(&self, response_id: &str, include: Option<&[crate::types::Includable]>, stream: Option<bool>, starting_after: Option<u64>, ) -> ConversaResult<crate::types::Response> {
let address = format!("{}/responses/{response_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
if let Some(q) = stream {
request = request.query(&[("stream", q)]);
}
if let Some(q) = starting_after {
request = request.query(&[("starting_after", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_response(&self, response_id: &str, ) -> ConversaResult<()> {
let address = format!("{}/responses/{response_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(())
}
pub async fn cancel_response(&self, response_id: &str, ) -> ConversaResult<crate::types::Response> {
let address = format!("{}/responses/{response_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_input_items(&self, response_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, include: Option<&[crate::types::Includable]>, ) -> ConversaResult<crate::types::ResponseItemList> {
let address = format!("{}/responses/{response_id}/input_items", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_thread(&self, request_body: Option<crate::types::CreateThreadRequest>, ) -> ConversaResult<crate::types::ThreadObject> {
let address = format!("{}/threads", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
if let Some(b) = request_body {
request = request.body(serde_json::to_string(&b)?);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_thread_and_run(&self, request_body: crate::types::CreateThreadAndRunRequest, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/runs", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_thread(&self, thread_id: &str, ) -> ConversaResult<crate::types::ThreadObject> {
let address = format!("{}/threads/{thread_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_thread(&self, thread_id: &str, request_body: crate::types::ModifyThreadRequest, ) -> ConversaResult<crate::types::ThreadObject> {
let address = format!("{}/threads/{thread_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_thread(&self, thread_id: &str, ) -> ConversaResult<crate::types::DeleteThreadResponse> {
let address = format!("{}/threads/{thread_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_messages(&self, thread_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, run_id: Option<&str>, ) -> ConversaResult<crate::types::ListMessagesResponse> {
let address = format!("{}/threads/{thread_id}/messages", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
if let Some(q) = run_id {
request = request.query(&[("run_id", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_message(&self, thread_id: &str, request_body: crate::types::CreateMessageRequest, ) -> ConversaResult<crate::types::MessageObject> {
let address = format!("{}/threads/{thread_id}/messages", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_message(&self, thread_id: &str, message_id: &str, ) -> ConversaResult<crate::types::MessageObject> {
let address = format!("{}/threads/{thread_id}/messages/{message_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_message(&self, thread_id: &str, message_id: &str, request_body: crate::types::ModifyMessageRequest, ) -> ConversaResult<crate::types::MessageObject> {
let address = format!("{}/threads/{thread_id}/messages/{message_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_message(&self, thread_id: &str, message_id: &str, ) -> ConversaResult<crate::types::DeleteMessageResponse> {
let address = format!("{}/threads/{thread_id}/messages/{message_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_runs(&self, thread_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, ) -> ConversaResult<crate::types::ListRunsResponse> {
let address = format!("{}/threads/{thread_id}/runs", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_run(&self, thread_id: &str, include: Option<&[String]>, request_body: crate::types::CreateRunRequest, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/{thread_id}/runs", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_run(&self, thread_id: &str, run_id: &str, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_run(&self, thread_id: &str, run_id: &str, request_body: crate::types::ModifyRunRequest, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_run(&self, thread_id: &str, run_id: &str, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_run_steps(&self, thread_id: &str, run_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, include: Option<&[String]>, ) -> ConversaResult<crate::types::ListRunStepsResponse> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}/steps", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_run_step(&self, thread_id: &str, run_id: &str, step_id: &str, include: Option<&[String]>, ) -> ConversaResult<crate::types::RunStepObject> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}/steps/{step_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = include {
request = request.query(&[("include", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn submit_tool_ouputs_to_run(&self, thread_id: &str, run_id: &str, request_body: crate::types::SubmitToolOutputsRunRequest, ) -> ConversaResult<crate::types::RunObject> {
let address = format!("{}/threads/{thread_id}/runs/{run_id}/submit_tool_outputs", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_upload(&self, request_body: crate::types::CreateUploadRequest, ) -> ConversaResult<crate::types::Upload> {
let address = format!("{}/uploads", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_upload(&self, upload_id: &str, ) -> ConversaResult<crate::types::Upload> {
let address = format!("{}/uploads/{upload_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn complete_upload(&self, upload_id: &str, request_body: crate::types::CompleteUploadRequest, ) -> ConversaResult<crate::types::Upload> {
let address = format!("{}/uploads/{upload_id}/complete", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn add_upload_part(&self, upload_id: &str, request_body: crate::types::AddUploadPartRequest, ) -> ConversaResult<crate::types::UploadPart> {
let address = format!("{}/uploads/{upload_id}/parts", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.multipart(request_body.into_multipart_form());
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_vector_stores(&self, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, ) -> ConversaResult<crate::types::ListVectorStoresResponse> {
let address = format!("{}/vector_stores", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_vector_store(&self, request_body: crate::types::CreateVectorStoreRequest, ) -> ConversaResult<crate::types::VectorStoreObject> {
let address = format!("{}/vector_stores", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_vector_store(&self, vector_store_id: &str, ) -> ConversaResult<crate::types::VectorStoreObject> {
let address = format!("{}/vector_stores/{vector_store_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn modify_vector_store(&self, vector_store_id: &str, request_body: crate::types::UpdateVectorStoreRequest, ) -> ConversaResult<crate::types::VectorStoreObject> {
let address = format!("{}/vector_stores/{vector_store_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_vector_store(&self, vector_store_id: &str, ) -> ConversaResult<crate::types::DeleteVectorStoreResponse> {
let address = format!("{}/vector_stores/{vector_store_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_vector_store_file_batch(&self, vector_store_id: &str, request_body: crate::types::CreateVectorStoreFileBatchRequest, ) -> ConversaResult<crate::types::VectorStoreFileBatchObject> {
let address = format!("{}/vector_stores/{vector_store_id}/file_batches", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_vector_store_file_batch(&self, vector_store_id: &str, batch_id: &str, ) -> ConversaResult<crate::types::VectorStoreFileBatchObject> {
let address = format!("{}/vector_stores/{vector_store_id}/file_batches/{batch_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn cancel_vector_store_file_batch(&self, vector_store_id: &str, batch_id: &str, ) -> ConversaResult<crate::types::VectorStoreFileBatchObject> {
let address = format!("{}/vector_stores/{vector_store_id}/file_batches/{batch_id}/cancel", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_files_in_vector_store_batch(&self, vector_store_id: &str, batch_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, filter: Option<&str>, ) -> ConversaResult<crate::types::ListVectorStoreFilesResponse> {
let address = format!("{}/vector_stores/{vector_store_id}/file_batches/{batch_id}/files", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
if let Some(q) = filter {
request = request.query(&[("filter", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn list_vector_store_files(&self, vector_store_id: &str, limit: Option<u64>, order: Option<&str>, after: Option<&str>, before: Option<&str>, filter: Option<&str>, ) -> ConversaResult<crate::types::ListVectorStoreFilesResponse> {
let address = format!("{}/vector_stores/{vector_store_id}/files", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
if let Some(q) = limit {
request = request.query(&[("limit", q)]);
}
if let Some(q) = order {
request = request.query(&[("order", q)]);
}
if let Some(q) = after {
request = request.query(&[("after", q)]);
}
if let Some(q) = before {
request = request.query(&[("before", q)]);
}
if let Some(q) = filter {
request = request.query(&[("filter", q)]);
}
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn create_vector_store_file(&self, vector_store_id: &str, request_body: crate::types::CreateVectorStoreFileRequest, ) -> ConversaResult<crate::types::VectorStoreFileObject> {
let address = format!("{}/vector_stores/{vector_store_id}/files", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn get_vector_store_file(&self, vector_store_id: &str, file_id: &str, ) -> ConversaResult<crate::types::VectorStoreFileObject> {
let address = format!("{}/vector_stores/{vector_store_id}/files/{file_id}", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn delete_vector_store_file(&self, vector_store_id: &str, file_id: &str, ) -> ConversaResult<crate::types::DeleteVectorStoreFileResponse> {
let address = format!("{}/vector_stores/{vector_store_id}/files/{file_id}", self.base_address);
let mut request = self.client.delete(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn update_vector_store_file_attributes(&self, vector_store_id: &str, file_id: &str, request_body: crate::types::UpdateVectorStoreFileAttributesRequest, ) -> ConversaResult<crate::types::VectorStoreFileObject> {
let address = format!("{}/vector_stores/{vector_store_id}/files/{file_id}", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn retrieve_vector_store_file_content(&self, vector_store_id: &str, file_id: &str, ) -> ConversaResult<crate::types::VectorStoreFileContentResponse> {
let address = format!("{}/vector_stores/{vector_store_id}/files/{file_id}/content", self.base_address);
let mut request = self.client.get(&address);
request = request.bearer_auth(&self.api_key);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
pub async fn search_vector_store(&self, vector_store_id: &str, request_body: crate::types::VectorStoreSearchRequest, ) -> ConversaResult<crate::types::VectorStoreSearchResultsPage> {
let address = format!("{}/vector_stores/{vector_store_id}/search", self.base_address);
let mut request = self.client.post(&address);
request = request.bearer_auth(&self.api_key);
request = request.json(&request_body);
let result = request.send().await?;
let status_code = result.status().as_u16();
let _content_type = result.headers()[reqwest::header::CONTENT_TYPE].to_str()?.to_string();
let response_bytes = result.bytes().await?;
if status_code == 400 {
return Err(ConversaError::ErrorResponse(serde_json::from_slice(&response_bytes)?))
}
if status_code == 404 {
return Err(ConversaError::Error(serde_json::from_slice(&response_bytes)?))
}
if status_code != 200 {
return Err(ConversaError::UnexpectedStatusCode{code: status_code, response: String::from_utf8(response_bytes.to_vec())?})
}
Ok(serde_json::from_slice(&response_bytes)?)
}
}