rain_sdk/models/
shipping_groups.rs

1//! Models for shipping group endpoints
2
3use crate::models::common::Address;
4use serde::{Deserialize, Serialize};
5use uuid::Uuid;
6
7/// Shipping group information
8#[derive(Debug, Clone, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct ShippingGroup {
11    pub id: Uuid,
12    pub recipient_first_name: String,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub recipient_last_name: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub recipient_phone_country_code: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub recipient_phone_number: Option<String>,
19    pub address: Address,
20}
21
22/// Request to create a shipping group
23#[derive(Debug, Clone, Serialize, Deserialize)]
24#[serde(rename_all = "camelCase")]
25pub struct CreateShippingGroupRequest {
26    pub recipient_first_name: String,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub recipient_last_name: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub recipient_phone_country_code: Option<String>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub recipient_phone_number: Option<String>,
33    pub address: Address,
34}
35
36/// Query parameters for listing shipping groups
37#[derive(Debug, Clone, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct ListShippingGroupsParams {
40    #[serde(skip_serializing_if = "Option::is_none")]
41    pub cursor: Option<String>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    pub limit: Option<u32>,
44}
45
46/// Response type for list of shipping groups
47pub type ListShippingGroupsResponse = Vec<ShippingGroup>;