use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Money {
pub value: f64,
#[serde(rename = "currencyCode")]
pub currency_code: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Amount {
pub amount: Option<String>,
pub currency: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Link {
pub rel: String,
pub href: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "isTemplated", skip_serializing_if = "Option::is_none")]
pub is_templated: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Page {
pub size: u32,
#[serde(rename = "totalElements")]
pub total_elements: u64,
#[serde(rename = "totalPages")]
pub total_pages: u32,
pub number: u32,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct NamedRef {
pub id: String,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PagedResponse<T> {
pub links: Vec<Link>,
pub content: Vec<T>,
pub page: Page,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct CustomData {
pub id: String,
pub value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub is_valid: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub list_item_url: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Location {
pub id: String,
pub name: String,
pub city: Option<String>,
#[serde(rename = "countrySubDivisionCode")]
pub country_sub_division_code: Option<String>,
#[serde(rename = "countryCode")]
pub country_code: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ExpenseType {
pub id: String,
pub name: String,
pub code: Option<String>,
#[serde(rename = "isDeleted")]
pub is_deleted: Option<bool>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PaymentType {
pub id: String,
pub name: String,
pub code: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Vendor {
pub id: Option<String>,
pub name: Option<String>,
pub description: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct StatusRef {
pub code: String,
pub name: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct OwnerRef {
pub id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub first_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub last_name: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct ExchangeRate {
pub value: f64,
pub operation: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct UserName {
#[serde(skip_serializing_if = "Option::is_none")]
pub formatted: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub family_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub given_name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Email {
pub value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub verified: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub notifications: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
pub struct Address {
#[serde(skip_serializing_if = "Option::is_none")]
pub type_: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub street_address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postal_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct Meta {
#[serde(rename = "resourceType")]
pub resource_type: String,
pub created: Option<DateTime<Utc>>,
#[serde(rename = "lastModified")]
pub last_modified: Option<DateTime<Utc>>,
pub version: Option<i64>,
pub location: Option<String>,
}