highlevel_api/apis/invoices/
types.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, Default)]
6#[serde(rename_all = "camelCase")]
7pub struct ListInvoicesParams {
8 pub location_id: String,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub limit: Option<u32>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub offset: Option<u32>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub contact_id: Option<String>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub status: Option<String>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub start_at: Option<String>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub end_at: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 pub payment_mode: Option<String>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
26#[serde(rename_all = "camelCase")]
27pub struct InvoiceItem {
28 pub name: String,
29 pub description: Option<String>,
30 pub price: f64,
31 pub quantity: u32,
32 pub taxes: Option<Vec<serde_json::Value>>,
33}
34
35#[derive(Debug, Clone, Serialize, Deserialize)]
36#[serde(rename_all = "camelCase")]
37pub struct Invoice {
38 pub id: String,
39 pub location_id: String,
40 pub contact_id: Option<String>,
41 pub status: Option<String>,
42 pub items: Option<Vec<InvoiceItem>>,
43 pub amount: Option<f64>,
44 pub currency: Option<String>,
45 pub issue_date: Option<String>,
46 pub due_date: Option<String>,
47 pub title: Option<String>,
48 pub invoice_number: Option<String>,
49}
50
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct GetInvoicesResponse {
53 pub invoices: Vec<Invoice>,
54 pub total: Option<u64>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize)]
58pub struct GetInvoiceResponse {
59 pub invoice: Invoice,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize, Default)]
63#[serde(rename_all = "camelCase")]
64pub struct CreateInvoiceParams {
65 pub location_id: String,
66 pub contact_id: String,
67 pub items: Vec<InvoiceItem>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 pub title: Option<String>,
70 #[serde(skip_serializing_if = "Option::is_none")]
71 pub issue_date: Option<String>,
72 #[serde(skip_serializing_if = "Option::is_none")]
73 pub due_date: Option<String>,
74 #[serde(skip_serializing_if = "Option::is_none")]
75 pub currency: Option<String>,
76 #[serde(skip_serializing_if = "Option::is_none")]
77 pub discount: Option<serde_json::Value>,
78}
79
80#[derive(Debug, Clone, Serialize, Deserialize)]
81pub struct SendInvoiceParams {
82 pub action: String,
83}
84
85#[derive(Debug, Clone, Serialize, Deserialize)]
86#[serde(rename_all = "camelCase")]
87pub struct RecordPaymentParams {
88 pub mode: String,
89 pub notes: Option<String>,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize)]
93pub struct GenerateInvoiceNumberResponse {
94 #[serde(rename = "invoiceNumber")]
95 pub invoice_number: String,
96}
97
98#[derive(Debug, Clone, Serialize, Deserialize)]
101#[serde(rename_all = "camelCase")]
102pub struct InvoiceSchedule {
103 pub id: String,
104 pub invoice_id: String,
105 pub amount: f64,
106 pub due_date: String,
107 #[serde(skip_serializing_if = "Option::is_none")]
108 pub status: Option<String>,
109}
110
111#[derive(Debug, Clone, Serialize, Deserialize)]
112pub struct ListSchedulesResponse {
113 pub schedules: Vec<InvoiceSchedule>,
114}
115
116#[derive(Debug, Clone, Serialize, Deserialize)]
117pub struct GetScheduleResponse {
118 pub schedule: InvoiceSchedule,
119}
120
121#[derive(Debug, Clone, Serialize, Deserialize, Default)]
122#[serde(rename_all = "camelCase")]
123pub struct CreateScheduleParams {
124 pub amount: f64,
125 pub due_date: String,
126}