highlevel_api/apis/invoices/
types.rs1use 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}