1use crate::{BigPandaError, Client, POST};
2use hyper::Body;
3use serde::Serialize;
4use std::collections::HashMap;
5
6const CHANGE_URL: &str = "https://api.bigpanda.io/data/changes";
7
8#[derive(Serialize, Debug)]
11pub struct Change {
12 pub identifier: String,
14
15 pub status: String,
17
18 pub summary: String,
20
21 pub start: i64,
23
24 pub end: i64,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub ticket_url: Option<String>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 pub tags: Option<HashMap<String, String>>,
34
35 #[serde(skip_serializing_if = "Option::is_none")]
37 pub metadata: Option<HashMap<String, String>>,
38}
39
40impl Client {
41 pub async fn send_change(&self, change: Change) -> Result<(), BigPandaError> {
42 self.send_request(
43 POST,
44 CHANGE_URL,
45 Body::from(serde_json::to_string(&change).unwrap()),
46 )
47 .await
48 }
49}