sfr_types/block/
file.rs

1//! File block.
2//!
3//! <https://api.slack.com/reference/block-kit/blocks#file>
4
5use crate::{BlockId, ExternalId};
6use derive_new::new;
7use serde::Serialize;
8
9/// File block.
10///
11/// <https://api.slack.com/reference/block-kit/blocks#file>
12#[derive(Serialize, Debug, Clone, new)]
13#[serde(rename_all = "snake_case")]
14pub struct FileBlock {
15    /// The external unique ID for this file.
16    pub external_id: ExternalId,
17
18    /// At the moment, `source` will always be `remote` for a remote file.
19    #[new(default)]
20    pub source: FileBlockSource,
21
22    /// A unique identifier for a block.
23    #[new(value = "None")]
24    #[serde(skip_serializing_if = "Option::is_none")]
25    pub block_id: Option<BlockId>,
26}
27
28/// A `source` field in File block.
29///
30/// <https://api.slack.com/reference/block-kit/blocks#file_fields>
31#[derive(Serialize, Debug, Clone, Default)]
32#[serde(rename_all = "snake_case")]
33pub enum FileBlockSource {
34    /// The `source` will always be `remote`.
35    #[default]
36    Remote,
37}