@@ -79,3 +79,66 @@ export const downloadResticPasswordDto = describeRoute({
7979 } ,
8080 } ,
8181} ) ;
82+
83+ export const fullExportBodySchema = type ( {
84+ includeMetadata : "boolean = false" ,
85+ password : "string" ,
86+ } ) ;
87+
88+ export type FullExportBody = typeof fullExportBodySchema . infer ;
89+
90+ const exportResponseSchema = type ( {
91+ version : "number" ,
92+ exportedAt : "string?" ,
93+ recoveryKey : "string?" ,
94+ volumes : "unknown[]?" ,
95+ repositories : "unknown[]?" ,
96+ backupSchedules : "unknown[]?" ,
97+ notificationDestinations : "unknown[]?" ,
98+ users : type ( {
99+ id : "number?" ,
100+ username : "string" ,
101+ passwordHash : "string?" ,
102+ createdAt : "number?" ,
103+ updatedAt : "number?" ,
104+ hasDownloadedResticPassword : "boolean?" ,
105+ } )
106+ . array ( )
107+ . optional ( ) ,
108+ } ) ;
109+
110+ const errorResponseSchema = type ( {
111+ error : "string" ,
112+ } ) ;
113+
114+ export const fullExportDto = describeRoute ( {
115+ description : "Export full configuration including all volumes, repositories, backup schedules, and notifications" ,
116+ operationId : "exportFullConfig" ,
117+ tags : [ "Config Export" ] ,
118+ responses : {
119+ 200 : {
120+ description : "Full configuration export" ,
121+ content : {
122+ "application/json" : {
123+ schema : resolver ( exportResponseSchema ) ,
124+ } ,
125+ } ,
126+ } ,
127+ 401 : {
128+ description : "Password required for export or authentication failed" ,
129+ content : {
130+ "application/json" : {
131+ schema : resolver ( errorResponseSchema ) ,
132+ } ,
133+ } ,
134+ } ,
135+ 500 : {
136+ description : "Export failed" ,
137+ content : {
138+ "application/json" : {
139+ schema : resolver ( errorResponseSchema ) ,
140+ } ,
141+ } ,
142+ } ,
143+ } ,
144+ } ) ;
0 commit comments