use serde::{Deserialize, Serialize};
use crate::models::general::{
CourierInfo,
LocalDateTime,
WaypointInfo,
ManifestInfo,
ManifestItem,
RelatedDelivery,
VerificationRequirement
};
#[derive(Deserialize, Debug)]
#[serde(rename_all = "snake_case")]
pub struct UpdateDeliveryResponse {
pub complete: Option<bool>,
pub courier: Option<CourierInfo>,
pub courier_imminent: Option<bool>,
pub created: Option<LocalDateTime>,
pub currency: Option<String>,
pub deliverable_action: Option<String>,
pub dropoff: Option<WaypointInfo>,
pub dropoff_deadline: Option<LocalDateTime>,
pub dropoff_eta: Option<LocalDateTime>,
pub dropoff_identifier: Option<String>,
pub dropoff_ready: Option<LocalDateTime>,
pub fee: Option<u32>,
pub id: Option<String>,
pub kind: Option<String>,
pub live_mode: Option<bool>,
pub manifest: Option<ManifestInfo>,
pub manifest_items: Option<Vec<ManifestItem>>,
pub pickup: Option<WaypointInfo>,
pub pickup_deadline: Option<LocalDateTime>,
pub pickup_eta: Option<LocalDateTime>,
pub pickup_ready: Option<LocalDateTime>,
pub quote_id: Option<String>,
pub related_deliveries: Option<RelatedDelivery>,
pub status: Option<String>,
pub tip: Option<u32>,
pub tracking_url: Option<String>,
pub undeliverable_action: Option<String>,
pub undeliverable_reason: Option<String>,
pub updated: Option<LocalDateTime>,
pub uuid: Option<String>,
#[serde(rename = "return")]
pub return_waypoint: Option<WaypointInfo>,
}
#[derive(Serialize, Default)]
pub struct UpdateDeliveryRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub dropoff_notes: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dropoff_seller_notes: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dropoff_verification: Option<VerificationRequirement>,
#[serde(skip_serializing_if = "Option::is_none")]
pub manifest_reference: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pickup_notes: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pickup_verification: Option<VerificationRequirement>,
#[serde(skip_serializing_if = "Option::is_none")]
pub requires_dropoff_signature: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub requires_id: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tip_by_customer: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dropoff_latitude: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub dropoff_longitude: Option<f64>,
}