stripe/resources/
line_item_ext.rs

1use serde::{Deserialize, Serialize};
2
3use crate::client::{Client, Response};
4use crate::ids::{CustomerId, InvoiceId};
5use crate::resources::{Currency, InvoiceLineItem};
6
7impl InvoiceLineItem {
8    /// Creates an invoice line item.
9    ///
10    /// For more details see <https://stripe.com/docs/api#invoice_line_item_object>.
11    pub fn create(client: &Client, params: CreateInvoiceLineItem<'_>) -> Response<InvoiceLineItem> {
12        client.post_form("/invoiceitems", &params)
13    }
14}
15
16#[derive(Clone, Debug, Default, Deserialize, Serialize)]
17pub struct CreateInvoiceLineItem<'a> {
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub amount: Option<i64>,
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub currency: Option<Currency>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    pub customer: Option<CustomerId>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub description: Option<&'a str>,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub discountable: Option<bool>,
28    #[serde(skip_serializing_if = "Option::is_none")]
29    pub invoice: Option<InvoiceId>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    pub subscription: Option<bool>,
32}
33
34impl CreateInvoiceLineItem<'_> {
35    pub fn new() -> Self {
36        CreateInvoiceLineItem {
37            amount: None,
38            currency: None,
39            customer: None,
40            description: None,
41            discountable: None,
42            invoice: None,
43            subscription: None,
44        }
45    }
46}