paperless_api/
share_link.rs1use std::sync::Arc;
4
5use chrono::{DateTime, Utc};
6use derive_more::Display;
7use serde::{Deserialize, Serialize};
8
9use paperless_api_macros::CreateDto;
10
11#[derive(Debug, Display, Default, Clone, Copy, Deserialize, Serialize, PartialEq, Eq)]
13#[serde(rename_all = "lowercase")]
14pub enum ShareLinkFileVersion {
15 #[default]
18 Archive,
19
20 Original,
22}
23
24#[derive(Debug, Clone, Deserialize, CreateDto)]
26#[api_info(private, endpoint = "share_links")]
27pub struct ShareLink {
28 #[dto(skip)]
30 pub id: crate::id::ShareLinkId,
31
32 pub document: crate::id::DocumentId,
34
35 #[dto(skip)]
37 pub created: DateTime<Utc>,
38
39 pub expiration: DateTime<Utc>,
41
42 pub file_version: ShareLinkFileVersion,
44
45 #[dto(skip)]
47 pub slug: String,
48
49 #[serde(skip)]
50 #[dto(skip)]
51 pub(crate) base_url: Arc<str>,
52}
53
54impl ShareLink {
55 #[must_use]
56 pub fn url(&self) -> String {
57 format!("{}/share/{}", self.base_url, self.slug)
58 }
59}