/*
* The Selling Partner API for Invoices.
*
* Use the Selling Partner API for Invoices to retrieve and manage invoice-related operations, which can help selling partners manage their bookkeeping processes.
*
* The version of the OpenAPI document: 2024-06-19
*
* Generated by: https://openapi-generator.tech
*/
use reqwest;
use serde::{Deserialize, Serialize, de::Error as _};
use crate::{apis::ResponseContent, models};
use super::{Error, configuration, ContentType};
/// struct for typed errors of method [`create_invoices_export`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateInvoicesExportError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoice`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoiceError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoices`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoicesError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoices_attributes`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoicesAttributesError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoices_document`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoicesDocumentError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoices_export`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoicesExportError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// struct for typed errors of method [`get_invoices_exports`]
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum GetInvoicesExportsError {
Status400(models::invoices_2024_06_19::ErrorList),
Status401(models::invoices_2024_06_19::ErrorList),
Status403(models::invoices_2024_06_19::ErrorList),
Status404(models::invoices_2024_06_19::ErrorList),
Status413(models::invoices_2024_06_19::ErrorList),
Status415(models::invoices_2024_06_19::ErrorList),
Status429(models::invoices_2024_06_19::ErrorList),
Status500(models::invoices_2024_06_19::ErrorList),
Status503(models::invoices_2024_06_19::ErrorList),
UnknownValue(serde_json::Value),
}
/// Creates an invoice export request. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 0.167 | 1 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn create_invoices_export(configuration: &configuration::Configuration, body: models::invoices_2024_06_19::ExportInvoicesRequest) -> Result<models::invoices_2024_06_19::ExportInvoicesResponse, Error<CreateInvoicesExportError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_body = body;
let uri_str = format!("{}/tax/invoices/2024-06-19/exports", configuration.base_path);
let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
req_builder = req_builder.json(&p_body);
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::ExportInvoicesResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::ExportInvoicesResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<CreateInvoicesExportError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns invoice data for the specified invoice. This operation returns only a subset of the invoices data; refer to the response definition to get all the possible attributes. To get the full invoice, use the `createInvoicesExport` operation to start an export request. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 2 | 15 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoice(configuration: &configuration::Configuration, marketplace_id: &str, invoice_id: &str) -> Result<models::invoices_2024_06_19::GetInvoiceResponse, Error<GetInvoiceError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_marketplace_id = marketplace_id;
let p_invoice_id = invoice_id;
let uri_str = format!("{}/tax/invoices/2024-06-19/invoices/{invoiceId}", configuration.base_path, invoiceId=crate::apis::urlencode(p_invoice_id));
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoiceResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoiceResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoiceError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns invoice details for the invoices that match the filters that you specify. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 0.1 | 20 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoices(configuration: &configuration::Configuration, marketplace_id: &str, transaction_identifier_name: Option<&str>, page_size: Option<i32>, date_end: Option<String>, transaction_type: Option<&str>, transaction_identifier_id: Option<&str>, date_start: Option<String>, series: Option<&str>, next_token: Option<&str>, sort_order: Option<&str>, invoice_type: Option<&str>, statuses: Option<Vec<String>>, external_invoice_id: Option<&str>, sort_by: Option<&str>) -> Result<models::invoices_2024_06_19::GetInvoicesResponse, Error<GetInvoicesError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_marketplace_id = marketplace_id;
let p_transaction_identifier_name = transaction_identifier_name;
let p_page_size = page_size;
let p_date_end = date_end;
let p_transaction_type = transaction_type;
let p_transaction_identifier_id = transaction_identifier_id;
let p_date_start = date_start;
let p_series = series;
let p_next_token = next_token;
let p_sort_order = sort_order;
let p_invoice_type = invoice_type;
let p_statuses = statuses;
let p_external_invoice_id = external_invoice_id;
let p_sort_by = sort_by;
let uri_str = format!("{}/tax/invoices/2024-06-19/invoices", configuration.base_path);
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
if let Some(ref param_value) = p_transaction_identifier_name {
req_builder = req_builder.query(&[("transactionIdentifierName", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_page_size {
req_builder = req_builder.query(&[("pageSize", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_date_end {
req_builder = req_builder.query(&[("dateEnd", ¶m_value.to_string())]);
}
req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
if let Some(ref param_value) = p_transaction_type {
req_builder = req_builder.query(&[("transactionType", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_transaction_identifier_id {
req_builder = req_builder.query(&[("transactionIdentifierId", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_date_start {
req_builder = req_builder.query(&[("dateStart", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_series {
req_builder = req_builder.query(&[("series", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_next_token {
req_builder = req_builder.query(&[("nextToken", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_sort_order {
req_builder = req_builder.query(&[("sortOrder", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_invoice_type {
req_builder = req_builder.query(&[("invoiceType", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_statuses {
req_builder = match "csv" {
"multi" => req_builder.query(¶m_value.into_iter().map(|p| ("statuses".to_owned(), p.to_string())).collect::<Vec<(std::string::String, std::string::String)>>()),
_ => req_builder.query(&[("statuses", ¶m_value.into_iter().map(|p| p.to_string()).collect::<Vec<String>>().join(",").to_string())]),
};
}
if let Some(ref param_value) = p_external_invoice_id {
req_builder = req_builder.query(&[("externalInvoiceId", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_sort_by {
req_builder = req_builder.query(&[("sortBy", ¶m_value.to_string())]);
}
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoicesError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns marketplace-dependent schemas and their respective set of possible values. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 1 | 1 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoices_attributes(configuration: &configuration::Configuration, marketplace_id: &str) -> Result<models::invoices_2024_06_19::GetInvoicesAttributesResponse, Error<GetInvoicesAttributesError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_marketplace_id = marketplace_id;
let uri_str = format!("{}/tax/invoices/2024-06-19/attributes", configuration.base_path);
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesAttributesResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesAttributesResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoicesAttributesError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns the invoice document's ID and URL. Use the URL to download the ZIP file, which contains the invoices from the corresponding `createInvoicesExport` request. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 0.0167 | 1 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoices_document(configuration: &configuration::Configuration, invoices_document_id: &str) -> Result<models::invoices_2024_06_19::GetInvoicesDocumentResponse, Error<GetInvoicesDocumentError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_invoices_document_id = invoices_document_id;
let uri_str = format!("{}/tax/invoices/2024-06-19/documents/{invoicesDocumentId}", configuration.base_path, invoicesDocumentId=crate::apis::urlencode(p_invoices_document_id));
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesDocumentResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesDocumentResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoicesDocumentError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns invoice export details (including the `exportDocumentId`, if available) for the export that you specify. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 2 | 15 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoices_export(configuration: &configuration::Configuration, export_id: &str) -> Result<models::invoices_2024_06_19::GetInvoicesExportResponse, Error<GetInvoicesExportError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_export_id = export_id;
let uri_str = format!("{}/tax/invoices/2024-06-19/exports/{exportId}", configuration.base_path, exportId=crate::apis::urlencode(p_export_id));
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesExportResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesExportResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoicesExportError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}
/// Returns invoice exports details for exports that match the filters that you specify. **Usage Plan:** | Rate (requests per second) | Burst | | ---- | ---- | | 0.1 | 20 | The `x-amzn-RateLimit-Limit` response header returns the usage plan rate limits that were applied to the requested operation, when available. The preceding table indicates the default rate and burst values for this operation. Selling partners whose business demands require higher throughput may have higher rate and burst values than those shown here. For more information, refer to [Usage Plans and Rate Limits in the Selling Partner API](https://developer-docs.amazon.com/sp-api/docs/usage-plans-and-rate-limits-in-the-sp-api).
pub async fn get_invoices_exports(configuration: &configuration::Configuration, marketplace_id: &str, date_start: Option<String>, next_token: Option<&str>, page_size: Option<i32>, date_end: Option<String>, status: Option<&str>) -> Result<models::invoices_2024_06_19::GetInvoicesExportsResponse, Error<GetInvoicesExportsError>> {
// add a prefix to parameters to efficiently prevent name collisions
let p_marketplace_id = marketplace_id;
let p_date_start = date_start;
let p_next_token = next_token;
let p_page_size = page_size;
let p_date_end = date_end;
let p_status = status;
let uri_str = format!("{}/tax/invoices/2024-06-19/exports", configuration.base_path);
let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
req_builder = req_builder.query(&[("marketplaceId", &p_marketplace_id.to_string())]);
if let Some(ref param_value) = p_date_start {
req_builder = req_builder.query(&[("dateStart", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_next_token {
req_builder = req_builder.query(&[("nextToken", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_page_size {
req_builder = req_builder.query(&[("pageSize", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_date_end {
req_builder = req_builder.query(&[("dateEnd", ¶m_value.to_string())]);
}
if let Some(ref param_value) = p_status {
req_builder = req_builder.query(&[("status", ¶m_value.to_string())]);
}
if let Some(ref user_agent) = configuration.user_agent {
req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
}
let req = req_builder.build()?;
let resp = configuration.client.execute(req).await?;
let status = resp.status();
let content_type = resp
.headers()
.get("content-type")
.and_then(|v| v.to_str().ok())
.unwrap_or("application/octet-stream");
let content_type = super::ContentType::from(content_type);
if !status.is_client_error() && !status.is_server_error() {
let content = resp.text().await?;
match content_type {
ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesExportsResponse`"))),
ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `models::invoices_api_model_2024_06_19::GetInvoicesExportsResponse`")))),
}
} else {
let content = resp.text().await?;
let entity: Option<GetInvoicesExportsError> = serde_json::from_str(&content).ok();
Err(Error::ResponseError(ResponseContent { status, content, entity }))
}
}