fiberplane_models/
integrations.rs1use crate::timestamps::Timestamp;
2#[cfg(feature = "fp-bindgen")]
3use fp_bindgen::prelude::Serializable;
4use serde::{Deserialize, Serialize};
5use strum_macros::{Display, EnumIter};
6use typed_builder::TypedBuilder;
7
8#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
9#[cfg_attr(
10 feature = "fp-bindgen",
11 derive(Serializable),
12 fp(rust_module = "fiberplane_models::integrations")
13)]
14#[non_exhaustive]
15#[serde(rename_all = "camelCase")]
16pub struct PersonalIntegrationSummary {
17 pub id: PersonalIntegrationId,
18 pub status: IntegrationStatus,
19
20 #[builder(default, setter(into))]
21 #[serde(default, skip_serializing_if = "Option::is_none")]
22 pub created_at: Option<Timestamp>,
23 #[builder(default, setter(into))]
24 #[serde(default, skip_serializing_if = "Option::is_none")]
25 pub updated_at: Option<Timestamp>,
26}
27
28#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Serialize, Display, EnumIter)]
29#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
30#[cfg_attr(
31 feature = "fp-bindgen",
32 derive(Serializable),
33 fp(rust_module = "fiberplane_models::integrations")
34)]
35#[non_exhaustive]
36#[serde(rename_all = "lowercase")]
37pub enum PersonalIntegrationId {
38 GitHub,
39}
40
41#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, TypedBuilder)]
42#[cfg_attr(
43 feature = "fp-bindgen",
44 derive(Serializable),
45 fp(rust_module = "fiberplane_models::integrations")
46)]
47#[non_exhaustive]
48#[serde(rename_all = "camelCase")]
49pub struct WorkspaceIntegrationSummary {
50 pub id: WorkspaceIntegrationId,
51 pub status: IntegrationStatus,
52
53 #[builder(default, setter(into))]
54 #[serde(default, skip_serializing_if = "Option::is_none")]
55 pub created_at: Option<Timestamp>,
56 #[builder(default, setter(into))]
57 #[serde(default, skip_serializing_if = "Option::is_none")]
58 pub updated_at: Option<Timestamp>,
59}
60
61#[derive(Clone, Copy, Debug, Deserialize, PartialEq, Eq, Serialize, Display, EnumIter)]
62#[cfg_attr(feature = "clap", derive(clap::ValueEnum))]
63#[cfg_attr(
64 feature = "fp-bindgen",
65 derive(Serializable),
66 fp(rust_module = "fiberplane_models::integrations")
67)]
68#[non_exhaustive]
69#[serde(rename_all = "lowercase")]
70pub enum WorkspaceIntegrationId {
71 PagerDutyWebhook,
72}
73
74#[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize, Display, EnumIter)]
75#[cfg_attr(
76 feature = "fp-bindgen",
77 derive(Serializable),
78 fp(rust_module = "fiberplane_models::integrations")
79)]
80#[non_exhaustive]
81#[serde(rename_all = "snake_case", tag = "type")]
82pub enum IntegrationStatus {
83 Connected,
84 Disconnected,
85 AttentionRequired { reason: String },
86}