amazon_spapi/apis/
shipment_api.rs1use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum UpdateShipmentStatusError {
22 Status400(models::orders_v0::UpdateShipmentStatusErrorResponse),
23 Status403(models::orders_v0::UpdateShipmentStatusErrorResponse),
24 Status404(models::orders_v0::UpdateShipmentStatusErrorResponse),
25 Status413(models::orders_v0::UpdateShipmentStatusErrorResponse),
26 Status415(models::orders_v0::UpdateShipmentStatusErrorResponse),
27 Status429(models::orders_v0::UpdateShipmentStatusErrorResponse),
28 Status500(models::orders_v0::UpdateShipmentStatusErrorResponse),
29 Status503(models::orders_v0::UpdateShipmentStatusErrorResponse),
30 UnknownValue(serde_json::Value),
31}
32
33
34pub async fn update_shipment_status(configuration: &configuration::Configuration, order_id: &str, payload: models::orders_v0::UpdateShipmentStatusRequest) -> Result<(), Error<UpdateShipmentStatusError>> {
36 let p_order_id = order_id;
38 let p_payload = payload;
39
40 let uri_str = format!("{}/orders/v0/orders/{orderId}/shipment", configuration.base_path, orderId=crate::apis::urlencode(p_order_id));
41 let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
42
43 if let Some(ref user_agent) = configuration.user_agent {
44 req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
45 }
46 req_builder = req_builder.json(&p_payload);
47
48 let req = req_builder.build()?;
49 let resp = configuration.client.execute(req).await?;
50
51 let status = resp.status();
52
53 if !status.is_client_error() && !status.is_server_error() {
54 Ok(())
55 } else {
56 let content = resp.text().await?;
57 let entity: Option<UpdateShipmentStatusError> = serde_json::from_str(&content).ok();
58 Err(Error::ResponseError(ResponseContent { status, content, entity }))
59 }
60}
61