sure_client_rs/models/
mod.rs

1pub mod account;
2pub mod auth;
3pub mod category;
4pub mod chat;
5pub mod merchant;
6pub mod sync;
7pub mod transaction;
8pub mod usage;
9
10use serde::{Deserialize, Serialize};
11
12/// Pagination information for paginated responses
13#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
14#[cfg_attr(feature = "strict", serde(deny_unknown_fields))]
15pub struct Pagination {
16    /// Current page number (1-based)
17    pub page: u32,
18    /// Number of items per page
19    pub per_page: u32,
20    /// Total number of items across all pages
21    pub total_count: u32,
22    /// Total number of pages
23    pub total_pages: u32,
24}
25
26/// Generic paginated response wrapper
27#[derive(Debug, Clone, Serialize, Deserialize)]
28#[cfg_attr(feature = "strict", serde(deny_unknown_fields))]
29pub struct PaginatedResponse<T> {
30    /// The items in this page
31    #[serde(flatten)]
32    pub items: T,
33    /// Pagination metadata
34    pub pagination: Pagination,
35}
36
37/// Response for successful deletion operations
38#[derive(Debug, Clone, Serialize, Deserialize)]
39#[cfg_attr(feature = "strict", serde(deny_unknown_fields))]
40pub struct DeleteResponse {
41    /// Confirmation message
42    pub message: String,
43}
44
45/// Error response from the API
46#[derive(Debug, Clone, Serialize, Deserialize)]
47#[cfg_attr(feature = "strict", serde(deny_unknown_fields))]
48pub struct ErrorResponse {
49    /// Error type/code
50    pub error: String,
51    /// Optional error message
52    #[serde(default, skip_serializing_if = "Option::is_none")]
53    pub message: Option<String>,
54    /// Optional error details (can be array or object)
55    #[serde(default, skip_serializing_if = "Option::is_none")]
56    pub details: Option<serde_json::Value>,
57}