]> git.proxmox.com Git - proxmox-backup.git/blob - src/api2/types/tape/media.rs
add missing file pbs-api-types/src/remote.rs
[proxmox-backup.git] / src / api2 / types / tape / media.rs
1 use ::serde::{Deserialize, Serialize};
2
3 use proxmox::{
4 api::api,
5 tools::Uuid,
6 };
7
8 use crate::api2::types::{
9 MEDIA_UUID_SCHEMA,
10 MEDIA_SET_UUID_SCHEMA,
11 MediaStatus,
12 MediaLocation,
13 };
14
15 #[api(
16 properties: {
17 "media-set-uuid": {
18 schema: MEDIA_SET_UUID_SCHEMA,
19 },
20 },
21 )]
22 #[derive(Serialize,Deserialize)]
23 #[serde(rename_all = "kebab-case")]
24 /// Media Set list entry
25 pub struct MediaSetListEntry {
26 /// Media set name
27 pub media_set_name: String,
28 pub media_set_uuid: Uuid,
29 /// MediaSet creation time stamp
30 pub media_set_ctime: i64,
31 /// Media Pool
32 pub pool: String,
33 }
34
35 #[api(
36 properties: {
37 location: {
38 type: MediaLocation,
39 },
40 status: {
41 type: MediaStatus,
42 },
43 uuid: {
44 schema: MEDIA_UUID_SCHEMA,
45 },
46 "media-set-uuid": {
47 schema: MEDIA_SET_UUID_SCHEMA,
48 optional: true,
49 },
50 },
51 )]
52 #[derive(Serialize,Deserialize)]
53 #[serde(rename_all = "kebab-case")]
54 /// Media list entry
55 pub struct MediaListEntry {
56 /// Media label text (or Barcode)
57 pub label_text: String,
58 pub uuid: Uuid,
59 /// Creation time stamp
60 pub ctime: i64,
61 pub location: MediaLocation,
62 pub status: MediaStatus,
63 /// Expired flag
64 pub expired: bool,
65 /// Catalog status OK
66 pub catalog: bool,
67 /// Media set name
68 #[serde(skip_serializing_if="Option::is_none")]
69 pub media_set_name: Option<String>,
70 #[serde(skip_serializing_if="Option::is_none")]
71 pub media_set_uuid: Option<Uuid>,
72 /// Media set seq_nr
73 #[serde(skip_serializing_if="Option::is_none")]
74 pub seq_nr: Option<u64>,
75 /// MediaSet creation time stamp
76 #[serde(skip_serializing_if="Option::is_none")]
77 pub media_set_ctime: Option<i64>,
78 /// Media Pool
79 #[serde(skip_serializing_if="Option::is_none")]
80 pub pool: Option<String>,
81 }
82
83 #[api(
84 properties: {
85 uuid: {
86 schema: MEDIA_UUID_SCHEMA,
87 },
88 "media-set-uuid": {
89 schema: MEDIA_SET_UUID_SCHEMA,
90 optional: true,
91 },
92 },
93 )]
94 #[derive(Serialize,Deserialize)]
95 #[serde(rename_all = "kebab-case")]
96 /// Media label info
97 pub struct MediaIdFlat {
98 /// Unique ID
99 pub uuid: Uuid,
100 /// Media label text (or Barcode)
101 pub label_text: String,
102 /// Creation time stamp
103 pub ctime: i64,
104 // All MediaSet properties are optional here
105 /// MediaSet Pool
106 #[serde(skip_serializing_if="Option::is_none")]
107 pub pool: Option<String>,
108 #[serde(skip_serializing_if="Option::is_none")]
109 pub media_set_uuid: Option<Uuid>,
110 /// MediaSet media sequence number
111 #[serde(skip_serializing_if="Option::is_none")]
112 pub seq_nr: Option<u64>,
113 /// MediaSet Creation time stamp
114 #[serde(skip_serializing_if="Option::is_none")]
115 pub media_set_ctime: Option<i64>,
116 /// Encryption key fingerprint
117 #[serde(skip_serializing_if="Option::is_none")]
118 pub encryption_key_fingerprint: Option<String>,
119 }
120
121 #[api(
122 properties: {
123 uuid: {
124 schema: MEDIA_UUID_SCHEMA,
125 optional: true,
126 },
127 },
128 )]
129 #[derive(Serialize,Deserialize)]
130 #[serde(rename_all = "kebab-case")]
131 /// Label with optional Uuid
132 pub struct LabelUuidMap {
133 /// Changer label text (or Barcode)
134 pub label_text: String,
135 /// Associated Uuid (if any)
136 pub uuid: Option<Uuid>,
137 }
138
139 #[api(
140 properties: {
141 uuid: {
142 schema: MEDIA_UUID_SCHEMA,
143 },
144 "media-set-uuid": {
145 schema: MEDIA_SET_UUID_SCHEMA,
146 },
147 },
148 )]
149 #[derive(Serialize,Deserialize)]
150 #[serde(rename_all = "kebab-case")]
151 /// Media content list entry
152 pub struct MediaContentEntry {
153 /// Media label text (or Barcode)
154 pub label_text: String,
155 /// Media Uuid
156 pub uuid: Uuid,
157 /// Media set name
158 pub media_set_name: String,
159 /// Media set uuid
160 pub media_set_uuid: Uuid,
161 /// MediaSet Creation time stamp
162 pub media_set_ctime: i64,
163 /// Media set seq_nr
164 pub seq_nr: u64,
165 /// Media Pool
166 pub pool: String,
167 /// Datastore Name
168 pub store: String,
169 /// Backup snapshot
170 pub snapshot: String,
171 /// Snapshot creation time (epoch)
172 pub backup_time: i64,
173 }