arcp_core/messages/
artifacts.rs1use serde::{Deserialize, Serialize};
4
5use crate::ids::ArtifactId;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
9pub struct ArtifactRef {
10 pub artifact_id: ArtifactId,
12 pub uri: String,
14 pub media_type: String,
16 pub size: u64,
18 #[serde(default, skip_serializing_if = "Option::is_none")]
20 pub sha256: Option<String>,
21 #[serde(default, skip_serializing_if = "Option::is_none")]
23 pub expires_at: Option<chrono::DateTime<chrono::Utc>>,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
28pub struct ArtifactPutPayload {
29 pub media_type: String,
31 pub data: String,
33 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub sha256: Option<String>,
36 #[serde(default, skip_serializing_if = "Option::is_none")]
38 pub retain_seconds: Option<u64>,
39}
40
41#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
43pub struct ArtifactFetchPayload {
44 pub artifact_id: ArtifactId,
46}
47
48#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
50pub struct ArtifactRefPayload {
51 pub artifact: ArtifactRef,
53}
54
55#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
57pub struct ArtifactReleasePayload {
58 pub artifact_id: ArtifactId,
60}