rain_sdk/models/
webhooks.rs

1//! Models for webhook endpoints
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use serde_json::Value;
6use uuid::Uuid;
7
8/// Webhook information
9#[derive(Debug, Clone, Serialize, Deserialize)]
10#[serde(rename_all = "camelCase")]
11pub struct Webhook {
12    pub id: Uuid,
13    pub request_body: Value,
14    pub request_sent_at: DateTime<Utc>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub response_received_at: Option<DateTime<Utc>>,
17}
18
19/// Query parameters for listing webhooks
20#[derive(Debug, Clone, Serialize, Deserialize)]
21#[serde(rename_all = "camelCase")]
22pub struct ListWebhooksParams {
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub resource_id: Option<Uuid>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub resource_type: Option<String>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub resource_action: Option<String>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub request_sent_at_before: Option<DateTime<Utc>>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub request_sent_at_after: Option<DateTime<Utc>>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub response_received_at_before: Option<DateTime<Utc>>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub response_received_at_after: Option<DateTime<Utc>>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    pub cursor: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub limit: Option<u32>,
41}