systemprompt_models/documents/
sharing_events.rs1use chrono::{DateTime, Utc};
11use schemars::JsonSchema;
12use serde::{Deserialize, Serialize};
13use systemprompt_identifiers::{DocumentAccessRequestId, DocumentCommentId, DocumentId, UserId};
14
15use super::access::AccessLevel;
16
17#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
18pub struct DocumentSharedEvent {
19 pub document_id: DocumentId,
20 pub document_name: String,
21 pub recipient_user_id: UserId,
22 pub subject_kind: String,
23 pub subject_value: String,
24 pub level: AccessLevel,
25 pub by: UserId,
26 pub shared_by: String,
27 #[serde(default, skip_serializing_if = "Option::is_none")]
28 pub message: Option<String>,
29 #[serde(default)]
30 pub v: u32,
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub via_agent: Option<String>,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
34 pub comment_id: Option<DocumentCommentId>,
35 #[serde(default, skip_serializing_if = "Option::is_none")]
36 pub created_at: Option<DateTime<Utc>>,
37}
38
39pub const SHARED_EVENT_VERSION: u32 = 1;
40
41impl DocumentSharedEvent {
42 pub const NAME: &'static str = "document.shared";
43}
44
45#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
46pub struct DocumentAccessRequestedEvent {
47 pub document_id: DocumentId,
48 pub document_name: String,
49 pub request_id: DocumentAccessRequestId,
50 pub requester_user_id: UserId,
51 pub requester_display: String,
52 pub level: AccessLevel,
53 #[serde(default, skip_serializing_if = "Option::is_none")]
54 pub message: Option<String>,
55}
56
57impl DocumentAccessRequestedEvent {
58 pub const NAME: &'static str = "document.access_requested";
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
62pub struct DocumentOwnershipTransferredEvent {
63 pub document_id: DocumentId,
64 pub from: UserId,
65 pub to: UserId,
66}
67
68impl DocumentOwnershipTransferredEvent {
69 pub const NAME: &'static str = "document.ownership_transferred";
70}