crypto_pay_api/models/
webhook.rs

1use serde::{Deserialize, Serialize};
2
3use super::Invoice;
4
5#[derive(Debug, Deserialize, Clone, PartialEq, Eq)]
6#[serde(rename_all = "snake_case")]
7pub enum UpdateType {
8    #[serde(rename = "invoice_paid")]
9    InvoicePaid,
10}
11#[derive(Debug, Deserialize)]
12pub struct WebhookUpdate {
13    pub update_id: i64,
14    pub update_type: UpdateType,
15    pub request_date: String,
16    pub payload: WebhookPayload,
17}
18
19#[derive(Debug, Deserialize, Clone)]
20#[serde(untagged)]
21pub enum WebhookPayload {
22    InvoicePaid(Invoice),
23}
24
25#[derive(Debug, Serialize)]
26pub struct WebhookResponse {
27    pub ok: bool,
28}
29
30impl WebhookResponse {
31    pub fn ok() -> Self {
32        Self { ok: true }
33    }
34}