Skip to main content

highlevel_api/apis/invoices/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
4#[serde(rename_all = "camelCase")]
5pub struct ListInvoicesParams {
6    pub location_id: String,
7    #[serde(skip_serializing_if = "Option::is_none")]
8    pub limit: Option<u32>,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub offset: Option<u32>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub contact_id: Option<String>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub status: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub start_at: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub end_at: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub payment_mode: Option<String>,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize)]
24#[serde(rename_all = "camelCase")]
25pub struct InvoiceItem {
26    pub name: String,
27    pub description: Option<String>,
28    pub price: f64,
29    pub quantity: u32,
30    pub taxes: Option<Vec<serde_json::Value>>,
31}
32
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct Invoice {
36    pub id: String,
37    pub location_id: String,
38    pub contact_id: Option<String>,
39    pub status: Option<String>,
40    pub items: Option<Vec<InvoiceItem>>,
41    pub amount: Option<f64>,
42    pub currency: Option<String>,
43    pub issue_date: Option<String>,
44    pub due_date: Option<String>,
45    pub title: Option<String>,
46    pub invoice_number: Option<String>,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
50pub struct GetInvoicesResponse {
51    pub invoices: Vec<Invoice>,
52    pub total: Option<u64>,
53}
54
55#[derive(Debug, Clone, Serialize, Deserialize)]
56pub struct GetInvoiceResponse {
57    pub invoice: Invoice,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize, Default)]
61#[serde(rename_all = "camelCase")]
62pub struct CreateInvoiceParams {
63    pub location_id: String,
64    pub contact_id: String,
65    pub items: Vec<InvoiceItem>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub title: Option<String>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub issue_date: Option<String>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub due_date: Option<String>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub currency: Option<String>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub discount: Option<serde_json::Value>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize)]
79pub struct SendInvoiceParams {
80    pub action: String,
81}
82
83#[derive(Debug, Clone, Serialize, Deserialize)]
84#[serde(rename_all = "camelCase")]
85pub struct RecordPaymentParams {
86    pub mode: String,
87    pub notes: Option<String>,
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize)]
91pub struct GenerateInvoiceNumberResponse {
92    #[serde(rename = "invoiceNumber")]
93    pub invoice_number: String,
94}