Immich bindings and CLI in OCaml
1(** {1 Immich}
2
3 Immich API
4
5 @version 2.4.1 *)
6
7type t = {
8 session : Requests.t;
9 base_url : string;
10}
11
12let create ?session ~sw env ~base_url =
13 let session = match session with
14 | Some s -> s
15 | None -> Requests.create ~sw env
16 in
17 { session; base_url }
18
19let base_url t = t.base_url
20let session t = t.session
21
22module WorkflowFilterItem = struct
23 module Types = struct
24 module Dto = struct
25 type t = {
26 filter_config : Jsont.json option;
27 plugin_filter_id : string;
28 }
29 end
30 end
31
32 module Dto = struct
33 include Types.Dto
34
35 let v ~plugin_filter_id ?filter_config () = { filter_config; plugin_filter_id }
36
37 let filter_config t = t.filter_config
38 let plugin_filter_id t = t.plugin_filter_id
39
40 let jsont : t Jsont.t =
41 Jsont.Object.map ~kind:"WorkflowFilterItemDto"
42 (fun filter_config plugin_filter_id -> { filter_config; plugin_filter_id })
43 |> Jsont.Object.opt_mem "filterConfig" Jsont.json ~enc:(fun r -> r.filter_config)
44 |> Jsont.Object.mem "pluginFilterId" Jsont.string ~enc:(fun r -> r.plugin_filter_id)
45 |> Jsont.Object.skip_unknown
46 |> Jsont.Object.finish
47 end
48end
49
50module WorkflowFilter = struct
51 module Types = struct
52 module ResponseDto = struct
53 type t = {
54 filter_config : Jsont.json option;
55 id : string;
56 order : float;
57 plugin_filter_id : string;
58 workflow_id : string;
59 }
60 end
61 end
62
63 module ResponseDto = struct
64 include Types.ResponseDto
65
66 let v ~id ~order ~plugin_filter_id ~workflow_id ?filter_config () = { filter_config; id; order; plugin_filter_id; workflow_id }
67
68 let filter_config t = t.filter_config
69 let id t = t.id
70 let order t = t.order
71 let plugin_filter_id t = t.plugin_filter_id
72 let workflow_id t = t.workflow_id
73
74 let jsont : t Jsont.t =
75 Jsont.Object.map ~kind:"WorkflowFilterResponseDto"
76 (fun filter_config id order plugin_filter_id workflow_id -> { filter_config; id; order; plugin_filter_id; workflow_id })
77 |> Jsont.Object.mem "filterConfig" (Openapi.Runtime.nullable_any Jsont.json)
78 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.filter_config)
79 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
80 |> Jsont.Object.mem "order" Jsont.number ~enc:(fun r -> r.order)
81 |> Jsont.Object.mem "pluginFilterId" Jsont.string ~enc:(fun r -> r.plugin_filter_id)
82 |> Jsont.Object.mem "workflowId" Jsont.string ~enc:(fun r -> r.workflow_id)
83 |> Jsont.Object.skip_unknown
84 |> Jsont.Object.finish
85 end
86end
87
88module WorkflowActionItem = struct
89 module Types = struct
90 module Dto = struct
91 type t = {
92 action_config : Jsont.json option;
93 plugin_action_id : string;
94 }
95 end
96 end
97
98 module Dto = struct
99 include Types.Dto
100
101 let v ~plugin_action_id ?action_config () = { action_config; plugin_action_id }
102
103 let action_config t = t.action_config
104 let plugin_action_id t = t.plugin_action_id
105
106 let jsont : t Jsont.t =
107 Jsont.Object.map ~kind:"WorkflowActionItemDto"
108 (fun action_config plugin_action_id -> { action_config; plugin_action_id })
109 |> Jsont.Object.opt_mem "actionConfig" Jsont.json ~enc:(fun r -> r.action_config)
110 |> Jsont.Object.mem "pluginActionId" Jsont.string ~enc:(fun r -> r.plugin_action_id)
111 |> Jsont.Object.skip_unknown
112 |> Jsont.Object.finish
113 end
114end
115
116module WorkflowAction = struct
117 module Types = struct
118 module ResponseDto = struct
119 type t = {
120 action_config : Jsont.json option;
121 id : string;
122 order : float;
123 plugin_action_id : string;
124 workflow_id : string;
125 }
126 end
127 end
128
129 module ResponseDto = struct
130 include Types.ResponseDto
131
132 let v ~id ~order ~plugin_action_id ~workflow_id ?action_config () = { action_config; id; order; plugin_action_id; workflow_id }
133
134 let action_config t = t.action_config
135 let id t = t.id
136 let order t = t.order
137 let plugin_action_id t = t.plugin_action_id
138 let workflow_id t = t.workflow_id
139
140 let jsont : t Jsont.t =
141 Jsont.Object.map ~kind:"WorkflowActionResponseDto"
142 (fun action_config id order plugin_action_id workflow_id -> { action_config; id; order; plugin_action_id; workflow_id })
143 |> Jsont.Object.mem "actionConfig" (Openapi.Runtime.nullable_any Jsont.json)
144 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.action_config)
145 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
146 |> Jsont.Object.mem "order" Jsont.number ~enc:(fun r -> r.order)
147 |> Jsont.Object.mem "pluginActionId" Jsont.string ~enc:(fun r -> r.plugin_action_id)
148 |> Jsont.Object.mem "workflowId" Jsont.string ~enc:(fun r -> r.workflow_id)
149 |> Jsont.Object.skip_unknown
150 |> Jsont.Object.finish
151 end
152end
153
154module VideoContainer = struct
155 module Types = struct
156 module T = struct
157 type t = [
158 | `Mov
159 | `Mp4
160 | `Ogg
161 | `Webm
162 ]
163 end
164 end
165
166 module T = struct
167 include Types.T
168
169 let jsont : t Jsont.t =
170 Jsont.map Jsont.string ~kind:"VideoContainer"
171 ~dec:(function
172 | "mov" -> `Mov
173 | "mp4" -> `Mp4
174 | "ogg" -> `Ogg
175 | "webm" -> `Webm
176 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
177 ~enc:(function
178 | `Mov -> "mov"
179 | `Mp4 -> "mp4"
180 | `Ogg -> "ogg"
181 | `Webm -> "webm")
182 end
183end
184
185module VideoCodec = struct
186 module Types = struct
187 module T = struct
188 type t = [
189 | `H264
190 | `Hevc
191 | `Vp9
192 | `Av1
193 ]
194 end
195 end
196
197 module T = struct
198 include Types.T
199
200 let jsont : t Jsont.t =
201 Jsont.map Jsont.string ~kind:"VideoCodec"
202 ~dec:(function
203 | "h264" -> `H264
204 | "hevc" -> `Hevc
205 | "vp9" -> `Vp9
206 | "av1" -> `Av1
207 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
208 ~enc:(function
209 | `H264 -> "h264"
210 | `Hevc -> "hevc"
211 | `Vp9 -> "vp9"
212 | `Av1 -> "av1")
213 end
214end
215
216module VersionCheckState = struct
217 module Types = struct
218 module ResponseDto = struct
219 type t = {
220 checked_at : string option;
221 release_version : string option;
222 }
223 end
224 end
225
226 module ResponseDto = struct
227 include Types.ResponseDto
228
229 let v ?checked_at ?release_version () = { checked_at; release_version }
230
231 let checked_at t = t.checked_at
232 let release_version t = t.release_version
233
234 let jsont : t Jsont.t =
235 Jsont.Object.map ~kind:"VersionCheckStateResponseDto"
236 (fun checked_at release_version -> { checked_at; release_version })
237 |> Jsont.Object.mem "checkedAt" Openapi.Runtime.nullable_string
238 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.checked_at)
239 |> Jsont.Object.mem "releaseVersion" Openapi.Runtime.nullable_string
240 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.release_version)
241 |> Jsont.Object.skip_unknown
242 |> Jsont.Object.finish
243 end
244
245 (** Get version check status
246
247 Retrieve information about the last time the version check ran. *)
248 let get_version_check client () =
249 let op_name = "get_version_check" in
250 let url_path = "/server/version-check" in
251 let query = "" in
252 let url = client.base_url ^ url_path ^ query in
253 let response =
254 try Requests.get client.session url
255 with Eio.Io _ as ex ->
256 let bt = Printexc.get_raw_backtrace () in
257 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
258 in
259 if Requests.Response.ok response then
260 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
261 else
262 let body = Requests.Response.text response in
263 let parsed_body =
264 match Jsont_bytesrw.decode_string Jsont.json body with
265 | Ok json -> Some (Openapi.Runtime.Json json)
266 | Error _ -> Some (Openapi.Runtime.Raw body)
267 in
268 raise (Openapi.Runtime.Api_error {
269 operation = op_name;
270 method_ = "GET";
271 url;
272 status = Requests.Response.status_code response;
273 body;
274 parsed_body;
275 })
276
277 (** Retrieve version check state
278
279 Retrieve the current state of the version check process. *)
280 let get_version_check_state client () =
281 let op_name = "get_version_check_state" in
282 let url_path = "/system-metadata/version-check-state" in
283 let query = "" in
284 let url = client.base_url ^ url_path ^ query in
285 let response =
286 try Requests.get client.session url
287 with Eio.Io _ as ex ->
288 let bt = Printexc.get_raw_backtrace () in
289 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
290 in
291 if Requests.Response.ok response then
292 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
293 else
294 let body = Requests.Response.text response in
295 let parsed_body =
296 match Jsont_bytesrw.decode_string Jsont.json body with
297 | Ok json -> Some (Openapi.Runtime.Json json)
298 | Error _ -> Some (Openapi.Runtime.Raw body)
299 in
300 raise (Openapi.Runtime.Api_error {
301 operation = op_name;
302 method_ = "GET";
303 url;
304 status = Requests.Response.status_code response;
305 body;
306 parsed_body;
307 })
308end
309
310module ValidateLibraryImportPath = struct
311 module Types = struct
312 module ResponseDto = struct
313 type t = {
314 import_path : string;
315 is_valid : bool;
316 message : string option;
317 }
318 end
319 end
320
321 module ResponseDto = struct
322 include Types.ResponseDto
323
324 let v ~import_path ?(is_valid=false) ?message () = { import_path; is_valid; message }
325
326 let import_path t = t.import_path
327 let is_valid t = t.is_valid
328 let message t = t.message
329
330 let jsont : t Jsont.t =
331 Jsont.Object.map ~kind:"ValidateLibraryImportPathResponseDto"
332 (fun import_path is_valid message -> { import_path; is_valid; message })
333 |> Jsont.Object.mem "importPath" Jsont.string ~enc:(fun r -> r.import_path)
334 |> Jsont.Object.mem "isValid" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.is_valid)
335 |> Jsont.Object.opt_mem "message" Jsont.string ~enc:(fun r -> r.message)
336 |> Jsont.Object.skip_unknown
337 |> Jsont.Object.finish
338 end
339end
340
341module ValidateLibrary = struct
342 module Types = struct
343 module ResponseDto = struct
344 type t = {
345 import_paths : ValidateLibraryImportPath.ResponseDto.t list option;
346 }
347 end
348
349 module Dto = struct
350 type t = {
351 exclusion_patterns : string list option;
352 import_paths : string list option;
353 }
354 end
355 end
356
357 module ResponseDto = struct
358 include Types.ResponseDto
359
360 let v ?import_paths () = { import_paths }
361
362 let import_paths t = t.import_paths
363
364 let jsont : t Jsont.t =
365 Jsont.Object.map ~kind:"ValidateLibraryResponseDto"
366 (fun import_paths -> { import_paths })
367 |> Jsont.Object.opt_mem "importPaths" (Jsont.list ValidateLibraryImportPath.ResponseDto.jsont) ~enc:(fun r -> r.import_paths)
368 |> Jsont.Object.skip_unknown
369 |> Jsont.Object.finish
370 end
371
372 module Dto = struct
373 include Types.Dto
374
375 let v ?exclusion_patterns ?import_paths () = { exclusion_patterns; import_paths }
376
377 let exclusion_patterns t = t.exclusion_patterns
378 let import_paths t = t.import_paths
379
380 let jsont : t Jsont.t =
381 Jsont.Object.map ~kind:"ValidateLibraryDto"
382 (fun exclusion_patterns import_paths -> { exclusion_patterns; import_paths })
383 |> Jsont.Object.opt_mem "exclusionPatterns" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.exclusion_patterns)
384 |> Jsont.Object.opt_mem "importPaths" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.import_paths)
385 |> Jsont.Object.skip_unknown
386 |> Jsont.Object.finish
387 end
388
389 (** Validate library settings
390
391 Validate the settings of an external library. *)
392 let validate ~id ~body client () =
393 let op_name = "validate" in
394 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}/validate" in
395 let query = "" in
396 let url = client.base_url ^ url_path ^ query in
397 let response =
398 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
399 with Eio.Io _ as ex ->
400 let bt = Printexc.get_raw_backtrace () in
401 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
402 in
403 if Requests.Response.ok response then
404 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
405 else
406 let body = Requests.Response.text response in
407 let parsed_body =
408 match Jsont_bytesrw.decode_string Jsont.json body with
409 | Ok json -> Some (Openapi.Runtime.Json json)
410 | Error _ -> Some (Openapi.Runtime.Raw body)
411 in
412 raise (Openapi.Runtime.Api_error {
413 operation = op_name;
414 method_ = "POST";
415 url;
416 status = Requests.Response.status_code response;
417 body;
418 parsed_body;
419 })
420end
421
422module ValidateAccessToken = struct
423 module Types = struct
424 module ResponseDto = struct
425 type t = {
426 auth_status : bool;
427 }
428 end
429 end
430
431 module ResponseDto = struct
432 include Types.ResponseDto
433
434 let v ~auth_status () = { auth_status }
435
436 let auth_status t = t.auth_status
437
438 let jsont : t Jsont.t =
439 Jsont.Object.map ~kind:"ValidateAccessTokenResponseDto"
440 (fun auth_status -> { auth_status })
441 |> Jsont.Object.mem "authStatus" Jsont.bool ~enc:(fun r -> r.auth_status)
442 |> Jsont.Object.skip_unknown
443 |> Jsont.Object.finish
444 end
445
446 (** Validate access token
447
448 Validate the current authorization method is still valid. *)
449 let validate_access_token client () =
450 let op_name = "validate_access_token" in
451 let url_path = "/auth/validateToken" in
452 let query = "" in
453 let url = client.base_url ^ url_path ^ query in
454 let response =
455 try Requests.post client.session url
456 with Eio.Io _ as ex ->
457 let bt = Printexc.get_raw_backtrace () in
458 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
459 in
460 if Requests.Response.ok response then
461 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
462 else
463 let body = Requests.Response.text response in
464 let parsed_body =
465 match Jsont_bytesrw.decode_string Jsont.json body with
466 | Ok json -> Some (Openapi.Runtime.Json json)
467 | Error _ -> Some (Openapi.Runtime.Raw body)
468 in
469 raise (Openapi.Runtime.Api_error {
470 operation = op_name;
471 method_ = "POST";
472 url;
473 status = Requests.Response.status_code response;
474 body;
475 parsed_body;
476 })
477end
478
479module UserMetadataKey = struct
480 module Types = struct
481 module T = struct
482 type t = [
483 | `Preferences
484 | `License
485 | `Onboarding
486 ]
487 end
488 end
489
490 module T = struct
491 include Types.T
492
493 let jsont : t Jsont.t =
494 Jsont.map Jsont.string ~kind:"UserMetadataKey"
495 ~dec:(function
496 | "preferences" -> `Preferences
497 | "license" -> `License
498 | "onboarding" -> `Onboarding
499 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
500 ~enc:(function
501 | `Preferences -> "preferences"
502 | `License -> "license"
503 | `Onboarding -> "onboarding")
504 end
505end
506
507module SyncUserMetadataV1 = struct
508 module Types = struct
509 module T = struct
510 type t = {
511 key : UserMetadataKey.T.t;
512 user_id : string;
513 value : Jsont.json;
514 }
515 end
516 end
517
518 module T = struct
519 include Types.T
520
521 let v ~key ~user_id ~value () = { key; user_id; value }
522
523 let key t = t.key
524 let user_id t = t.user_id
525 let value t = t.value
526
527 let jsont : t Jsont.t =
528 Jsont.Object.map ~kind:"SyncUserMetadataV1"
529 (fun key user_id value -> { key; user_id; value })
530 |> Jsont.Object.mem "key" UserMetadataKey.T.jsont ~enc:(fun r -> r.key)
531 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
532 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
533 |> Jsont.Object.skip_unknown
534 |> Jsont.Object.finish
535 end
536end
537
538module SyncUserMetadataDeleteV1 = struct
539 module Types = struct
540 module T = struct
541 type t = {
542 key : UserMetadataKey.T.t;
543 user_id : string;
544 }
545 end
546 end
547
548 module T = struct
549 include Types.T
550
551 let v ~key ~user_id () = { key; user_id }
552
553 let key t = t.key
554 let user_id t = t.user_id
555
556 let jsont : t Jsont.t =
557 Jsont.Object.map ~kind:"SyncUserMetadataDeleteV1"
558 (fun key user_id -> { key; user_id })
559 |> Jsont.Object.mem "key" UserMetadataKey.T.jsont ~enc:(fun r -> r.key)
560 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
561 |> Jsont.Object.skip_unknown
562 |> Jsont.Object.finish
563 end
564end
565
566module UserLicense = struct
567 module Types = struct
568 module T = struct
569 type t = {
570 activated_at : Ptime.t;
571 activation_key : string;
572 license_key : string;
573 }
574 end
575 end
576
577 module T = struct
578 include Types.T
579
580 let v ~activated_at ~activation_key ~license_key () = { activated_at; activation_key; license_key }
581
582 let activated_at t = t.activated_at
583 let activation_key t = t.activation_key
584 let license_key t = t.license_key
585
586 let jsont : t Jsont.t =
587 Jsont.Object.map ~kind:"UserLicense"
588 (fun activated_at activation_key license_key -> { activated_at; activation_key; license_key })
589 |> Jsont.Object.mem "activatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.activated_at)
590 |> Jsont.Object.mem "activationKey" Jsont.string ~enc:(fun r -> r.activation_key)
591 |> Jsont.Object.mem "licenseKey" Jsont.string ~enc:(fun r -> r.license_key)
592 |> Jsont.Object.skip_unknown
593 |> Jsont.Object.finish
594 end
595end
596
597module UserAvatarColor = struct
598 module Types = struct
599 module T = struct
600 type t = [
601 | `Primary
602 | `Pink
603 | `Red
604 | `Yellow
605 | `Blue
606 | `Green
607 | `Purple
608 | `Orange
609 | `Gray
610 | `Amber
611 ]
612 end
613 end
614
615 module T = struct
616 include Types.T
617
618 let jsont : t Jsont.t =
619 Jsont.map Jsont.string ~kind:"UserAvatarColor"
620 ~dec:(function
621 | "primary" -> `Primary
622 | "pink" -> `Pink
623 | "red" -> `Red
624 | "yellow" -> `Yellow
625 | "blue" -> `Blue
626 | "green" -> `Green
627 | "purple" -> `Purple
628 | "orange" -> `Orange
629 | "gray" -> `Gray
630 | "amber" -> `Amber
631 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
632 ~enc:(function
633 | `Primary -> "primary"
634 | `Pink -> "pink"
635 | `Red -> "red"
636 | `Yellow -> "yellow"
637 | `Blue -> "blue"
638 | `Green -> "green"
639 | `Purple -> "purple"
640 | `Orange -> "orange"
641 | `Gray -> "gray"
642 | `Amber -> "amber")
643 end
644end
645
646module UserUpdateMe = struct
647 module Types = struct
648 module Dto = struct
649 type t = {
650 avatar_color : UserAvatarColor.T.t option;
651 email : string option;
652 name : string option;
653 password : string option;
654 }
655 end
656 end
657
658 module Dto = struct
659 include Types.Dto
660
661 let v ?avatar_color ?email ?name ?password () = { avatar_color; email; name; password }
662
663 let avatar_color t = t.avatar_color
664 let email t = t.email
665 let name t = t.name
666 let password t = t.password
667
668 let jsont : t Jsont.t =
669 Jsont.Object.map ~kind:"UserUpdateMeDto"
670 (fun avatar_color email name password -> { avatar_color; email; name; password })
671 |> Jsont.Object.opt_mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
672 |> Jsont.Object.opt_mem "email" Jsont.string ~enc:(fun r -> r.email)
673 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
674 |> Jsont.Object.opt_mem "password" Jsont.string ~enc:(fun r -> r.password)
675 |> Jsont.Object.skip_unknown
676 |> Jsont.Object.finish
677 end
678end
679
680module User = struct
681 module Types = struct
682 module Status = struct
683 type t = [
684 | `Active
685 | `Removing
686 | `Deleted
687 ]
688 end
689
690 module ResponseDto = struct
691 type t = {
692 avatar_color : UserAvatarColor.T.t;
693 email : string;
694 id : string;
695 name : string;
696 profile_changed_at : Ptime.t;
697 profile_image_path : string;
698 }
699 end
700 end
701
702 module Status = struct
703 include Types.Status
704
705 let jsont : t Jsont.t =
706 Jsont.map Jsont.string ~kind:"UserStatus"
707 ~dec:(function
708 | "active" -> `Active
709 | "removing" -> `Removing
710 | "deleted" -> `Deleted
711 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
712 ~enc:(function
713 | `Active -> "active"
714 | `Removing -> "removing"
715 | `Deleted -> "deleted")
716 end
717
718 module ResponseDto = struct
719 include Types.ResponseDto
720
721 let v ~avatar_color ~email ~id ~name ~profile_changed_at ~profile_image_path () = { avatar_color; email; id; name; profile_changed_at; profile_image_path }
722
723 let avatar_color t = t.avatar_color
724 let email t = t.email
725 let id t = t.id
726 let name t = t.name
727 let profile_changed_at t = t.profile_changed_at
728 let profile_image_path t = t.profile_image_path
729
730 let jsont : t Jsont.t =
731 Jsont.Object.map ~kind:"UserResponseDto"
732 (fun avatar_color email id name profile_changed_at profile_image_path -> { avatar_color; email; id; name; profile_changed_at; profile_image_path })
733 |> Jsont.Object.mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
734 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
735 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
736 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
737 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
738 |> Jsont.Object.mem "profileImagePath" Jsont.string ~enc:(fun r -> r.profile_image_path)
739 |> Jsont.Object.skip_unknown
740 |> Jsont.Object.finish
741 end
742
743 (** Get all users
744
745 Retrieve a list of all users on the server. *)
746 let search_users client () =
747 let op_name = "search_users" in
748 let url_path = "/users" in
749 let query = "" in
750 let url = client.base_url ^ url_path ^ query in
751 let response =
752 try Requests.get client.session url
753 with Eio.Io _ as ex ->
754 let bt = Printexc.get_raw_backtrace () in
755 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
756 in
757 if Requests.Response.ok response then
758 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
759 else
760 let body = Requests.Response.text response in
761 let parsed_body =
762 match Jsont_bytesrw.decode_string Jsont.json body with
763 | Ok json -> Some (Openapi.Runtime.Json json)
764 | Error _ -> Some (Openapi.Runtime.Raw body)
765 in
766 raise (Openapi.Runtime.Api_error {
767 operation = op_name;
768 method_ = "GET";
769 url;
770 status = Requests.Response.status_code response;
771 body;
772 parsed_body;
773 })
774
775 (** Retrieve a user
776
777 Retrieve a specific user by their ID. *)
778 let get_user ~id client () =
779 let op_name = "get_user" in
780 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/users/{id}" in
781 let query = "" in
782 let url = client.base_url ^ url_path ^ query in
783 let response =
784 try Requests.get client.session url
785 with Eio.Io _ as ex ->
786 let bt = Printexc.get_raw_backtrace () in
787 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
788 in
789 if Requests.Response.ok response then
790 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
791 else
792 let body = Requests.Response.text response in
793 let parsed_body =
794 match Jsont_bytesrw.decode_string Jsont.json body with
795 | Ok json -> Some (Openapi.Runtime.Json json)
796 | Error _ -> Some (Openapi.Runtime.Raw body)
797 in
798 raise (Openapi.Runtime.Api_error {
799 operation = op_name;
800 method_ = "GET";
801 url;
802 status = Requests.Response.status_code response;
803 body;
804 parsed_body;
805 })
806end
807
808module SyncUserV1 = struct
809 module Types = struct
810 module T = struct
811 type t = {
812 avatar_color : UserAvatarColor.T.t;
813 deleted_at : Ptime.t option;
814 email : string;
815 has_profile_image : bool;
816 id : string;
817 name : string;
818 profile_changed_at : Ptime.t;
819 }
820 end
821 end
822
823 module T = struct
824 include Types.T
825
826 let v ~avatar_color ~email ~has_profile_image ~id ~name ~profile_changed_at ?deleted_at () = { avatar_color; deleted_at; email; has_profile_image; id; name; profile_changed_at }
827
828 let avatar_color t = t.avatar_color
829 let deleted_at t = t.deleted_at
830 let email t = t.email
831 let has_profile_image t = t.has_profile_image
832 let id t = t.id
833 let name t = t.name
834 let profile_changed_at t = t.profile_changed_at
835
836 let jsont : t Jsont.t =
837 Jsont.Object.map ~kind:"SyncUserV1"
838 (fun avatar_color deleted_at email has_profile_image id name profile_changed_at -> { avatar_color; deleted_at; email; has_profile_image; id; name; profile_changed_at })
839 |> Jsont.Object.mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
840 |> Jsont.Object.mem "deletedAt" Openapi.Runtime.nullable_ptime
841 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.deleted_at)
842 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
843 |> Jsont.Object.mem "hasProfileImage" Jsont.bool ~enc:(fun r -> r.has_profile_image)
844 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
845 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
846 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
847 |> Jsont.Object.skip_unknown
848 |> Jsont.Object.finish
849 end
850end
851
852module SyncAuthUserV1 = struct
853 module Types = struct
854 module T = struct
855 type t = {
856 avatar_color : UserAvatarColor.T.t;
857 deleted_at : Ptime.t option;
858 email : string;
859 has_profile_image : bool;
860 id : string;
861 is_admin : bool;
862 name : string;
863 oauth_id : string;
864 pin_code : string option;
865 profile_changed_at : Ptime.t;
866 quota_size_in_bytes : int option;
867 quota_usage_in_bytes : int;
868 storage_label : string option;
869 }
870 end
871 end
872
873 module T = struct
874 include Types.T
875
876 let v ~avatar_color ~email ~has_profile_image ~id ~is_admin ~name ~oauth_id ~profile_changed_at ~quota_usage_in_bytes ?deleted_at ?pin_code ?quota_size_in_bytes ?storage_label () = { avatar_color; deleted_at; email; has_profile_image; id; is_admin; name; oauth_id; pin_code; profile_changed_at; quota_size_in_bytes; quota_usage_in_bytes; storage_label }
877
878 let avatar_color t = t.avatar_color
879 let deleted_at t = t.deleted_at
880 let email t = t.email
881 let has_profile_image t = t.has_profile_image
882 let id t = t.id
883 let is_admin t = t.is_admin
884 let name t = t.name
885 let oauth_id t = t.oauth_id
886 let pin_code t = t.pin_code
887 let profile_changed_at t = t.profile_changed_at
888 let quota_size_in_bytes t = t.quota_size_in_bytes
889 let quota_usage_in_bytes t = t.quota_usage_in_bytes
890 let storage_label t = t.storage_label
891
892 let jsont : t Jsont.t =
893 Jsont.Object.map ~kind:"SyncAuthUserV1"
894 (fun avatar_color deleted_at email has_profile_image id is_admin name oauth_id pin_code profile_changed_at quota_size_in_bytes quota_usage_in_bytes storage_label -> { avatar_color; deleted_at; email; has_profile_image; id; is_admin; name; oauth_id; pin_code; profile_changed_at; quota_size_in_bytes; quota_usage_in_bytes; storage_label })
895 |> Jsont.Object.mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
896 |> Jsont.Object.mem "deletedAt" Openapi.Runtime.nullable_ptime
897 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.deleted_at)
898 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
899 |> Jsont.Object.mem "hasProfileImage" Jsont.bool ~enc:(fun r -> r.has_profile_image)
900 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
901 |> Jsont.Object.mem "isAdmin" Jsont.bool ~enc:(fun r -> r.is_admin)
902 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
903 |> Jsont.Object.mem "oauthId" Jsont.string ~enc:(fun r -> r.oauth_id)
904 |> Jsont.Object.mem "pinCode" Openapi.Runtime.nullable_string
905 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.pin_code)
906 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
907 |> Jsont.Object.mem "quotaSizeInBytes" Openapi.Runtime.nullable_int
908 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_size_in_bytes)
909 |> Jsont.Object.mem "quotaUsageInBytes" Jsont.int ~enc:(fun r -> r.quota_usage_in_bytes)
910 |> Jsont.Object.mem "storageLabel" Openapi.Runtime.nullable_string
911 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.storage_label)
912 |> Jsont.Object.skip_unknown
913 |> Jsont.Object.finish
914 end
915end
916
917module Partner = struct
918 module Types = struct
919 module UpdateDto = struct
920 type t = {
921 in_timeline : bool;
922 }
923 end
924
925 module ResponseDto = struct
926 type t = {
927 avatar_color : UserAvatarColor.T.t;
928 email : string;
929 id : string;
930 in_timeline : bool option;
931 name : string;
932 profile_changed_at : Ptime.t;
933 profile_image_path : string;
934 }
935 end
936
937 module CreateDto = struct
938 type t = {
939 shared_with_id : string;
940 }
941 end
942 end
943
944 module UpdateDto = struct
945 include Types.UpdateDto
946
947 let v ~in_timeline () = { in_timeline }
948
949 let in_timeline t = t.in_timeline
950
951 let jsont : t Jsont.t =
952 Jsont.Object.map ~kind:"PartnerUpdateDto"
953 (fun in_timeline -> { in_timeline })
954 |> Jsont.Object.mem "inTimeline" Jsont.bool ~enc:(fun r -> r.in_timeline)
955 |> Jsont.Object.skip_unknown
956 |> Jsont.Object.finish
957 end
958
959 module ResponseDto = struct
960 include Types.ResponseDto
961
962 let v ~avatar_color ~email ~id ~name ~profile_changed_at ~profile_image_path ?in_timeline () = { avatar_color; email; id; in_timeline; name; profile_changed_at; profile_image_path }
963
964 let avatar_color t = t.avatar_color
965 let email t = t.email
966 let id t = t.id
967 let in_timeline t = t.in_timeline
968 let name t = t.name
969 let profile_changed_at t = t.profile_changed_at
970 let profile_image_path t = t.profile_image_path
971
972 let jsont : t Jsont.t =
973 Jsont.Object.map ~kind:"PartnerResponseDto"
974 (fun avatar_color email id in_timeline name profile_changed_at profile_image_path -> { avatar_color; email; id; in_timeline; name; profile_changed_at; profile_image_path })
975 |> Jsont.Object.mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
976 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
977 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
978 |> Jsont.Object.opt_mem "inTimeline" Jsont.bool ~enc:(fun r -> r.in_timeline)
979 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
980 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
981 |> Jsont.Object.mem "profileImagePath" Jsont.string ~enc:(fun r -> r.profile_image_path)
982 |> Jsont.Object.skip_unknown
983 |> Jsont.Object.finish
984 end
985
986 module CreateDto = struct
987 include Types.CreateDto
988
989 let v ~shared_with_id () = { shared_with_id }
990
991 let shared_with_id t = t.shared_with_id
992
993 let jsont : t Jsont.t =
994 Jsont.Object.map ~kind:"PartnerCreateDto"
995 (fun shared_with_id -> { shared_with_id })
996 |> Jsont.Object.mem "sharedWithId" Jsont.string ~enc:(fun r -> r.shared_with_id)
997 |> Jsont.Object.skip_unknown
998 |> Jsont.Object.finish
999 end
1000
1001 (** Retrieve partners
1002
1003 Retrieve a list of partners with whom assets are shared. *)
1004 let get_partners ~direction client () =
1005 let op_name = "get_partners" in
1006 let url_path = "/partners" in
1007 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"direction" ~value:direction]) in
1008 let url = client.base_url ^ url_path ^ query in
1009 let response =
1010 try Requests.get client.session url
1011 with Eio.Io _ as ex ->
1012 let bt = Printexc.get_raw_backtrace () in
1013 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
1014 in
1015 if Requests.Response.ok response then
1016 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1017 else
1018 let body = Requests.Response.text response in
1019 let parsed_body =
1020 match Jsont_bytesrw.decode_string Jsont.json body with
1021 | Ok json -> Some (Openapi.Runtime.Json json)
1022 | Error _ -> Some (Openapi.Runtime.Raw body)
1023 in
1024 raise (Openapi.Runtime.Api_error {
1025 operation = op_name;
1026 method_ = "GET";
1027 url;
1028 status = Requests.Response.status_code response;
1029 body;
1030 parsed_body;
1031 })
1032
1033 (** Create a partner
1034
1035 Create a new partner to share assets with. *)
1036 let create_partner ~body client () =
1037 let op_name = "create_partner" in
1038 let url_path = "/partners" in
1039 let query = "" in
1040 let url = client.base_url ^ url_path ^ query in
1041 let response =
1042 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
1043 with Eio.Io _ as ex ->
1044 let bt = Printexc.get_raw_backtrace () in
1045 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
1046 in
1047 if Requests.Response.ok response then
1048 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1049 else
1050 let body = Requests.Response.text response in
1051 let parsed_body =
1052 match Jsont_bytesrw.decode_string Jsont.json body with
1053 | Ok json -> Some (Openapi.Runtime.Json json)
1054 | Error _ -> Some (Openapi.Runtime.Raw body)
1055 in
1056 raise (Openapi.Runtime.Api_error {
1057 operation = op_name;
1058 method_ = "POST";
1059 url;
1060 status = Requests.Response.status_code response;
1061 body;
1062 parsed_body;
1063 })
1064
1065 (** Create a partner
1066
1067 Create a new partner to share assets with. *)
1068 let create_partner_deprecated ~id client () =
1069 let op_name = "create_partner_deprecated" in
1070 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/partners/{id}" in
1071 let query = "" in
1072 let url = client.base_url ^ url_path ^ query in
1073 let response =
1074 try Requests.post client.session url
1075 with Eio.Io _ as ex ->
1076 let bt = Printexc.get_raw_backtrace () in
1077 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
1078 in
1079 if Requests.Response.ok response then
1080 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1081 else
1082 let body = Requests.Response.text response in
1083 let parsed_body =
1084 match Jsont_bytesrw.decode_string Jsont.json body with
1085 | Ok json -> Some (Openapi.Runtime.Json json)
1086 | Error _ -> Some (Openapi.Runtime.Raw body)
1087 in
1088 raise (Openapi.Runtime.Api_error {
1089 operation = op_name;
1090 method_ = "POST";
1091 url;
1092 status = Requests.Response.status_code response;
1093 body;
1094 parsed_body;
1095 })
1096
1097 (** Update a partner
1098
1099 Specify whether a partner's assets should appear in the user's timeline. *)
1100 let update_partner ~id ~body client () =
1101 let op_name = "update_partner" in
1102 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/partners/{id}" in
1103 let query = "" in
1104 let url = client.base_url ^ url_path ^ query in
1105 let response =
1106 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
1107 with Eio.Io _ as ex ->
1108 let bt = Printexc.get_raw_backtrace () in
1109 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
1110 in
1111 if Requests.Response.ok response then
1112 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1113 else
1114 let body = Requests.Response.text response in
1115 let parsed_body =
1116 match Jsont_bytesrw.decode_string Jsont.json body with
1117 | Ok json -> Some (Openapi.Runtime.Json json)
1118 | Error _ -> Some (Openapi.Runtime.Raw body)
1119 in
1120 raise (Openapi.Runtime.Api_error {
1121 operation = op_name;
1122 method_ = "PUT";
1123 url;
1124 status = Requests.Response.status_code response;
1125 body;
1126 parsed_body;
1127 })
1128end
1129
1130module Avatar = struct
1131 module Types = struct
1132 module Update = struct
1133 type t = {
1134 color : UserAvatarColor.T.t option;
1135 }
1136 end
1137 end
1138
1139 module Update = struct
1140 include Types.Update
1141
1142 let v ?color () = { color }
1143
1144 let color t = t.color
1145
1146 let jsont : t Jsont.t =
1147 Jsont.Object.map ~kind:"AvatarUpdate"
1148 (fun color -> { color })
1149 |> Jsont.Object.opt_mem "color" UserAvatarColor.T.jsont ~enc:(fun r -> r.color)
1150 |> Jsont.Object.skip_unknown
1151 |> Jsont.Object.finish
1152 end
1153end
1154
1155module UserAdminDelete = struct
1156 module Types = struct
1157 module Dto = struct
1158 type t = {
1159 force : bool option;
1160 }
1161 end
1162 end
1163
1164 module Dto = struct
1165 include Types.Dto
1166
1167 let v ?force () = { force }
1168
1169 let force t = t.force
1170
1171 let jsont : t Jsont.t =
1172 Jsont.Object.map ~kind:"UserAdminDeleteDto"
1173 (fun force -> { force })
1174 |> Jsont.Object.opt_mem "force" Jsont.bool ~enc:(fun r -> r.force)
1175 |> Jsont.Object.skip_unknown
1176 |> Jsont.Object.finish
1177 end
1178end
1179
1180module UsageByUser = struct
1181 module Types = struct
1182 module Dto = struct
1183 type t = {
1184 photos : int;
1185 quota_size_in_bytes : int64 option;
1186 usage : int64;
1187 usage_photos : int64;
1188 usage_videos : int64;
1189 user_id : string;
1190 user_name : string;
1191 videos : int;
1192 }
1193 end
1194 end
1195
1196 module Dto = struct
1197 include Types.Dto
1198
1199 let v ~photos ~usage ~usage_photos ~usage_videos ~user_id ~user_name ~videos ?quota_size_in_bytes () = { photos; quota_size_in_bytes; usage; usage_photos; usage_videos; user_id; user_name; videos }
1200
1201 let photos t = t.photos
1202 let quota_size_in_bytes t = t.quota_size_in_bytes
1203 let usage t = t.usage
1204 let usage_photos t = t.usage_photos
1205 let usage_videos t = t.usage_videos
1206 let user_id t = t.user_id
1207 let user_name t = t.user_name
1208 let videos t = t.videos
1209
1210 let jsont : t Jsont.t =
1211 Jsont.Object.map ~kind:"UsageByUserDto"
1212 (fun photos quota_size_in_bytes usage usage_photos usage_videos user_id user_name videos -> { photos; quota_size_in_bytes; usage; usage_photos; usage_videos; user_id; user_name; videos })
1213 |> Jsont.Object.mem "photos" Jsont.int ~enc:(fun r -> r.photos)
1214 |> Jsont.Object.mem "quotaSizeInBytes" (Openapi.Runtime.nullable_any Jsont.int64)
1215 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_size_in_bytes)
1216 |> Jsont.Object.mem "usage" Jsont.int64 ~enc:(fun r -> r.usage)
1217 |> Jsont.Object.mem "usagePhotos" Jsont.int64 ~enc:(fun r -> r.usage_photos)
1218 |> Jsont.Object.mem "usageVideos" Jsont.int64 ~enc:(fun r -> r.usage_videos)
1219 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
1220 |> Jsont.Object.mem "userName" Jsont.string ~enc:(fun r -> r.user_name)
1221 |> Jsont.Object.mem "videos" Jsont.int ~enc:(fun r -> r.videos)
1222 |> Jsont.Object.skip_unknown
1223 |> Jsont.Object.finish
1224 end
1225end
1226
1227module ServerStats = struct
1228 module Types = struct
1229 module ResponseDto = struct
1230 type t = {
1231 photos : int;
1232 usage : int64;
1233 usage_by_user : UsageByUser.Dto.t list;
1234 usage_photos : int64;
1235 usage_videos : int64;
1236 videos : int;
1237 }
1238 end
1239 end
1240
1241 module ResponseDto = struct
1242 include Types.ResponseDto
1243
1244 let v ?(photos=0) ?(usage=0L) ?(usage_by_user=[]) ?(usage_photos=0L) ?(usage_videos=0L) ?(videos=0) () = { photos; usage; usage_by_user; usage_photos; usage_videos; videos }
1245
1246 let photos t = t.photos
1247 let usage t = t.usage
1248 let usage_by_user t = t.usage_by_user
1249 let usage_photos t = t.usage_photos
1250 let usage_videos t = t.usage_videos
1251 let videos t = t.videos
1252
1253 let jsont : t Jsont.t =
1254 Jsont.Object.map ~kind:"ServerStatsResponseDto"
1255 (fun photos usage usage_by_user usage_photos usage_videos videos -> { photos; usage; usage_by_user; usage_photos; usage_videos; videos })
1256 |> Jsont.Object.mem "photos" Jsont.int ~dec_absent:0 ~enc:(fun r -> r.photos)
1257 |> Jsont.Object.mem "usage" Jsont.int64 ~dec_absent:0L ~enc:(fun r -> r.usage)
1258 |> Jsont.Object.mem "usageByUser" (Jsont.list UsageByUser.Dto.jsont) ~dec_absent:[] ~enc:(fun r -> r.usage_by_user)
1259 |> Jsont.Object.mem "usagePhotos" Jsont.int64 ~dec_absent:0L ~enc:(fun r -> r.usage_photos)
1260 |> Jsont.Object.mem "usageVideos" Jsont.int64 ~dec_absent:0L ~enc:(fun r -> r.usage_videos)
1261 |> Jsont.Object.mem "videos" Jsont.int ~dec_absent:0 ~enc:(fun r -> r.videos)
1262 |> Jsont.Object.skip_unknown
1263 |> Jsont.Object.finish
1264 end
1265
1266 (** Get statistics
1267
1268 Retrieve statistics about the entire Immich instance such as asset counts. *)
1269 let get_server_statistics client () =
1270 let op_name = "get_server_statistics" in
1271 let url_path = "/server/statistics" in
1272 let query = "" in
1273 let url = client.base_url ^ url_path ^ query in
1274 let response =
1275 try Requests.get client.session url
1276 with Eio.Io _ as ex ->
1277 let bt = Printexc.get_raw_backtrace () in
1278 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
1279 in
1280 if Requests.Response.ok response then
1281 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1282 else
1283 let body = Requests.Response.text response in
1284 let parsed_body =
1285 match Jsont_bytesrw.decode_string Jsont.json body with
1286 | Ok json -> Some (Openapi.Runtime.Json json)
1287 | Error _ -> Some (Openapi.Runtime.Raw body)
1288 in
1289 raise (Openapi.Runtime.Api_error {
1290 operation = op_name;
1291 method_ = "GET";
1292 url;
1293 status = Requests.Response.status_code response;
1294 body;
1295 parsed_body;
1296 })
1297end
1298
1299module UpdateLibrary = struct
1300 module Types = struct
1301 module Dto = struct
1302 type t = {
1303 exclusion_patterns : string list option;
1304 import_paths : string list option;
1305 name : string option;
1306 }
1307 end
1308 end
1309
1310 module Dto = struct
1311 include Types.Dto
1312
1313 let v ?exclusion_patterns ?import_paths ?name () = { exclusion_patterns; import_paths; name }
1314
1315 let exclusion_patterns t = t.exclusion_patterns
1316 let import_paths t = t.import_paths
1317 let name t = t.name
1318
1319 let jsont : t Jsont.t =
1320 Jsont.Object.map ~kind:"UpdateLibraryDto"
1321 (fun exclusion_patterns import_paths name -> { exclusion_patterns; import_paths; name })
1322 |> Jsont.Object.opt_mem "exclusionPatterns" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.exclusion_patterns)
1323 |> Jsont.Object.opt_mem "importPaths" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.import_paths)
1324 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
1325 |> Jsont.Object.skip_unknown
1326 |> Jsont.Object.finish
1327 end
1328end
1329
1330module TranscodePolicy = struct
1331 module Types = struct
1332 module T = struct
1333 type t = [
1334 | `All
1335 | `Optimal
1336 | `Bitrate
1337 | `Required
1338 | `Disabled
1339 ]
1340 end
1341 end
1342
1343 module T = struct
1344 include Types.T
1345
1346 let jsont : t Jsont.t =
1347 Jsont.map Jsont.string ~kind:"TranscodePolicy"
1348 ~dec:(function
1349 | "all" -> `All
1350 | "optimal" -> `Optimal
1351 | "bitrate" -> `Bitrate
1352 | "required" -> `Required
1353 | "disabled" -> `Disabled
1354 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
1355 ~enc:(function
1356 | `All -> "all"
1357 | `Optimal -> "optimal"
1358 | `Bitrate -> "bitrate"
1359 | `Required -> "required"
1360 | `Disabled -> "disabled")
1361 end
1362end
1363
1364module TranscodeHwaccel = struct
1365 module Types = struct
1366 module T = struct
1367 type t = [
1368 | `Nvenc
1369 | `Qsv
1370 | `Vaapi
1371 | `Rkmpp
1372 | `Disabled
1373 ]
1374 end
1375 end
1376
1377 module T = struct
1378 include Types.T
1379
1380 let jsont : t Jsont.t =
1381 Jsont.map Jsont.string ~kind:"TranscodeHWAccel"
1382 ~dec:(function
1383 | "nvenc" -> `Nvenc
1384 | "qsv" -> `Qsv
1385 | "vaapi" -> `Vaapi
1386 | "rkmpp" -> `Rkmpp
1387 | "disabled" -> `Disabled
1388 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
1389 ~enc:(function
1390 | `Nvenc -> "nvenc"
1391 | `Qsv -> "qsv"
1392 | `Vaapi -> "vaapi"
1393 | `Rkmpp -> "rkmpp"
1394 | `Disabled -> "disabled")
1395 end
1396end
1397
1398module ToneMapping = struct
1399 module Types = struct
1400 module T = struct
1401 type t = [
1402 | `Hable
1403 | `Mobius
1404 | `Reinhard
1405 | `Disabled
1406 ]
1407 end
1408 end
1409
1410 module T = struct
1411 include Types.T
1412
1413 let jsont : t Jsont.t =
1414 Jsont.map Jsont.string ~kind:"ToneMapping"
1415 ~dec:(function
1416 | "hable" -> `Hable
1417 | "mobius" -> `Mobius
1418 | "reinhard" -> `Reinhard
1419 | "disabled" -> `Disabled
1420 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
1421 ~enc:(function
1422 | `Hable -> "hable"
1423 | `Mobius -> "mobius"
1424 | `Reinhard -> "reinhard"
1425 | `Disabled -> "disabled")
1426 end
1427end
1428
1429module TimeBuckets = struct
1430 module Types = struct
1431 module ResponseDto = struct
1432 type t = {
1433 count : int; (** Number of assets in this time bucket *)
1434 time_bucket : string; (** Time bucket identifier in YYYY-MM-DD format representing the start of the time period *)
1435 }
1436 end
1437 end
1438
1439 module ResponseDto = struct
1440 include Types.ResponseDto
1441
1442 let v ~count ~time_bucket () = { count; time_bucket }
1443
1444 let count t = t.count
1445 let time_bucket t = t.time_bucket
1446
1447 let jsont : t Jsont.t =
1448 Jsont.Object.map ~kind:"TimeBucketsResponseDto"
1449 (fun count time_bucket -> { count; time_bucket })
1450 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
1451 |> Jsont.Object.mem "timeBucket" Jsont.string ~enc:(fun r -> r.time_bucket)
1452 |> Jsont.Object.skip_unknown
1453 |> Jsont.Object.finish
1454 end
1455
1456 (** Get time buckets
1457
1458 Retrieve a list of all minimal time buckets.
1459 @param album_id Filter assets belonging to a specific album
1460 @param is_favorite Filter by favorite status (true for favorites only, false for non-favorites only)
1461 @param is_trashed Filter by trash status (true for trashed assets only, false for non-trashed only)
1462 @param order Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
1463 @param person_id Filter assets containing a specific person (face recognition)
1464 @param tag_id Filter assets with a specific tag
1465 @param user_id Filter assets by specific user ID
1466 @param visibility Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
1467 @param with_coordinates Include location data in the response
1468 @param with_partners Include assets shared by partners
1469 @param with_stacked Include stacked assets in the response. When true, only primary assets from stacks are returned.
1470 *)
1471 let get_time_buckets ?album_id ?is_favorite ?is_trashed ?key ?order ?person_id ?slug ?tag_id ?user_id ?visibility ?with_coordinates ?with_partners ?with_stacked client () =
1472 let op_name = "get_time_buckets" in
1473 let url_path = "/timeline/buckets" in
1474 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"albumId" ~value:album_id; Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"order" ~value:order; Openapi.Runtime.Query.optional ~key:"personId" ~value:person_id; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug; Openapi.Runtime.Query.optional ~key:"tagId" ~value:tag_id; Openapi.Runtime.Query.optional ~key:"userId" ~value:user_id; Openapi.Runtime.Query.optional ~key:"visibility" ~value:visibility; Openapi.Runtime.Query.optional ~key:"withCoordinates" ~value:with_coordinates; Openapi.Runtime.Query.optional ~key:"withPartners" ~value:with_partners; Openapi.Runtime.Query.optional ~key:"withStacked" ~value:with_stacked]) in
1475 let url = client.base_url ^ url_path ^ query in
1476 let response =
1477 try Requests.get client.session url
1478 with Eio.Io _ as ex ->
1479 let bt = Printexc.get_raw_backtrace () in
1480 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
1481 in
1482 if Requests.Response.ok response then
1483 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1484 else
1485 let body = Requests.Response.text response in
1486 let parsed_body =
1487 match Jsont_bytesrw.decode_string Jsont.json body with
1488 | Ok json -> Some (Openapi.Runtime.Json json)
1489 | Error _ -> Some (Openapi.Runtime.Raw body)
1490 in
1491 raise (Openapi.Runtime.Api_error {
1492 operation = op_name;
1493 method_ = "GET";
1494 url;
1495 status = Requests.Response.status_code response;
1496 body;
1497 parsed_body;
1498 })
1499end
1500
1501module Template = struct
1502 module Types = struct
1503 module ResponseDto = struct
1504 type t = {
1505 html : string;
1506 name : string;
1507 }
1508 end
1509
1510 module Dto = struct
1511 type t = {
1512 template : string;
1513 }
1514 end
1515 end
1516
1517 module ResponseDto = struct
1518 include Types.ResponseDto
1519
1520 let v ~html ~name () = { html; name }
1521
1522 let html t = t.html
1523 let name t = t.name
1524
1525 let jsont : t Jsont.t =
1526 Jsont.Object.map ~kind:"TemplateResponseDto"
1527 (fun html name -> { html; name })
1528 |> Jsont.Object.mem "html" Jsont.string ~enc:(fun r -> r.html)
1529 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
1530 |> Jsont.Object.skip_unknown
1531 |> Jsont.Object.finish
1532 end
1533
1534 module Dto = struct
1535 include Types.Dto
1536
1537 let v ~template () = { template }
1538
1539 let template t = t.template
1540
1541 let jsont : t Jsont.t =
1542 Jsont.Object.map ~kind:"TemplateDto"
1543 (fun template -> { template })
1544 |> Jsont.Object.mem "template" Jsont.string ~enc:(fun r -> r.template)
1545 |> Jsont.Object.skip_unknown
1546 |> Jsont.Object.finish
1547 end
1548
1549 (** Render email template
1550
1551 Retrieve a preview of the provided email template. *)
1552 let get_notification_template_admin ~name ~body client () =
1553 let op_name = "get_notification_template_admin" in
1554 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/admin/notifications/templates/{name}" in
1555 let query = "" in
1556 let url = client.base_url ^ url_path ^ query in
1557 let response =
1558 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
1559 with Eio.Io _ as ex ->
1560 let bt = Printexc.get_raw_backtrace () in
1561 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
1562 in
1563 if Requests.Response.ok response then
1564 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1565 else
1566 let body = Requests.Response.text response in
1567 let parsed_body =
1568 match Jsont_bytesrw.decode_string Jsont.json body with
1569 | Ok json -> Some (Openapi.Runtime.Json json)
1570 | Error _ -> Some (Openapi.Runtime.Raw body)
1571 in
1572 raise (Openapi.Runtime.Api_error {
1573 operation = op_name;
1574 method_ = "POST";
1575 url;
1576 status = Requests.Response.status_code response;
1577 body;
1578 parsed_body;
1579 })
1580end
1581
1582module Tags = struct
1583 module Types = struct
1584 module Update = struct
1585 type t = {
1586 enabled : bool option;
1587 sidebar_web : bool option;
1588 }
1589 end
1590
1591 module Response = struct
1592 type t = {
1593 enabled : bool;
1594 sidebar_web : bool;
1595 }
1596 end
1597 end
1598
1599 module Update = struct
1600 include Types.Update
1601
1602 let v ?enabled ?sidebar_web () = { enabled; sidebar_web }
1603
1604 let enabled t = t.enabled
1605 let sidebar_web t = t.sidebar_web
1606
1607 let jsont : t Jsont.t =
1608 Jsont.Object.map ~kind:"TagsUpdate"
1609 (fun enabled sidebar_web -> { enabled; sidebar_web })
1610 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
1611 |> Jsont.Object.opt_mem "sidebarWeb" Jsont.bool ~enc:(fun r -> r.sidebar_web)
1612 |> Jsont.Object.skip_unknown
1613 |> Jsont.Object.finish
1614 end
1615
1616 module Response = struct
1617 include Types.Response
1618
1619 let v ?(enabled=true) ?(sidebar_web=true) () = { enabled; sidebar_web }
1620
1621 let enabled t = t.enabled
1622 let sidebar_web t = t.sidebar_web
1623
1624 let jsont : t Jsont.t =
1625 Jsont.Object.map ~kind:"TagsResponse"
1626 (fun enabled sidebar_web -> { enabled; sidebar_web })
1627 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.enabled)
1628 |> Jsont.Object.mem "sidebarWeb" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.sidebar_web)
1629 |> Jsont.Object.skip_unknown
1630 |> Jsont.Object.finish
1631 end
1632end
1633
1634module TagUpsert = struct
1635 module Types = struct
1636 module Dto = struct
1637 type t = {
1638 tags : string list;
1639 }
1640 end
1641 end
1642
1643 module Dto = struct
1644 include Types.Dto
1645
1646 let v ~tags () = { tags }
1647
1648 let tags t = t.tags
1649
1650 let jsont : t Jsont.t =
1651 Jsont.Object.map ~kind:"TagUpsertDto"
1652 (fun tags -> { tags })
1653 |> Jsont.Object.mem "tags" (Jsont.list Jsont.string) ~enc:(fun r -> r.tags)
1654 |> Jsont.Object.skip_unknown
1655 |> Jsont.Object.finish
1656 end
1657end
1658
1659module Tag = struct
1660 module Types = struct
1661 module UpdateDto = struct
1662 type t = {
1663 color : string option;
1664 }
1665 end
1666
1667 module ResponseDto = struct
1668 type t = {
1669 color : string option;
1670 created_at : Ptime.t;
1671 id : string;
1672 name : string;
1673 parent_id : string option;
1674 updated_at : Ptime.t;
1675 value : string;
1676 }
1677 end
1678
1679 module CreateDto = struct
1680 type t = {
1681 color : string option;
1682 name : string;
1683 parent_id : string option;
1684 }
1685 end
1686 end
1687
1688 module UpdateDto = struct
1689 include Types.UpdateDto
1690
1691 let v ?color () = { color }
1692
1693 let color t = t.color
1694
1695 let jsont : t Jsont.t =
1696 Jsont.Object.map ~kind:"TagUpdateDto"
1697 (fun color -> { color })
1698 |> Jsont.Object.mem "color" Openapi.Runtime.nullable_string
1699 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.color)
1700 |> Jsont.Object.skip_unknown
1701 |> Jsont.Object.finish
1702 end
1703
1704 module ResponseDto = struct
1705 include Types.ResponseDto
1706
1707 let v ~created_at ~id ~name ~updated_at ~value ?color ?parent_id () = { color; created_at; id; name; parent_id; updated_at; value }
1708
1709 let color t = t.color
1710 let created_at t = t.created_at
1711 let id t = t.id
1712 let name t = t.name
1713 let parent_id t = t.parent_id
1714 let updated_at t = t.updated_at
1715 let value t = t.value
1716
1717 let jsont : t Jsont.t =
1718 Jsont.Object.map ~kind:"TagResponseDto"
1719 (fun color created_at id name parent_id updated_at value -> { color; created_at; id; name; parent_id; updated_at; value })
1720 |> Jsont.Object.opt_mem "color" Jsont.string ~enc:(fun r -> r.color)
1721 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
1722 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
1723 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
1724 |> Jsont.Object.opt_mem "parentId" Jsont.string ~enc:(fun r -> r.parent_id)
1725 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
1726 |> Jsont.Object.mem "value" Jsont.string ~enc:(fun r -> r.value)
1727 |> Jsont.Object.skip_unknown
1728 |> Jsont.Object.finish
1729 end
1730
1731 module CreateDto = struct
1732 include Types.CreateDto
1733
1734 let v ~name ?color ?parent_id () = { color; name; parent_id }
1735
1736 let color t = t.color
1737 let name t = t.name
1738 let parent_id t = t.parent_id
1739
1740 let jsont : t Jsont.t =
1741 Jsont.Object.map ~kind:"TagCreateDto"
1742 (fun color name parent_id -> { color; name; parent_id })
1743 |> Jsont.Object.opt_mem "color" (Openapi.Runtime.validated_string ~pattern:"^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$" Jsont.string) ~enc:(fun r -> r.color)
1744 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
1745 |> Jsont.Object.mem "parentId" Openapi.Runtime.nullable_string
1746 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.parent_id)
1747 |> Jsont.Object.skip_unknown
1748 |> Jsont.Object.finish
1749 end
1750
1751 (** Retrieve tags
1752
1753 Retrieve a list of all tags. *)
1754 let get_all_tags client () =
1755 let op_name = "get_all_tags" in
1756 let url_path = "/tags" in
1757 let query = "" in
1758 let url = client.base_url ^ url_path ^ query in
1759 let response =
1760 try Requests.get client.session url
1761 with Eio.Io _ as ex ->
1762 let bt = Printexc.get_raw_backtrace () in
1763 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
1764 in
1765 if Requests.Response.ok response then
1766 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1767 else
1768 let body = Requests.Response.text response in
1769 let parsed_body =
1770 match Jsont_bytesrw.decode_string Jsont.json body with
1771 | Ok json -> Some (Openapi.Runtime.Json json)
1772 | Error _ -> Some (Openapi.Runtime.Raw body)
1773 in
1774 raise (Openapi.Runtime.Api_error {
1775 operation = op_name;
1776 method_ = "GET";
1777 url;
1778 status = Requests.Response.status_code response;
1779 body;
1780 parsed_body;
1781 })
1782
1783 (** Create a tag
1784
1785 Create a new tag by providing a name and optional color. *)
1786 let create_tag ~body client () =
1787 let op_name = "create_tag" in
1788 let url_path = "/tags" in
1789 let query = "" in
1790 let url = client.base_url ^ url_path ^ query in
1791 let response =
1792 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
1793 with Eio.Io _ as ex ->
1794 let bt = Printexc.get_raw_backtrace () in
1795 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
1796 in
1797 if Requests.Response.ok response then
1798 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1799 else
1800 let body = Requests.Response.text response in
1801 let parsed_body =
1802 match Jsont_bytesrw.decode_string Jsont.json body with
1803 | Ok json -> Some (Openapi.Runtime.Json json)
1804 | Error _ -> Some (Openapi.Runtime.Raw body)
1805 in
1806 raise (Openapi.Runtime.Api_error {
1807 operation = op_name;
1808 method_ = "POST";
1809 url;
1810 status = Requests.Response.status_code response;
1811 body;
1812 parsed_body;
1813 })
1814
1815 (** Upsert tags
1816
1817 Create or update multiple tags in a single request. *)
1818 let upsert_tags ~body client () =
1819 let op_name = "upsert_tags" in
1820 let url_path = "/tags" in
1821 let query = "" in
1822 let url = client.base_url ^ url_path ^ query in
1823 let response =
1824 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json TagUpsert.Dto.jsont body)) url
1825 with Eio.Io _ as ex ->
1826 let bt = Printexc.get_raw_backtrace () in
1827 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
1828 in
1829 if Requests.Response.ok response then
1830 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1831 else
1832 let body = Requests.Response.text response in
1833 let parsed_body =
1834 match Jsont_bytesrw.decode_string Jsont.json body with
1835 | Ok json -> Some (Openapi.Runtime.Json json)
1836 | Error _ -> Some (Openapi.Runtime.Raw body)
1837 in
1838 raise (Openapi.Runtime.Api_error {
1839 operation = op_name;
1840 method_ = "PUT";
1841 url;
1842 status = Requests.Response.status_code response;
1843 body;
1844 parsed_body;
1845 })
1846
1847 (** Retrieve a tag
1848
1849 Retrieve a specific tag by its ID. *)
1850 let get_tag_by_id ~id client () =
1851 let op_name = "get_tag_by_id" in
1852 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/tags/{id}" in
1853 let query = "" in
1854 let url = client.base_url ^ url_path ^ query in
1855 let response =
1856 try Requests.get client.session url
1857 with Eio.Io _ as ex ->
1858 let bt = Printexc.get_raw_backtrace () in
1859 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
1860 in
1861 if Requests.Response.ok response then
1862 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1863 else
1864 let body = Requests.Response.text response in
1865 let parsed_body =
1866 match Jsont_bytesrw.decode_string Jsont.json body with
1867 | Ok json -> Some (Openapi.Runtime.Json json)
1868 | Error _ -> Some (Openapi.Runtime.Raw body)
1869 in
1870 raise (Openapi.Runtime.Api_error {
1871 operation = op_name;
1872 method_ = "GET";
1873 url;
1874 status = Requests.Response.status_code response;
1875 body;
1876 parsed_body;
1877 })
1878
1879 (** Update a tag
1880
1881 Update an existing tag identified by its ID. *)
1882 let update_tag ~id ~body client () =
1883 let op_name = "update_tag" in
1884 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/tags/{id}" in
1885 let query = "" in
1886 let url = client.base_url ^ url_path ^ query in
1887 let response =
1888 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
1889 with Eio.Io _ as ex ->
1890 let bt = Printexc.get_raw_backtrace () in
1891 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
1892 in
1893 if Requests.Response.ok response then
1894 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1895 else
1896 let body = Requests.Response.text response in
1897 let parsed_body =
1898 match Jsont_bytesrw.decode_string Jsont.json body with
1899 | Ok json -> Some (Openapi.Runtime.Json json)
1900 | Error _ -> Some (Openapi.Runtime.Raw body)
1901 in
1902 raise (Openapi.Runtime.Api_error {
1903 operation = op_name;
1904 method_ = "PUT";
1905 url;
1906 status = Requests.Response.status_code response;
1907 body;
1908 parsed_body;
1909 })
1910end
1911
1912module TagBulkAssets = struct
1913 module Types = struct
1914 module ResponseDto = struct
1915 type t = {
1916 count : int;
1917 }
1918 end
1919
1920 module Dto = struct
1921 type t = {
1922 asset_ids : string list;
1923 tag_ids : string list;
1924 }
1925 end
1926 end
1927
1928 module ResponseDto = struct
1929 include Types.ResponseDto
1930
1931 let v ~count () = { count }
1932
1933 let count t = t.count
1934
1935 let jsont : t Jsont.t =
1936 Jsont.Object.map ~kind:"TagBulkAssetsResponseDto"
1937 (fun count -> { count })
1938 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
1939 |> Jsont.Object.skip_unknown
1940 |> Jsont.Object.finish
1941 end
1942
1943 module Dto = struct
1944 include Types.Dto
1945
1946 let v ~asset_ids ~tag_ids () = { asset_ids; tag_ids }
1947
1948 let asset_ids t = t.asset_ids
1949 let tag_ids t = t.tag_ids
1950
1951 let jsont : t Jsont.t =
1952 Jsont.Object.map ~kind:"TagBulkAssetsDto"
1953 (fun asset_ids tag_ids -> { asset_ids; tag_ids })
1954 |> Jsont.Object.mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
1955 |> Jsont.Object.mem "tagIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.tag_ids)
1956 |> Jsont.Object.skip_unknown
1957 |> Jsont.Object.finish
1958 end
1959
1960 (** Tag assets
1961
1962 Add multiple tags to multiple assets in a single request. *)
1963 let bulk_tag_assets ~body client () =
1964 let op_name = "bulk_tag_assets" in
1965 let url_path = "/tags/assets" in
1966 let query = "" in
1967 let url = client.base_url ^ url_path ^ query in
1968 let response =
1969 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
1970 with Eio.Io _ as ex ->
1971 let bt = Printexc.get_raw_backtrace () in
1972 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
1973 in
1974 if Requests.Response.ok response then
1975 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
1976 else
1977 let body = Requests.Response.text response in
1978 let parsed_body =
1979 match Jsont_bytesrw.decode_string Jsont.json body with
1980 | Ok json -> Some (Openapi.Runtime.Json json)
1981 | Error _ -> Some (Openapi.Runtime.Raw body)
1982 in
1983 raise (Openapi.Runtime.Api_error {
1984 operation = op_name;
1985 method_ = "PUT";
1986 url;
1987 status = Requests.Response.status_code response;
1988 body;
1989 parsed_body;
1990 })
1991end
1992
1993module SystemConfigUser = struct
1994 module Types = struct
1995 module Dto = struct
1996 type t = {
1997 delete_delay : int;
1998 }
1999 end
2000 end
2001
2002 module Dto = struct
2003 include Types.Dto
2004
2005 let v ~delete_delay () = { delete_delay }
2006
2007 let delete_delay t = t.delete_delay
2008
2009 let jsont : t Jsont.t =
2010 Jsont.Object.map ~kind:"SystemConfigUserDto"
2011 (fun delete_delay -> { delete_delay })
2012 |> Jsont.Object.mem "deleteDelay" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.delete_delay)
2013 |> Jsont.Object.skip_unknown
2014 |> Jsont.Object.finish
2015 end
2016end
2017
2018module SystemConfigTrash = struct
2019 module Types = struct
2020 module Dto = struct
2021 type t = {
2022 days : int;
2023 enabled : bool;
2024 }
2025 end
2026 end
2027
2028 module Dto = struct
2029 include Types.Dto
2030
2031 let v ~days ~enabled () = { days; enabled }
2032
2033 let days t = t.days
2034 let enabled t = t.enabled
2035
2036 let jsont : t Jsont.t =
2037 Jsont.Object.map ~kind:"SystemConfigTrashDto"
2038 (fun days enabled -> { days; enabled })
2039 |> Jsont.Object.mem "days" (Openapi.Runtime.validated_int ~minimum:0. Jsont.int) ~enc:(fun r -> r.days)
2040 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2041 |> Jsont.Object.skip_unknown
2042 |> Jsont.Object.finish
2043 end
2044end
2045
2046module SystemConfigTheme = struct
2047 module Types = struct
2048 module Dto = struct
2049 type t = {
2050 custom_css : string;
2051 }
2052 end
2053 end
2054
2055 module Dto = struct
2056 include Types.Dto
2057
2058 let v ~custom_css () = { custom_css }
2059
2060 let custom_css t = t.custom_css
2061
2062 let jsont : t Jsont.t =
2063 Jsont.Object.map ~kind:"SystemConfigThemeDto"
2064 (fun custom_css -> { custom_css })
2065 |> Jsont.Object.mem "customCss" Jsont.string ~enc:(fun r -> r.custom_css)
2066 |> Jsont.Object.skip_unknown
2067 |> Jsont.Object.finish
2068 end
2069end
2070
2071module SystemConfigTemplateStorageOption = struct
2072 module Types = struct
2073 module Dto = struct
2074 type t = {
2075 day_options : string list;
2076 hour_options : string list;
2077 minute_options : string list;
2078 month_options : string list;
2079 preset_options : string list;
2080 second_options : string list;
2081 week_options : string list;
2082 year_options : string list;
2083 }
2084 end
2085 end
2086
2087 module Dto = struct
2088 include Types.Dto
2089
2090 let v ~day_options ~hour_options ~minute_options ~month_options ~preset_options ~second_options ~week_options ~year_options () = { day_options; hour_options; minute_options; month_options; preset_options; second_options; week_options; year_options }
2091
2092 let day_options t = t.day_options
2093 let hour_options t = t.hour_options
2094 let minute_options t = t.minute_options
2095 let month_options t = t.month_options
2096 let preset_options t = t.preset_options
2097 let second_options t = t.second_options
2098 let week_options t = t.week_options
2099 let year_options t = t.year_options
2100
2101 let jsont : t Jsont.t =
2102 Jsont.Object.map ~kind:"SystemConfigTemplateStorageOptionDto"
2103 (fun day_options hour_options minute_options month_options preset_options second_options week_options year_options -> { day_options; hour_options; minute_options; month_options; preset_options; second_options; week_options; year_options })
2104 |> Jsont.Object.mem "dayOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.day_options)
2105 |> Jsont.Object.mem "hourOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.hour_options)
2106 |> Jsont.Object.mem "minuteOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.minute_options)
2107 |> Jsont.Object.mem "monthOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.month_options)
2108 |> Jsont.Object.mem "presetOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.preset_options)
2109 |> Jsont.Object.mem "secondOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.second_options)
2110 |> Jsont.Object.mem "weekOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.week_options)
2111 |> Jsont.Object.mem "yearOptions" (Jsont.list Jsont.string) ~enc:(fun r -> r.year_options)
2112 |> Jsont.Object.skip_unknown
2113 |> Jsont.Object.finish
2114 end
2115
2116 (** Get storage template options
2117
2118 Retrieve exemplary storage template options. *)
2119 let get_storage_template_options client () =
2120 let op_name = "get_storage_template_options" in
2121 let url_path = "/system-config/storage-template-options" in
2122 let query = "" in
2123 let url = client.base_url ^ url_path ^ query in
2124 let response =
2125 try Requests.get client.session url
2126 with Eio.Io _ as ex ->
2127 let bt = Printexc.get_raw_backtrace () in
2128 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
2129 in
2130 if Requests.Response.ok response then
2131 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
2132 else
2133 let body = Requests.Response.text response in
2134 let parsed_body =
2135 match Jsont_bytesrw.decode_string Jsont.json body with
2136 | Ok json -> Some (Openapi.Runtime.Json json)
2137 | Error _ -> Some (Openapi.Runtime.Raw body)
2138 in
2139 raise (Openapi.Runtime.Api_error {
2140 operation = op_name;
2141 method_ = "GET";
2142 url;
2143 status = Requests.Response.status_code response;
2144 body;
2145 parsed_body;
2146 })
2147end
2148
2149module SystemConfigTemplateEmails = struct
2150 module Types = struct
2151 module Dto = struct
2152 type t = {
2153 album_invite_template : string;
2154 album_update_template : string;
2155 welcome_template : string;
2156 }
2157 end
2158 end
2159
2160 module Dto = struct
2161 include Types.Dto
2162
2163 let v ~album_invite_template ~album_update_template ~welcome_template () = { album_invite_template; album_update_template; welcome_template }
2164
2165 let album_invite_template t = t.album_invite_template
2166 let album_update_template t = t.album_update_template
2167 let welcome_template t = t.welcome_template
2168
2169 let jsont : t Jsont.t =
2170 Jsont.Object.map ~kind:"SystemConfigTemplateEmailsDto"
2171 (fun album_invite_template album_update_template welcome_template -> { album_invite_template; album_update_template; welcome_template })
2172 |> Jsont.Object.mem "albumInviteTemplate" Jsont.string ~enc:(fun r -> r.album_invite_template)
2173 |> Jsont.Object.mem "albumUpdateTemplate" Jsont.string ~enc:(fun r -> r.album_update_template)
2174 |> Jsont.Object.mem "welcomeTemplate" Jsont.string ~enc:(fun r -> r.welcome_template)
2175 |> Jsont.Object.skip_unknown
2176 |> Jsont.Object.finish
2177 end
2178end
2179
2180module SystemConfigTemplates = struct
2181 module Types = struct
2182 module Dto = struct
2183 type t = {
2184 email : SystemConfigTemplateEmails.Dto.t;
2185 }
2186 end
2187 end
2188
2189 module Dto = struct
2190 include Types.Dto
2191
2192 let v ~email () = { email }
2193
2194 let email t = t.email
2195
2196 let jsont : t Jsont.t =
2197 Jsont.Object.map ~kind:"SystemConfigTemplatesDto"
2198 (fun email -> { email })
2199 |> Jsont.Object.mem "email" SystemConfigTemplateEmails.Dto.jsont ~enc:(fun r -> r.email)
2200 |> Jsont.Object.skip_unknown
2201 |> Jsont.Object.finish
2202 end
2203end
2204
2205module SystemConfigStorageTemplate = struct
2206 module Types = struct
2207 module Dto = struct
2208 type t = {
2209 enabled : bool;
2210 hash_verification_enabled : bool;
2211 template : string;
2212 }
2213 end
2214 end
2215
2216 module Dto = struct
2217 include Types.Dto
2218
2219 let v ~enabled ~hash_verification_enabled ~template () = { enabled; hash_verification_enabled; template }
2220
2221 let enabled t = t.enabled
2222 let hash_verification_enabled t = t.hash_verification_enabled
2223 let template t = t.template
2224
2225 let jsont : t Jsont.t =
2226 Jsont.Object.map ~kind:"SystemConfigStorageTemplateDto"
2227 (fun enabled hash_verification_enabled template -> { enabled; hash_verification_enabled; template })
2228 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2229 |> Jsont.Object.mem "hashVerificationEnabled" Jsont.bool ~enc:(fun r -> r.hash_verification_enabled)
2230 |> Jsont.Object.mem "template" Jsont.string ~enc:(fun r -> r.template)
2231 |> Jsont.Object.skip_unknown
2232 |> Jsont.Object.finish
2233 end
2234end
2235
2236module SystemConfigSmtpTransport = struct
2237 module Types = struct
2238 module Dto = struct
2239 type t = {
2240 host : string;
2241 ignore_cert : bool;
2242 password : string;
2243 port : float;
2244 secure : bool;
2245 username : string;
2246 }
2247 end
2248 end
2249
2250 module Dto = struct
2251 include Types.Dto
2252
2253 let v ~host ~ignore_cert ~password ~port ~secure ~username () = { host; ignore_cert; password; port; secure; username }
2254
2255 let host t = t.host
2256 let ignore_cert t = t.ignore_cert
2257 let password t = t.password
2258 let port t = t.port
2259 let secure t = t.secure
2260 let username t = t.username
2261
2262 let jsont : t Jsont.t =
2263 Jsont.Object.map ~kind:"SystemConfigSmtpTransportDto"
2264 (fun host ignore_cert password port secure username -> { host; ignore_cert; password; port; secure; username })
2265 |> Jsont.Object.mem "host" Jsont.string ~enc:(fun r -> r.host)
2266 |> Jsont.Object.mem "ignoreCert" Jsont.bool ~enc:(fun r -> r.ignore_cert)
2267 |> Jsont.Object.mem "password" Jsont.string ~enc:(fun r -> r.password)
2268 |> Jsont.Object.mem "port" (Openapi.Runtime.validated_float ~minimum:0. ~maximum:65535. Jsont.number) ~enc:(fun r -> r.port)
2269 |> Jsont.Object.mem "secure" Jsont.bool ~enc:(fun r -> r.secure)
2270 |> Jsont.Object.mem "username" Jsont.string ~enc:(fun r -> r.username)
2271 |> Jsont.Object.skip_unknown
2272 |> Jsont.Object.finish
2273 end
2274end
2275
2276module SystemConfigSmtp = struct
2277 module Types = struct
2278 module Dto = struct
2279 type t = {
2280 enabled : bool;
2281 from : string;
2282 reply_to : string;
2283 transport : SystemConfigSmtpTransport.Dto.t;
2284 }
2285 end
2286 end
2287
2288 module Dto = struct
2289 include Types.Dto
2290
2291 let v ~enabled ~from ~reply_to ~transport () = { enabled; from; reply_to; transport }
2292
2293 let enabled t = t.enabled
2294 let from t = t.from
2295 let reply_to t = t.reply_to
2296 let transport t = t.transport
2297
2298 let jsont : t Jsont.t =
2299 Jsont.Object.map ~kind:"SystemConfigSmtpDto"
2300 (fun enabled from reply_to transport -> { enabled; from; reply_to; transport })
2301 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2302 |> Jsont.Object.mem "from" Jsont.string ~enc:(fun r -> r.from)
2303 |> Jsont.Object.mem "replyTo" Jsont.string ~enc:(fun r -> r.reply_to)
2304 |> Jsont.Object.mem "transport" SystemConfigSmtpTransport.Dto.jsont ~enc:(fun r -> r.transport)
2305 |> Jsont.Object.skip_unknown
2306 |> Jsont.Object.finish
2307 end
2308end
2309
2310module TestEmail = struct
2311 module Types = struct
2312 module ResponseDto = struct
2313 type t = {
2314 message_id : string;
2315 }
2316 end
2317 end
2318
2319 module ResponseDto = struct
2320 include Types.ResponseDto
2321
2322 let v ~message_id () = { message_id }
2323
2324 let message_id t = t.message_id
2325
2326 let jsont : t Jsont.t =
2327 Jsont.Object.map ~kind:"TestEmailResponseDto"
2328 (fun message_id -> { message_id })
2329 |> Jsont.Object.mem "messageId" Jsont.string ~enc:(fun r -> r.message_id)
2330 |> Jsont.Object.skip_unknown
2331 |> Jsont.Object.finish
2332 end
2333
2334 (** Send test email
2335
2336 Send a test email using the provided SMTP configuration. *)
2337 let send_test_email_admin ~body client () =
2338 let op_name = "send_test_email_admin" in
2339 let url_path = "/admin/notifications/test-email" in
2340 let query = "" in
2341 let url = client.base_url ^ url_path ^ query in
2342 let response =
2343 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SystemConfigSmtp.Dto.jsont body)) url
2344 with Eio.Io _ as ex ->
2345 let bt = Printexc.get_raw_backtrace () in
2346 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
2347 in
2348 if Requests.Response.ok response then
2349 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
2350 else
2351 let body = Requests.Response.text response in
2352 let parsed_body =
2353 match Jsont_bytesrw.decode_string Jsont.json body with
2354 | Ok json -> Some (Openapi.Runtime.Json json)
2355 | Error _ -> Some (Openapi.Runtime.Raw body)
2356 in
2357 raise (Openapi.Runtime.Api_error {
2358 operation = op_name;
2359 method_ = "POST";
2360 url;
2361 status = Requests.Response.status_code response;
2362 body;
2363 parsed_body;
2364 })
2365end
2366
2367module SystemConfigNotifications = struct
2368 module Types = struct
2369 module Dto = struct
2370 type t = {
2371 smtp : SystemConfigSmtp.Dto.t;
2372 }
2373 end
2374 end
2375
2376 module Dto = struct
2377 include Types.Dto
2378
2379 let v ~smtp () = { smtp }
2380
2381 let smtp t = t.smtp
2382
2383 let jsont : t Jsont.t =
2384 Jsont.Object.map ~kind:"SystemConfigNotificationsDto"
2385 (fun smtp -> { smtp })
2386 |> Jsont.Object.mem "smtp" SystemConfigSmtp.Dto.jsont ~enc:(fun r -> r.smtp)
2387 |> Jsont.Object.skip_unknown
2388 |> Jsont.Object.finish
2389 end
2390end
2391
2392module SystemConfigServer = struct
2393 module Types = struct
2394 module Dto = struct
2395 type t = {
2396 external_domain : string;
2397 login_page_message : string;
2398 public_users : bool;
2399 }
2400 end
2401 end
2402
2403 module Dto = struct
2404 include Types.Dto
2405
2406 let v ~external_domain ~login_page_message ~public_users () = { external_domain; login_page_message; public_users }
2407
2408 let external_domain t = t.external_domain
2409 let login_page_message t = t.login_page_message
2410 let public_users t = t.public_users
2411
2412 let jsont : t Jsont.t =
2413 Jsont.Object.map ~kind:"SystemConfigServerDto"
2414 (fun external_domain login_page_message public_users -> { external_domain; login_page_message; public_users })
2415 |> Jsont.Object.mem "externalDomain" Jsont.string ~enc:(fun r -> r.external_domain)
2416 |> Jsont.Object.mem "loginPageMessage" Jsont.string ~enc:(fun r -> r.login_page_message)
2417 |> Jsont.Object.mem "publicUsers" Jsont.bool ~enc:(fun r -> r.public_users)
2418 |> Jsont.Object.skip_unknown
2419 |> Jsont.Object.finish
2420 end
2421end
2422
2423module SystemConfigReverseGeocoding = struct
2424 module Types = struct
2425 module Dto = struct
2426 type t = {
2427 enabled : bool;
2428 }
2429 end
2430 end
2431
2432 module Dto = struct
2433 include Types.Dto
2434
2435 let v ~enabled () = { enabled }
2436
2437 let enabled t = t.enabled
2438
2439 let jsont : t Jsont.t =
2440 Jsont.Object.map ~kind:"SystemConfigReverseGeocodingDto"
2441 (fun enabled -> { enabled })
2442 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2443 |> Jsont.Object.skip_unknown
2444 |> Jsont.Object.finish
2445 end
2446end
2447
2448module SystemConfigPasswordLogin = struct
2449 module Types = struct
2450 module Dto = struct
2451 type t = {
2452 enabled : bool;
2453 }
2454 end
2455 end
2456
2457 module Dto = struct
2458 include Types.Dto
2459
2460 let v ~enabled () = { enabled }
2461
2462 let enabled t = t.enabled
2463
2464 let jsont : t Jsont.t =
2465 Jsont.Object.map ~kind:"SystemConfigPasswordLoginDto"
2466 (fun enabled -> { enabled })
2467 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2468 |> Jsont.Object.skip_unknown
2469 |> Jsont.Object.finish
2470 end
2471end
2472
2473module SystemConfigNightlyTasks = struct
2474 module Types = struct
2475 module Dto = struct
2476 type t = {
2477 cluster_new_faces : bool;
2478 database_cleanup : bool;
2479 generate_memories : bool;
2480 missing_thumbnails : bool;
2481 start_time : string;
2482 sync_quota_usage : bool;
2483 }
2484 end
2485 end
2486
2487 module Dto = struct
2488 include Types.Dto
2489
2490 let v ~cluster_new_faces ~database_cleanup ~generate_memories ~missing_thumbnails ~start_time ~sync_quota_usage () = { cluster_new_faces; database_cleanup; generate_memories; missing_thumbnails; start_time; sync_quota_usage }
2491
2492 let cluster_new_faces t = t.cluster_new_faces
2493 let database_cleanup t = t.database_cleanup
2494 let generate_memories t = t.generate_memories
2495 let missing_thumbnails t = t.missing_thumbnails
2496 let start_time t = t.start_time
2497 let sync_quota_usage t = t.sync_quota_usage
2498
2499 let jsont : t Jsont.t =
2500 Jsont.Object.map ~kind:"SystemConfigNightlyTasksDto"
2501 (fun cluster_new_faces database_cleanup generate_memories missing_thumbnails start_time sync_quota_usage -> { cluster_new_faces; database_cleanup; generate_memories; missing_thumbnails; start_time; sync_quota_usage })
2502 |> Jsont.Object.mem "clusterNewFaces" Jsont.bool ~enc:(fun r -> r.cluster_new_faces)
2503 |> Jsont.Object.mem "databaseCleanup" Jsont.bool ~enc:(fun r -> r.database_cleanup)
2504 |> Jsont.Object.mem "generateMemories" Jsont.bool ~enc:(fun r -> r.generate_memories)
2505 |> Jsont.Object.mem "missingThumbnails" Jsont.bool ~enc:(fun r -> r.missing_thumbnails)
2506 |> Jsont.Object.mem "startTime" Jsont.string ~enc:(fun r -> r.start_time)
2507 |> Jsont.Object.mem "syncQuotaUsage" Jsont.bool ~enc:(fun r -> r.sync_quota_usage)
2508 |> Jsont.Object.skip_unknown
2509 |> Jsont.Object.finish
2510 end
2511end
2512
2513module SystemConfigNewVersionCheck = struct
2514 module Types = struct
2515 module Dto = struct
2516 type t = {
2517 enabled : bool;
2518 }
2519 end
2520 end
2521
2522 module Dto = struct
2523 include Types.Dto
2524
2525 let v ~enabled () = { enabled }
2526
2527 let enabled t = t.enabled
2528
2529 let jsont : t Jsont.t =
2530 Jsont.Object.map ~kind:"SystemConfigNewVersionCheckDto"
2531 (fun enabled -> { enabled })
2532 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2533 |> Jsont.Object.skip_unknown
2534 |> Jsont.Object.finish
2535 end
2536end
2537
2538module SystemConfigMap = struct
2539 module Types = struct
2540 module Dto = struct
2541 type t = {
2542 dark_style : string;
2543 enabled : bool;
2544 light_style : string;
2545 }
2546 end
2547 end
2548
2549 module Dto = struct
2550 include Types.Dto
2551
2552 let v ~dark_style ~enabled ~light_style () = { dark_style; enabled; light_style }
2553
2554 let dark_style t = t.dark_style
2555 let enabled t = t.enabled
2556 let light_style t = t.light_style
2557
2558 let jsont : t Jsont.t =
2559 Jsont.Object.map ~kind:"SystemConfigMapDto"
2560 (fun dark_style enabled light_style -> { dark_style; enabled; light_style })
2561 |> Jsont.Object.mem "darkStyle" Jsont.string ~enc:(fun r -> r.dark_style)
2562 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2563 |> Jsont.Object.mem "lightStyle" Jsont.string ~enc:(fun r -> r.light_style)
2564 |> Jsont.Object.skip_unknown
2565 |> Jsont.Object.finish
2566 end
2567end
2568
2569module SystemConfigLibraryWatch = struct
2570 module Types = struct
2571 module Dto = struct
2572 type t = {
2573 enabled : bool;
2574 }
2575 end
2576 end
2577
2578 module Dto = struct
2579 include Types.Dto
2580
2581 let v ~enabled () = { enabled }
2582
2583 let enabled t = t.enabled
2584
2585 let jsont : t Jsont.t =
2586 Jsont.Object.map ~kind:"SystemConfigLibraryWatchDto"
2587 (fun enabled -> { enabled })
2588 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2589 |> Jsont.Object.skip_unknown
2590 |> Jsont.Object.finish
2591 end
2592end
2593
2594module SystemConfigLibraryScan = struct
2595 module Types = struct
2596 module Dto = struct
2597 type t = {
2598 cron_expression : string;
2599 enabled : bool;
2600 }
2601 end
2602 end
2603
2604 module Dto = struct
2605 include Types.Dto
2606
2607 let v ~cron_expression ~enabled () = { cron_expression; enabled }
2608
2609 let cron_expression t = t.cron_expression
2610 let enabled t = t.enabled
2611
2612 let jsont : t Jsont.t =
2613 Jsont.Object.map ~kind:"SystemConfigLibraryScanDto"
2614 (fun cron_expression enabled -> { cron_expression; enabled })
2615 |> Jsont.Object.mem "cronExpression" Jsont.string ~enc:(fun r -> r.cron_expression)
2616 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
2617 |> Jsont.Object.skip_unknown
2618 |> Jsont.Object.finish
2619 end
2620end
2621
2622module SystemConfigLibrary = struct
2623 module Types = struct
2624 module Dto = struct
2625 type t = {
2626 scan : SystemConfigLibraryScan.Dto.t;
2627 watch : SystemConfigLibraryWatch.Dto.t;
2628 }
2629 end
2630 end
2631
2632 module Dto = struct
2633 include Types.Dto
2634
2635 let v ~scan ~watch () = { scan; watch }
2636
2637 let scan t = t.scan
2638 let watch t = t.watch
2639
2640 let jsont : t Jsont.t =
2641 Jsont.Object.map ~kind:"SystemConfigLibraryDto"
2642 (fun scan watch -> { scan; watch })
2643 |> Jsont.Object.mem "scan" SystemConfigLibraryScan.Dto.jsont ~enc:(fun r -> r.scan)
2644 |> Jsont.Object.mem "watch" SystemConfigLibraryWatch.Dto.jsont ~enc:(fun r -> r.watch)
2645 |> Jsont.Object.skip_unknown
2646 |> Jsont.Object.finish
2647 end
2648end
2649
2650module SystemConfigFaces = struct
2651 module Types = struct
2652 module Dto = struct
2653 type t = {
2654 import : bool;
2655 }
2656 end
2657 end
2658
2659 module Dto = struct
2660 include Types.Dto
2661
2662 let v ~import () = { import }
2663
2664 let import t = t.import
2665
2666 let jsont : t Jsont.t =
2667 Jsont.Object.map ~kind:"SystemConfigFacesDto"
2668 (fun import -> { import })
2669 |> Jsont.Object.mem "import" Jsont.bool ~enc:(fun r -> r.import)
2670 |> Jsont.Object.skip_unknown
2671 |> Jsont.Object.finish
2672 end
2673end
2674
2675module SystemConfigMetadata = struct
2676 module Types = struct
2677 module Dto = struct
2678 type t = {
2679 faces : SystemConfigFaces.Dto.t;
2680 }
2681 end
2682 end
2683
2684 module Dto = struct
2685 include Types.Dto
2686
2687 let v ~faces () = { faces }
2688
2689 let faces t = t.faces
2690
2691 let jsont : t Jsont.t =
2692 Jsont.Object.map ~kind:"SystemConfigMetadataDto"
2693 (fun faces -> { faces })
2694 |> Jsont.Object.mem "faces" SystemConfigFaces.Dto.jsont ~enc:(fun r -> r.faces)
2695 |> Jsont.Object.skip_unknown
2696 |> Jsont.Object.finish
2697 end
2698end
2699
2700module SyncUserDeleteV1 = struct
2701 module Types = struct
2702 module T = struct
2703 type t = {
2704 user_id : string;
2705 }
2706 end
2707 end
2708
2709 module T = struct
2710 include Types.T
2711
2712 let v ~user_id () = { user_id }
2713
2714 let user_id t = t.user_id
2715
2716 let jsont : t Jsont.t =
2717 Jsont.Object.map ~kind:"SyncUserDeleteV1"
2718 (fun user_id -> { user_id })
2719 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
2720 |> Jsont.Object.skip_unknown
2721 |> Jsont.Object.finish
2722 end
2723end
2724
2725module SyncStackV1 = struct
2726 module Types = struct
2727 module T = struct
2728 type t = {
2729 created_at : Ptime.t;
2730 id : string;
2731 owner_id : string;
2732 primary_asset_id : string;
2733 updated_at : Ptime.t;
2734 }
2735 end
2736 end
2737
2738 module T = struct
2739 include Types.T
2740
2741 let v ~created_at ~id ~owner_id ~primary_asset_id ~updated_at () = { created_at; id; owner_id; primary_asset_id; updated_at }
2742
2743 let created_at t = t.created_at
2744 let id t = t.id
2745 let owner_id t = t.owner_id
2746 let primary_asset_id t = t.primary_asset_id
2747 let updated_at t = t.updated_at
2748
2749 let jsont : t Jsont.t =
2750 Jsont.Object.map ~kind:"SyncStackV1"
2751 (fun created_at id owner_id primary_asset_id updated_at -> { created_at; id; owner_id; primary_asset_id; updated_at })
2752 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
2753 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
2754 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
2755 |> Jsont.Object.mem "primaryAssetId" Jsont.string ~enc:(fun r -> r.primary_asset_id)
2756 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
2757 |> Jsont.Object.skip_unknown
2758 |> Jsont.Object.finish
2759 end
2760end
2761
2762module SyncStackDeleteV1 = struct
2763 module Types = struct
2764 module T = struct
2765 type t = {
2766 stack_id : string;
2767 }
2768 end
2769 end
2770
2771 module T = struct
2772 include Types.T
2773
2774 let v ~stack_id () = { stack_id }
2775
2776 let stack_id t = t.stack_id
2777
2778 let jsont : t Jsont.t =
2779 Jsont.Object.map ~kind:"SyncStackDeleteV1"
2780 (fun stack_id -> { stack_id })
2781 |> Jsont.Object.mem "stackId" Jsont.string ~enc:(fun r -> r.stack_id)
2782 |> Jsont.Object.skip_unknown
2783 |> Jsont.Object.finish
2784 end
2785end
2786
2787module SyncResetV1 = struct
2788 module Types = struct
2789 module T = struct
2790 type t = Jsont.json
2791 end
2792 end
2793
2794 module T = struct
2795 include Types.T
2796 let jsont = Jsont.json
2797 let v () = Jsont.Null ((), Jsont.Meta.none)
2798 end
2799end
2800
2801module SyncRequest = struct
2802 module Types = struct
2803 module Type = struct
2804 type t = [
2805 | `Albums_v1
2806 | `Album_users_v1
2807 | `Album_to_assets_v1
2808 | `Album_assets_v1
2809 | `Album_asset_exifs_v1
2810 | `Assets_v1
2811 | `Asset_exifs_v1
2812 | `Asset_metadata_v1
2813 | `Auth_users_v1
2814 | `Memories_v1
2815 | `Memory_to_assets_v1
2816 | `Partners_v1
2817 | `Partner_assets_v1
2818 | `Partner_asset_exifs_v1
2819 | `Partner_stacks_v1
2820 | `Stacks_v1
2821 | `Users_v1
2822 | `People_v1
2823 | `Asset_faces_v1
2824 | `User_metadata_v1
2825 ]
2826 end
2827 end
2828
2829 module Type = struct
2830 include Types.Type
2831
2832 let jsont : t Jsont.t =
2833 Jsont.map Jsont.string ~kind:"SyncRequestType"
2834 ~dec:(function
2835 | "AlbumsV1" -> `Albums_v1
2836 | "AlbumUsersV1" -> `Album_users_v1
2837 | "AlbumToAssetsV1" -> `Album_to_assets_v1
2838 | "AlbumAssetsV1" -> `Album_assets_v1
2839 | "AlbumAssetExifsV1" -> `Album_asset_exifs_v1
2840 | "AssetsV1" -> `Assets_v1
2841 | "AssetExifsV1" -> `Asset_exifs_v1
2842 | "AssetMetadataV1" -> `Asset_metadata_v1
2843 | "AuthUsersV1" -> `Auth_users_v1
2844 | "MemoriesV1" -> `Memories_v1
2845 | "MemoryToAssetsV1" -> `Memory_to_assets_v1
2846 | "PartnersV1" -> `Partners_v1
2847 | "PartnerAssetsV1" -> `Partner_assets_v1
2848 | "PartnerAssetExifsV1" -> `Partner_asset_exifs_v1
2849 | "PartnerStacksV1" -> `Partner_stacks_v1
2850 | "StacksV1" -> `Stacks_v1
2851 | "UsersV1" -> `Users_v1
2852 | "PeopleV1" -> `People_v1
2853 | "AssetFacesV1" -> `Asset_faces_v1
2854 | "UserMetadataV1" -> `User_metadata_v1
2855 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
2856 ~enc:(function
2857 | `Albums_v1 -> "AlbumsV1"
2858 | `Album_users_v1 -> "AlbumUsersV1"
2859 | `Album_to_assets_v1 -> "AlbumToAssetsV1"
2860 | `Album_assets_v1 -> "AlbumAssetsV1"
2861 | `Album_asset_exifs_v1 -> "AlbumAssetExifsV1"
2862 | `Assets_v1 -> "AssetsV1"
2863 | `Asset_exifs_v1 -> "AssetExifsV1"
2864 | `Asset_metadata_v1 -> "AssetMetadataV1"
2865 | `Auth_users_v1 -> "AuthUsersV1"
2866 | `Memories_v1 -> "MemoriesV1"
2867 | `Memory_to_assets_v1 -> "MemoryToAssetsV1"
2868 | `Partners_v1 -> "PartnersV1"
2869 | `Partner_assets_v1 -> "PartnerAssetsV1"
2870 | `Partner_asset_exifs_v1 -> "PartnerAssetExifsV1"
2871 | `Partner_stacks_v1 -> "PartnerStacksV1"
2872 | `Stacks_v1 -> "StacksV1"
2873 | `Users_v1 -> "UsersV1"
2874 | `People_v1 -> "PeopleV1"
2875 | `Asset_faces_v1 -> "AssetFacesV1"
2876 | `User_metadata_v1 -> "UserMetadataV1")
2877 end
2878end
2879
2880module SyncStream = struct
2881 module Types = struct
2882 module Dto = struct
2883 type t = {
2884 reset : bool option;
2885 types : SyncRequest.Type.t list;
2886 }
2887 end
2888 end
2889
2890 module Dto = struct
2891 include Types.Dto
2892
2893 let v ~types ?reset () = { reset; types }
2894
2895 let reset t = t.reset
2896 let types t = t.types
2897
2898 let jsont : t Jsont.t =
2899 Jsont.Object.map ~kind:"SyncStreamDto"
2900 (fun reset types -> { reset; types })
2901 |> Jsont.Object.opt_mem "reset" Jsont.bool ~enc:(fun r -> r.reset)
2902 |> Jsont.Object.mem "types" (Jsont.list SyncRequest.Type.jsont) ~enc:(fun r -> r.types)
2903 |> Jsont.Object.skip_unknown
2904 |> Jsont.Object.finish
2905 end
2906end
2907
2908module SyncPersonV1 = struct
2909 module Types = struct
2910 module T = struct
2911 type t = {
2912 birth_date : Ptime.t option;
2913 color : string option;
2914 created_at : Ptime.t;
2915 face_asset_id : string option;
2916 id : string;
2917 is_favorite : bool;
2918 is_hidden : bool;
2919 name : string;
2920 owner_id : string;
2921 updated_at : Ptime.t;
2922 }
2923 end
2924 end
2925
2926 module T = struct
2927 include Types.T
2928
2929 let v ~created_at ~id ~is_favorite ~is_hidden ~name ~owner_id ~updated_at ?birth_date ?color ?face_asset_id () = { birth_date; color; created_at; face_asset_id; id; is_favorite; is_hidden; name; owner_id; updated_at }
2930
2931 let birth_date t = t.birth_date
2932 let color t = t.color
2933 let created_at t = t.created_at
2934 let face_asset_id t = t.face_asset_id
2935 let id t = t.id
2936 let is_favorite t = t.is_favorite
2937 let is_hidden t = t.is_hidden
2938 let name t = t.name
2939 let owner_id t = t.owner_id
2940 let updated_at t = t.updated_at
2941
2942 let jsont : t Jsont.t =
2943 Jsont.Object.map ~kind:"SyncPersonV1"
2944 (fun birth_date color created_at face_asset_id id is_favorite is_hidden name owner_id updated_at -> { birth_date; color; created_at; face_asset_id; id; is_favorite; is_hidden; name; owner_id; updated_at })
2945 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_ptime
2946 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
2947 |> Jsont.Object.mem "color" Openapi.Runtime.nullable_string
2948 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.color)
2949 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
2950 |> Jsont.Object.mem "faceAssetId" Openapi.Runtime.nullable_string
2951 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.face_asset_id)
2952 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
2953 |> Jsont.Object.mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
2954 |> Jsont.Object.mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
2955 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
2956 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
2957 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
2958 |> Jsont.Object.skip_unknown
2959 |> Jsont.Object.finish
2960 end
2961end
2962
2963module SyncPersonDeleteV1 = struct
2964 module Types = struct
2965 module T = struct
2966 type t = {
2967 person_id : string;
2968 }
2969 end
2970 end
2971
2972 module T = struct
2973 include Types.T
2974
2975 let v ~person_id () = { person_id }
2976
2977 let person_id t = t.person_id
2978
2979 let jsont : t Jsont.t =
2980 Jsont.Object.map ~kind:"SyncPersonDeleteV1"
2981 (fun person_id -> { person_id })
2982 |> Jsont.Object.mem "personId" Jsont.string ~enc:(fun r -> r.person_id)
2983 |> Jsont.Object.skip_unknown
2984 |> Jsont.Object.finish
2985 end
2986end
2987
2988module SyncPartnerV1 = struct
2989 module Types = struct
2990 module T = struct
2991 type t = {
2992 in_timeline : bool;
2993 shared_by_id : string;
2994 shared_with_id : string;
2995 }
2996 end
2997 end
2998
2999 module T = struct
3000 include Types.T
3001
3002 let v ~in_timeline ~shared_by_id ~shared_with_id () = { in_timeline; shared_by_id; shared_with_id }
3003
3004 let in_timeline t = t.in_timeline
3005 let shared_by_id t = t.shared_by_id
3006 let shared_with_id t = t.shared_with_id
3007
3008 let jsont : t Jsont.t =
3009 Jsont.Object.map ~kind:"SyncPartnerV1"
3010 (fun in_timeline shared_by_id shared_with_id -> { in_timeline; shared_by_id; shared_with_id })
3011 |> Jsont.Object.mem "inTimeline" Jsont.bool ~enc:(fun r -> r.in_timeline)
3012 |> Jsont.Object.mem "sharedById" Jsont.string ~enc:(fun r -> r.shared_by_id)
3013 |> Jsont.Object.mem "sharedWithId" Jsont.string ~enc:(fun r -> r.shared_with_id)
3014 |> Jsont.Object.skip_unknown
3015 |> Jsont.Object.finish
3016 end
3017end
3018
3019module SyncPartnerDeleteV1 = struct
3020 module Types = struct
3021 module T = struct
3022 type t = {
3023 shared_by_id : string;
3024 shared_with_id : string;
3025 }
3026 end
3027 end
3028
3029 module T = struct
3030 include Types.T
3031
3032 let v ~shared_by_id ~shared_with_id () = { shared_by_id; shared_with_id }
3033
3034 let shared_by_id t = t.shared_by_id
3035 let shared_with_id t = t.shared_with_id
3036
3037 let jsont : t Jsont.t =
3038 Jsont.Object.map ~kind:"SyncPartnerDeleteV1"
3039 (fun shared_by_id shared_with_id -> { shared_by_id; shared_with_id })
3040 |> Jsont.Object.mem "sharedById" Jsont.string ~enc:(fun r -> r.shared_by_id)
3041 |> Jsont.Object.mem "sharedWithId" Jsont.string ~enc:(fun r -> r.shared_with_id)
3042 |> Jsont.Object.skip_unknown
3043 |> Jsont.Object.finish
3044 end
3045end
3046
3047module SyncMemoryDeleteV1 = struct
3048 module Types = struct
3049 module T = struct
3050 type t = {
3051 memory_id : string;
3052 }
3053 end
3054 end
3055
3056 module T = struct
3057 include Types.T
3058
3059 let v ~memory_id () = { memory_id }
3060
3061 let memory_id t = t.memory_id
3062
3063 let jsont : t Jsont.t =
3064 Jsont.Object.map ~kind:"SyncMemoryDeleteV1"
3065 (fun memory_id -> { memory_id })
3066 |> Jsont.Object.mem "memoryId" Jsont.string ~enc:(fun r -> r.memory_id)
3067 |> Jsont.Object.skip_unknown
3068 |> Jsont.Object.finish
3069 end
3070end
3071
3072module SyncMemoryAssetV1 = struct
3073 module Types = struct
3074 module T = struct
3075 type t = {
3076 asset_id : string;
3077 memory_id : string;
3078 }
3079 end
3080 end
3081
3082 module T = struct
3083 include Types.T
3084
3085 let v ~asset_id ~memory_id () = { asset_id; memory_id }
3086
3087 let asset_id t = t.asset_id
3088 let memory_id t = t.memory_id
3089
3090 let jsont : t Jsont.t =
3091 Jsont.Object.map ~kind:"SyncMemoryAssetV1"
3092 (fun asset_id memory_id -> { asset_id; memory_id })
3093 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3094 |> Jsont.Object.mem "memoryId" Jsont.string ~enc:(fun r -> r.memory_id)
3095 |> Jsont.Object.skip_unknown
3096 |> Jsont.Object.finish
3097 end
3098end
3099
3100module SyncMemoryAssetDeleteV1 = struct
3101 module Types = struct
3102 module T = struct
3103 type t = {
3104 asset_id : string;
3105 memory_id : string;
3106 }
3107 end
3108 end
3109
3110 module T = struct
3111 include Types.T
3112
3113 let v ~asset_id ~memory_id () = { asset_id; memory_id }
3114
3115 let asset_id t = t.asset_id
3116 let memory_id t = t.memory_id
3117
3118 let jsont : t Jsont.t =
3119 Jsont.Object.map ~kind:"SyncMemoryAssetDeleteV1"
3120 (fun asset_id memory_id -> { asset_id; memory_id })
3121 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3122 |> Jsont.Object.mem "memoryId" Jsont.string ~enc:(fun r -> r.memory_id)
3123 |> Jsont.Object.skip_unknown
3124 |> Jsont.Object.finish
3125 end
3126end
3127
3128module SyncEntity = struct
3129 module Types = struct
3130 module Type = struct
3131 type t = [
3132 | `Auth_user_v1
3133 | `User_v1
3134 | `User_delete_v1
3135 | `Asset_v1
3136 | `Asset_delete_v1
3137 | `Asset_exif_v1
3138 | `Asset_metadata_v1
3139 | `Asset_metadata_delete_v1
3140 | `Partner_v1
3141 | `Partner_delete_v1
3142 | `Partner_asset_v1
3143 | `Partner_asset_backfill_v1
3144 | `Partner_asset_delete_v1
3145 | `Partner_asset_exif_v1
3146 | `Partner_asset_exif_backfill_v1
3147 | `Partner_stack_backfill_v1
3148 | `Partner_stack_delete_v1
3149 | `Partner_stack_v1
3150 | `Album_v1
3151 | `Album_delete_v1
3152 | `Album_user_v1
3153 | `Album_user_backfill_v1
3154 | `Album_user_delete_v1
3155 | `Album_asset_create_v1
3156 | `Album_asset_update_v1
3157 | `Album_asset_backfill_v1
3158 | `Album_asset_exif_create_v1
3159 | `Album_asset_exif_update_v1
3160 | `Album_asset_exif_backfill_v1
3161 | `Album_to_asset_v1
3162 | `Album_to_asset_delete_v1
3163 | `Album_to_asset_backfill_v1
3164 | `Memory_v1
3165 | `Memory_delete_v1
3166 | `Memory_to_asset_v1
3167 | `Memory_to_asset_delete_v1
3168 | `Stack_v1
3169 | `Stack_delete_v1
3170 | `Person_v1
3171 | `Person_delete_v1
3172 | `Asset_face_v1
3173 | `Asset_face_delete_v1
3174 | `User_metadata_v1
3175 | `User_metadata_delete_v1
3176 | `Sync_ack_v1
3177 | `Sync_reset_v1
3178 | `Sync_complete_v1
3179 ]
3180 end
3181 end
3182
3183 module Type = struct
3184 include Types.Type
3185
3186 let jsont : t Jsont.t =
3187 Jsont.map Jsont.string ~kind:"SyncEntityType"
3188 ~dec:(function
3189 | "AuthUserV1" -> `Auth_user_v1
3190 | "UserV1" -> `User_v1
3191 | "UserDeleteV1" -> `User_delete_v1
3192 | "AssetV1" -> `Asset_v1
3193 | "AssetDeleteV1" -> `Asset_delete_v1
3194 | "AssetExifV1" -> `Asset_exif_v1
3195 | "AssetMetadataV1" -> `Asset_metadata_v1
3196 | "AssetMetadataDeleteV1" -> `Asset_metadata_delete_v1
3197 | "PartnerV1" -> `Partner_v1
3198 | "PartnerDeleteV1" -> `Partner_delete_v1
3199 | "PartnerAssetV1" -> `Partner_asset_v1
3200 | "PartnerAssetBackfillV1" -> `Partner_asset_backfill_v1
3201 | "PartnerAssetDeleteV1" -> `Partner_asset_delete_v1
3202 | "PartnerAssetExifV1" -> `Partner_asset_exif_v1
3203 | "PartnerAssetExifBackfillV1" -> `Partner_asset_exif_backfill_v1
3204 | "PartnerStackBackfillV1" -> `Partner_stack_backfill_v1
3205 | "PartnerStackDeleteV1" -> `Partner_stack_delete_v1
3206 | "PartnerStackV1" -> `Partner_stack_v1
3207 | "AlbumV1" -> `Album_v1
3208 | "AlbumDeleteV1" -> `Album_delete_v1
3209 | "AlbumUserV1" -> `Album_user_v1
3210 | "AlbumUserBackfillV1" -> `Album_user_backfill_v1
3211 | "AlbumUserDeleteV1" -> `Album_user_delete_v1
3212 | "AlbumAssetCreateV1" -> `Album_asset_create_v1
3213 | "AlbumAssetUpdateV1" -> `Album_asset_update_v1
3214 | "AlbumAssetBackfillV1" -> `Album_asset_backfill_v1
3215 | "AlbumAssetExifCreateV1" -> `Album_asset_exif_create_v1
3216 | "AlbumAssetExifUpdateV1" -> `Album_asset_exif_update_v1
3217 | "AlbumAssetExifBackfillV1" -> `Album_asset_exif_backfill_v1
3218 | "AlbumToAssetV1" -> `Album_to_asset_v1
3219 | "AlbumToAssetDeleteV1" -> `Album_to_asset_delete_v1
3220 | "AlbumToAssetBackfillV1" -> `Album_to_asset_backfill_v1
3221 | "MemoryV1" -> `Memory_v1
3222 | "MemoryDeleteV1" -> `Memory_delete_v1
3223 | "MemoryToAssetV1" -> `Memory_to_asset_v1
3224 | "MemoryToAssetDeleteV1" -> `Memory_to_asset_delete_v1
3225 | "StackV1" -> `Stack_v1
3226 | "StackDeleteV1" -> `Stack_delete_v1
3227 | "PersonV1" -> `Person_v1
3228 | "PersonDeleteV1" -> `Person_delete_v1
3229 | "AssetFaceV1" -> `Asset_face_v1
3230 | "AssetFaceDeleteV1" -> `Asset_face_delete_v1
3231 | "UserMetadataV1" -> `User_metadata_v1
3232 | "UserMetadataDeleteV1" -> `User_metadata_delete_v1
3233 | "SyncAckV1" -> `Sync_ack_v1
3234 | "SyncResetV1" -> `Sync_reset_v1
3235 | "SyncCompleteV1" -> `Sync_complete_v1
3236 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
3237 ~enc:(function
3238 | `Auth_user_v1 -> "AuthUserV1"
3239 | `User_v1 -> "UserV1"
3240 | `User_delete_v1 -> "UserDeleteV1"
3241 | `Asset_v1 -> "AssetV1"
3242 | `Asset_delete_v1 -> "AssetDeleteV1"
3243 | `Asset_exif_v1 -> "AssetExifV1"
3244 | `Asset_metadata_v1 -> "AssetMetadataV1"
3245 | `Asset_metadata_delete_v1 -> "AssetMetadataDeleteV1"
3246 | `Partner_v1 -> "PartnerV1"
3247 | `Partner_delete_v1 -> "PartnerDeleteV1"
3248 | `Partner_asset_v1 -> "PartnerAssetV1"
3249 | `Partner_asset_backfill_v1 -> "PartnerAssetBackfillV1"
3250 | `Partner_asset_delete_v1 -> "PartnerAssetDeleteV1"
3251 | `Partner_asset_exif_v1 -> "PartnerAssetExifV1"
3252 | `Partner_asset_exif_backfill_v1 -> "PartnerAssetExifBackfillV1"
3253 | `Partner_stack_backfill_v1 -> "PartnerStackBackfillV1"
3254 | `Partner_stack_delete_v1 -> "PartnerStackDeleteV1"
3255 | `Partner_stack_v1 -> "PartnerStackV1"
3256 | `Album_v1 -> "AlbumV1"
3257 | `Album_delete_v1 -> "AlbumDeleteV1"
3258 | `Album_user_v1 -> "AlbumUserV1"
3259 | `Album_user_backfill_v1 -> "AlbumUserBackfillV1"
3260 | `Album_user_delete_v1 -> "AlbumUserDeleteV1"
3261 | `Album_asset_create_v1 -> "AlbumAssetCreateV1"
3262 | `Album_asset_update_v1 -> "AlbumAssetUpdateV1"
3263 | `Album_asset_backfill_v1 -> "AlbumAssetBackfillV1"
3264 | `Album_asset_exif_create_v1 -> "AlbumAssetExifCreateV1"
3265 | `Album_asset_exif_update_v1 -> "AlbumAssetExifUpdateV1"
3266 | `Album_asset_exif_backfill_v1 -> "AlbumAssetExifBackfillV1"
3267 | `Album_to_asset_v1 -> "AlbumToAssetV1"
3268 | `Album_to_asset_delete_v1 -> "AlbumToAssetDeleteV1"
3269 | `Album_to_asset_backfill_v1 -> "AlbumToAssetBackfillV1"
3270 | `Memory_v1 -> "MemoryV1"
3271 | `Memory_delete_v1 -> "MemoryDeleteV1"
3272 | `Memory_to_asset_v1 -> "MemoryToAssetV1"
3273 | `Memory_to_asset_delete_v1 -> "MemoryToAssetDeleteV1"
3274 | `Stack_v1 -> "StackV1"
3275 | `Stack_delete_v1 -> "StackDeleteV1"
3276 | `Person_v1 -> "PersonV1"
3277 | `Person_delete_v1 -> "PersonDeleteV1"
3278 | `Asset_face_v1 -> "AssetFaceV1"
3279 | `Asset_face_delete_v1 -> "AssetFaceDeleteV1"
3280 | `User_metadata_v1 -> "UserMetadataV1"
3281 | `User_metadata_delete_v1 -> "UserMetadataDeleteV1"
3282 | `Sync_ack_v1 -> "SyncAckV1"
3283 | `Sync_reset_v1 -> "SyncResetV1"
3284 | `Sync_complete_v1 -> "SyncCompleteV1")
3285 end
3286end
3287
3288module SyncAckDelete = struct
3289 module Types = struct
3290 module Dto = struct
3291 type t = {
3292 types : SyncEntity.Type.t list option;
3293 }
3294 end
3295 end
3296
3297 module Dto = struct
3298 include Types.Dto
3299
3300 let v ?types () = { types }
3301
3302 let types t = t.types
3303
3304 let jsont : t Jsont.t =
3305 Jsont.Object.map ~kind:"SyncAckDeleteDto"
3306 (fun types -> { types })
3307 |> Jsont.Object.opt_mem "types" (Jsont.list SyncEntity.Type.jsont) ~enc:(fun r -> r.types)
3308 |> Jsont.Object.skip_unknown
3309 |> Jsont.Object.finish
3310 end
3311end
3312
3313module SyncAck = struct
3314 module Types = struct
3315 module Dto = struct
3316 type t = {
3317 ack : string;
3318 type_ : SyncEntity.Type.t;
3319 }
3320 end
3321 end
3322
3323 module Dto = struct
3324 include Types.Dto
3325
3326 let v ~ack ~type_ () = { ack; type_ }
3327
3328 let ack t = t.ack
3329 let type_ t = t.type_
3330
3331 let jsont : t Jsont.t =
3332 Jsont.Object.map ~kind:"SyncAckDto"
3333 (fun ack type_ -> { ack; type_ })
3334 |> Jsont.Object.mem "ack" Jsont.string ~enc:(fun r -> r.ack)
3335 |> Jsont.Object.mem "type" SyncEntity.Type.jsont ~enc:(fun r -> r.type_)
3336 |> Jsont.Object.skip_unknown
3337 |> Jsont.Object.finish
3338 end
3339
3340 (** Retrieve acknowledgements
3341
3342 Retrieve the synchronization acknowledgments for the current session. *)
3343 let get_sync_ack client () =
3344 let op_name = "get_sync_ack" in
3345 let url_path = "/sync/ack" in
3346 let query = "" in
3347 let url = client.base_url ^ url_path ^ query in
3348 let response =
3349 try Requests.get client.session url
3350 with Eio.Io _ as ex ->
3351 let bt = Printexc.get_raw_backtrace () in
3352 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
3353 in
3354 if Requests.Response.ok response then
3355 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
3356 else
3357 let body = Requests.Response.text response in
3358 let parsed_body =
3359 match Jsont_bytesrw.decode_string Jsont.json body with
3360 | Ok json -> Some (Openapi.Runtime.Json json)
3361 | Error _ -> Some (Openapi.Runtime.Raw body)
3362 in
3363 raise (Openapi.Runtime.Api_error {
3364 operation = op_name;
3365 method_ = "GET";
3366 url;
3367 status = Requests.Response.status_code response;
3368 body;
3369 parsed_body;
3370 })
3371end
3372
3373module SyncCompleteV1 = struct
3374 module Types = struct
3375 module T = struct
3376 type t = Jsont.json
3377 end
3378 end
3379
3380 module T = struct
3381 include Types.T
3382 let jsont = Jsont.json
3383 let v () = Jsont.Null ((), Jsont.Meta.none)
3384 end
3385end
3386
3387module SyncAssetMetadataV1 = struct
3388 module Types = struct
3389 module T = struct
3390 type t = {
3391 asset_id : string;
3392 key : string;
3393 value : Jsont.json;
3394 }
3395 end
3396 end
3397
3398 module T = struct
3399 include Types.T
3400
3401 let v ~asset_id ~key ~value () = { asset_id; key; value }
3402
3403 let asset_id t = t.asset_id
3404 let key t = t.key
3405 let value t = t.value
3406
3407 let jsont : t Jsont.t =
3408 Jsont.Object.map ~kind:"SyncAssetMetadataV1"
3409 (fun asset_id key value -> { asset_id; key; value })
3410 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3411 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
3412 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
3413 |> Jsont.Object.skip_unknown
3414 |> Jsont.Object.finish
3415 end
3416end
3417
3418module SyncAssetMetadataDeleteV1 = struct
3419 module Types = struct
3420 module T = struct
3421 type t = {
3422 asset_id : string;
3423 key : string;
3424 }
3425 end
3426 end
3427
3428 module T = struct
3429 include Types.T
3430
3431 let v ~asset_id ~key () = { asset_id; key }
3432
3433 let asset_id t = t.asset_id
3434 let key t = t.key
3435
3436 let jsont : t Jsont.t =
3437 Jsont.Object.map ~kind:"SyncAssetMetadataDeleteV1"
3438 (fun asset_id key -> { asset_id; key })
3439 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3440 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
3441 |> Jsont.Object.skip_unknown
3442 |> Jsont.Object.finish
3443 end
3444end
3445
3446module SyncAssetFaceV1 = struct
3447 module Types = struct
3448 module T = struct
3449 type t = {
3450 asset_id : string;
3451 bounding_box_x1 : int;
3452 bounding_box_x2 : int;
3453 bounding_box_y1 : int;
3454 bounding_box_y2 : int;
3455 id : string;
3456 image_height : int;
3457 image_width : int;
3458 person_id : string option;
3459 source_type : string;
3460 }
3461 end
3462 end
3463
3464 module T = struct
3465 include Types.T
3466
3467 let v ~asset_id ~bounding_box_x1 ~bounding_box_x2 ~bounding_box_y1 ~bounding_box_y2 ~id ~image_height ~image_width ~source_type ?person_id () = { asset_id; bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; person_id; source_type }
3468
3469 let asset_id t = t.asset_id
3470 let bounding_box_x1 t = t.bounding_box_x1
3471 let bounding_box_x2 t = t.bounding_box_x2
3472 let bounding_box_y1 t = t.bounding_box_y1
3473 let bounding_box_y2 t = t.bounding_box_y2
3474 let id t = t.id
3475 let image_height t = t.image_height
3476 let image_width t = t.image_width
3477 let person_id t = t.person_id
3478 let source_type t = t.source_type
3479
3480 let jsont : t Jsont.t =
3481 Jsont.Object.map ~kind:"SyncAssetFaceV1"
3482 (fun asset_id bounding_box_x1 bounding_box_x2 bounding_box_y1 bounding_box_y2 id image_height image_width person_id source_type -> { asset_id; bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; person_id; source_type })
3483 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3484 |> Jsont.Object.mem "boundingBoxX1" Jsont.int ~enc:(fun r -> r.bounding_box_x1)
3485 |> Jsont.Object.mem "boundingBoxX2" Jsont.int ~enc:(fun r -> r.bounding_box_x2)
3486 |> Jsont.Object.mem "boundingBoxY1" Jsont.int ~enc:(fun r -> r.bounding_box_y1)
3487 |> Jsont.Object.mem "boundingBoxY2" Jsont.int ~enc:(fun r -> r.bounding_box_y2)
3488 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
3489 |> Jsont.Object.mem "imageHeight" Jsont.int ~enc:(fun r -> r.image_height)
3490 |> Jsont.Object.mem "imageWidth" Jsont.int ~enc:(fun r -> r.image_width)
3491 |> Jsont.Object.mem "personId" Openapi.Runtime.nullable_string
3492 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.person_id)
3493 |> Jsont.Object.mem "sourceType" Jsont.string ~enc:(fun r -> r.source_type)
3494 |> Jsont.Object.skip_unknown
3495 |> Jsont.Object.finish
3496 end
3497end
3498
3499module SyncAssetFaceDeleteV1 = struct
3500 module Types = struct
3501 module T = struct
3502 type t = {
3503 asset_face_id : string;
3504 }
3505 end
3506 end
3507
3508 module T = struct
3509 include Types.T
3510
3511 let v ~asset_face_id () = { asset_face_id }
3512
3513 let asset_face_id t = t.asset_face_id
3514
3515 let jsont : t Jsont.t =
3516 Jsont.Object.map ~kind:"SyncAssetFaceDeleteV1"
3517 (fun asset_face_id -> { asset_face_id })
3518 |> Jsont.Object.mem "assetFaceId" Jsont.string ~enc:(fun r -> r.asset_face_id)
3519 |> Jsont.Object.skip_unknown
3520 |> Jsont.Object.finish
3521 end
3522end
3523
3524module SyncAssetExifV1 = struct
3525 module Types = struct
3526 module T = struct
3527 type t = {
3528 asset_id : string;
3529 city : string option;
3530 country : string option;
3531 date_time_original : Ptime.t option;
3532 description : string option;
3533 exif_image_height : int option;
3534 exif_image_width : int option;
3535 exposure_time : string option;
3536 f_number : float option;
3537 file_size_in_byte : int option;
3538 focal_length : float option;
3539 fps : float option;
3540 iso : int option;
3541 latitude : float option;
3542 lens_model : string option;
3543 longitude : float option;
3544 make : string option;
3545 model : string option;
3546 modify_date : Ptime.t option;
3547 orientation : string option;
3548 profile_description : string option;
3549 projection_type : string option;
3550 rating : int option;
3551 state : string option;
3552 time_zone : string option;
3553 }
3554 end
3555 end
3556
3557 module T = struct
3558 include Types.T
3559
3560 let v ~asset_id ?city ?country ?date_time_original ?description ?exif_image_height ?exif_image_width ?exposure_time ?f_number ?file_size_in_byte ?focal_length ?fps ?iso ?latitude ?lens_model ?longitude ?make ?model ?modify_date ?orientation ?profile_description ?projection_type ?rating ?state ?time_zone () = { asset_id; city; country; date_time_original; description; exif_image_height; exif_image_width; exposure_time; f_number; file_size_in_byte; focal_length; fps; iso; latitude; lens_model; longitude; make; model; modify_date; orientation; profile_description; projection_type; rating; state; time_zone }
3561
3562 let asset_id t = t.asset_id
3563 let city t = t.city
3564 let country t = t.country
3565 let date_time_original t = t.date_time_original
3566 let description t = t.description
3567 let exif_image_height t = t.exif_image_height
3568 let exif_image_width t = t.exif_image_width
3569 let exposure_time t = t.exposure_time
3570 let f_number t = t.f_number
3571 let file_size_in_byte t = t.file_size_in_byte
3572 let focal_length t = t.focal_length
3573 let fps t = t.fps
3574 let iso t = t.iso
3575 let latitude t = t.latitude
3576 let lens_model t = t.lens_model
3577 let longitude t = t.longitude
3578 let make t = t.make
3579 let model t = t.model
3580 let modify_date t = t.modify_date
3581 let orientation t = t.orientation
3582 let profile_description t = t.profile_description
3583 let projection_type t = t.projection_type
3584 let rating t = t.rating
3585 let state t = t.state
3586 let time_zone t = t.time_zone
3587
3588 let jsont : t Jsont.t =
3589 Jsont.Object.map ~kind:"SyncAssetExifV1"
3590 (fun asset_id city country date_time_original description exif_image_height exif_image_width exposure_time f_number file_size_in_byte focal_length fps iso latitude lens_model longitude make model modify_date orientation profile_description projection_type rating state time_zone -> { asset_id; city; country; date_time_original; description; exif_image_height; exif_image_width; exposure_time; f_number; file_size_in_byte; focal_length; fps; iso; latitude; lens_model; longitude; make; model; modify_date; orientation; profile_description; projection_type; rating; state; time_zone })
3591 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3592 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
3593 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
3594 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
3595 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
3596 |> Jsont.Object.mem "dateTimeOriginal" Openapi.Runtime.nullable_ptime
3597 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.date_time_original)
3598 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
3599 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
3600 |> Jsont.Object.mem "exifImageHeight" Openapi.Runtime.nullable_int
3601 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exif_image_height)
3602 |> Jsont.Object.mem "exifImageWidth" Openapi.Runtime.nullable_int
3603 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exif_image_width)
3604 |> Jsont.Object.mem "exposureTime" Openapi.Runtime.nullable_string
3605 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exposure_time)
3606 |> Jsont.Object.mem "fNumber" Openapi.Runtime.nullable_float
3607 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.f_number)
3608 |> Jsont.Object.mem "fileSizeInByte" Openapi.Runtime.nullable_int
3609 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.file_size_in_byte)
3610 |> Jsont.Object.mem "focalLength" Openapi.Runtime.nullable_float
3611 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.focal_length)
3612 |> Jsont.Object.mem "fps" Openapi.Runtime.nullable_float
3613 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.fps)
3614 |> Jsont.Object.mem "iso" Openapi.Runtime.nullable_int
3615 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.iso)
3616 |> Jsont.Object.mem "latitude" Openapi.Runtime.nullable_float
3617 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.latitude)
3618 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
3619 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
3620 |> Jsont.Object.mem "longitude" Openapi.Runtime.nullable_float
3621 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.longitude)
3622 |> Jsont.Object.mem "make" Openapi.Runtime.nullable_string
3623 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.make)
3624 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
3625 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
3626 |> Jsont.Object.mem "modifyDate" Openapi.Runtime.nullable_ptime
3627 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.modify_date)
3628 |> Jsont.Object.mem "orientation" Openapi.Runtime.nullable_string
3629 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.orientation)
3630 |> Jsont.Object.mem "profileDescription" Openapi.Runtime.nullable_string
3631 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.profile_description)
3632 |> Jsont.Object.mem "projectionType" Openapi.Runtime.nullable_string
3633 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.projection_type)
3634 |> Jsont.Object.mem "rating" Openapi.Runtime.nullable_int
3635 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.rating)
3636 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
3637 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
3638 |> Jsont.Object.mem "timeZone" Openapi.Runtime.nullable_string
3639 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.time_zone)
3640 |> Jsont.Object.skip_unknown
3641 |> Jsont.Object.finish
3642 end
3643end
3644
3645module SyncAssetDeleteV1 = struct
3646 module Types = struct
3647 module T = struct
3648 type t = {
3649 asset_id : string;
3650 }
3651 end
3652 end
3653
3654 module T = struct
3655 include Types.T
3656
3657 let v ~asset_id () = { asset_id }
3658
3659 let asset_id t = t.asset_id
3660
3661 let jsont : t Jsont.t =
3662 Jsont.Object.map ~kind:"SyncAssetDeleteV1"
3663 (fun asset_id -> { asset_id })
3664 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3665 |> Jsont.Object.skip_unknown
3666 |> Jsont.Object.finish
3667 end
3668end
3669
3670module SyncAlbumUserDeleteV1 = struct
3671 module Types = struct
3672 module T = struct
3673 type t = {
3674 album_id : string;
3675 user_id : string;
3676 }
3677 end
3678 end
3679
3680 module T = struct
3681 include Types.T
3682
3683 let v ~album_id ~user_id () = { album_id; user_id }
3684
3685 let album_id t = t.album_id
3686 let user_id t = t.user_id
3687
3688 let jsont : t Jsont.t =
3689 Jsont.Object.map ~kind:"SyncAlbumUserDeleteV1"
3690 (fun album_id user_id -> { album_id; user_id })
3691 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
3692 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
3693 |> Jsont.Object.skip_unknown
3694 |> Jsont.Object.finish
3695 end
3696end
3697
3698module SyncAlbumToAssetV1 = struct
3699 module Types = struct
3700 module T = struct
3701 type t = {
3702 album_id : string;
3703 asset_id : string;
3704 }
3705 end
3706 end
3707
3708 module T = struct
3709 include Types.T
3710
3711 let v ~album_id ~asset_id () = { album_id; asset_id }
3712
3713 let album_id t = t.album_id
3714 let asset_id t = t.asset_id
3715
3716 let jsont : t Jsont.t =
3717 Jsont.Object.map ~kind:"SyncAlbumToAssetV1"
3718 (fun album_id asset_id -> { album_id; asset_id })
3719 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
3720 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3721 |> Jsont.Object.skip_unknown
3722 |> Jsont.Object.finish
3723 end
3724end
3725
3726module SyncAlbumToAssetDeleteV1 = struct
3727 module Types = struct
3728 module T = struct
3729 type t = {
3730 album_id : string;
3731 asset_id : string;
3732 }
3733 end
3734 end
3735
3736 module T = struct
3737 include Types.T
3738
3739 let v ~album_id ~asset_id () = { album_id; asset_id }
3740
3741 let album_id t = t.album_id
3742 let asset_id t = t.asset_id
3743
3744 let jsont : t Jsont.t =
3745 Jsont.Object.map ~kind:"SyncAlbumToAssetDeleteV1"
3746 (fun album_id asset_id -> { album_id; asset_id })
3747 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
3748 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
3749 |> Jsont.Object.skip_unknown
3750 |> Jsont.Object.finish
3751 end
3752end
3753
3754module SyncAlbumDeleteV1 = struct
3755 module Types = struct
3756 module T = struct
3757 type t = {
3758 album_id : string;
3759 }
3760 end
3761 end
3762
3763 module T = struct
3764 include Types.T
3765
3766 let v ~album_id () = { album_id }
3767
3768 let album_id t = t.album_id
3769
3770 let jsont : t Jsont.t =
3771 Jsont.Object.map ~kind:"SyncAlbumDeleteV1"
3772 (fun album_id -> { album_id })
3773 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
3774 |> Jsont.Object.skip_unknown
3775 |> Jsont.Object.finish
3776 end
3777end
3778
3779module SyncAckV1 = struct
3780 module Types = struct
3781 module T = struct
3782 type t = Jsont.json
3783 end
3784 end
3785
3786 module T = struct
3787 include Types.T
3788 let jsont = Jsont.json
3789 let v () = Jsont.Null ((), Jsont.Meta.none)
3790 end
3791end
3792
3793module SyncAckSet = struct
3794 module Types = struct
3795 module Dto = struct
3796 type t = {
3797 acks : string list;
3798 }
3799 end
3800 end
3801
3802 module Dto = struct
3803 include Types.Dto
3804
3805 let v ~acks () = { acks }
3806
3807 let acks t = t.acks
3808
3809 let jsont : t Jsont.t =
3810 Jsont.Object.map ~kind:"SyncAckSetDto"
3811 (fun acks -> { acks })
3812 |> Jsont.Object.mem "acks" (Openapi.Runtime.validated_list ~max_items:1000 Jsont.string) ~enc:(fun r -> r.acks)
3813 |> Jsont.Object.skip_unknown
3814 |> Jsont.Object.finish
3815 end
3816end
3817
3818module StorageFolder = struct
3819 module Types = struct
3820 module T = struct
3821 type t = [
3822 | `Encoded_video
3823 | `Library
3824 | `Upload
3825 | `Profile
3826 | `Thumbs
3827 | `Backups
3828 ]
3829 end
3830 end
3831
3832 module T = struct
3833 include Types.T
3834
3835 let jsont : t Jsont.t =
3836 Jsont.map Jsont.string ~kind:"StorageFolder"
3837 ~dec:(function
3838 | "encoded-video" -> `Encoded_video
3839 | "library" -> `Library
3840 | "upload" -> `Upload
3841 | "profile" -> `Profile
3842 | "thumbs" -> `Thumbs
3843 | "backups" -> `Backups
3844 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
3845 ~enc:(function
3846 | `Encoded_video -> "encoded-video"
3847 | `Library -> "library"
3848 | `Upload -> "upload"
3849 | `Profile -> "profile"
3850 | `Thumbs -> "thumbs"
3851 | `Backups -> "backups")
3852 end
3853end
3854
3855module MaintenanceDetectInstallStorageFolder = struct
3856 module Types = struct
3857 module Dto = struct
3858 type t = {
3859 files : float;
3860 folder : StorageFolder.T.t;
3861 readable : bool;
3862 writable : bool;
3863 }
3864 end
3865 end
3866
3867 module Dto = struct
3868 include Types.Dto
3869
3870 let v ~files ~folder ~readable ~writable () = { files; folder; readable; writable }
3871
3872 let files t = t.files
3873 let folder t = t.folder
3874 let readable t = t.readable
3875 let writable t = t.writable
3876
3877 let jsont : t Jsont.t =
3878 Jsont.Object.map ~kind:"MaintenanceDetectInstallStorageFolderDto"
3879 (fun files folder readable writable -> { files; folder; readable; writable })
3880 |> Jsont.Object.mem "files" Jsont.number ~enc:(fun r -> r.files)
3881 |> Jsont.Object.mem "folder" StorageFolder.T.jsont ~enc:(fun r -> r.folder)
3882 |> Jsont.Object.mem "readable" Jsont.bool ~enc:(fun r -> r.readable)
3883 |> Jsont.Object.mem "writable" Jsont.bool ~enc:(fun r -> r.writable)
3884 |> Jsont.Object.skip_unknown
3885 |> Jsont.Object.finish
3886 end
3887end
3888
3889module MaintenanceDetectInstall = struct
3890 module Types = struct
3891 module ResponseDto = struct
3892 type t = {
3893 storage : MaintenanceDetectInstallStorageFolder.Dto.t list;
3894 }
3895 end
3896 end
3897
3898 module ResponseDto = struct
3899 include Types.ResponseDto
3900
3901 let v ~storage () = { storage }
3902
3903 let storage t = t.storage
3904
3905 let jsont : t Jsont.t =
3906 Jsont.Object.map ~kind:"MaintenanceDetectInstallResponseDto"
3907 (fun storage -> { storage })
3908 |> Jsont.Object.mem "storage" (Jsont.list MaintenanceDetectInstallStorageFolder.Dto.jsont) ~enc:(fun r -> r.storage)
3909 |> Jsont.Object.skip_unknown
3910 |> Jsont.Object.finish
3911 end
3912
3913 (** Detect existing install
3914
3915 Collect integrity checks and other heuristics about local data. *)
3916 let detect_prior_install client () =
3917 let op_name = "detect_prior_install" in
3918 let url_path = "/admin/maintenance/detect-install" in
3919 let query = "" in
3920 let url = client.base_url ^ url_path ^ query in
3921 let response =
3922 try Requests.get client.session url
3923 with Eio.Io _ as ex ->
3924 let bt = Printexc.get_raw_backtrace () in
3925 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
3926 in
3927 if Requests.Response.ok response then
3928 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
3929 else
3930 let body = Requests.Response.text response in
3931 let parsed_body =
3932 match Jsont_bytesrw.decode_string Jsont.json body with
3933 | Ok json -> Some (Openapi.Runtime.Json json)
3934 | Error _ -> Some (Openapi.Runtime.Raw body)
3935 in
3936 raise (Openapi.Runtime.Api_error {
3937 operation = op_name;
3938 method_ = "GET";
3939 url;
3940 status = Requests.Response.status_code response;
3941 body;
3942 parsed_body;
3943 })
3944end
3945
3946module Source = struct
3947 module Types = struct
3948 module Type = struct
3949 type t = [
3950 | `Machine_learning
3951 | `Exif
3952 | `Manual
3953 ]
3954 end
3955 end
3956
3957 module Type = struct
3958 include Types.Type
3959
3960 let jsont : t Jsont.t =
3961 Jsont.map Jsont.string ~kind:"SourceType"
3962 ~dec:(function
3963 | "machine-learning" -> `Machine_learning
3964 | "exif" -> `Exif
3965 | "manual" -> `Manual
3966 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
3967 ~enc:(function
3968 | `Machine_learning -> "machine-learning"
3969 | `Exif -> "exif"
3970 | `Manual -> "manual")
3971 end
3972end
3973
3974module AssetFaceWithoutPerson = struct
3975 module Types = struct
3976 module ResponseDto = struct
3977 type t = {
3978 bounding_box_x1 : int;
3979 bounding_box_x2 : int;
3980 bounding_box_y1 : int;
3981 bounding_box_y2 : int;
3982 id : string;
3983 image_height : int;
3984 image_width : int;
3985 source_type : Source.Type.t option;
3986 }
3987 end
3988 end
3989
3990 module ResponseDto = struct
3991 include Types.ResponseDto
3992
3993 let v ~bounding_box_x1 ~bounding_box_x2 ~bounding_box_y1 ~bounding_box_y2 ~id ~image_height ~image_width ?source_type () = { bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; source_type }
3994
3995 let bounding_box_x1 t = t.bounding_box_x1
3996 let bounding_box_x2 t = t.bounding_box_x2
3997 let bounding_box_y1 t = t.bounding_box_y1
3998 let bounding_box_y2 t = t.bounding_box_y2
3999 let id t = t.id
4000 let image_height t = t.image_height
4001 let image_width t = t.image_width
4002 let source_type t = t.source_type
4003
4004 let jsont : t Jsont.t =
4005 Jsont.Object.map ~kind:"AssetFaceWithoutPersonResponseDto"
4006 (fun bounding_box_x1 bounding_box_x2 bounding_box_y1 bounding_box_y2 id image_height image_width source_type -> { bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; source_type })
4007 |> Jsont.Object.mem "boundingBoxX1" Jsont.int ~enc:(fun r -> r.bounding_box_x1)
4008 |> Jsont.Object.mem "boundingBoxX2" Jsont.int ~enc:(fun r -> r.bounding_box_x2)
4009 |> Jsont.Object.mem "boundingBoxY1" Jsont.int ~enc:(fun r -> r.bounding_box_y1)
4010 |> Jsont.Object.mem "boundingBoxY2" Jsont.int ~enc:(fun r -> r.bounding_box_y2)
4011 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
4012 |> Jsont.Object.mem "imageHeight" Jsont.int ~enc:(fun r -> r.image_height)
4013 |> Jsont.Object.mem "imageWidth" Jsont.int ~enc:(fun r -> r.image_width)
4014 |> Jsont.Object.opt_mem "sourceType" Source.Type.jsont ~enc:(fun r -> r.source_type)
4015 |> Jsont.Object.skip_unknown
4016 |> Jsont.Object.finish
4017 end
4018end
4019
4020module PersonWithFaces = struct
4021 module Types = struct
4022 module ResponseDto = struct
4023 type t = {
4024 birth_date : string option;
4025 color : string option;
4026 faces : AssetFaceWithoutPerson.ResponseDto.t list;
4027 id : string;
4028 is_favorite : bool option;
4029 is_hidden : bool;
4030 name : string;
4031 thumbnail_path : string;
4032 updated_at : Ptime.t option;
4033 }
4034 end
4035 end
4036
4037 module ResponseDto = struct
4038 include Types.ResponseDto
4039
4040 let v ~faces ~id ~is_hidden ~name ~thumbnail_path ?birth_date ?color ?is_favorite ?updated_at () = { birth_date; color; faces; id; is_favorite; is_hidden; name; thumbnail_path; updated_at }
4041
4042 let birth_date t = t.birth_date
4043 let color t = t.color
4044 let faces t = t.faces
4045 let id t = t.id
4046 let is_favorite t = t.is_favorite
4047 let is_hidden t = t.is_hidden
4048 let name t = t.name
4049 let thumbnail_path t = t.thumbnail_path
4050 let updated_at t = t.updated_at
4051
4052 let jsont : t Jsont.t =
4053 Jsont.Object.map ~kind:"PersonWithFacesResponseDto"
4054 (fun birth_date color faces id is_favorite is_hidden name thumbnail_path updated_at -> { birth_date; color; faces; id; is_favorite; is_hidden; name; thumbnail_path; updated_at })
4055 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_string
4056 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
4057 |> Jsont.Object.opt_mem "color" Jsont.string ~enc:(fun r -> r.color)
4058 |> Jsont.Object.mem "faces" (Jsont.list AssetFaceWithoutPerson.ResponseDto.jsont) ~enc:(fun r -> r.faces)
4059 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
4060 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
4061 |> Jsont.Object.mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
4062 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
4063 |> Jsont.Object.mem "thumbnailPath" Jsont.string ~enc:(fun r -> r.thumbnail_path)
4064 |> Jsont.Object.opt_mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
4065 |> Jsont.Object.skip_unknown
4066 |> Jsont.Object.finish
4067 end
4068end
4069
4070module SignUp = struct
4071 module Types = struct
4072 module Dto = struct
4073 type t = {
4074 email : string;
4075 name : string;
4076 password : string;
4077 }
4078 end
4079 end
4080
4081 module Dto = struct
4082 include Types.Dto
4083
4084 let v ~email ~name ~password () = { email; name; password }
4085
4086 let email t = t.email
4087 let name t = t.name
4088 let password t = t.password
4089
4090 let jsont : t Jsont.t =
4091 Jsont.Object.map ~kind:"SignUpDto"
4092 (fun email name password -> { email; name; password })
4093 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
4094 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
4095 |> Jsont.Object.mem "password" Jsont.string ~enc:(fun r -> r.password)
4096 |> Jsont.Object.skip_unknown
4097 |> Jsont.Object.finish
4098 end
4099end
4100
4101module SharedLinks = struct
4102 module Types = struct
4103 module Update = struct
4104 type t = {
4105 enabled : bool option;
4106 sidebar_web : bool option;
4107 }
4108 end
4109
4110 module Response = struct
4111 type t = {
4112 enabled : bool;
4113 sidebar_web : bool;
4114 }
4115 end
4116 end
4117
4118 module Update = struct
4119 include Types.Update
4120
4121 let v ?enabled ?sidebar_web () = { enabled; sidebar_web }
4122
4123 let enabled t = t.enabled
4124 let sidebar_web t = t.sidebar_web
4125
4126 let jsont : t Jsont.t =
4127 Jsont.Object.map ~kind:"SharedLinksUpdate"
4128 (fun enabled sidebar_web -> { enabled; sidebar_web })
4129 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
4130 |> Jsont.Object.opt_mem "sidebarWeb" Jsont.bool ~enc:(fun r -> r.sidebar_web)
4131 |> Jsont.Object.skip_unknown
4132 |> Jsont.Object.finish
4133 end
4134
4135 module Response = struct
4136 include Types.Response
4137
4138 let v ?(enabled=true) ?(sidebar_web=false) () = { enabled; sidebar_web }
4139
4140 let enabled t = t.enabled
4141 let sidebar_web t = t.sidebar_web
4142
4143 let jsont : t Jsont.t =
4144 Jsont.Object.map ~kind:"SharedLinksResponse"
4145 (fun enabled sidebar_web -> { enabled; sidebar_web })
4146 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.enabled)
4147 |> Jsont.Object.mem "sidebarWeb" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.sidebar_web)
4148 |> Jsont.Object.skip_unknown
4149 |> Jsont.Object.finish
4150 end
4151end
4152
4153module SharedLinkEdit = struct
4154 module Types = struct
4155 module Dto = struct
4156 type t = {
4157 allow_download : bool option;
4158 allow_upload : bool option;
4159 change_expiry_time : bool option; (** Few clients cannot send null to set the expiryTime to never.
4160 Setting this flag and not sending expiryAt is considered as null instead.
4161 Clients that can send null values can ignore this. *)
4162 description : string option;
4163 expires_at : Ptime.t option;
4164 password : string option;
4165 show_metadata : bool option;
4166 slug : string option;
4167 }
4168 end
4169 end
4170
4171 module Dto = struct
4172 include Types.Dto
4173
4174 let v ?allow_download ?allow_upload ?change_expiry_time ?description ?expires_at ?password ?show_metadata ?slug () = { allow_download; allow_upload; change_expiry_time; description; expires_at; password; show_metadata; slug }
4175
4176 let allow_download t = t.allow_download
4177 let allow_upload t = t.allow_upload
4178 let change_expiry_time t = t.change_expiry_time
4179 let description t = t.description
4180 let expires_at t = t.expires_at
4181 let password t = t.password
4182 let show_metadata t = t.show_metadata
4183 let slug t = t.slug
4184
4185 let jsont : t Jsont.t =
4186 Jsont.Object.map ~kind:"SharedLinkEditDto"
4187 (fun allow_download allow_upload change_expiry_time description expires_at password show_metadata slug -> { allow_download; allow_upload; change_expiry_time; description; expires_at; password; show_metadata; slug })
4188 |> Jsont.Object.opt_mem "allowDownload" Jsont.bool ~enc:(fun r -> r.allow_download)
4189 |> Jsont.Object.opt_mem "allowUpload" Jsont.bool ~enc:(fun r -> r.allow_upload)
4190 |> Jsont.Object.opt_mem "changeExpiryTime" Jsont.bool ~enc:(fun r -> r.change_expiry_time)
4191 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
4192 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
4193 |> Jsont.Object.mem "expiresAt" Openapi.Runtime.nullable_ptime
4194 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.expires_at)
4195 |> Jsont.Object.mem "password" Openapi.Runtime.nullable_string
4196 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.password)
4197 |> Jsont.Object.opt_mem "showMetadata" Jsont.bool ~enc:(fun r -> r.show_metadata)
4198 |> Jsont.Object.mem "slug" Openapi.Runtime.nullable_string
4199 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.slug)
4200 |> Jsont.Object.skip_unknown
4201 |> Jsont.Object.finish
4202 end
4203end
4204
4205module SessionUnlock = struct
4206 module Types = struct
4207 module Dto = struct
4208 type t = {
4209 password : string option;
4210 pin_code : string option;
4211 }
4212 end
4213 end
4214
4215 module Dto = struct
4216 include Types.Dto
4217
4218 let v ?password ?pin_code () = { password; pin_code }
4219
4220 let password t = t.password
4221 let pin_code t = t.pin_code
4222
4223 let jsont : t Jsont.t =
4224 Jsont.Object.map ~kind:"SessionUnlockDto"
4225 (fun password pin_code -> { password; pin_code })
4226 |> Jsont.Object.opt_mem "password" Jsont.string ~enc:(fun r -> r.password)
4227 |> Jsont.Object.opt_mem "pinCode" Jsont.string ~enc:(fun r -> r.pin_code)
4228 |> Jsont.Object.skip_unknown
4229 |> Jsont.Object.finish
4230 end
4231end
4232
4233module Session = struct
4234 module Types = struct
4235 module UpdateDto = struct
4236 type t = {
4237 is_pending_sync_reset : bool option;
4238 }
4239 end
4240
4241 module ResponseDto = struct
4242 type t = {
4243 app_version : string option;
4244 created_at : string;
4245 current : bool;
4246 device_os : string;
4247 device_type : string;
4248 expires_at : string option;
4249 id : string;
4250 is_pending_sync_reset : bool;
4251 updated_at : string;
4252 }
4253 end
4254
4255 module CreateDto = struct
4256 type t = {
4257 device_os : string option;
4258 device_type : string option;
4259 duration : float option; (** session duration, in seconds *)
4260 }
4261 end
4262 end
4263
4264 module UpdateDto = struct
4265 include Types.UpdateDto
4266
4267 let v ?is_pending_sync_reset () = { is_pending_sync_reset }
4268
4269 let is_pending_sync_reset t = t.is_pending_sync_reset
4270
4271 let jsont : t Jsont.t =
4272 Jsont.Object.map ~kind:"SessionUpdateDto"
4273 (fun is_pending_sync_reset -> { is_pending_sync_reset })
4274 |> Jsont.Object.opt_mem "isPendingSyncReset" Jsont.bool ~enc:(fun r -> r.is_pending_sync_reset)
4275 |> Jsont.Object.skip_unknown
4276 |> Jsont.Object.finish
4277 end
4278
4279 module ResponseDto = struct
4280 include Types.ResponseDto
4281
4282 let v ~created_at ~current ~device_os ~device_type ~id ~is_pending_sync_reset ~updated_at ?app_version ?expires_at () = { app_version; created_at; current; device_os; device_type; expires_at; id; is_pending_sync_reset; updated_at }
4283
4284 let app_version t = t.app_version
4285 let created_at t = t.created_at
4286 let current t = t.current
4287 let device_os t = t.device_os
4288 let device_type t = t.device_type
4289 let expires_at t = t.expires_at
4290 let id t = t.id
4291 let is_pending_sync_reset t = t.is_pending_sync_reset
4292 let updated_at t = t.updated_at
4293
4294 let jsont : t Jsont.t =
4295 Jsont.Object.map ~kind:"SessionResponseDto"
4296 (fun app_version created_at current device_os device_type expires_at id is_pending_sync_reset updated_at -> { app_version; created_at; current; device_os; device_type; expires_at; id; is_pending_sync_reset; updated_at })
4297 |> Jsont.Object.mem "appVersion" Openapi.Runtime.nullable_string
4298 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.app_version)
4299 |> Jsont.Object.mem "createdAt" Jsont.string ~enc:(fun r -> r.created_at)
4300 |> Jsont.Object.mem "current" Jsont.bool ~enc:(fun r -> r.current)
4301 |> Jsont.Object.mem "deviceOS" Jsont.string ~enc:(fun r -> r.device_os)
4302 |> Jsont.Object.mem "deviceType" Jsont.string ~enc:(fun r -> r.device_type)
4303 |> Jsont.Object.opt_mem "expiresAt" Jsont.string ~enc:(fun r -> r.expires_at)
4304 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
4305 |> Jsont.Object.mem "isPendingSyncReset" Jsont.bool ~enc:(fun r -> r.is_pending_sync_reset)
4306 |> Jsont.Object.mem "updatedAt" Jsont.string ~enc:(fun r -> r.updated_at)
4307 |> Jsont.Object.skip_unknown
4308 |> Jsont.Object.finish
4309 end
4310
4311 module CreateDto = struct
4312 include Types.CreateDto
4313
4314 let v ?device_os ?device_type ?duration () = { device_os; device_type; duration }
4315
4316 let device_os t = t.device_os
4317 let device_type t = t.device_type
4318 let duration t = t.duration
4319
4320 let jsont : t Jsont.t =
4321 Jsont.Object.map ~kind:"SessionCreateDto"
4322 (fun device_os device_type duration -> { device_os; device_type; duration })
4323 |> Jsont.Object.opt_mem "deviceOS" Jsont.string ~enc:(fun r -> r.device_os)
4324 |> Jsont.Object.opt_mem "deviceType" Jsont.string ~enc:(fun r -> r.device_type)
4325 |> Jsont.Object.opt_mem "duration" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.duration)
4326 |> Jsont.Object.skip_unknown
4327 |> Jsont.Object.finish
4328 end
4329
4330 (** Retrieve user sessions
4331
4332 Retrieve all sessions for a specific user. *)
4333 let get_user_sessions_admin ~id client () =
4334 let op_name = "get_user_sessions_admin" in
4335 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}/sessions" in
4336 let query = "" in
4337 let url = client.base_url ^ url_path ^ query in
4338 let response =
4339 try Requests.get client.session url
4340 with Eio.Io _ as ex ->
4341 let bt = Printexc.get_raw_backtrace () in
4342 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4343 in
4344 if Requests.Response.ok response then
4345 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4346 else
4347 let body = Requests.Response.text response in
4348 let parsed_body =
4349 match Jsont_bytesrw.decode_string Jsont.json body with
4350 | Ok json -> Some (Openapi.Runtime.Json json)
4351 | Error _ -> Some (Openapi.Runtime.Raw body)
4352 in
4353 raise (Openapi.Runtime.Api_error {
4354 operation = op_name;
4355 method_ = "GET";
4356 url;
4357 status = Requests.Response.status_code response;
4358 body;
4359 parsed_body;
4360 })
4361
4362 (** Retrieve sessions
4363
4364 Retrieve a list of sessions for the user. *)
4365 let get_sessions client () =
4366 let op_name = "get_sessions" in
4367 let url_path = "/sessions" in
4368 let query = "" in
4369 let url = client.base_url ^ url_path ^ query in
4370 let response =
4371 try Requests.get client.session url
4372 with Eio.Io _ as ex ->
4373 let bt = Printexc.get_raw_backtrace () in
4374 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4375 in
4376 if Requests.Response.ok response then
4377 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4378 else
4379 let body = Requests.Response.text response in
4380 let parsed_body =
4381 match Jsont_bytesrw.decode_string Jsont.json body with
4382 | Ok json -> Some (Openapi.Runtime.Json json)
4383 | Error _ -> Some (Openapi.Runtime.Raw body)
4384 in
4385 raise (Openapi.Runtime.Api_error {
4386 operation = op_name;
4387 method_ = "GET";
4388 url;
4389 status = Requests.Response.status_code response;
4390 body;
4391 parsed_body;
4392 })
4393
4394 (** Update a session
4395
4396 Update a specific session identified by id. *)
4397 let update_session ~id ~body client () =
4398 let op_name = "update_session" in
4399 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/sessions/{id}" in
4400 let query = "" in
4401 let url = client.base_url ^ url_path ^ query in
4402 let response =
4403 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
4404 with Eio.Io _ as ex ->
4405 let bt = Printexc.get_raw_backtrace () in
4406 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
4407 in
4408 if Requests.Response.ok response then
4409 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4410 else
4411 let body = Requests.Response.text response in
4412 let parsed_body =
4413 match Jsont_bytesrw.decode_string Jsont.json body with
4414 | Ok json -> Some (Openapi.Runtime.Json json)
4415 | Error _ -> Some (Openapi.Runtime.Raw body)
4416 in
4417 raise (Openapi.Runtime.Api_error {
4418 operation = op_name;
4419 method_ = "PUT";
4420 url;
4421 status = Requests.Response.status_code response;
4422 body;
4423 parsed_body;
4424 })
4425end
4426
4427module SessionCreate = struct
4428 module Types = struct
4429 module ResponseDto = struct
4430 type t = {
4431 app_version : string option;
4432 created_at : string;
4433 current : bool;
4434 device_os : string;
4435 device_type : string;
4436 expires_at : string option;
4437 id : string;
4438 is_pending_sync_reset : bool;
4439 token : string;
4440 updated_at : string;
4441 }
4442 end
4443 end
4444
4445 module ResponseDto = struct
4446 include Types.ResponseDto
4447
4448 let v ~created_at ~current ~device_os ~device_type ~id ~is_pending_sync_reset ~token ~updated_at ?app_version ?expires_at () = { app_version; created_at; current; device_os; device_type; expires_at; id; is_pending_sync_reset; token; updated_at }
4449
4450 let app_version t = t.app_version
4451 let created_at t = t.created_at
4452 let current t = t.current
4453 let device_os t = t.device_os
4454 let device_type t = t.device_type
4455 let expires_at t = t.expires_at
4456 let id t = t.id
4457 let is_pending_sync_reset t = t.is_pending_sync_reset
4458 let token t = t.token
4459 let updated_at t = t.updated_at
4460
4461 let jsont : t Jsont.t =
4462 Jsont.Object.map ~kind:"SessionCreateResponseDto"
4463 (fun app_version created_at current device_os device_type expires_at id is_pending_sync_reset token updated_at -> { app_version; created_at; current; device_os; device_type; expires_at; id; is_pending_sync_reset; token; updated_at })
4464 |> Jsont.Object.mem "appVersion" Openapi.Runtime.nullable_string
4465 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.app_version)
4466 |> Jsont.Object.mem "createdAt" Jsont.string ~enc:(fun r -> r.created_at)
4467 |> Jsont.Object.mem "current" Jsont.bool ~enc:(fun r -> r.current)
4468 |> Jsont.Object.mem "deviceOS" Jsont.string ~enc:(fun r -> r.device_os)
4469 |> Jsont.Object.mem "deviceType" Jsont.string ~enc:(fun r -> r.device_type)
4470 |> Jsont.Object.opt_mem "expiresAt" Jsont.string ~enc:(fun r -> r.expires_at)
4471 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
4472 |> Jsont.Object.mem "isPendingSyncReset" Jsont.bool ~enc:(fun r -> r.is_pending_sync_reset)
4473 |> Jsont.Object.mem "token" Jsont.string ~enc:(fun r -> r.token)
4474 |> Jsont.Object.mem "updatedAt" Jsont.string ~enc:(fun r -> r.updated_at)
4475 |> Jsont.Object.skip_unknown
4476 |> Jsont.Object.finish
4477 end
4478
4479 (** Create a session
4480
4481 Create a session as a child to the current session. This endpoint is used for casting. *)
4482 let create_session ~body client () =
4483 let op_name = "create_session" in
4484 let url_path = "/sessions" in
4485 let query = "" in
4486 let url = client.base_url ^ url_path ^ query in
4487 let response =
4488 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Session.CreateDto.jsont body)) url
4489 with Eio.Io _ as ex ->
4490 let bt = Printexc.get_raw_backtrace () in
4491 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
4492 in
4493 if Requests.Response.ok response then
4494 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4495 else
4496 let body = Requests.Response.text response in
4497 let parsed_body =
4498 match Jsont_bytesrw.decode_string Jsont.json body with
4499 | Ok json -> Some (Openapi.Runtime.Json json)
4500 | Error _ -> Some (Openapi.Runtime.Raw body)
4501 in
4502 raise (Openapi.Runtime.Api_error {
4503 operation = op_name;
4504 method_ = "POST";
4505 url;
4506 status = Requests.Response.status_code response;
4507 body;
4508 parsed_body;
4509 })
4510end
4511
4512module ServerVersionHistory = struct
4513 module Types = struct
4514 module ResponseDto = struct
4515 type t = {
4516 created_at : Ptime.t;
4517 id : string;
4518 version : string;
4519 }
4520 end
4521 end
4522
4523 module ResponseDto = struct
4524 include Types.ResponseDto
4525
4526 let v ~created_at ~id ~version () = { created_at; id; version }
4527
4528 let created_at t = t.created_at
4529 let id t = t.id
4530 let version t = t.version
4531
4532 let jsont : t Jsont.t =
4533 Jsont.Object.map ~kind:"ServerVersionHistoryResponseDto"
4534 (fun created_at id version -> { created_at; id; version })
4535 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
4536 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
4537 |> Jsont.Object.mem "version" Jsont.string ~enc:(fun r -> r.version)
4538 |> Jsont.Object.skip_unknown
4539 |> Jsont.Object.finish
4540 end
4541
4542 (** Get version history
4543
4544 Retrieve a list of past versions the server has been on. *)
4545 let get_version_history client () =
4546 let op_name = "get_version_history" in
4547 let url_path = "/server/version-history" in
4548 let query = "" in
4549 let url = client.base_url ^ url_path ^ query in
4550 let response =
4551 try Requests.get client.session url
4552 with Eio.Io _ as ex ->
4553 let bt = Printexc.get_raw_backtrace () in
4554 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4555 in
4556 if Requests.Response.ok response then
4557 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4558 else
4559 let body = Requests.Response.text response in
4560 let parsed_body =
4561 match Jsont_bytesrw.decode_string Jsont.json body with
4562 | Ok json -> Some (Openapi.Runtime.Json json)
4563 | Error _ -> Some (Openapi.Runtime.Raw body)
4564 in
4565 raise (Openapi.Runtime.Api_error {
4566 operation = op_name;
4567 method_ = "GET";
4568 url;
4569 status = Requests.Response.status_code response;
4570 body;
4571 parsed_body;
4572 })
4573end
4574
4575module ServerVersion = struct
4576 module Types = struct
4577 module ResponseDto = struct
4578 type t = {
4579 major : int;
4580 minor : int;
4581 patch : int;
4582 }
4583 end
4584 end
4585
4586 module ResponseDto = struct
4587 include Types.ResponseDto
4588
4589 let v ~major ~minor ~patch () = { major; minor; patch }
4590
4591 let major t = t.major
4592 let minor t = t.minor
4593 let patch t = t.patch
4594
4595 let jsont : t Jsont.t =
4596 Jsont.Object.map ~kind:"ServerVersionResponseDto"
4597 (fun major minor patch -> { major; minor; patch })
4598 |> Jsont.Object.mem "major" Jsont.int ~enc:(fun r -> r.major)
4599 |> Jsont.Object.mem "minor" Jsont.int ~enc:(fun r -> r.minor)
4600 |> Jsont.Object.mem "patch" Jsont.int ~enc:(fun r -> r.patch)
4601 |> Jsont.Object.skip_unknown
4602 |> Jsont.Object.finish
4603 end
4604
4605 (** Get server version
4606
4607 Retrieve the current server version in semantic versioning (semver) format. *)
4608 let get_server_version client () =
4609 let op_name = "get_server_version" in
4610 let url_path = "/server/version" in
4611 let query = "" in
4612 let url = client.base_url ^ url_path ^ query in
4613 let response =
4614 try Requests.get client.session url
4615 with Eio.Io _ as ex ->
4616 let bt = Printexc.get_raw_backtrace () in
4617 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4618 in
4619 if Requests.Response.ok response then
4620 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4621 else
4622 let body = Requests.Response.text response in
4623 let parsed_body =
4624 match Jsont_bytesrw.decode_string Jsont.json body with
4625 | Ok json -> Some (Openapi.Runtime.Json json)
4626 | Error _ -> Some (Openapi.Runtime.Raw body)
4627 in
4628 raise (Openapi.Runtime.Api_error {
4629 operation = op_name;
4630 method_ = "GET";
4631 url;
4632 status = Requests.Response.status_code response;
4633 body;
4634 parsed_body;
4635 })
4636end
4637
4638module ServerTheme = struct
4639 module Types = struct
4640 module Dto = struct
4641 type t = {
4642 custom_css : string;
4643 }
4644 end
4645 end
4646
4647 module Dto = struct
4648 include Types.Dto
4649
4650 let v ~custom_css () = { custom_css }
4651
4652 let custom_css t = t.custom_css
4653
4654 let jsont : t Jsont.t =
4655 Jsont.Object.map ~kind:"ServerThemeDto"
4656 (fun custom_css -> { custom_css })
4657 |> Jsont.Object.mem "customCss" Jsont.string ~enc:(fun r -> r.custom_css)
4658 |> Jsont.Object.skip_unknown
4659 |> Jsont.Object.finish
4660 end
4661
4662 (** Get theme
4663
4664 Retrieve the custom CSS, if existent. *)
4665 let get_theme client () =
4666 let op_name = "get_theme" in
4667 let url_path = "/server/theme" in
4668 let query = "" in
4669 let url = client.base_url ^ url_path ^ query in
4670 let response =
4671 try Requests.get client.session url
4672 with Eio.Io _ as ex ->
4673 let bt = Printexc.get_raw_backtrace () in
4674 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4675 in
4676 if Requests.Response.ok response then
4677 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
4678 else
4679 let body = Requests.Response.text response in
4680 let parsed_body =
4681 match Jsont_bytesrw.decode_string Jsont.json body with
4682 | Ok json -> Some (Openapi.Runtime.Json json)
4683 | Error _ -> Some (Openapi.Runtime.Raw body)
4684 in
4685 raise (Openapi.Runtime.Api_error {
4686 operation = op_name;
4687 method_ = "GET";
4688 url;
4689 status = Requests.Response.status_code response;
4690 body;
4691 parsed_body;
4692 })
4693end
4694
4695module ServerStorage = struct
4696 module Types = struct
4697 module ResponseDto = struct
4698 type t = {
4699 disk_available : string;
4700 disk_available_raw : int64;
4701 disk_size : string;
4702 disk_size_raw : int64;
4703 disk_usage_percentage : float;
4704 disk_use : string;
4705 disk_use_raw : int64;
4706 }
4707 end
4708 end
4709
4710 module ResponseDto = struct
4711 include Types.ResponseDto
4712
4713 let v ~disk_available ~disk_available_raw ~disk_size ~disk_size_raw ~disk_usage_percentage ~disk_use ~disk_use_raw () = { disk_available; disk_available_raw; disk_size; disk_size_raw; disk_usage_percentage; disk_use; disk_use_raw }
4714
4715 let disk_available t = t.disk_available
4716 let disk_available_raw t = t.disk_available_raw
4717 let disk_size t = t.disk_size
4718 let disk_size_raw t = t.disk_size_raw
4719 let disk_usage_percentage t = t.disk_usage_percentage
4720 let disk_use t = t.disk_use
4721 let disk_use_raw t = t.disk_use_raw
4722
4723 let jsont : t Jsont.t =
4724 Jsont.Object.map ~kind:"ServerStorageResponseDto"
4725 (fun disk_available disk_available_raw disk_size disk_size_raw disk_usage_percentage disk_use disk_use_raw -> { disk_available; disk_available_raw; disk_size; disk_size_raw; disk_usage_percentage; disk_use; disk_use_raw })
4726 |> Jsont.Object.mem "diskAvailable" Jsont.string ~enc:(fun r -> r.disk_available)
4727 |> Jsont.Object.mem "diskAvailableRaw" Jsont.int64 ~enc:(fun r -> r.disk_available_raw)
4728 |> Jsont.Object.mem "diskSize" Jsont.string ~enc:(fun r -> r.disk_size)
4729 |> Jsont.Object.mem "diskSizeRaw" Jsont.int64 ~enc:(fun r -> r.disk_size_raw)
4730 |> Jsont.Object.mem "diskUsagePercentage" Jsont.number ~enc:(fun r -> r.disk_usage_percentage)
4731 |> Jsont.Object.mem "diskUse" Jsont.string ~enc:(fun r -> r.disk_use)
4732 |> Jsont.Object.mem "diskUseRaw" Jsont.int64 ~enc:(fun r -> r.disk_use_raw)
4733 |> Jsont.Object.skip_unknown
4734 |> Jsont.Object.finish
4735 end
4736
4737 (** Get storage
4738
4739 Retrieve the current storage utilization information of the server. *)
4740 let get_storage client () =
4741 let op_name = "get_storage" in
4742 let url_path = "/server/storage" in
4743 let query = "" in
4744 let url = client.base_url ^ url_path ^ query in
4745 let response =
4746 try Requests.get client.session url
4747 with Eio.Io _ as ex ->
4748 let bt = Printexc.get_raw_backtrace () in
4749 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4750 in
4751 if Requests.Response.ok response then
4752 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4753 else
4754 let body = Requests.Response.text response in
4755 let parsed_body =
4756 match Jsont_bytesrw.decode_string Jsont.json body with
4757 | Ok json -> Some (Openapi.Runtime.Json json)
4758 | Error _ -> Some (Openapi.Runtime.Raw body)
4759 in
4760 raise (Openapi.Runtime.Api_error {
4761 operation = op_name;
4762 method_ = "GET";
4763 url;
4764 status = Requests.Response.status_code response;
4765 body;
4766 parsed_body;
4767 })
4768end
4769
4770module ServerPing = struct
4771 module Types = struct
4772 module Response = struct
4773 type t = {
4774 res : string;
4775 }
4776 end
4777 end
4778
4779 module Response = struct
4780 include Types.Response
4781
4782 let v ~res () = { res }
4783
4784 let res t = t.res
4785
4786 let jsont : t Jsont.t =
4787 Jsont.Object.map ~kind:"ServerPingResponse"
4788 (fun res -> { res })
4789 |> Jsont.Object.mem "res" Jsont.string ~enc:(fun r -> r.res)
4790 |> Jsont.Object.skip_unknown
4791 |> Jsont.Object.finish
4792 end
4793
4794 (** Ping
4795
4796 Pong *)
4797 let ping_server client () =
4798 let op_name = "ping_server" in
4799 let url_path = "/server/ping" in
4800 let query = "" in
4801 let url = client.base_url ^ url_path ^ query in
4802 let response =
4803 try Requests.get client.session url
4804 with Eio.Io _ as ex ->
4805 let bt = Printexc.get_raw_backtrace () in
4806 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4807 in
4808 if Requests.Response.ok response then
4809 Openapi.Runtime.Json.decode_json_exn Response.jsont (Requests.Response.json response)
4810 else
4811 let body = Requests.Response.text response in
4812 let parsed_body =
4813 match Jsont_bytesrw.decode_string Jsont.json body with
4814 | Ok json -> Some (Openapi.Runtime.Json json)
4815 | Error _ -> Some (Openapi.Runtime.Raw body)
4816 in
4817 raise (Openapi.Runtime.Api_error {
4818 operation = op_name;
4819 method_ = "GET";
4820 url;
4821 status = Requests.Response.status_code response;
4822 body;
4823 parsed_body;
4824 })
4825end
4826
4827module ServerMediaTypes = struct
4828 module Types = struct
4829 module ResponseDto = struct
4830 type t = {
4831 image : string list;
4832 sidecar : string list;
4833 video : string list;
4834 }
4835 end
4836 end
4837
4838 module ResponseDto = struct
4839 include Types.ResponseDto
4840
4841 let v ~image ~sidecar ~video () = { image; sidecar; video }
4842
4843 let image t = t.image
4844 let sidecar t = t.sidecar
4845 let video t = t.video
4846
4847 let jsont : t Jsont.t =
4848 Jsont.Object.map ~kind:"ServerMediaTypesResponseDto"
4849 (fun image sidecar video -> { image; sidecar; video })
4850 |> Jsont.Object.mem "image" (Jsont.list Jsont.string) ~enc:(fun r -> r.image)
4851 |> Jsont.Object.mem "sidecar" (Jsont.list Jsont.string) ~enc:(fun r -> r.sidecar)
4852 |> Jsont.Object.mem "video" (Jsont.list Jsont.string) ~enc:(fun r -> r.video)
4853 |> Jsont.Object.skip_unknown
4854 |> Jsont.Object.finish
4855 end
4856
4857 (** Get supported media types
4858
4859 Retrieve all media types supported by the server. *)
4860 let get_supported_media_types client () =
4861 let op_name = "get_supported_media_types" in
4862 let url_path = "/server/media-types" in
4863 let query = "" in
4864 let url = client.base_url ^ url_path ^ query in
4865 let response =
4866 try Requests.get client.session url
4867 with Eio.Io _ as ex ->
4868 let bt = Printexc.get_raw_backtrace () in
4869 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4870 in
4871 if Requests.Response.ok response then
4872 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
4873 else
4874 let body = Requests.Response.text response in
4875 let parsed_body =
4876 match Jsont_bytesrw.decode_string Jsont.json body with
4877 | Ok json -> Some (Openapi.Runtime.Json json)
4878 | Error _ -> Some (Openapi.Runtime.Raw body)
4879 in
4880 raise (Openapi.Runtime.Api_error {
4881 operation = op_name;
4882 method_ = "GET";
4883 url;
4884 status = Requests.Response.status_code response;
4885 body;
4886 parsed_body;
4887 })
4888end
4889
4890module ServerFeatures = struct
4891 module Types = struct
4892 module Dto = struct
4893 type t = {
4894 config_file : bool;
4895 duplicate_detection : bool;
4896 email : bool;
4897 facial_recognition : bool;
4898 import_faces : bool;
4899 map : bool;
4900 oauth : bool;
4901 oauth_auto_launch : bool;
4902 ocr : bool;
4903 password_login : bool;
4904 reverse_geocoding : bool;
4905 search : bool;
4906 sidecar : bool;
4907 smart_search : bool;
4908 trash : bool;
4909 }
4910 end
4911 end
4912
4913 module Dto = struct
4914 include Types.Dto
4915
4916 let v ~config_file ~duplicate_detection ~email ~facial_recognition ~import_faces ~map ~oauth ~oauth_auto_launch ~ocr ~password_login ~reverse_geocoding ~search ~sidecar ~smart_search ~trash () = { config_file; duplicate_detection; email; facial_recognition; import_faces; map; oauth; oauth_auto_launch; ocr; password_login; reverse_geocoding; search; sidecar; smart_search; trash }
4917
4918 let config_file t = t.config_file
4919 let duplicate_detection t = t.duplicate_detection
4920 let email t = t.email
4921 let facial_recognition t = t.facial_recognition
4922 let import_faces t = t.import_faces
4923 let map t = t.map
4924 let oauth t = t.oauth
4925 let oauth_auto_launch t = t.oauth_auto_launch
4926 let ocr t = t.ocr
4927 let password_login t = t.password_login
4928 let reverse_geocoding t = t.reverse_geocoding
4929 let search t = t.search
4930 let sidecar t = t.sidecar
4931 let smart_search t = t.smart_search
4932 let trash t = t.trash
4933
4934 let jsont : t Jsont.t =
4935 Jsont.Object.map ~kind:"ServerFeaturesDto"
4936 (fun config_file duplicate_detection email facial_recognition import_faces map oauth oauth_auto_launch ocr password_login reverse_geocoding search sidecar smart_search trash -> { config_file; duplicate_detection; email; facial_recognition; import_faces; map; oauth; oauth_auto_launch; ocr; password_login; reverse_geocoding; search; sidecar; smart_search; trash })
4937 |> Jsont.Object.mem "configFile" Jsont.bool ~enc:(fun r -> r.config_file)
4938 |> Jsont.Object.mem "duplicateDetection" Jsont.bool ~enc:(fun r -> r.duplicate_detection)
4939 |> Jsont.Object.mem "email" Jsont.bool ~enc:(fun r -> r.email)
4940 |> Jsont.Object.mem "facialRecognition" Jsont.bool ~enc:(fun r -> r.facial_recognition)
4941 |> Jsont.Object.mem "importFaces" Jsont.bool ~enc:(fun r -> r.import_faces)
4942 |> Jsont.Object.mem "map" Jsont.bool ~enc:(fun r -> r.map)
4943 |> Jsont.Object.mem "oauth" Jsont.bool ~enc:(fun r -> r.oauth)
4944 |> Jsont.Object.mem "oauthAutoLaunch" Jsont.bool ~enc:(fun r -> r.oauth_auto_launch)
4945 |> Jsont.Object.mem "ocr" Jsont.bool ~enc:(fun r -> r.ocr)
4946 |> Jsont.Object.mem "passwordLogin" Jsont.bool ~enc:(fun r -> r.password_login)
4947 |> Jsont.Object.mem "reverseGeocoding" Jsont.bool ~enc:(fun r -> r.reverse_geocoding)
4948 |> Jsont.Object.mem "search" Jsont.bool ~enc:(fun r -> r.search)
4949 |> Jsont.Object.mem "sidecar" Jsont.bool ~enc:(fun r -> r.sidecar)
4950 |> Jsont.Object.mem "smartSearch" Jsont.bool ~enc:(fun r -> r.smart_search)
4951 |> Jsont.Object.mem "trash" Jsont.bool ~enc:(fun r -> r.trash)
4952 |> Jsont.Object.skip_unknown
4953 |> Jsont.Object.finish
4954 end
4955
4956 (** Get features
4957
4958 Retrieve available features supported by this server. *)
4959 let get_server_features client () =
4960 let op_name = "get_server_features" in
4961 let url_path = "/server/features" in
4962 let query = "" in
4963 let url = client.base_url ^ url_path ^ query in
4964 let response =
4965 try Requests.get client.session url
4966 with Eio.Io _ as ex ->
4967 let bt = Printexc.get_raw_backtrace () in
4968 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
4969 in
4970 if Requests.Response.ok response then
4971 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
4972 else
4973 let body = Requests.Response.text response in
4974 let parsed_body =
4975 match Jsont_bytesrw.decode_string Jsont.json body with
4976 | Ok json -> Some (Openapi.Runtime.Json json)
4977 | Error _ -> Some (Openapi.Runtime.Raw body)
4978 in
4979 raise (Openapi.Runtime.Api_error {
4980 operation = op_name;
4981 method_ = "GET";
4982 url;
4983 status = Requests.Response.status_code response;
4984 body;
4985 parsed_body;
4986 })
4987end
4988
4989module ServerConfig = struct
4990 module Types = struct
4991 module Dto = struct
4992 type t = {
4993 external_domain : string;
4994 is_initialized : bool;
4995 is_onboarded : bool;
4996 login_page_message : string;
4997 maintenance_mode : bool;
4998 map_dark_style_url : string;
4999 map_light_style_url : string;
5000 oauth_button_text : string;
5001 public_users : bool;
5002 trash_days : int;
5003 user_delete_delay : int;
5004 }
5005 end
5006 end
5007
5008 module Dto = struct
5009 include Types.Dto
5010
5011 let v ~external_domain ~is_initialized ~is_onboarded ~login_page_message ~maintenance_mode ~map_dark_style_url ~map_light_style_url ~oauth_button_text ~public_users ~trash_days ~user_delete_delay () = { external_domain; is_initialized; is_onboarded; login_page_message; maintenance_mode; map_dark_style_url; map_light_style_url; oauth_button_text; public_users; trash_days; user_delete_delay }
5012
5013 let external_domain t = t.external_domain
5014 let is_initialized t = t.is_initialized
5015 let is_onboarded t = t.is_onboarded
5016 let login_page_message t = t.login_page_message
5017 let maintenance_mode t = t.maintenance_mode
5018 let map_dark_style_url t = t.map_dark_style_url
5019 let map_light_style_url t = t.map_light_style_url
5020 let oauth_button_text t = t.oauth_button_text
5021 let public_users t = t.public_users
5022 let trash_days t = t.trash_days
5023 let user_delete_delay t = t.user_delete_delay
5024
5025 let jsont : t Jsont.t =
5026 Jsont.Object.map ~kind:"ServerConfigDto"
5027 (fun external_domain is_initialized is_onboarded login_page_message maintenance_mode map_dark_style_url map_light_style_url oauth_button_text public_users trash_days user_delete_delay -> { external_domain; is_initialized; is_onboarded; login_page_message; maintenance_mode; map_dark_style_url; map_light_style_url; oauth_button_text; public_users; trash_days; user_delete_delay })
5028 |> Jsont.Object.mem "externalDomain" Jsont.string ~enc:(fun r -> r.external_domain)
5029 |> Jsont.Object.mem "isInitialized" Jsont.bool ~enc:(fun r -> r.is_initialized)
5030 |> Jsont.Object.mem "isOnboarded" Jsont.bool ~enc:(fun r -> r.is_onboarded)
5031 |> Jsont.Object.mem "loginPageMessage" Jsont.string ~enc:(fun r -> r.login_page_message)
5032 |> Jsont.Object.mem "maintenanceMode" Jsont.bool ~enc:(fun r -> r.maintenance_mode)
5033 |> Jsont.Object.mem "mapDarkStyleUrl" Jsont.string ~enc:(fun r -> r.map_dark_style_url)
5034 |> Jsont.Object.mem "mapLightStyleUrl" Jsont.string ~enc:(fun r -> r.map_light_style_url)
5035 |> Jsont.Object.mem "oauthButtonText" Jsont.string ~enc:(fun r -> r.oauth_button_text)
5036 |> Jsont.Object.mem "publicUsers" Jsont.bool ~enc:(fun r -> r.public_users)
5037 |> Jsont.Object.mem "trashDays" Jsont.int ~enc:(fun r -> r.trash_days)
5038 |> Jsont.Object.mem "userDeleteDelay" Jsont.int ~enc:(fun r -> r.user_delete_delay)
5039 |> Jsont.Object.skip_unknown
5040 |> Jsont.Object.finish
5041 end
5042
5043 (** Get config
5044
5045 Retrieve the current server configuration. *)
5046 let get_server_config client () =
5047 let op_name = "get_server_config" in
5048 let url_path = "/server/config" in
5049 let query = "" in
5050 let url = client.base_url ^ url_path ^ query in
5051 let response =
5052 try Requests.get client.session url
5053 with Eio.Io _ as ex ->
5054 let bt = Printexc.get_raw_backtrace () in
5055 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5056 in
5057 if Requests.Response.ok response then
5058 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
5059 else
5060 let body = Requests.Response.text response in
5061 let parsed_body =
5062 match Jsont_bytesrw.decode_string Jsont.json body with
5063 | Ok json -> Some (Openapi.Runtime.Json json)
5064 | Error _ -> Some (Openapi.Runtime.Raw body)
5065 in
5066 raise (Openapi.Runtime.Api_error {
5067 operation = op_name;
5068 method_ = "GET";
5069 url;
5070 status = Requests.Response.status_code response;
5071 body;
5072 parsed_body;
5073 })
5074end
5075
5076module ServerApkLinks = struct
5077 module Types = struct
5078 module Dto = struct
5079 type t = {
5080 arm64v8a : string;
5081 armeabiv7a : string;
5082 universal : string;
5083 x86_64 : string;
5084 }
5085 end
5086 end
5087
5088 module Dto = struct
5089 include Types.Dto
5090
5091 let v ~arm64v8a ~armeabiv7a ~universal ~x86_64 () = { arm64v8a; armeabiv7a; universal; x86_64 }
5092
5093 let arm64v8a t = t.arm64v8a
5094 let armeabiv7a t = t.armeabiv7a
5095 let universal t = t.universal
5096 let x86_64 t = t.x86_64
5097
5098 let jsont : t Jsont.t =
5099 Jsont.Object.map ~kind:"ServerApkLinksDto"
5100 (fun arm64v8a armeabiv7a universal x86_64 -> { arm64v8a; armeabiv7a; universal; x86_64 })
5101 |> Jsont.Object.mem "arm64v8a" Jsont.string ~enc:(fun r -> r.arm64v8a)
5102 |> Jsont.Object.mem "armeabiv7a" Jsont.string ~enc:(fun r -> r.armeabiv7a)
5103 |> Jsont.Object.mem "universal" Jsont.string ~enc:(fun r -> r.universal)
5104 |> Jsont.Object.mem "x86_64" Jsont.string ~enc:(fun r -> r.x86_64)
5105 |> Jsont.Object.skip_unknown
5106 |> Jsont.Object.finish
5107 end
5108
5109 (** Get APK links
5110
5111 Retrieve links to the APKs for the current server version. *)
5112 let get_apk_links client () =
5113 let op_name = "get_apk_links" in
5114 let url_path = "/server/apk-links" in
5115 let query = "" in
5116 let url = client.base_url ^ url_path ^ query in
5117 let response =
5118 try Requests.get client.session url
5119 with Eio.Io _ as ex ->
5120 let bt = Printexc.get_raw_backtrace () in
5121 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5122 in
5123 if Requests.Response.ok response then
5124 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
5125 else
5126 let body = Requests.Response.text response in
5127 let parsed_body =
5128 match Jsont_bytesrw.decode_string Jsont.json body with
5129 | Ok json -> Some (Openapi.Runtime.Json json)
5130 | Error _ -> Some (Openapi.Runtime.Raw body)
5131 in
5132 raise (Openapi.Runtime.Api_error {
5133 operation = op_name;
5134 method_ = "GET";
5135 url;
5136 status = Requests.Response.status_code response;
5137 body;
5138 parsed_body;
5139 })
5140end
5141
5142module ServerAbout = struct
5143 module Types = struct
5144 module ResponseDto = struct
5145 type t = {
5146 build : string option;
5147 build_image : string option;
5148 build_image_url : string option;
5149 build_url : string option;
5150 exiftool : string option;
5151 ffmpeg : string option;
5152 imagemagick : string option;
5153 libvips : string option;
5154 licensed : bool;
5155 nodejs : string option;
5156 repository : string option;
5157 repository_url : string option;
5158 source_commit : string option;
5159 source_ref : string option;
5160 source_url : string option;
5161 third_party_bug_feature_url : string option;
5162 third_party_documentation_url : string option;
5163 third_party_source_url : string option;
5164 third_party_support_url : string option;
5165 version : string;
5166 version_url : string;
5167 }
5168 end
5169 end
5170
5171 module ResponseDto = struct
5172 include Types.ResponseDto
5173
5174 let v ~licensed ~version ~version_url ?build ?build_image ?build_image_url ?build_url ?exiftool ?ffmpeg ?imagemagick ?libvips ?nodejs ?repository ?repository_url ?source_commit ?source_ref ?source_url ?third_party_bug_feature_url ?third_party_documentation_url ?third_party_source_url ?third_party_support_url () = { build; build_image; build_image_url; build_url; exiftool; ffmpeg; imagemagick; libvips; licensed; nodejs; repository; repository_url; source_commit; source_ref; source_url; third_party_bug_feature_url; third_party_documentation_url; third_party_source_url; third_party_support_url; version; version_url }
5175
5176 let build t = t.build
5177 let build_image t = t.build_image
5178 let build_image_url t = t.build_image_url
5179 let build_url t = t.build_url
5180 let exiftool t = t.exiftool
5181 let ffmpeg t = t.ffmpeg
5182 let imagemagick t = t.imagemagick
5183 let libvips t = t.libvips
5184 let licensed t = t.licensed
5185 let nodejs t = t.nodejs
5186 let repository t = t.repository
5187 let repository_url t = t.repository_url
5188 let source_commit t = t.source_commit
5189 let source_ref t = t.source_ref
5190 let source_url t = t.source_url
5191 let third_party_bug_feature_url t = t.third_party_bug_feature_url
5192 let third_party_documentation_url t = t.third_party_documentation_url
5193 let third_party_source_url t = t.third_party_source_url
5194 let third_party_support_url t = t.third_party_support_url
5195 let version t = t.version
5196 let version_url t = t.version_url
5197
5198 let jsont : t Jsont.t =
5199 Jsont.Object.map ~kind:"ServerAboutResponseDto"
5200 (fun build build_image build_image_url build_url exiftool ffmpeg imagemagick libvips licensed nodejs repository repository_url source_commit source_ref source_url third_party_bug_feature_url third_party_documentation_url third_party_source_url third_party_support_url version version_url -> { build; build_image; build_image_url; build_url; exiftool; ffmpeg; imagemagick; libvips; licensed; nodejs; repository; repository_url; source_commit; source_ref; source_url; third_party_bug_feature_url; third_party_documentation_url; third_party_source_url; third_party_support_url; version; version_url })
5201 |> Jsont.Object.opt_mem "build" Jsont.string ~enc:(fun r -> r.build)
5202 |> Jsont.Object.opt_mem "buildImage" Jsont.string ~enc:(fun r -> r.build_image)
5203 |> Jsont.Object.opt_mem "buildImageUrl" Jsont.string ~enc:(fun r -> r.build_image_url)
5204 |> Jsont.Object.opt_mem "buildUrl" Jsont.string ~enc:(fun r -> r.build_url)
5205 |> Jsont.Object.opt_mem "exiftool" Jsont.string ~enc:(fun r -> r.exiftool)
5206 |> Jsont.Object.opt_mem "ffmpeg" Jsont.string ~enc:(fun r -> r.ffmpeg)
5207 |> Jsont.Object.opt_mem "imagemagick" Jsont.string ~enc:(fun r -> r.imagemagick)
5208 |> Jsont.Object.opt_mem "libvips" Jsont.string ~enc:(fun r -> r.libvips)
5209 |> Jsont.Object.mem "licensed" Jsont.bool ~enc:(fun r -> r.licensed)
5210 |> Jsont.Object.opt_mem "nodejs" Jsont.string ~enc:(fun r -> r.nodejs)
5211 |> Jsont.Object.opt_mem "repository" Jsont.string ~enc:(fun r -> r.repository)
5212 |> Jsont.Object.opt_mem "repositoryUrl" Jsont.string ~enc:(fun r -> r.repository_url)
5213 |> Jsont.Object.opt_mem "sourceCommit" Jsont.string ~enc:(fun r -> r.source_commit)
5214 |> Jsont.Object.opt_mem "sourceRef" Jsont.string ~enc:(fun r -> r.source_ref)
5215 |> Jsont.Object.opt_mem "sourceUrl" Jsont.string ~enc:(fun r -> r.source_url)
5216 |> Jsont.Object.opt_mem "thirdPartyBugFeatureUrl" Jsont.string ~enc:(fun r -> r.third_party_bug_feature_url)
5217 |> Jsont.Object.opt_mem "thirdPartyDocumentationUrl" Jsont.string ~enc:(fun r -> r.third_party_documentation_url)
5218 |> Jsont.Object.opt_mem "thirdPartySourceUrl" Jsont.string ~enc:(fun r -> r.third_party_source_url)
5219 |> Jsont.Object.opt_mem "thirdPartySupportUrl" Jsont.string ~enc:(fun r -> r.third_party_support_url)
5220 |> Jsont.Object.mem "version" Jsont.string ~enc:(fun r -> r.version)
5221 |> Jsont.Object.mem "versionUrl" Jsont.string ~enc:(fun r -> r.version_url)
5222 |> Jsont.Object.skip_unknown
5223 |> Jsont.Object.finish
5224 end
5225
5226 (** Get server information
5227
5228 Retrieve a list of information about the server. *)
5229 let get_about_info client () =
5230 let op_name = "get_about_info" in
5231 let url_path = "/server/about" in
5232 let query = "" in
5233 let url = client.base_url ^ url_path ^ query in
5234 let response =
5235 try Requests.get client.session url
5236 with Eio.Io _ as ex ->
5237 let bt = Printexc.get_raw_backtrace () in
5238 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5239 in
5240 if Requests.Response.ok response then
5241 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5242 else
5243 let body = Requests.Response.text response in
5244 let parsed_body =
5245 match Jsont_bytesrw.decode_string Jsont.json body with
5246 | Ok json -> Some (Openapi.Runtime.Json json)
5247 | Error _ -> Some (Openapi.Runtime.Raw body)
5248 in
5249 raise (Openapi.Runtime.Api_error {
5250 operation = op_name;
5251 method_ = "GET";
5252 url;
5253 status = Requests.Response.status_code response;
5254 body;
5255 parsed_body;
5256 })
5257end
5258
5259module SearchSuggestion = struct
5260 module Types = struct
5261 module Type = struct
5262 type t = [
5263 | `Country
5264 | `State
5265 | `City
5266 | `Camera_make
5267 | `Camera_model
5268 | `Camera_lens_model
5269 ]
5270 end
5271 end
5272
5273 module Type = struct
5274 include Types.Type
5275
5276 let jsont : t Jsont.t =
5277 Jsont.map Jsont.string ~kind:"SearchSuggestionType"
5278 ~dec:(function
5279 | "country" -> `Country
5280 | "state" -> `State
5281 | "city" -> `City
5282 | "camera-make" -> `Camera_make
5283 | "camera-model" -> `Camera_model
5284 | "camera-lens-model" -> `Camera_lens_model
5285 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
5286 ~enc:(function
5287 | `Country -> "country"
5288 | `State -> "state"
5289 | `City -> "city"
5290 | `Camera_make -> "camera-make"
5291 | `Camera_model -> "camera-model"
5292 | `Camera_lens_model -> "camera-lens-model")
5293 end
5294end
5295
5296module SearchFacetCount = struct
5297 module Types = struct
5298 module ResponseDto = struct
5299 type t = {
5300 count : int;
5301 value : string;
5302 }
5303 end
5304 end
5305
5306 module ResponseDto = struct
5307 include Types.ResponseDto
5308
5309 let v ~count ~value () = { count; value }
5310
5311 let count t = t.count
5312 let value t = t.value
5313
5314 let jsont : t Jsont.t =
5315 Jsont.Object.map ~kind:"SearchFacetCountResponseDto"
5316 (fun count value -> { count; value })
5317 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
5318 |> Jsont.Object.mem "value" Jsont.string ~enc:(fun r -> r.value)
5319 |> Jsont.Object.skip_unknown
5320 |> Jsont.Object.finish
5321 end
5322end
5323
5324module SearchFacet = struct
5325 module Types = struct
5326 module ResponseDto = struct
5327 type t = {
5328 counts : SearchFacetCount.ResponseDto.t list;
5329 field_name : string;
5330 }
5331 end
5332 end
5333
5334 module ResponseDto = struct
5335 include Types.ResponseDto
5336
5337 let v ~counts ~field_name () = { counts; field_name }
5338
5339 let counts t = t.counts
5340 let field_name t = t.field_name
5341
5342 let jsont : t Jsont.t =
5343 Jsont.Object.map ~kind:"SearchFacetResponseDto"
5344 (fun counts field_name -> { counts; field_name })
5345 |> Jsont.Object.mem "counts" (Jsont.list SearchFacetCount.ResponseDto.jsont) ~enc:(fun r -> r.counts)
5346 |> Jsont.Object.mem "fieldName" Jsont.string ~enc:(fun r -> r.field_name)
5347 |> Jsont.Object.skip_unknown
5348 |> Jsont.Object.finish
5349 end
5350end
5351
5352module RotateParameters = struct
5353 module Types = struct
5354 module T = struct
5355 type t = {
5356 angle : float; (** Rotation angle in degrees *)
5357 }
5358 end
5359 end
5360
5361 module T = struct
5362 include Types.T
5363
5364 let v ~angle () = { angle }
5365
5366 let angle t = t.angle
5367
5368 let jsont : t Jsont.t =
5369 Jsont.Object.map ~kind:"RotateParameters"
5370 (fun angle -> { angle })
5371 |> Jsont.Object.mem "angle" Jsont.number ~enc:(fun r -> r.angle)
5372 |> Jsont.Object.skip_unknown
5373 |> Jsont.Object.finish
5374 end
5375end
5376
5377module ReverseGeocodingState = struct
5378 module Types = struct
5379 module ResponseDto = struct
5380 type t = {
5381 last_import_file_name : string option;
5382 last_update : string option;
5383 }
5384 end
5385 end
5386
5387 module ResponseDto = struct
5388 include Types.ResponseDto
5389
5390 let v ?last_import_file_name ?last_update () = { last_import_file_name; last_update }
5391
5392 let last_import_file_name t = t.last_import_file_name
5393 let last_update t = t.last_update
5394
5395 let jsont : t Jsont.t =
5396 Jsont.Object.map ~kind:"ReverseGeocodingStateResponseDto"
5397 (fun last_import_file_name last_update -> { last_import_file_name; last_update })
5398 |> Jsont.Object.mem "lastImportFileName" Openapi.Runtime.nullable_string
5399 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.last_import_file_name)
5400 |> Jsont.Object.mem "lastUpdate" Openapi.Runtime.nullable_string
5401 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.last_update)
5402 |> Jsont.Object.skip_unknown
5403 |> Jsont.Object.finish
5404 end
5405
5406 (** Retrieve reverse geocoding state
5407
5408 Retrieve the current state of the reverse geocoding import. *)
5409 let get_reverse_geocoding_state client () =
5410 let op_name = "get_reverse_geocoding_state" in
5411 let url_path = "/system-metadata/reverse-geocoding-state" in
5412 let query = "" in
5413 let url = client.base_url ^ url_path ^ query in
5414 let response =
5415 try Requests.get client.session url
5416 with Eio.Io _ as ex ->
5417 let bt = Printexc.get_raw_backtrace () in
5418 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5419 in
5420 if Requests.Response.ok response then
5421 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5422 else
5423 let body = Requests.Response.text response in
5424 let parsed_body =
5425 match Jsont_bytesrw.decode_string Jsont.json body with
5426 | Ok json -> Some (Openapi.Runtime.Json json)
5427 | Error _ -> Some (Openapi.Runtime.Raw body)
5428 in
5429 raise (Openapi.Runtime.Api_error {
5430 operation = op_name;
5431 method_ = "GET";
5432 url;
5433 status = Requests.Response.status_code response;
5434 body;
5435 parsed_body;
5436 })
5437end
5438
5439module ReactionLevel = struct
5440 module Types = struct
5441 module T = struct
5442 type t = [
5443 | `Album
5444 | `Asset
5445 ]
5446 end
5447 end
5448
5449 module T = struct
5450 include Types.T
5451
5452 let jsont : t Jsont.t =
5453 Jsont.map Jsont.string ~kind:"ReactionLevel"
5454 ~dec:(function
5455 | "album" -> `Album
5456 | "asset" -> `Asset
5457 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
5458 ~enc:(function
5459 | `Album -> "album"
5460 | `Asset -> "asset")
5461 end
5462end
5463
5464module Reaction = struct
5465 module Types = struct
5466 module Type = struct
5467 type t = [
5468 | `Comment
5469 | `Like
5470 ]
5471 end
5472 end
5473
5474 module Type = struct
5475 include Types.Type
5476
5477 let jsont : t Jsont.t =
5478 Jsont.map Jsont.string ~kind:"ReactionType"
5479 ~dec:(function
5480 | "comment" -> `Comment
5481 | "like" -> `Like
5482 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
5483 ~enc:(function
5484 | `Comment -> "comment"
5485 | `Like -> "like")
5486 end
5487end
5488
5489module Activity = struct
5490 module Types = struct
5491 module ResponseDto = struct
5492 type t = {
5493 asset_id : string option;
5494 comment : string option;
5495 created_at : Ptime.t;
5496 id : string;
5497 type_ : Reaction.Type.t;
5498 user : User.ResponseDto.t;
5499 }
5500 end
5501
5502 module CreateDto = struct
5503 type t = {
5504 album_id : string;
5505 asset_id : string option;
5506 comment : string option;
5507 type_ : Reaction.Type.t;
5508 }
5509 end
5510 end
5511
5512 module ResponseDto = struct
5513 include Types.ResponseDto
5514
5515 let v ~created_at ~id ~type_ ~user ?asset_id ?comment () = { asset_id; comment; created_at; id; type_; user }
5516
5517 let asset_id t = t.asset_id
5518 let comment t = t.comment
5519 let created_at t = t.created_at
5520 let id t = t.id
5521 let type_ t = t.type_
5522 let user t = t.user
5523
5524 let jsont : t Jsont.t =
5525 Jsont.Object.map ~kind:"ActivityResponseDto"
5526 (fun asset_id comment created_at id type_ user -> { asset_id; comment; created_at; id; type_; user })
5527 |> Jsont.Object.mem "assetId" Openapi.Runtime.nullable_string
5528 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.asset_id)
5529 |> Jsont.Object.mem "comment" Openapi.Runtime.nullable_string
5530 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.comment)
5531 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
5532 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
5533 |> Jsont.Object.mem "type" Reaction.Type.jsont ~enc:(fun r -> r.type_)
5534 |> Jsont.Object.mem "user" User.ResponseDto.jsont ~enc:(fun r -> r.user)
5535 |> Jsont.Object.skip_unknown
5536 |> Jsont.Object.finish
5537 end
5538
5539 module CreateDto = struct
5540 include Types.CreateDto
5541
5542 let v ~album_id ~type_ ?asset_id ?comment () = { album_id; asset_id; comment; type_ }
5543
5544 let album_id t = t.album_id
5545 let asset_id t = t.asset_id
5546 let comment t = t.comment
5547 let type_ t = t.type_
5548
5549 let jsont : t Jsont.t =
5550 Jsont.Object.map ~kind:"ActivityCreateDto"
5551 (fun album_id asset_id comment type_ -> { album_id; asset_id; comment; type_ })
5552 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
5553 |> Jsont.Object.opt_mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
5554 |> Jsont.Object.opt_mem "comment" Jsont.string ~enc:(fun r -> r.comment)
5555 |> Jsont.Object.mem "type" Reaction.Type.jsont ~enc:(fun r -> r.type_)
5556 |> Jsont.Object.skip_unknown
5557 |> Jsont.Object.finish
5558 end
5559
5560 (** List all activities
5561
5562 Returns a list of activities for the selected asset or album. The activities are returned in sorted order, with the oldest activities appearing first. *)
5563 let get_activities ~album_id ?asset_id ?level ?type_ ?user_id client () =
5564 let op_name = "get_activities" in
5565 let url_path = "/activities" in
5566 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"albumId" ~value:album_id; Openapi.Runtime.Query.optional ~key:"assetId" ~value:asset_id; Openapi.Runtime.Query.optional ~key:"level" ~value:level; Openapi.Runtime.Query.optional ~key:"type" ~value:type_; Openapi.Runtime.Query.optional ~key:"userId" ~value:user_id]) in
5567 let url = client.base_url ^ url_path ^ query in
5568 let response =
5569 try Requests.get client.session url
5570 with Eio.Io _ as ex ->
5571 let bt = Printexc.get_raw_backtrace () in
5572 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5573 in
5574 if Requests.Response.ok response then
5575 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5576 else
5577 let body = Requests.Response.text response in
5578 let parsed_body =
5579 match Jsont_bytesrw.decode_string Jsont.json body with
5580 | Ok json -> Some (Openapi.Runtime.Json json)
5581 | Error _ -> Some (Openapi.Runtime.Raw body)
5582 in
5583 raise (Openapi.Runtime.Api_error {
5584 operation = op_name;
5585 method_ = "GET";
5586 url;
5587 status = Requests.Response.status_code response;
5588 body;
5589 parsed_body;
5590 })
5591
5592 (** Create an activity
5593
5594 Create a like or a comment for an album, or an asset in an album. *)
5595 let create_activity ~body client () =
5596 let op_name = "create_activity" in
5597 let url_path = "/activities" in
5598 let query = "" in
5599 let url = client.base_url ^ url_path ^ query in
5600 let response =
5601 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
5602 with Eio.Io _ as ex ->
5603 let bt = Printexc.get_raw_backtrace () in
5604 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
5605 in
5606 if Requests.Response.ok response then
5607 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5608 else
5609 let body = Requests.Response.text response in
5610 let parsed_body =
5611 match Jsont_bytesrw.decode_string Jsont.json body with
5612 | Ok json -> Some (Openapi.Runtime.Json json)
5613 | Error _ -> Some (Openapi.Runtime.Raw body)
5614 in
5615 raise (Openapi.Runtime.Api_error {
5616 operation = op_name;
5617 method_ = "POST";
5618 url;
5619 status = Requests.Response.status_code response;
5620 body;
5621 parsed_body;
5622 })
5623end
5624
5625module Ratings = struct
5626 module Types = struct
5627 module Update = struct
5628 type t = {
5629 enabled : bool option;
5630 }
5631 end
5632
5633 module Response = struct
5634 type t = {
5635 enabled : bool;
5636 }
5637 end
5638 end
5639
5640 module Update = struct
5641 include Types.Update
5642
5643 let v ?enabled () = { enabled }
5644
5645 let enabled t = t.enabled
5646
5647 let jsont : t Jsont.t =
5648 Jsont.Object.map ~kind:"RatingsUpdate"
5649 (fun enabled -> { enabled })
5650 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
5651 |> Jsont.Object.skip_unknown
5652 |> Jsont.Object.finish
5653 end
5654
5655 module Response = struct
5656 include Types.Response
5657
5658 let v ?(enabled=false) () = { enabled }
5659
5660 let enabled t = t.enabled
5661
5662 let jsont : t Jsont.t =
5663 Jsont.Object.map ~kind:"RatingsResponse"
5664 (fun enabled -> { enabled })
5665 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.enabled)
5666 |> Jsont.Object.skip_unknown
5667 |> Jsont.Object.finish
5668 end
5669end
5670
5671module QueueStatusLegacy = struct
5672 module Types = struct
5673 module Dto = struct
5674 type t = {
5675 is_active : bool;
5676 is_paused : bool;
5677 }
5678 end
5679 end
5680
5681 module Dto = struct
5682 include Types.Dto
5683
5684 let v ~is_active ~is_paused () = { is_active; is_paused }
5685
5686 let is_active t = t.is_active
5687 let is_paused t = t.is_paused
5688
5689 let jsont : t Jsont.t =
5690 Jsont.Object.map ~kind:"QueueStatusLegacyDto"
5691 (fun is_active is_paused -> { is_active; is_paused })
5692 |> Jsont.Object.mem "isActive" Jsont.bool ~enc:(fun r -> r.is_active)
5693 |> Jsont.Object.mem "isPaused" Jsont.bool ~enc:(fun r -> r.is_paused)
5694 |> Jsont.Object.skip_unknown
5695 |> Jsont.Object.finish
5696 end
5697end
5698
5699module QueueStatistics = struct
5700 module Types = struct
5701 module Dto = struct
5702 type t = {
5703 active : int;
5704 completed : int;
5705 delayed : int;
5706 failed : int;
5707 paused : int;
5708 waiting : int;
5709 }
5710 end
5711 end
5712
5713 module Dto = struct
5714 include Types.Dto
5715
5716 let v ~active ~completed ~delayed ~failed ~paused ~waiting () = { active; completed; delayed; failed; paused; waiting }
5717
5718 let active t = t.active
5719 let completed t = t.completed
5720 let delayed t = t.delayed
5721 let failed t = t.failed
5722 let paused t = t.paused
5723 let waiting t = t.waiting
5724
5725 let jsont : t Jsont.t =
5726 Jsont.Object.map ~kind:"QueueStatisticsDto"
5727 (fun active completed delayed failed paused waiting -> { active; completed; delayed; failed; paused; waiting })
5728 |> Jsont.Object.mem "active" Jsont.int ~enc:(fun r -> r.active)
5729 |> Jsont.Object.mem "completed" Jsont.int ~enc:(fun r -> r.completed)
5730 |> Jsont.Object.mem "delayed" Jsont.int ~enc:(fun r -> r.delayed)
5731 |> Jsont.Object.mem "failed" Jsont.int ~enc:(fun r -> r.failed)
5732 |> Jsont.Object.mem "paused" Jsont.int ~enc:(fun r -> r.paused)
5733 |> Jsont.Object.mem "waiting" Jsont.int ~enc:(fun r -> r.waiting)
5734 |> Jsont.Object.skip_unknown
5735 |> Jsont.Object.finish
5736 end
5737end
5738
5739module QueueName = struct
5740 module Types = struct
5741 module T = struct
5742 type t = [
5743 | `Thumbnail_generation
5744 | `Metadata_extraction
5745 | `Video_conversion
5746 | `Face_detection
5747 | `Facial_recognition
5748 | `Smart_search
5749 | `Duplicate_detection
5750 | `Background_task
5751 | `Storage_template_migration
5752 | `Migration
5753 | `Search
5754 | `Sidecar
5755 | `Library
5756 | `Notifications
5757 | `Backup_database
5758 | `Ocr
5759 | `Workflow
5760 | `Editor
5761 ]
5762 end
5763 end
5764
5765 module T = struct
5766 include Types.T
5767
5768 let jsont : t Jsont.t =
5769 Jsont.map Jsont.string ~kind:"QueueName"
5770 ~dec:(function
5771 | "thumbnailGeneration" -> `Thumbnail_generation
5772 | "metadataExtraction" -> `Metadata_extraction
5773 | "videoConversion" -> `Video_conversion
5774 | "faceDetection" -> `Face_detection
5775 | "facialRecognition" -> `Facial_recognition
5776 | "smartSearch" -> `Smart_search
5777 | "duplicateDetection" -> `Duplicate_detection
5778 | "backgroundTask" -> `Background_task
5779 | "storageTemplateMigration" -> `Storage_template_migration
5780 | "migration" -> `Migration
5781 | "search" -> `Search
5782 | "sidecar" -> `Sidecar
5783 | "library" -> `Library
5784 | "notifications" -> `Notifications
5785 | "backupDatabase" -> `Backup_database
5786 | "ocr" -> `Ocr
5787 | "workflow" -> `Workflow
5788 | "editor" -> `Editor
5789 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
5790 ~enc:(function
5791 | `Thumbnail_generation -> "thumbnailGeneration"
5792 | `Metadata_extraction -> "metadataExtraction"
5793 | `Video_conversion -> "videoConversion"
5794 | `Face_detection -> "faceDetection"
5795 | `Facial_recognition -> "facialRecognition"
5796 | `Smart_search -> "smartSearch"
5797 | `Duplicate_detection -> "duplicateDetection"
5798 | `Background_task -> "backgroundTask"
5799 | `Storage_template_migration -> "storageTemplateMigration"
5800 | `Migration -> "migration"
5801 | `Search -> "search"
5802 | `Sidecar -> "sidecar"
5803 | `Library -> "library"
5804 | `Notifications -> "notifications"
5805 | `Backup_database -> "backupDatabase"
5806 | `Ocr -> "ocr"
5807 | `Workflow -> "workflow"
5808 | `Editor -> "editor")
5809 end
5810end
5811
5812module Queue = struct
5813 module Types = struct
5814 module UpdateDto = struct
5815 type t = {
5816 is_paused : bool option;
5817 }
5818 end
5819
5820 module ResponseDto = struct
5821 type t = {
5822 is_paused : bool;
5823 name : QueueName.T.t;
5824 statistics : QueueStatistics.Dto.t;
5825 }
5826 end
5827 end
5828
5829 module UpdateDto = struct
5830 include Types.UpdateDto
5831
5832 let v ?is_paused () = { is_paused }
5833
5834 let is_paused t = t.is_paused
5835
5836 let jsont : t Jsont.t =
5837 Jsont.Object.map ~kind:"QueueUpdateDto"
5838 (fun is_paused -> { is_paused })
5839 |> Jsont.Object.opt_mem "isPaused" Jsont.bool ~enc:(fun r -> r.is_paused)
5840 |> Jsont.Object.skip_unknown
5841 |> Jsont.Object.finish
5842 end
5843
5844 module ResponseDto = struct
5845 include Types.ResponseDto
5846
5847 let v ~is_paused ~name ~statistics () = { is_paused; name; statistics }
5848
5849 let is_paused t = t.is_paused
5850 let name t = t.name
5851 let statistics t = t.statistics
5852
5853 let jsont : t Jsont.t =
5854 Jsont.Object.map ~kind:"QueueResponseDto"
5855 (fun is_paused name statistics -> { is_paused; name; statistics })
5856 |> Jsont.Object.mem "isPaused" Jsont.bool ~enc:(fun r -> r.is_paused)
5857 |> Jsont.Object.mem "name" QueueName.T.jsont ~enc:(fun r -> r.name)
5858 |> Jsont.Object.mem "statistics" QueueStatistics.Dto.jsont ~enc:(fun r -> r.statistics)
5859 |> Jsont.Object.skip_unknown
5860 |> Jsont.Object.finish
5861 end
5862
5863 (** List all queues
5864
5865 Retrieves a list of queues. *)
5866 let get_queues client () =
5867 let op_name = "get_queues" in
5868 let url_path = "/queues" in
5869 let query = "" in
5870 let url = client.base_url ^ url_path ^ query in
5871 let response =
5872 try Requests.get client.session url
5873 with Eio.Io _ as ex ->
5874 let bt = Printexc.get_raw_backtrace () in
5875 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5876 in
5877 if Requests.Response.ok response then
5878 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5879 else
5880 let body = Requests.Response.text response in
5881 let parsed_body =
5882 match Jsont_bytesrw.decode_string Jsont.json body with
5883 | Ok json -> Some (Openapi.Runtime.Json json)
5884 | Error _ -> Some (Openapi.Runtime.Raw body)
5885 in
5886 raise (Openapi.Runtime.Api_error {
5887 operation = op_name;
5888 method_ = "GET";
5889 url;
5890 status = Requests.Response.status_code response;
5891 body;
5892 parsed_body;
5893 })
5894
5895 (** Retrieve a queue
5896
5897 Retrieves a specific queue by its name. *)
5898 let get_queue ~name client () =
5899 let op_name = "get_queue" in
5900 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/queues/{name}" in
5901 let query = "" in
5902 let url = client.base_url ^ url_path ^ query in
5903 let response =
5904 try Requests.get client.session url
5905 with Eio.Io _ as ex ->
5906 let bt = Printexc.get_raw_backtrace () in
5907 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
5908 in
5909 if Requests.Response.ok response then
5910 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5911 else
5912 let body = Requests.Response.text response in
5913 let parsed_body =
5914 match Jsont_bytesrw.decode_string Jsont.json body with
5915 | Ok json -> Some (Openapi.Runtime.Json json)
5916 | Error _ -> Some (Openapi.Runtime.Raw body)
5917 in
5918 raise (Openapi.Runtime.Api_error {
5919 operation = op_name;
5920 method_ = "GET";
5921 url;
5922 status = Requests.Response.status_code response;
5923 body;
5924 parsed_body;
5925 })
5926
5927 (** Update a queue
5928
5929 Change the paused status of a specific queue. *)
5930 let update_queue ~name ~body client () =
5931 let op_name = "update_queue" in
5932 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/queues/{name}" in
5933 let query = "" in
5934 let url = client.base_url ^ url_path ^ query in
5935 let response =
5936 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
5937 with Eio.Io _ as ex ->
5938 let bt = Printexc.get_raw_backtrace () in
5939 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
5940 in
5941 if Requests.Response.ok response then
5942 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
5943 else
5944 let body = Requests.Response.text response in
5945 let parsed_body =
5946 match Jsont_bytesrw.decode_string Jsont.json body with
5947 | Ok json -> Some (Openapi.Runtime.Json json)
5948 | Error _ -> Some (Openapi.Runtime.Raw body)
5949 in
5950 raise (Openapi.Runtime.Api_error {
5951 operation = op_name;
5952 method_ = "PUT";
5953 url;
5954 status = Requests.Response.status_code response;
5955 body;
5956 parsed_body;
5957 })
5958end
5959
5960module QueueDelete = struct
5961 module Types = struct
5962 module Dto = struct
5963 type t = {
5964 failed : bool option; (** If true, will also remove failed jobs from the queue. *)
5965 }
5966 end
5967 end
5968
5969 module Dto = struct
5970 include Types.Dto
5971
5972 let v ?failed () = { failed }
5973
5974 let failed t = t.failed
5975
5976 let jsont : t Jsont.t =
5977 Jsont.Object.map ~kind:"QueueDeleteDto"
5978 (fun failed -> { failed })
5979 |> Jsont.Object.opt_mem "failed" Jsont.bool ~enc:(fun r -> r.failed)
5980 |> Jsont.Object.skip_unknown
5981 |> Jsont.Object.finish
5982 end
5983end
5984
5985module QueueCommand = struct
5986 module Types = struct
5987 module T = struct
5988 type t = [
5989 | `Start
5990 | `Pause
5991 | `Resume
5992 | `Empty
5993 | `Clear_failed
5994 ]
5995 end
5996
5997 module Dto = struct
5998 type t = {
5999 command : T.t;
6000 force : bool option;
6001 }
6002 end
6003 end
6004
6005 module T = struct
6006 include Types.T
6007
6008 let jsont : t Jsont.t =
6009 Jsont.map Jsont.string ~kind:"QueueCommand"
6010 ~dec:(function
6011 | "start" -> `Start
6012 | "pause" -> `Pause
6013 | "resume" -> `Resume
6014 | "empty" -> `Empty
6015 | "clear-failed" -> `Clear_failed
6016 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
6017 ~enc:(function
6018 | `Start -> "start"
6019 | `Pause -> "pause"
6020 | `Resume -> "resume"
6021 | `Empty -> "empty"
6022 | `Clear_failed -> "clear-failed")
6023 end
6024
6025 module Dto = struct
6026 include Types.Dto
6027
6028 let v ~command ?force () = { command; force }
6029
6030 let command t = t.command
6031 let force t = t.force
6032
6033 let jsont : t Jsont.t =
6034 Jsont.Object.map ~kind:"QueueCommandDto"
6035 (fun command force -> { command; force })
6036 |> Jsont.Object.mem "command" T.jsont ~enc:(fun r -> r.command)
6037 |> Jsont.Object.opt_mem "force" Jsont.bool ~enc:(fun r -> r.force)
6038 |> Jsont.Object.skip_unknown
6039 |> Jsont.Object.finish
6040 end
6041end
6042
6043module QueueResponseLegacy = struct
6044 module Types = struct
6045 module Dto = struct
6046 type t = {
6047 job_counts : QueueStatistics.Dto.t;
6048 queue_status : QueueStatusLegacy.Dto.t;
6049 }
6050 end
6051 end
6052
6053 module Dto = struct
6054 include Types.Dto
6055
6056 let v ~job_counts ~queue_status () = { job_counts; queue_status }
6057
6058 let job_counts t = t.job_counts
6059 let queue_status t = t.queue_status
6060
6061 let jsont : t Jsont.t =
6062 Jsont.Object.map ~kind:"QueueResponseLegacyDto"
6063 (fun job_counts queue_status -> { job_counts; queue_status })
6064 |> Jsont.Object.mem "jobCounts" QueueStatistics.Dto.jsont ~enc:(fun r -> r.job_counts)
6065 |> Jsont.Object.mem "queueStatus" QueueStatusLegacy.Dto.jsont ~enc:(fun r -> r.queue_status)
6066 |> Jsont.Object.skip_unknown
6067 |> Jsont.Object.finish
6068 end
6069
6070 (** Run jobs
6071
6072 Queue all assets for a specific job type. Defaults to only queueing assets that have not yet been processed, but the force command can be used to re-process all assets. *)
6073 let run_queue_command_legacy ~name ~body client () =
6074 let op_name = "run_queue_command_legacy" in
6075 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/jobs/{name}" in
6076 let query = "" in
6077 let url = client.base_url ^ url_path ^ query in
6078 let response =
6079 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json QueueCommand.Dto.jsont body)) url
6080 with Eio.Io _ as ex ->
6081 let bt = Printexc.get_raw_backtrace () in
6082 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
6083 in
6084 if Requests.Response.ok response then
6085 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
6086 else
6087 let body = Requests.Response.text response in
6088 let parsed_body =
6089 match Jsont_bytesrw.decode_string Jsont.json body with
6090 | Ok json -> Some (Openapi.Runtime.Json json)
6091 | Error _ -> Some (Openapi.Runtime.Raw body)
6092 in
6093 raise (Openapi.Runtime.Api_error {
6094 operation = op_name;
6095 method_ = "PUT";
6096 url;
6097 status = Requests.Response.status_code response;
6098 body;
6099 parsed_body;
6100 })
6101end
6102
6103module QueuesResponseLegacy = struct
6104 module Types = struct
6105 module Dto = struct
6106 type t = {
6107 background_task : QueueResponseLegacy.Dto.t;
6108 backup_database : QueueResponseLegacy.Dto.t;
6109 duplicate_detection : QueueResponseLegacy.Dto.t;
6110 editor : QueueResponseLegacy.Dto.t;
6111 face_detection : QueueResponseLegacy.Dto.t;
6112 facial_recognition : QueueResponseLegacy.Dto.t;
6113 library : QueueResponseLegacy.Dto.t;
6114 metadata_extraction : QueueResponseLegacy.Dto.t;
6115 migration : QueueResponseLegacy.Dto.t;
6116 notifications : QueueResponseLegacy.Dto.t;
6117 ocr : QueueResponseLegacy.Dto.t;
6118 search : QueueResponseLegacy.Dto.t;
6119 sidecar : QueueResponseLegacy.Dto.t;
6120 smart_search : QueueResponseLegacy.Dto.t;
6121 storage_template_migration : QueueResponseLegacy.Dto.t;
6122 thumbnail_generation : QueueResponseLegacy.Dto.t;
6123 video_conversion : QueueResponseLegacy.Dto.t;
6124 workflow : QueueResponseLegacy.Dto.t;
6125 }
6126 end
6127 end
6128
6129 module Dto = struct
6130 include Types.Dto
6131
6132 let v ~background_task ~backup_database ~duplicate_detection ~editor ~face_detection ~facial_recognition ~library ~metadata_extraction ~migration ~notifications ~ocr ~search ~sidecar ~smart_search ~storage_template_migration ~thumbnail_generation ~video_conversion ~workflow () = { background_task; backup_database; duplicate_detection; editor; face_detection; facial_recognition; library; metadata_extraction; migration; notifications; ocr; search; sidecar; smart_search; storage_template_migration; thumbnail_generation; video_conversion; workflow }
6133
6134 let background_task t = t.background_task
6135 let backup_database t = t.backup_database
6136 let duplicate_detection t = t.duplicate_detection
6137 let editor t = t.editor
6138 let face_detection t = t.face_detection
6139 let facial_recognition t = t.facial_recognition
6140 let library t = t.library
6141 let metadata_extraction t = t.metadata_extraction
6142 let migration t = t.migration
6143 let notifications t = t.notifications
6144 let ocr t = t.ocr
6145 let search t = t.search
6146 let sidecar t = t.sidecar
6147 let smart_search t = t.smart_search
6148 let storage_template_migration t = t.storage_template_migration
6149 let thumbnail_generation t = t.thumbnail_generation
6150 let video_conversion t = t.video_conversion
6151 let workflow t = t.workflow
6152
6153 let jsont : t Jsont.t =
6154 Jsont.Object.map ~kind:"QueuesResponseLegacyDto"
6155 (fun background_task backup_database duplicate_detection editor face_detection facial_recognition library metadata_extraction migration notifications ocr search sidecar smart_search storage_template_migration thumbnail_generation video_conversion workflow -> { background_task; backup_database; duplicate_detection; editor; face_detection; facial_recognition; library; metadata_extraction; migration; notifications; ocr; search; sidecar; smart_search; storage_template_migration; thumbnail_generation; video_conversion; workflow })
6156 |> Jsont.Object.mem "backgroundTask" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.background_task)
6157 |> Jsont.Object.mem "backupDatabase" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.backup_database)
6158 |> Jsont.Object.mem "duplicateDetection" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.duplicate_detection)
6159 |> Jsont.Object.mem "editor" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.editor)
6160 |> Jsont.Object.mem "faceDetection" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.face_detection)
6161 |> Jsont.Object.mem "facialRecognition" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.facial_recognition)
6162 |> Jsont.Object.mem "library" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.library)
6163 |> Jsont.Object.mem "metadataExtraction" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.metadata_extraction)
6164 |> Jsont.Object.mem "migration" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.migration)
6165 |> Jsont.Object.mem "notifications" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.notifications)
6166 |> Jsont.Object.mem "ocr" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.ocr)
6167 |> Jsont.Object.mem "search" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.search)
6168 |> Jsont.Object.mem "sidecar" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.sidecar)
6169 |> Jsont.Object.mem "smartSearch" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.smart_search)
6170 |> Jsont.Object.mem "storageTemplateMigration" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.storage_template_migration)
6171 |> Jsont.Object.mem "thumbnailGeneration" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.thumbnail_generation)
6172 |> Jsont.Object.mem "videoConversion" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.video_conversion)
6173 |> Jsont.Object.mem "workflow" QueueResponseLegacy.Dto.jsont ~enc:(fun r -> r.workflow)
6174 |> Jsont.Object.skip_unknown
6175 |> Jsont.Object.finish
6176 end
6177
6178 (** Retrieve queue counts and status
6179
6180 Retrieve the counts of the current queue, as well as the current status. *)
6181 let get_queues_legacy client () =
6182 let op_name = "get_queues_legacy" in
6183 let url_path = "/jobs" in
6184 let query = "" in
6185 let url = client.base_url ^ url_path ^ query in
6186 let response =
6187 try Requests.get client.session url
6188 with Eio.Io _ as ex ->
6189 let bt = Printexc.get_raw_backtrace () in
6190 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6191 in
6192 if Requests.Response.ok response then
6193 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
6194 else
6195 let body = Requests.Response.text response in
6196 let parsed_body =
6197 match Jsont_bytesrw.decode_string Jsont.json body with
6198 | Ok json -> Some (Openapi.Runtime.Json json)
6199 | Error _ -> Some (Openapi.Runtime.Raw body)
6200 in
6201 raise (Openapi.Runtime.Api_error {
6202 operation = op_name;
6203 method_ = "GET";
6204 url;
6205 status = Requests.Response.status_code response;
6206 body;
6207 parsed_body;
6208 })
6209end
6210
6211module Purchase = struct
6212 module Types = struct
6213 module Update = struct
6214 type t = {
6215 hide_buy_button_until : string option;
6216 show_support_badge : bool option;
6217 }
6218 end
6219
6220 module Response = struct
6221 type t = {
6222 hide_buy_button_until : string;
6223 show_support_badge : bool;
6224 }
6225 end
6226 end
6227
6228 module Update = struct
6229 include Types.Update
6230
6231 let v ?hide_buy_button_until ?show_support_badge () = { hide_buy_button_until; show_support_badge }
6232
6233 let hide_buy_button_until t = t.hide_buy_button_until
6234 let show_support_badge t = t.show_support_badge
6235
6236 let jsont : t Jsont.t =
6237 Jsont.Object.map ~kind:"PurchaseUpdate"
6238 (fun hide_buy_button_until show_support_badge -> { hide_buy_button_until; show_support_badge })
6239 |> Jsont.Object.opt_mem "hideBuyButtonUntil" Jsont.string ~enc:(fun r -> r.hide_buy_button_until)
6240 |> Jsont.Object.opt_mem "showSupportBadge" Jsont.bool ~enc:(fun r -> r.show_support_badge)
6241 |> Jsont.Object.skip_unknown
6242 |> Jsont.Object.finish
6243 end
6244
6245 module Response = struct
6246 include Types.Response
6247
6248 let v ~hide_buy_button_until ~show_support_badge () = { hide_buy_button_until; show_support_badge }
6249
6250 let hide_buy_button_until t = t.hide_buy_button_until
6251 let show_support_badge t = t.show_support_badge
6252
6253 let jsont : t Jsont.t =
6254 Jsont.Object.map ~kind:"PurchaseResponse"
6255 (fun hide_buy_button_until show_support_badge -> { hide_buy_button_until; show_support_badge })
6256 |> Jsont.Object.mem "hideBuyButtonUntil" Jsont.string ~enc:(fun r -> r.hide_buy_button_until)
6257 |> Jsont.Object.mem "showSupportBadge" Jsont.bool ~enc:(fun r -> r.show_support_badge)
6258 |> Jsont.Object.skip_unknown
6259 |> Jsont.Object.finish
6260 end
6261end
6262
6263module PluginContext = struct
6264 module Types = struct
6265 module Type = struct
6266 type t = [
6267 | `Asset
6268 | `Album
6269 | `Person
6270 ]
6271 end
6272 end
6273
6274 module Type = struct
6275 include Types.Type
6276
6277 let jsont : t Jsont.t =
6278 Jsont.map Jsont.string ~kind:"PluginContextType"
6279 ~dec:(function
6280 | "asset" -> `Asset
6281 | "album" -> `Album
6282 | "person" -> `Person
6283 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
6284 ~enc:(function
6285 | `Asset -> "asset"
6286 | `Album -> "album"
6287 | `Person -> "person")
6288 end
6289end
6290
6291module PluginTrigger = struct
6292 module Types = struct
6293 module Type = struct
6294 type t = [
6295 | `Asset_create
6296 | `Person_recognized
6297 ]
6298 end
6299
6300 module ResponseDto = struct
6301 type t = {
6302 context_type : PluginContext.Type.t;
6303 type_ : Type.t;
6304 }
6305 end
6306 end
6307
6308 module Type = struct
6309 include Types.Type
6310
6311 let jsont : t Jsont.t =
6312 Jsont.map Jsont.string ~kind:"PluginTriggerType"
6313 ~dec:(function
6314 | "AssetCreate" -> `Asset_create
6315 | "PersonRecognized" -> `Person_recognized
6316 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
6317 ~enc:(function
6318 | `Asset_create -> "AssetCreate"
6319 | `Person_recognized -> "PersonRecognized")
6320 end
6321
6322 module ResponseDto = struct
6323 include Types.ResponseDto
6324
6325 let v ~context_type ~type_ () = { context_type; type_ }
6326
6327 let context_type t = t.context_type
6328 let type_ t = t.type_
6329
6330 let jsont : t Jsont.t =
6331 Jsont.Object.map ~kind:"PluginTriggerResponseDto"
6332 (fun context_type type_ -> { context_type; type_ })
6333 |> Jsont.Object.mem "contextType" PluginContext.Type.jsont ~enc:(fun r -> r.context_type)
6334 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
6335 |> Jsont.Object.skip_unknown
6336 |> Jsont.Object.finish
6337 end
6338
6339 (** List all plugin triggers
6340
6341 Retrieve a list of all available plugin triggers. *)
6342 let get_plugin_triggers client () =
6343 let op_name = "get_plugin_triggers" in
6344 let url_path = "/plugins/triggers" in
6345 let query = "" in
6346 let url = client.base_url ^ url_path ^ query in
6347 let response =
6348 try Requests.get client.session url
6349 with Eio.Io _ as ex ->
6350 let bt = Printexc.get_raw_backtrace () in
6351 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6352 in
6353 if Requests.Response.ok response then
6354 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6355 else
6356 let body = Requests.Response.text response in
6357 let parsed_body =
6358 match Jsont_bytesrw.decode_string Jsont.json body with
6359 | Ok json -> Some (Openapi.Runtime.Json json)
6360 | Error _ -> Some (Openapi.Runtime.Raw body)
6361 in
6362 raise (Openapi.Runtime.Api_error {
6363 operation = op_name;
6364 method_ = "GET";
6365 url;
6366 status = Requests.Response.status_code response;
6367 body;
6368 parsed_body;
6369 })
6370end
6371
6372module Workflow = struct
6373 module Types = struct
6374 module UpdateDto = struct
6375 type t = {
6376 actions : WorkflowActionItem.Dto.t list option;
6377 description : string option;
6378 enabled : bool option;
6379 filters : WorkflowFilterItem.Dto.t list option;
6380 name : string option;
6381 trigger_type : PluginTrigger.Type.t option;
6382 }
6383 end
6384
6385 module ResponseDto = struct
6386 type t = {
6387 actions : WorkflowAction.ResponseDto.t list;
6388 created_at : string;
6389 description : string;
6390 enabled : bool;
6391 filters : WorkflowFilter.ResponseDto.t list;
6392 id : string;
6393 name : string option;
6394 owner_id : string;
6395 trigger_type : PluginTrigger.Type.t;
6396 }
6397 end
6398
6399 module CreateDto = struct
6400 type t = {
6401 actions : WorkflowActionItem.Dto.t list;
6402 description : string option;
6403 enabled : bool option;
6404 filters : WorkflowFilterItem.Dto.t list;
6405 name : string;
6406 trigger_type : PluginTrigger.Type.t;
6407 }
6408 end
6409 end
6410
6411 module UpdateDto = struct
6412 include Types.UpdateDto
6413
6414 let v ?actions ?description ?enabled ?filters ?name ?trigger_type () = { actions; description; enabled; filters; name; trigger_type }
6415
6416 let actions t = t.actions
6417 let description t = t.description
6418 let enabled t = t.enabled
6419 let filters t = t.filters
6420 let name t = t.name
6421 let trigger_type t = t.trigger_type
6422
6423 let jsont : t Jsont.t =
6424 Jsont.Object.map ~kind:"WorkflowUpdateDto"
6425 (fun actions description enabled filters name trigger_type -> { actions; description; enabled; filters; name; trigger_type })
6426 |> Jsont.Object.opt_mem "actions" (Jsont.list WorkflowActionItem.Dto.jsont) ~enc:(fun r -> r.actions)
6427 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
6428 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
6429 |> Jsont.Object.opt_mem "filters" (Jsont.list WorkflowFilterItem.Dto.jsont) ~enc:(fun r -> r.filters)
6430 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
6431 |> Jsont.Object.opt_mem "triggerType" PluginTrigger.Type.jsont ~enc:(fun r -> r.trigger_type)
6432 |> Jsont.Object.skip_unknown
6433 |> Jsont.Object.finish
6434 end
6435
6436 module ResponseDto = struct
6437 include Types.ResponseDto
6438
6439 let v ~actions ~created_at ~description ~enabled ~filters ~id ~owner_id ~trigger_type ?name () = { actions; created_at; description; enabled; filters; id; name; owner_id; trigger_type }
6440
6441 let actions t = t.actions
6442 let created_at t = t.created_at
6443 let description t = t.description
6444 let enabled t = t.enabled
6445 let filters t = t.filters
6446 let id t = t.id
6447 let name t = t.name
6448 let owner_id t = t.owner_id
6449 let trigger_type t = t.trigger_type
6450
6451 let jsont : t Jsont.t =
6452 Jsont.Object.map ~kind:"WorkflowResponseDto"
6453 (fun actions created_at description enabled filters id name owner_id trigger_type -> { actions; created_at; description; enabled; filters; id; name; owner_id; trigger_type })
6454 |> Jsont.Object.mem "actions" (Jsont.list WorkflowAction.ResponseDto.jsont) ~enc:(fun r -> r.actions)
6455 |> Jsont.Object.mem "createdAt" Jsont.string ~enc:(fun r -> r.created_at)
6456 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
6457 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
6458 |> Jsont.Object.mem "filters" (Jsont.list WorkflowFilter.ResponseDto.jsont) ~enc:(fun r -> r.filters)
6459 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
6460 |> Jsont.Object.mem "name" Openapi.Runtime.nullable_string
6461 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.name)
6462 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
6463 |> Jsont.Object.mem "triggerType" PluginTrigger.Type.jsont ~enc:(fun r -> r.trigger_type)
6464 |> Jsont.Object.skip_unknown
6465 |> Jsont.Object.finish
6466 end
6467
6468 module CreateDto = struct
6469 include Types.CreateDto
6470
6471 let v ~actions ~filters ~name ~trigger_type ?description ?enabled () = { actions; description; enabled; filters; name; trigger_type }
6472
6473 let actions t = t.actions
6474 let description t = t.description
6475 let enabled t = t.enabled
6476 let filters t = t.filters
6477 let name t = t.name
6478 let trigger_type t = t.trigger_type
6479
6480 let jsont : t Jsont.t =
6481 Jsont.Object.map ~kind:"WorkflowCreateDto"
6482 (fun actions description enabled filters name trigger_type -> { actions; description; enabled; filters; name; trigger_type })
6483 |> Jsont.Object.mem "actions" (Jsont.list WorkflowActionItem.Dto.jsont) ~enc:(fun r -> r.actions)
6484 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
6485 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
6486 |> Jsont.Object.mem "filters" (Jsont.list WorkflowFilterItem.Dto.jsont) ~enc:(fun r -> r.filters)
6487 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
6488 |> Jsont.Object.mem "triggerType" PluginTrigger.Type.jsont ~enc:(fun r -> r.trigger_type)
6489 |> Jsont.Object.skip_unknown
6490 |> Jsont.Object.finish
6491 end
6492
6493 (** List all workflows
6494
6495 Retrieve a list of workflows available to the authenticated user. *)
6496 let get_workflows client () =
6497 let op_name = "get_workflows" in
6498 let url_path = "/workflows" in
6499 let query = "" in
6500 let url = client.base_url ^ url_path ^ query in
6501 let response =
6502 try Requests.get client.session url
6503 with Eio.Io _ as ex ->
6504 let bt = Printexc.get_raw_backtrace () in
6505 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6506 in
6507 if Requests.Response.ok response then
6508 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6509 else
6510 let body = Requests.Response.text response in
6511 let parsed_body =
6512 match Jsont_bytesrw.decode_string Jsont.json body with
6513 | Ok json -> Some (Openapi.Runtime.Json json)
6514 | Error _ -> Some (Openapi.Runtime.Raw body)
6515 in
6516 raise (Openapi.Runtime.Api_error {
6517 operation = op_name;
6518 method_ = "GET";
6519 url;
6520 status = Requests.Response.status_code response;
6521 body;
6522 parsed_body;
6523 })
6524
6525 (** Create a workflow
6526
6527 Create a new workflow, the workflow can also be created with empty filters and actions. *)
6528 let create_workflow ~body client () =
6529 let op_name = "create_workflow" in
6530 let url_path = "/workflows" in
6531 let query = "" in
6532 let url = client.base_url ^ url_path ^ query in
6533 let response =
6534 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
6535 with Eio.Io _ as ex ->
6536 let bt = Printexc.get_raw_backtrace () in
6537 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
6538 in
6539 if Requests.Response.ok response then
6540 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6541 else
6542 let body = Requests.Response.text response in
6543 let parsed_body =
6544 match Jsont_bytesrw.decode_string Jsont.json body with
6545 | Ok json -> Some (Openapi.Runtime.Json json)
6546 | Error _ -> Some (Openapi.Runtime.Raw body)
6547 in
6548 raise (Openapi.Runtime.Api_error {
6549 operation = op_name;
6550 method_ = "POST";
6551 url;
6552 status = Requests.Response.status_code response;
6553 body;
6554 parsed_body;
6555 })
6556
6557 (** Retrieve a workflow
6558
6559 Retrieve information about a specific workflow by its ID. *)
6560 let get_workflow ~id client () =
6561 let op_name = "get_workflow" in
6562 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/workflows/{id}" in
6563 let query = "" in
6564 let url = client.base_url ^ url_path ^ query in
6565 let response =
6566 try Requests.get client.session url
6567 with Eio.Io _ as ex ->
6568 let bt = Printexc.get_raw_backtrace () in
6569 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6570 in
6571 if Requests.Response.ok response then
6572 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6573 else
6574 let body = Requests.Response.text response in
6575 let parsed_body =
6576 match Jsont_bytesrw.decode_string Jsont.json body with
6577 | Ok json -> Some (Openapi.Runtime.Json json)
6578 | Error _ -> Some (Openapi.Runtime.Raw body)
6579 in
6580 raise (Openapi.Runtime.Api_error {
6581 operation = op_name;
6582 method_ = "GET";
6583 url;
6584 status = Requests.Response.status_code response;
6585 body;
6586 parsed_body;
6587 })
6588
6589 (** Update a workflow
6590
6591 Update the information of a specific workflow by its ID. This endpoint can be used to update the workflow name, description, trigger type, filters and actions order, etc. *)
6592 let update_workflow ~id ~body client () =
6593 let op_name = "update_workflow" in
6594 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/workflows/{id}" in
6595 let query = "" in
6596 let url = client.base_url ^ url_path ^ query in
6597 let response =
6598 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
6599 with Eio.Io _ as ex ->
6600 let bt = Printexc.get_raw_backtrace () in
6601 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
6602 in
6603 if Requests.Response.ok response then
6604 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6605 else
6606 let body = Requests.Response.text response in
6607 let parsed_body =
6608 match Jsont_bytesrw.decode_string Jsont.json body with
6609 | Ok json -> Some (Openapi.Runtime.Json json)
6610 | Error _ -> Some (Openapi.Runtime.Raw body)
6611 in
6612 raise (Openapi.Runtime.Api_error {
6613 operation = op_name;
6614 method_ = "PUT";
6615 url;
6616 status = Requests.Response.status_code response;
6617 body;
6618 parsed_body;
6619 })
6620end
6621
6622module PluginFilter = struct
6623 module Types = struct
6624 module ResponseDto = struct
6625 type t = {
6626 description : string;
6627 id : string;
6628 method_name : string;
6629 plugin_id : string;
6630 schema : Jsont.json option;
6631 supported_contexts : PluginContext.Type.t list;
6632 title : string;
6633 }
6634 end
6635 end
6636
6637 module ResponseDto = struct
6638 include Types.ResponseDto
6639
6640 let v ~description ~id ~method_name ~plugin_id ~supported_contexts ~title ?schema () = { description; id; method_name; plugin_id; schema; supported_contexts; title }
6641
6642 let description t = t.description
6643 let id t = t.id
6644 let method_name t = t.method_name
6645 let plugin_id t = t.plugin_id
6646 let schema t = t.schema
6647 let supported_contexts t = t.supported_contexts
6648 let title t = t.title
6649
6650 let jsont : t Jsont.t =
6651 Jsont.Object.map ~kind:"PluginFilterResponseDto"
6652 (fun description id method_name plugin_id schema supported_contexts title -> { description; id; method_name; plugin_id; schema; supported_contexts; title })
6653 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
6654 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
6655 |> Jsont.Object.mem "methodName" Jsont.string ~enc:(fun r -> r.method_name)
6656 |> Jsont.Object.mem "pluginId" Jsont.string ~enc:(fun r -> r.plugin_id)
6657 |> Jsont.Object.mem "schema" (Openapi.Runtime.nullable_any Jsont.json)
6658 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.schema)
6659 |> Jsont.Object.mem "supportedContexts" (Jsont.list PluginContext.Type.jsont) ~enc:(fun r -> r.supported_contexts)
6660 |> Jsont.Object.mem "title" Jsont.string ~enc:(fun r -> r.title)
6661 |> Jsont.Object.skip_unknown
6662 |> Jsont.Object.finish
6663 end
6664end
6665
6666module PluginAction = struct
6667 module Types = struct
6668 module ResponseDto = struct
6669 type t = {
6670 description : string;
6671 id : string;
6672 method_name : string;
6673 plugin_id : string;
6674 schema : Jsont.json option;
6675 supported_contexts : PluginContext.Type.t list;
6676 title : string;
6677 }
6678 end
6679 end
6680
6681 module ResponseDto = struct
6682 include Types.ResponseDto
6683
6684 let v ~description ~id ~method_name ~plugin_id ~supported_contexts ~title ?schema () = { description; id; method_name; plugin_id; schema; supported_contexts; title }
6685
6686 let description t = t.description
6687 let id t = t.id
6688 let method_name t = t.method_name
6689 let plugin_id t = t.plugin_id
6690 let schema t = t.schema
6691 let supported_contexts t = t.supported_contexts
6692 let title t = t.title
6693
6694 let jsont : t Jsont.t =
6695 Jsont.Object.map ~kind:"PluginActionResponseDto"
6696 (fun description id method_name plugin_id schema supported_contexts title -> { description; id; method_name; plugin_id; schema; supported_contexts; title })
6697 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
6698 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
6699 |> Jsont.Object.mem "methodName" Jsont.string ~enc:(fun r -> r.method_name)
6700 |> Jsont.Object.mem "pluginId" Jsont.string ~enc:(fun r -> r.plugin_id)
6701 |> Jsont.Object.mem "schema" (Openapi.Runtime.nullable_any Jsont.json)
6702 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.schema)
6703 |> Jsont.Object.mem "supportedContexts" (Jsont.list PluginContext.Type.jsont) ~enc:(fun r -> r.supported_contexts)
6704 |> Jsont.Object.mem "title" Jsont.string ~enc:(fun r -> r.title)
6705 |> Jsont.Object.skip_unknown
6706 |> Jsont.Object.finish
6707 end
6708end
6709
6710module Plugin = struct
6711 module Types = struct
6712 module ResponseDto = struct
6713 type t = {
6714 actions : PluginAction.ResponseDto.t list;
6715 author : string;
6716 created_at : string;
6717 description : string;
6718 filters : PluginFilter.ResponseDto.t list;
6719 id : string;
6720 name : string;
6721 title : string;
6722 updated_at : string;
6723 version : string;
6724 }
6725 end
6726 end
6727
6728 module ResponseDto = struct
6729 include Types.ResponseDto
6730
6731 let v ~actions ~author ~created_at ~description ~filters ~id ~name ~title ~updated_at ~version () = { actions; author; created_at; description; filters; id; name; title; updated_at; version }
6732
6733 let actions t = t.actions
6734 let author t = t.author
6735 let created_at t = t.created_at
6736 let description t = t.description
6737 let filters t = t.filters
6738 let id t = t.id
6739 let name t = t.name
6740 let title t = t.title
6741 let updated_at t = t.updated_at
6742 let version t = t.version
6743
6744 let jsont : t Jsont.t =
6745 Jsont.Object.map ~kind:"PluginResponseDto"
6746 (fun actions author created_at description filters id name title updated_at version -> { actions; author; created_at; description; filters; id; name; title; updated_at; version })
6747 |> Jsont.Object.mem "actions" (Jsont.list PluginAction.ResponseDto.jsont) ~enc:(fun r -> r.actions)
6748 |> Jsont.Object.mem "author" Jsont.string ~enc:(fun r -> r.author)
6749 |> Jsont.Object.mem "createdAt" Jsont.string ~enc:(fun r -> r.created_at)
6750 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
6751 |> Jsont.Object.mem "filters" (Jsont.list PluginFilter.ResponseDto.jsont) ~enc:(fun r -> r.filters)
6752 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
6753 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
6754 |> Jsont.Object.mem "title" Jsont.string ~enc:(fun r -> r.title)
6755 |> Jsont.Object.mem "updatedAt" Jsont.string ~enc:(fun r -> r.updated_at)
6756 |> Jsont.Object.mem "version" Jsont.string ~enc:(fun r -> r.version)
6757 |> Jsont.Object.skip_unknown
6758 |> Jsont.Object.finish
6759 end
6760
6761 (** List all plugins
6762
6763 Retrieve a list of plugins available to the authenticated user. *)
6764 let get_plugins client () =
6765 let op_name = "get_plugins" in
6766 let url_path = "/plugins" in
6767 let query = "" in
6768 let url = client.base_url ^ url_path ^ query in
6769 let response =
6770 try Requests.get client.session url
6771 with Eio.Io _ as ex ->
6772 let bt = Printexc.get_raw_backtrace () in
6773 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6774 in
6775 if Requests.Response.ok response then
6776 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6777 else
6778 let body = Requests.Response.text response in
6779 let parsed_body =
6780 match Jsont_bytesrw.decode_string Jsont.json body with
6781 | Ok json -> Some (Openapi.Runtime.Json json)
6782 | Error _ -> Some (Openapi.Runtime.Raw body)
6783 in
6784 raise (Openapi.Runtime.Api_error {
6785 operation = op_name;
6786 method_ = "GET";
6787 url;
6788 status = Requests.Response.status_code response;
6789 body;
6790 parsed_body;
6791 })
6792
6793 (** Retrieve a plugin
6794
6795 Retrieve information about a specific plugin by its ID. *)
6796 let get_plugin ~id client () =
6797 let op_name = "get_plugin" in
6798 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/plugins/{id}" in
6799 let query = "" in
6800 let url = client.base_url ^ url_path ^ query in
6801 let response =
6802 try Requests.get client.session url
6803 with Eio.Io _ as ex ->
6804 let bt = Printexc.get_raw_backtrace () in
6805 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6806 in
6807 if Requests.Response.ok response then
6808 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6809 else
6810 let body = Requests.Response.text response in
6811 let parsed_body =
6812 match Jsont_bytesrw.decode_string Jsont.json body with
6813 | Ok json -> Some (Openapi.Runtime.Json json)
6814 | Error _ -> Some (Openapi.Runtime.Raw body)
6815 in
6816 raise (Openapi.Runtime.Api_error {
6817 operation = op_name;
6818 method_ = "GET";
6819 url;
6820 status = Requests.Response.status_code response;
6821 body;
6822 parsed_body;
6823 })
6824end
6825
6826module Places = struct
6827 module Types = struct
6828 module ResponseDto = struct
6829 type t = {
6830 admin1name : string option;
6831 admin2name : string option;
6832 latitude : float;
6833 longitude : float;
6834 name : string;
6835 }
6836 end
6837 end
6838
6839 module ResponseDto = struct
6840 include Types.ResponseDto
6841
6842 let v ~latitude ~longitude ~name ?admin1name ?admin2name () = { admin1name; admin2name; latitude; longitude; name }
6843
6844 let admin1name t = t.admin1name
6845 let admin2name t = t.admin2name
6846 let latitude t = t.latitude
6847 let longitude t = t.longitude
6848 let name t = t.name
6849
6850 let jsont : t Jsont.t =
6851 Jsont.Object.map ~kind:"PlacesResponseDto"
6852 (fun admin1name admin2name latitude longitude name -> { admin1name; admin2name; latitude; longitude; name })
6853 |> Jsont.Object.opt_mem "admin1name" Jsont.string ~enc:(fun r -> r.admin1name)
6854 |> Jsont.Object.opt_mem "admin2name" Jsont.string ~enc:(fun r -> r.admin2name)
6855 |> Jsont.Object.mem "latitude" Jsont.number ~enc:(fun r -> r.latitude)
6856 |> Jsont.Object.mem "longitude" Jsont.number ~enc:(fun r -> r.longitude)
6857 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
6858 |> Jsont.Object.skip_unknown
6859 |> Jsont.Object.finish
6860 end
6861
6862 (** Search places
6863
6864 Search for places by name. *)
6865 let search_places ~name client () =
6866 let op_name = "search_places" in
6867 let url_path = "/search/places" in
6868 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"name" ~value:name]) in
6869 let url = client.base_url ^ url_path ^ query in
6870 let response =
6871 try Requests.get client.session url
6872 with Eio.Io _ as ex ->
6873 let bt = Printexc.get_raw_backtrace () in
6874 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
6875 in
6876 if Requests.Response.ok response then
6877 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
6878 else
6879 let body = Requests.Response.text response in
6880 let parsed_body =
6881 match Jsont_bytesrw.decode_string Jsont.json body with
6882 | Ok json -> Some (Openapi.Runtime.Json json)
6883 | Error _ -> Some (Openapi.Runtime.Raw body)
6884 in
6885 raise (Openapi.Runtime.Api_error {
6886 operation = op_name;
6887 method_ = "GET";
6888 url;
6889 status = Requests.Response.status_code response;
6890 body;
6891 parsed_body;
6892 })
6893end
6894
6895module PinCodeSetup = struct
6896 module Types = struct
6897 module Dto = struct
6898 type t = {
6899 pin_code : string;
6900 }
6901 end
6902 end
6903
6904 module Dto = struct
6905 include Types.Dto
6906
6907 let v ~pin_code () = { pin_code }
6908
6909 let pin_code t = t.pin_code
6910
6911 let jsont : t Jsont.t =
6912 Jsont.Object.map ~kind:"PinCodeSetupDto"
6913 (fun pin_code -> { pin_code })
6914 |> Jsont.Object.mem "pinCode" Jsont.string ~enc:(fun r -> r.pin_code)
6915 |> Jsont.Object.skip_unknown
6916 |> Jsont.Object.finish
6917 end
6918end
6919
6920module PinCodeReset = struct
6921 module Types = struct
6922 module Dto = struct
6923 type t = {
6924 password : string option;
6925 pin_code : string option;
6926 }
6927 end
6928 end
6929
6930 module Dto = struct
6931 include Types.Dto
6932
6933 let v ?password ?pin_code () = { password; pin_code }
6934
6935 let password t = t.password
6936 let pin_code t = t.pin_code
6937
6938 let jsont : t Jsont.t =
6939 Jsont.Object.map ~kind:"PinCodeResetDto"
6940 (fun password pin_code -> { password; pin_code })
6941 |> Jsont.Object.opt_mem "password" Jsont.string ~enc:(fun r -> r.password)
6942 |> Jsont.Object.opt_mem "pinCode" Jsont.string ~enc:(fun r -> r.pin_code)
6943 |> Jsont.Object.skip_unknown
6944 |> Jsont.Object.finish
6945 end
6946end
6947
6948module PinCodeChange = struct
6949 module Types = struct
6950 module Dto = struct
6951 type t = {
6952 new_pin_code : string;
6953 password : string option;
6954 pin_code : string option;
6955 }
6956 end
6957 end
6958
6959 module Dto = struct
6960 include Types.Dto
6961
6962 let v ~new_pin_code ?password ?pin_code () = { new_pin_code; password; pin_code }
6963
6964 let new_pin_code t = t.new_pin_code
6965 let password t = t.password
6966 let pin_code t = t.pin_code
6967
6968 let jsont : t Jsont.t =
6969 Jsont.Object.map ~kind:"PinCodeChangeDto"
6970 (fun new_pin_code password pin_code -> { new_pin_code; password; pin_code })
6971 |> Jsont.Object.mem "newPinCode" Jsont.string ~enc:(fun r -> r.new_pin_code)
6972 |> Jsont.Object.opt_mem "password" Jsont.string ~enc:(fun r -> r.password)
6973 |> Jsont.Object.opt_mem "pinCode" Jsont.string ~enc:(fun r -> r.pin_code)
6974 |> Jsont.Object.skip_unknown
6975 |> Jsont.Object.finish
6976 end
6977end
6978
6979module PersonStatistics = struct
6980 module Types = struct
6981 module ResponseDto = struct
6982 type t = {
6983 assets : int;
6984 }
6985 end
6986 end
6987
6988 module ResponseDto = struct
6989 include Types.ResponseDto
6990
6991 let v ~assets () = { assets }
6992
6993 let assets t = t.assets
6994
6995 let jsont : t Jsont.t =
6996 Jsont.Object.map ~kind:"PersonStatisticsResponseDto"
6997 (fun assets -> { assets })
6998 |> Jsont.Object.mem "assets" Jsont.int ~enc:(fun r -> r.assets)
6999 |> Jsont.Object.skip_unknown
7000 |> Jsont.Object.finish
7001 end
7002
7003 (** Get person statistics
7004
7005 Retrieve statistics about a specific person. *)
7006 let get_person_statistics ~id client () =
7007 let op_name = "get_person_statistics" in
7008 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}/statistics" in
7009 let query = "" in
7010 let url = client.base_url ^ url_path ^ query in
7011 let response =
7012 try Requests.get client.session url
7013 with Eio.Io _ as ex ->
7014 let bt = Printexc.get_raw_backtrace () in
7015 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
7016 in
7017 if Requests.Response.ok response then
7018 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7019 else
7020 let body = Requests.Response.text response in
7021 let parsed_body =
7022 match Jsont_bytesrw.decode_string Jsont.json body with
7023 | Ok json -> Some (Openapi.Runtime.Json json)
7024 | Error _ -> Some (Openapi.Runtime.Raw body)
7025 in
7026 raise (Openapi.Runtime.Api_error {
7027 operation = op_name;
7028 method_ = "GET";
7029 url;
7030 status = Requests.Response.status_code response;
7031 body;
7032 parsed_body;
7033 })
7034end
7035
7036module Permission = struct
7037 module Types = struct
7038 module T = struct
7039 type t = [
7040 | `All
7041 | `Activity_create
7042 | `Activity_read
7043 | `Activity_update
7044 | `Activity_delete
7045 | `Activity_statistics
7046 | `Api_key_create
7047 | `Api_key_read
7048 | `Api_key_update
7049 | `Api_key_delete
7050 | `Asset_read
7051 | `Asset_update
7052 | `Asset_delete
7053 | `Asset_statistics
7054 | `Asset_share
7055 | `Asset_view
7056 | `Asset_download
7057 | `Asset_upload
7058 | `Asset_replace
7059 | `Asset_copy
7060 | `Asset_derive
7061 | `Asset_edit_get
7062 | `Asset_edit_create
7063 | `Asset_edit_delete
7064 | `Album_create
7065 | `Album_read
7066 | `Album_update
7067 | `Album_delete
7068 | `Album_statistics
7069 | `Album_share
7070 | `Album_download
7071 | `Album_asset_create
7072 | `Album_asset_delete
7073 | `Album_user_create
7074 | `Album_user_update
7075 | `Album_user_delete
7076 | `Auth_change_password
7077 | `Auth_device_delete
7078 | `Archive_read
7079 | `Backup_list
7080 | `Backup_download
7081 | `Backup_upload
7082 | `Backup_delete
7083 | `Duplicate_read
7084 | `Duplicate_delete
7085 | `Face_create
7086 | `Face_read
7087 | `Face_update
7088 | `Face_delete
7089 | `Folder_read
7090 | `Job_create
7091 | `Job_read
7092 | `Library_create
7093 | `Library_read
7094 | `Library_update
7095 | `Library_delete
7096 | `Library_statistics
7097 | `Timeline_read
7098 | `Timeline_download
7099 | `Maintenance
7100 | `Map_read
7101 | `Map_search
7102 | `Memory_create
7103 | `Memory_read
7104 | `Memory_update
7105 | `Memory_delete
7106 | `Memory_statistics
7107 | `Memory_asset_create
7108 | `Memory_asset_delete
7109 | `Notification_create
7110 | `Notification_read
7111 | `Notification_update
7112 | `Notification_delete
7113 | `Partner_create
7114 | `Partner_read
7115 | `Partner_update
7116 | `Partner_delete
7117 | `Person_create
7118 | `Person_read
7119 | `Person_update
7120 | `Person_delete
7121 | `Person_statistics
7122 | `Person_merge
7123 | `Person_reassign
7124 | `Pin_code_create
7125 | `Pin_code_update
7126 | `Pin_code_delete
7127 | `Plugin_create
7128 | `Plugin_read
7129 | `Plugin_update
7130 | `Plugin_delete
7131 | `Server_about
7132 | `Server_apk_links
7133 | `Server_storage
7134 | `Server_statistics
7135 | `Server_version_check
7136 | `Server_license_read
7137 | `Server_license_update
7138 | `Server_license_delete
7139 | `Session_create
7140 | `Session_read
7141 | `Session_update
7142 | `Session_delete
7143 | `Session_lock
7144 | `Shared_link_create
7145 | `Shared_link_read
7146 | `Shared_link_update
7147 | `Shared_link_delete
7148 | `Stack_create
7149 | `Stack_read
7150 | `Stack_update
7151 | `Stack_delete
7152 | `Sync_stream
7153 | `Sync_checkpoint_read
7154 | `Sync_checkpoint_update
7155 | `Sync_checkpoint_delete
7156 | `System_config_read
7157 | `System_config_update
7158 | `System_metadata_read
7159 | `System_metadata_update
7160 | `Tag_create
7161 | `Tag_read
7162 | `Tag_update
7163 | `Tag_delete
7164 | `Tag_asset
7165 | `User_read
7166 | `User_update
7167 | `User_license_create
7168 | `User_license_read
7169 | `User_license_update
7170 | `User_license_delete
7171 | `User_onboarding_read
7172 | `User_onboarding_update
7173 | `User_onboarding_delete
7174 | `User_preference_read
7175 | `User_preference_update
7176 | `User_profile_image_create
7177 | `User_profile_image_read
7178 | `User_profile_image_update
7179 | `User_profile_image_delete
7180 | `Queue_read
7181 | `Queue_update
7182 | `Queue_job_create
7183 | `Queue_job_read
7184 | `Queue_job_update
7185 | `Queue_job_delete
7186 | `Workflow_create
7187 | `Workflow_read
7188 | `Workflow_update
7189 | `Workflow_delete
7190 | `Admin_user_create
7191 | `Admin_user_read
7192 | `Admin_user_update
7193 | `Admin_user_delete
7194 | `Admin_session_read
7195 | `Admin_auth_unlink_all
7196 ]
7197 end
7198 end
7199
7200 module T = struct
7201 include Types.T
7202
7203 let jsont : t Jsont.t =
7204 Jsont.map Jsont.string ~kind:"Permission"
7205 ~dec:(function
7206 | "all" -> `All
7207 | "activity.create" -> `Activity_create
7208 | "activity.read" -> `Activity_read
7209 | "activity.update" -> `Activity_update
7210 | "activity.delete" -> `Activity_delete
7211 | "activity.statistics" -> `Activity_statistics
7212 | "apiKey.create" -> `Api_key_create
7213 | "apiKey.read" -> `Api_key_read
7214 | "apiKey.update" -> `Api_key_update
7215 | "apiKey.delete" -> `Api_key_delete
7216 | "asset.read" -> `Asset_read
7217 | "asset.update" -> `Asset_update
7218 | "asset.delete" -> `Asset_delete
7219 | "asset.statistics" -> `Asset_statistics
7220 | "asset.share" -> `Asset_share
7221 | "asset.view" -> `Asset_view
7222 | "asset.download" -> `Asset_download
7223 | "asset.upload" -> `Asset_upload
7224 | "asset.replace" -> `Asset_replace
7225 | "asset.copy" -> `Asset_copy
7226 | "asset.derive" -> `Asset_derive
7227 | "asset.edit.get" -> `Asset_edit_get
7228 | "asset.edit.create" -> `Asset_edit_create
7229 | "asset.edit.delete" -> `Asset_edit_delete
7230 | "album.create" -> `Album_create
7231 | "album.read" -> `Album_read
7232 | "album.update" -> `Album_update
7233 | "album.delete" -> `Album_delete
7234 | "album.statistics" -> `Album_statistics
7235 | "album.share" -> `Album_share
7236 | "album.download" -> `Album_download
7237 | "albumAsset.create" -> `Album_asset_create
7238 | "albumAsset.delete" -> `Album_asset_delete
7239 | "albumUser.create" -> `Album_user_create
7240 | "albumUser.update" -> `Album_user_update
7241 | "albumUser.delete" -> `Album_user_delete
7242 | "auth.changePassword" -> `Auth_change_password
7243 | "authDevice.delete" -> `Auth_device_delete
7244 | "archive.read" -> `Archive_read
7245 | "backup.list" -> `Backup_list
7246 | "backup.download" -> `Backup_download
7247 | "backup.upload" -> `Backup_upload
7248 | "backup.delete" -> `Backup_delete
7249 | "duplicate.read" -> `Duplicate_read
7250 | "duplicate.delete" -> `Duplicate_delete
7251 | "face.create" -> `Face_create
7252 | "face.read" -> `Face_read
7253 | "face.update" -> `Face_update
7254 | "face.delete" -> `Face_delete
7255 | "folder.read" -> `Folder_read
7256 | "job.create" -> `Job_create
7257 | "job.read" -> `Job_read
7258 | "library.create" -> `Library_create
7259 | "library.read" -> `Library_read
7260 | "library.update" -> `Library_update
7261 | "library.delete" -> `Library_delete
7262 | "library.statistics" -> `Library_statistics
7263 | "timeline.read" -> `Timeline_read
7264 | "timeline.download" -> `Timeline_download
7265 | "maintenance" -> `Maintenance
7266 | "map.read" -> `Map_read
7267 | "map.search" -> `Map_search
7268 | "memory.create" -> `Memory_create
7269 | "memory.read" -> `Memory_read
7270 | "memory.update" -> `Memory_update
7271 | "memory.delete" -> `Memory_delete
7272 | "memory.statistics" -> `Memory_statistics
7273 | "memoryAsset.create" -> `Memory_asset_create
7274 | "memoryAsset.delete" -> `Memory_asset_delete
7275 | "notification.create" -> `Notification_create
7276 | "notification.read" -> `Notification_read
7277 | "notification.update" -> `Notification_update
7278 | "notification.delete" -> `Notification_delete
7279 | "partner.create" -> `Partner_create
7280 | "partner.read" -> `Partner_read
7281 | "partner.update" -> `Partner_update
7282 | "partner.delete" -> `Partner_delete
7283 | "person.create" -> `Person_create
7284 | "person.read" -> `Person_read
7285 | "person.update" -> `Person_update
7286 | "person.delete" -> `Person_delete
7287 | "person.statistics" -> `Person_statistics
7288 | "person.merge" -> `Person_merge
7289 | "person.reassign" -> `Person_reassign
7290 | "pinCode.create" -> `Pin_code_create
7291 | "pinCode.update" -> `Pin_code_update
7292 | "pinCode.delete" -> `Pin_code_delete
7293 | "plugin.create" -> `Plugin_create
7294 | "plugin.read" -> `Plugin_read
7295 | "plugin.update" -> `Plugin_update
7296 | "plugin.delete" -> `Plugin_delete
7297 | "server.about" -> `Server_about
7298 | "server.apkLinks" -> `Server_apk_links
7299 | "server.storage" -> `Server_storage
7300 | "server.statistics" -> `Server_statistics
7301 | "server.versionCheck" -> `Server_version_check
7302 | "serverLicense.read" -> `Server_license_read
7303 | "serverLicense.update" -> `Server_license_update
7304 | "serverLicense.delete" -> `Server_license_delete
7305 | "session.create" -> `Session_create
7306 | "session.read" -> `Session_read
7307 | "session.update" -> `Session_update
7308 | "session.delete" -> `Session_delete
7309 | "session.lock" -> `Session_lock
7310 | "sharedLink.create" -> `Shared_link_create
7311 | "sharedLink.read" -> `Shared_link_read
7312 | "sharedLink.update" -> `Shared_link_update
7313 | "sharedLink.delete" -> `Shared_link_delete
7314 | "stack.create" -> `Stack_create
7315 | "stack.read" -> `Stack_read
7316 | "stack.update" -> `Stack_update
7317 | "stack.delete" -> `Stack_delete
7318 | "sync.stream" -> `Sync_stream
7319 | "syncCheckpoint.read" -> `Sync_checkpoint_read
7320 | "syncCheckpoint.update" -> `Sync_checkpoint_update
7321 | "syncCheckpoint.delete" -> `Sync_checkpoint_delete
7322 | "systemConfig.read" -> `System_config_read
7323 | "systemConfig.update" -> `System_config_update
7324 | "systemMetadata.read" -> `System_metadata_read
7325 | "systemMetadata.update" -> `System_metadata_update
7326 | "tag.create" -> `Tag_create
7327 | "tag.read" -> `Tag_read
7328 | "tag.update" -> `Tag_update
7329 | "tag.delete" -> `Tag_delete
7330 | "tag.asset" -> `Tag_asset
7331 | "user.read" -> `User_read
7332 | "user.update" -> `User_update
7333 | "userLicense.create" -> `User_license_create
7334 | "userLicense.read" -> `User_license_read
7335 | "userLicense.update" -> `User_license_update
7336 | "userLicense.delete" -> `User_license_delete
7337 | "userOnboarding.read" -> `User_onboarding_read
7338 | "userOnboarding.update" -> `User_onboarding_update
7339 | "userOnboarding.delete" -> `User_onboarding_delete
7340 | "userPreference.read" -> `User_preference_read
7341 | "userPreference.update" -> `User_preference_update
7342 | "userProfileImage.create" -> `User_profile_image_create
7343 | "userProfileImage.read" -> `User_profile_image_read
7344 | "userProfileImage.update" -> `User_profile_image_update
7345 | "userProfileImage.delete" -> `User_profile_image_delete
7346 | "queue.read" -> `Queue_read
7347 | "queue.update" -> `Queue_update
7348 | "queueJob.create" -> `Queue_job_create
7349 | "queueJob.read" -> `Queue_job_read
7350 | "queueJob.update" -> `Queue_job_update
7351 | "queueJob.delete" -> `Queue_job_delete
7352 | "workflow.create" -> `Workflow_create
7353 | "workflow.read" -> `Workflow_read
7354 | "workflow.update" -> `Workflow_update
7355 | "workflow.delete" -> `Workflow_delete
7356 | "adminUser.create" -> `Admin_user_create
7357 | "adminUser.read" -> `Admin_user_read
7358 | "adminUser.update" -> `Admin_user_update
7359 | "adminUser.delete" -> `Admin_user_delete
7360 | "adminSession.read" -> `Admin_session_read
7361 | "adminAuth.unlinkAll" -> `Admin_auth_unlink_all
7362 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
7363 ~enc:(function
7364 | `All -> "all"
7365 | `Activity_create -> "activity.create"
7366 | `Activity_read -> "activity.read"
7367 | `Activity_update -> "activity.update"
7368 | `Activity_delete -> "activity.delete"
7369 | `Activity_statistics -> "activity.statistics"
7370 | `Api_key_create -> "apiKey.create"
7371 | `Api_key_read -> "apiKey.read"
7372 | `Api_key_update -> "apiKey.update"
7373 | `Api_key_delete -> "apiKey.delete"
7374 | `Asset_read -> "asset.read"
7375 | `Asset_update -> "asset.update"
7376 | `Asset_delete -> "asset.delete"
7377 | `Asset_statistics -> "asset.statistics"
7378 | `Asset_share -> "asset.share"
7379 | `Asset_view -> "asset.view"
7380 | `Asset_download -> "asset.download"
7381 | `Asset_upload -> "asset.upload"
7382 | `Asset_replace -> "asset.replace"
7383 | `Asset_copy -> "asset.copy"
7384 | `Asset_derive -> "asset.derive"
7385 | `Asset_edit_get -> "asset.edit.get"
7386 | `Asset_edit_create -> "asset.edit.create"
7387 | `Asset_edit_delete -> "asset.edit.delete"
7388 | `Album_create -> "album.create"
7389 | `Album_read -> "album.read"
7390 | `Album_update -> "album.update"
7391 | `Album_delete -> "album.delete"
7392 | `Album_statistics -> "album.statistics"
7393 | `Album_share -> "album.share"
7394 | `Album_download -> "album.download"
7395 | `Album_asset_create -> "albumAsset.create"
7396 | `Album_asset_delete -> "albumAsset.delete"
7397 | `Album_user_create -> "albumUser.create"
7398 | `Album_user_update -> "albumUser.update"
7399 | `Album_user_delete -> "albumUser.delete"
7400 | `Auth_change_password -> "auth.changePassword"
7401 | `Auth_device_delete -> "authDevice.delete"
7402 | `Archive_read -> "archive.read"
7403 | `Backup_list -> "backup.list"
7404 | `Backup_download -> "backup.download"
7405 | `Backup_upload -> "backup.upload"
7406 | `Backup_delete -> "backup.delete"
7407 | `Duplicate_read -> "duplicate.read"
7408 | `Duplicate_delete -> "duplicate.delete"
7409 | `Face_create -> "face.create"
7410 | `Face_read -> "face.read"
7411 | `Face_update -> "face.update"
7412 | `Face_delete -> "face.delete"
7413 | `Folder_read -> "folder.read"
7414 | `Job_create -> "job.create"
7415 | `Job_read -> "job.read"
7416 | `Library_create -> "library.create"
7417 | `Library_read -> "library.read"
7418 | `Library_update -> "library.update"
7419 | `Library_delete -> "library.delete"
7420 | `Library_statistics -> "library.statistics"
7421 | `Timeline_read -> "timeline.read"
7422 | `Timeline_download -> "timeline.download"
7423 | `Maintenance -> "maintenance"
7424 | `Map_read -> "map.read"
7425 | `Map_search -> "map.search"
7426 | `Memory_create -> "memory.create"
7427 | `Memory_read -> "memory.read"
7428 | `Memory_update -> "memory.update"
7429 | `Memory_delete -> "memory.delete"
7430 | `Memory_statistics -> "memory.statistics"
7431 | `Memory_asset_create -> "memoryAsset.create"
7432 | `Memory_asset_delete -> "memoryAsset.delete"
7433 | `Notification_create -> "notification.create"
7434 | `Notification_read -> "notification.read"
7435 | `Notification_update -> "notification.update"
7436 | `Notification_delete -> "notification.delete"
7437 | `Partner_create -> "partner.create"
7438 | `Partner_read -> "partner.read"
7439 | `Partner_update -> "partner.update"
7440 | `Partner_delete -> "partner.delete"
7441 | `Person_create -> "person.create"
7442 | `Person_read -> "person.read"
7443 | `Person_update -> "person.update"
7444 | `Person_delete -> "person.delete"
7445 | `Person_statistics -> "person.statistics"
7446 | `Person_merge -> "person.merge"
7447 | `Person_reassign -> "person.reassign"
7448 | `Pin_code_create -> "pinCode.create"
7449 | `Pin_code_update -> "pinCode.update"
7450 | `Pin_code_delete -> "pinCode.delete"
7451 | `Plugin_create -> "plugin.create"
7452 | `Plugin_read -> "plugin.read"
7453 | `Plugin_update -> "plugin.update"
7454 | `Plugin_delete -> "plugin.delete"
7455 | `Server_about -> "server.about"
7456 | `Server_apk_links -> "server.apkLinks"
7457 | `Server_storage -> "server.storage"
7458 | `Server_statistics -> "server.statistics"
7459 | `Server_version_check -> "server.versionCheck"
7460 | `Server_license_read -> "serverLicense.read"
7461 | `Server_license_update -> "serverLicense.update"
7462 | `Server_license_delete -> "serverLicense.delete"
7463 | `Session_create -> "session.create"
7464 | `Session_read -> "session.read"
7465 | `Session_update -> "session.update"
7466 | `Session_delete -> "session.delete"
7467 | `Session_lock -> "session.lock"
7468 | `Shared_link_create -> "sharedLink.create"
7469 | `Shared_link_read -> "sharedLink.read"
7470 | `Shared_link_update -> "sharedLink.update"
7471 | `Shared_link_delete -> "sharedLink.delete"
7472 | `Stack_create -> "stack.create"
7473 | `Stack_read -> "stack.read"
7474 | `Stack_update -> "stack.update"
7475 | `Stack_delete -> "stack.delete"
7476 | `Sync_stream -> "sync.stream"
7477 | `Sync_checkpoint_read -> "syncCheckpoint.read"
7478 | `Sync_checkpoint_update -> "syncCheckpoint.update"
7479 | `Sync_checkpoint_delete -> "syncCheckpoint.delete"
7480 | `System_config_read -> "systemConfig.read"
7481 | `System_config_update -> "systemConfig.update"
7482 | `System_metadata_read -> "systemMetadata.read"
7483 | `System_metadata_update -> "systemMetadata.update"
7484 | `Tag_create -> "tag.create"
7485 | `Tag_read -> "tag.read"
7486 | `Tag_update -> "tag.update"
7487 | `Tag_delete -> "tag.delete"
7488 | `Tag_asset -> "tag.asset"
7489 | `User_read -> "user.read"
7490 | `User_update -> "user.update"
7491 | `User_license_create -> "userLicense.create"
7492 | `User_license_read -> "userLicense.read"
7493 | `User_license_update -> "userLicense.update"
7494 | `User_license_delete -> "userLicense.delete"
7495 | `User_onboarding_read -> "userOnboarding.read"
7496 | `User_onboarding_update -> "userOnboarding.update"
7497 | `User_onboarding_delete -> "userOnboarding.delete"
7498 | `User_preference_read -> "userPreference.read"
7499 | `User_preference_update -> "userPreference.update"
7500 | `User_profile_image_create -> "userProfileImage.create"
7501 | `User_profile_image_read -> "userProfileImage.read"
7502 | `User_profile_image_update -> "userProfileImage.update"
7503 | `User_profile_image_delete -> "userProfileImage.delete"
7504 | `Queue_read -> "queue.read"
7505 | `Queue_update -> "queue.update"
7506 | `Queue_job_create -> "queueJob.create"
7507 | `Queue_job_read -> "queueJob.read"
7508 | `Queue_job_update -> "queueJob.update"
7509 | `Queue_job_delete -> "queueJob.delete"
7510 | `Workflow_create -> "workflow.create"
7511 | `Workflow_read -> "workflow.read"
7512 | `Workflow_update -> "workflow.update"
7513 | `Workflow_delete -> "workflow.delete"
7514 | `Admin_user_create -> "adminUser.create"
7515 | `Admin_user_read -> "adminUser.read"
7516 | `Admin_user_update -> "adminUser.update"
7517 | `Admin_user_delete -> "adminUser.delete"
7518 | `Admin_session_read -> "adminSession.read"
7519 | `Admin_auth_unlink_all -> "adminAuth.unlinkAll")
7520 end
7521end
7522
7523module Apikey = struct
7524 module Types = struct
7525 module UpdateDto = struct
7526 type t = {
7527 name : string option;
7528 permissions : Permission.T.t list option;
7529 }
7530 end
7531
7532 module ResponseDto = struct
7533 type t = {
7534 created_at : Ptime.t;
7535 id : string;
7536 name : string;
7537 permissions : Permission.T.t list;
7538 updated_at : Ptime.t;
7539 }
7540 end
7541
7542 module CreateDto = struct
7543 type t = {
7544 name : string option;
7545 permissions : Permission.T.t list;
7546 }
7547 end
7548 end
7549
7550 module UpdateDto = struct
7551 include Types.UpdateDto
7552
7553 let v ?name ?permissions () = { name; permissions }
7554
7555 let name t = t.name
7556 let permissions t = t.permissions
7557
7558 let jsont : t Jsont.t =
7559 Jsont.Object.map ~kind:"APIKeyUpdateDto"
7560 (fun name permissions -> { name; permissions })
7561 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
7562 |> Jsont.Object.opt_mem "permissions" (Openapi.Runtime.validated_list ~min_items:1 Permission.T.jsont) ~enc:(fun r -> r.permissions)
7563 |> Jsont.Object.skip_unknown
7564 |> Jsont.Object.finish
7565 end
7566
7567 module ResponseDto = struct
7568 include Types.ResponseDto
7569
7570 let v ~created_at ~id ~name ~permissions ~updated_at () = { created_at; id; name; permissions; updated_at }
7571
7572 let created_at t = t.created_at
7573 let id t = t.id
7574 let name t = t.name
7575 let permissions t = t.permissions
7576 let updated_at t = t.updated_at
7577
7578 let jsont : t Jsont.t =
7579 Jsont.Object.map ~kind:"APIKeyResponseDto"
7580 (fun created_at id name permissions updated_at -> { created_at; id; name; permissions; updated_at })
7581 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
7582 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
7583 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
7584 |> Jsont.Object.mem "permissions" (Jsont.list Permission.T.jsont) ~enc:(fun r -> r.permissions)
7585 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
7586 |> Jsont.Object.skip_unknown
7587 |> Jsont.Object.finish
7588 end
7589
7590 module CreateDto = struct
7591 include Types.CreateDto
7592
7593 let v ~permissions ?name () = { name; permissions }
7594
7595 let name t = t.name
7596 let permissions t = t.permissions
7597
7598 let jsont : t Jsont.t =
7599 Jsont.Object.map ~kind:"APIKeyCreateDto"
7600 (fun name permissions -> { name; permissions })
7601 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
7602 |> Jsont.Object.mem "permissions" (Openapi.Runtime.validated_list ~min_items:1 Permission.T.jsont) ~enc:(fun r -> r.permissions)
7603 |> Jsont.Object.skip_unknown
7604 |> Jsont.Object.finish
7605 end
7606
7607 (** List all API keys
7608
7609 Retrieve all API keys of the current user. *)
7610 let get_api_keys client () =
7611 let op_name = "get_api_keys" in
7612 let url_path = "/api-keys" in
7613 let query = "" in
7614 let url = client.base_url ^ url_path ^ query in
7615 let response =
7616 try Requests.get client.session url
7617 with Eio.Io _ as ex ->
7618 let bt = Printexc.get_raw_backtrace () in
7619 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
7620 in
7621 if Requests.Response.ok response then
7622 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7623 else
7624 let body = Requests.Response.text response in
7625 let parsed_body =
7626 match Jsont_bytesrw.decode_string Jsont.json body with
7627 | Ok json -> Some (Openapi.Runtime.Json json)
7628 | Error _ -> Some (Openapi.Runtime.Raw body)
7629 in
7630 raise (Openapi.Runtime.Api_error {
7631 operation = op_name;
7632 method_ = "GET";
7633 url;
7634 status = Requests.Response.status_code response;
7635 body;
7636 parsed_body;
7637 })
7638
7639 (** Retrieve the current API key
7640
7641 Retrieve the API key that is used to access this endpoint. *)
7642 let get_my_api_key client () =
7643 let op_name = "get_my_api_key" in
7644 let url_path = "/api-keys/me" in
7645 let query = "" in
7646 let url = client.base_url ^ url_path ^ query in
7647 let response =
7648 try Requests.get client.session url
7649 with Eio.Io _ as ex ->
7650 let bt = Printexc.get_raw_backtrace () in
7651 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
7652 in
7653 if Requests.Response.ok response then
7654 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7655 else
7656 let body = Requests.Response.text response in
7657 let parsed_body =
7658 match Jsont_bytesrw.decode_string Jsont.json body with
7659 | Ok json -> Some (Openapi.Runtime.Json json)
7660 | Error _ -> Some (Openapi.Runtime.Raw body)
7661 in
7662 raise (Openapi.Runtime.Api_error {
7663 operation = op_name;
7664 method_ = "GET";
7665 url;
7666 status = Requests.Response.status_code response;
7667 body;
7668 parsed_body;
7669 })
7670
7671 (** Retrieve an API key
7672
7673 Retrieve an API key by its ID. The current user must own this API key. *)
7674 let get_api_key ~id client () =
7675 let op_name = "get_api_key" in
7676 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/api-keys/{id}" in
7677 let query = "" in
7678 let url = client.base_url ^ url_path ^ query in
7679 let response =
7680 try Requests.get client.session url
7681 with Eio.Io _ as ex ->
7682 let bt = Printexc.get_raw_backtrace () in
7683 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
7684 in
7685 if Requests.Response.ok response then
7686 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7687 else
7688 let body = Requests.Response.text response in
7689 let parsed_body =
7690 match Jsont_bytesrw.decode_string Jsont.json body with
7691 | Ok json -> Some (Openapi.Runtime.Json json)
7692 | Error _ -> Some (Openapi.Runtime.Raw body)
7693 in
7694 raise (Openapi.Runtime.Api_error {
7695 operation = op_name;
7696 method_ = "GET";
7697 url;
7698 status = Requests.Response.status_code response;
7699 body;
7700 parsed_body;
7701 })
7702
7703 (** Update an API key
7704
7705 Updates the name and permissions of an API key by its ID. The current user must own this API key. *)
7706 let update_api_key ~id ~body client () =
7707 let op_name = "update_api_key" in
7708 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/api-keys/{id}" in
7709 let query = "" in
7710 let url = client.base_url ^ url_path ^ query in
7711 let response =
7712 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
7713 with Eio.Io _ as ex ->
7714 let bt = Printexc.get_raw_backtrace () in
7715 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
7716 in
7717 if Requests.Response.ok response then
7718 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7719 else
7720 let body = Requests.Response.text response in
7721 let parsed_body =
7722 match Jsont_bytesrw.decode_string Jsont.json body with
7723 | Ok json -> Some (Openapi.Runtime.Json json)
7724 | Error _ -> Some (Openapi.Runtime.Raw body)
7725 in
7726 raise (Openapi.Runtime.Api_error {
7727 operation = op_name;
7728 method_ = "PUT";
7729 url;
7730 status = Requests.Response.status_code response;
7731 body;
7732 parsed_body;
7733 })
7734end
7735
7736module ApikeyCreate = struct
7737 module Types = struct
7738 module ResponseDto = struct
7739 type t = {
7740 api_key : Apikey.ResponseDto.t;
7741 secret : string;
7742 }
7743 end
7744 end
7745
7746 module ResponseDto = struct
7747 include Types.ResponseDto
7748
7749 let v ~api_key ~secret () = { api_key; secret }
7750
7751 let api_key t = t.api_key
7752 let secret t = t.secret
7753
7754 let jsont : t Jsont.t =
7755 Jsont.Object.map ~kind:"APIKeyCreateResponseDto"
7756 (fun api_key secret -> { api_key; secret })
7757 |> Jsont.Object.mem "apiKey" Apikey.ResponseDto.jsont ~enc:(fun r -> r.api_key)
7758 |> Jsont.Object.mem "secret" Jsont.string ~enc:(fun r -> r.secret)
7759 |> Jsont.Object.skip_unknown
7760 |> Jsont.Object.finish
7761 end
7762
7763 (** Create an API key
7764
7765 Creates a new API key. It will be limited to the permissions specified. *)
7766 let create_api_key ~body client () =
7767 let op_name = "create_api_key" in
7768 let url_path = "/api-keys" in
7769 let query = "" in
7770 let url = client.base_url ^ url_path ^ query in
7771 let response =
7772 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Apikey.CreateDto.jsont body)) url
7773 with Eio.Io _ as ex ->
7774 let bt = Printexc.get_raw_backtrace () in
7775 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
7776 in
7777 if Requests.Response.ok response then
7778 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7779 else
7780 let body = Requests.Response.text response in
7781 let parsed_body =
7782 match Jsont_bytesrw.decode_string Jsont.json body with
7783 | Ok json -> Some (Openapi.Runtime.Json json)
7784 | Error _ -> Some (Openapi.Runtime.Raw body)
7785 in
7786 raise (Openapi.Runtime.Api_error {
7787 operation = op_name;
7788 method_ = "POST";
7789 url;
7790 status = Requests.Response.status_code response;
7791 body;
7792 parsed_body;
7793 })
7794end
7795
7796module PeopleUpdate = struct
7797 module Types = struct
7798 module Item = struct
7799 type t = {
7800 birth_date : string option; (** Person date of birth.
7801 Note: the mobile app cannot currently set the birth date to null. *)
7802 color : string option;
7803 feature_face_asset_id : string option; (** Asset is used to get the feature face thumbnail. *)
7804 id : string; (** Person id. *)
7805 is_favorite : bool option;
7806 is_hidden : bool option; (** Person visibility *)
7807 name : string option; (** Person name. *)
7808 }
7809 end
7810 end
7811
7812 module Item = struct
7813 include Types.Item
7814
7815 let v ~id ?birth_date ?color ?feature_face_asset_id ?is_favorite ?is_hidden ?name () = { birth_date; color; feature_face_asset_id; id; is_favorite; is_hidden; name }
7816
7817 let birth_date t = t.birth_date
7818 let color t = t.color
7819 let feature_face_asset_id t = t.feature_face_asset_id
7820 let id t = t.id
7821 let is_favorite t = t.is_favorite
7822 let is_hidden t = t.is_hidden
7823 let name t = t.name
7824
7825 let jsont : t Jsont.t =
7826 Jsont.Object.map ~kind:"PeopleUpdateItem"
7827 (fun birth_date color feature_face_asset_id id is_favorite is_hidden name -> { birth_date; color; feature_face_asset_id; id; is_favorite; is_hidden; name })
7828 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_string
7829 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
7830 |> Jsont.Object.mem "color" Openapi.Runtime.nullable_string
7831 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.color)
7832 |> Jsont.Object.opt_mem "featureFaceAssetId" Jsont.string ~enc:(fun r -> r.feature_face_asset_id)
7833 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
7834 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
7835 |> Jsont.Object.opt_mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
7836 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
7837 |> Jsont.Object.skip_unknown
7838 |> Jsont.Object.finish
7839 end
7840end
7841
7842module PartnerDirection = struct
7843 module Types = struct
7844 module T = struct
7845 type t = [
7846 | `Shared_by
7847 | `Shared_with
7848 ]
7849 end
7850 end
7851
7852 module T = struct
7853 include Types.T
7854
7855 let jsont : t Jsont.t =
7856 Jsont.map Jsont.string ~kind:"PartnerDirection"
7857 ~dec:(function
7858 | "shared-by" -> `Shared_by
7859 | "shared-with" -> `Shared_with
7860 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
7861 ~enc:(function
7862 | `Shared_by -> "shared-by"
7863 | `Shared_with -> "shared-with")
7864 end
7865end
7866
7867module Onboarding = struct
7868 module Types = struct
7869 module ResponseDto = struct
7870 type t = {
7871 is_onboarded : bool;
7872 }
7873 end
7874
7875 module Dto = struct
7876 type t = {
7877 is_onboarded : bool;
7878 }
7879 end
7880 end
7881
7882 module ResponseDto = struct
7883 include Types.ResponseDto
7884
7885 let v ~is_onboarded () = { is_onboarded }
7886
7887 let is_onboarded t = t.is_onboarded
7888
7889 let jsont : t Jsont.t =
7890 Jsont.Object.map ~kind:"OnboardingResponseDto"
7891 (fun is_onboarded -> { is_onboarded })
7892 |> Jsont.Object.mem "isOnboarded" Jsont.bool ~enc:(fun r -> r.is_onboarded)
7893 |> Jsont.Object.skip_unknown
7894 |> Jsont.Object.finish
7895 end
7896
7897 module Dto = struct
7898 include Types.Dto
7899
7900 let v ~is_onboarded () = { is_onboarded }
7901
7902 let is_onboarded t = t.is_onboarded
7903
7904 let jsont : t Jsont.t =
7905 Jsont.Object.map ~kind:"OnboardingDto"
7906 (fun is_onboarded -> { is_onboarded })
7907 |> Jsont.Object.mem "isOnboarded" Jsont.bool ~enc:(fun r -> r.is_onboarded)
7908 |> Jsont.Object.skip_unknown
7909 |> Jsont.Object.finish
7910 end
7911
7912 (** Retrieve user onboarding
7913
7914 Retrieve the onboarding status of the current user. *)
7915 let get_user_onboarding client () =
7916 let op_name = "get_user_onboarding" in
7917 let url_path = "/users/me/onboarding" in
7918 let query = "" in
7919 let url = client.base_url ^ url_path ^ query in
7920 let response =
7921 try Requests.get client.session url
7922 with Eio.Io _ as ex ->
7923 let bt = Printexc.get_raw_backtrace () in
7924 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
7925 in
7926 if Requests.Response.ok response then
7927 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7928 else
7929 let body = Requests.Response.text response in
7930 let parsed_body =
7931 match Jsont_bytesrw.decode_string Jsont.json body with
7932 | Ok json -> Some (Openapi.Runtime.Json json)
7933 | Error _ -> Some (Openapi.Runtime.Raw body)
7934 in
7935 raise (Openapi.Runtime.Api_error {
7936 operation = op_name;
7937 method_ = "GET";
7938 url;
7939 status = Requests.Response.status_code response;
7940 body;
7941 parsed_body;
7942 })
7943
7944 (** Update user onboarding
7945
7946 Update the onboarding status of the current user. *)
7947 let set_user_onboarding ~body client () =
7948 let op_name = "set_user_onboarding" in
7949 let url_path = "/users/me/onboarding" in
7950 let query = "" in
7951 let url = client.base_url ^ url_path ^ query in
7952 let response =
7953 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
7954 with Eio.Io _ as ex ->
7955 let bt = Printexc.get_raw_backtrace () in
7956 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
7957 in
7958 if Requests.Response.ok response then
7959 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
7960 else
7961 let body = Requests.Response.text response in
7962 let parsed_body =
7963 match Jsont_bytesrw.decode_string Jsont.json body with
7964 | Ok json -> Some (Openapi.Runtime.Json json)
7965 | Error _ -> Some (Openapi.Runtime.Raw body)
7966 in
7967 raise (Openapi.Runtime.Api_error {
7968 operation = op_name;
7969 method_ = "PUT";
7970 url;
7971 status = Requests.Response.status_code response;
7972 body;
7973 parsed_body;
7974 })
7975end
7976
7977module OnThisDay = struct
7978 module Types = struct
7979 module Dto = struct
7980 type t = {
7981 year : float;
7982 }
7983 end
7984 end
7985
7986 module Dto = struct
7987 include Types.Dto
7988
7989 let v ~year () = { year }
7990
7991 let year t = t.year
7992
7993 let jsont : t Jsont.t =
7994 Jsont.Object.map ~kind:"OnThisDayDto"
7995 (fun year -> { year })
7996 |> Jsont.Object.mem "year" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.year)
7997 |> Jsont.Object.skip_unknown
7998 |> Jsont.Object.finish
7999 end
8000end
8001
8002module Ocr = struct
8003 module Types = struct
8004 module Config = struct
8005 type t = {
8006 enabled : bool;
8007 max_resolution : int;
8008 min_detection_score : float;
8009 min_recognition_score : float;
8010 model_name : string;
8011 }
8012 end
8013 end
8014
8015 module Config = struct
8016 include Types.Config
8017
8018 let v ~enabled ~max_resolution ~min_detection_score ~min_recognition_score ~model_name () = { enabled; max_resolution; min_detection_score; min_recognition_score; model_name }
8019
8020 let enabled t = t.enabled
8021 let max_resolution t = t.max_resolution
8022 let min_detection_score t = t.min_detection_score
8023 let min_recognition_score t = t.min_recognition_score
8024 let model_name t = t.model_name
8025
8026 let jsont : t Jsont.t =
8027 Jsont.Object.map ~kind:"OcrConfig"
8028 (fun enabled max_resolution min_detection_score min_recognition_score model_name -> { enabled; max_resolution; min_detection_score; min_recognition_score; model_name })
8029 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
8030 |> Jsont.Object.mem "maxResolution" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.max_resolution)
8031 |> Jsont.Object.mem "minDetectionScore" (Openapi.Runtime.validated_float ~minimum:0.1 ~maximum:1. Jsont.number) ~enc:(fun r -> r.min_detection_score)
8032 |> Jsont.Object.mem "minRecognitionScore" (Openapi.Runtime.validated_float ~minimum:0.1 ~maximum:1. Jsont.number) ~enc:(fun r -> r.min_recognition_score)
8033 |> Jsont.Object.mem "modelName" Jsont.string ~enc:(fun r -> r.model_name)
8034 |> Jsont.Object.skip_unknown
8035 |> Jsont.Object.finish
8036 end
8037end
8038
8039module OauthTokenEndpointAuthMethod = struct
8040 module Types = struct
8041 module T = struct
8042 type t = [
8043 | `Client_secret_post
8044 | `Client_secret_basic
8045 ]
8046 end
8047 end
8048
8049 module T = struct
8050 include Types.T
8051
8052 let jsont : t Jsont.t =
8053 Jsont.map Jsont.string ~kind:"OAuthTokenEndpointAuthMethod"
8054 ~dec:(function
8055 | "client_secret_post" -> `Client_secret_post
8056 | "client_secret_basic" -> `Client_secret_basic
8057 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8058 ~enc:(function
8059 | `Client_secret_post -> "client_secret_post"
8060 | `Client_secret_basic -> "client_secret_basic")
8061 end
8062end
8063
8064module SystemConfigOauth = struct
8065 module Types = struct
8066 module Dto = struct
8067 type t = {
8068 auto_launch : bool;
8069 auto_register : bool;
8070 button_text : string;
8071 client_id : string;
8072 client_secret : string;
8073 default_storage_quota : int64 option;
8074 enabled : bool;
8075 issuer_url : string;
8076 mobile_override_enabled : bool;
8077 mobile_redirect_uri : string;
8078 profile_signing_algorithm : string;
8079 role_claim : string;
8080 scope : string;
8081 signing_algorithm : string;
8082 storage_label_claim : string;
8083 storage_quota_claim : string;
8084 timeout : int;
8085 token_endpoint_auth_method : OauthTokenEndpointAuthMethod.T.t;
8086 }
8087 end
8088 end
8089
8090 module Dto = struct
8091 include Types.Dto
8092
8093 let v ~auto_launch ~auto_register ~button_text ~client_id ~client_secret ~enabled ~issuer_url ~mobile_override_enabled ~mobile_redirect_uri ~profile_signing_algorithm ~role_claim ~scope ~signing_algorithm ~storage_label_claim ~storage_quota_claim ~timeout ~token_endpoint_auth_method ?default_storage_quota () = { auto_launch; auto_register; button_text; client_id; client_secret; default_storage_quota; enabled; issuer_url; mobile_override_enabled; mobile_redirect_uri; profile_signing_algorithm; role_claim; scope; signing_algorithm; storage_label_claim; storage_quota_claim; timeout; token_endpoint_auth_method }
8094
8095 let auto_launch t = t.auto_launch
8096 let auto_register t = t.auto_register
8097 let button_text t = t.button_text
8098 let client_id t = t.client_id
8099 let client_secret t = t.client_secret
8100 let default_storage_quota t = t.default_storage_quota
8101 let enabled t = t.enabled
8102 let issuer_url t = t.issuer_url
8103 let mobile_override_enabled t = t.mobile_override_enabled
8104 let mobile_redirect_uri t = t.mobile_redirect_uri
8105 let profile_signing_algorithm t = t.profile_signing_algorithm
8106 let role_claim t = t.role_claim
8107 let scope t = t.scope
8108 let signing_algorithm t = t.signing_algorithm
8109 let storage_label_claim t = t.storage_label_claim
8110 let storage_quota_claim t = t.storage_quota_claim
8111 let timeout t = t.timeout
8112 let token_endpoint_auth_method t = t.token_endpoint_auth_method
8113
8114 let jsont : t Jsont.t =
8115 Jsont.Object.map ~kind:"SystemConfigOAuthDto"
8116 (fun auto_launch auto_register button_text client_id client_secret default_storage_quota enabled issuer_url mobile_override_enabled mobile_redirect_uri profile_signing_algorithm role_claim scope signing_algorithm storage_label_claim storage_quota_claim timeout token_endpoint_auth_method -> { auto_launch; auto_register; button_text; client_id; client_secret; default_storage_quota; enabled; issuer_url; mobile_override_enabled; mobile_redirect_uri; profile_signing_algorithm; role_claim; scope; signing_algorithm; storage_label_claim; storage_quota_claim; timeout; token_endpoint_auth_method })
8117 |> Jsont.Object.mem "autoLaunch" Jsont.bool ~enc:(fun r -> r.auto_launch)
8118 |> Jsont.Object.mem "autoRegister" Jsont.bool ~enc:(fun r -> r.auto_register)
8119 |> Jsont.Object.mem "buttonText" Jsont.string ~enc:(fun r -> r.button_text)
8120 |> Jsont.Object.mem "clientId" Jsont.string ~enc:(fun r -> r.client_id)
8121 |> Jsont.Object.mem "clientSecret" Jsont.string ~enc:(fun r -> r.client_secret)
8122 |> Jsont.Object.mem "defaultStorageQuota" (Openapi.Runtime.nullable_any Jsont.int64)
8123 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.default_storage_quota)
8124 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
8125 |> Jsont.Object.mem "issuerUrl" Jsont.string ~enc:(fun r -> r.issuer_url)
8126 |> Jsont.Object.mem "mobileOverrideEnabled" Jsont.bool ~enc:(fun r -> r.mobile_override_enabled)
8127 |> Jsont.Object.mem "mobileRedirectUri" Jsont.string ~enc:(fun r -> r.mobile_redirect_uri)
8128 |> Jsont.Object.mem "profileSigningAlgorithm" Jsont.string ~enc:(fun r -> r.profile_signing_algorithm)
8129 |> Jsont.Object.mem "roleClaim" Jsont.string ~enc:(fun r -> r.role_claim)
8130 |> Jsont.Object.mem "scope" Jsont.string ~enc:(fun r -> r.scope)
8131 |> Jsont.Object.mem "signingAlgorithm" Jsont.string ~enc:(fun r -> r.signing_algorithm)
8132 |> Jsont.Object.mem "storageLabelClaim" Jsont.string ~enc:(fun r -> r.storage_label_claim)
8133 |> Jsont.Object.mem "storageQuotaClaim" Jsont.string ~enc:(fun r -> r.storage_quota_claim)
8134 |> Jsont.Object.mem "timeout" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.timeout)
8135 |> Jsont.Object.mem "tokenEndpointAuthMethod" OauthTokenEndpointAuthMethod.T.jsont ~enc:(fun r -> r.token_endpoint_auth_method)
8136 |> Jsont.Object.skip_unknown
8137 |> Jsont.Object.finish
8138 end
8139end
8140
8141module OauthConfig = struct
8142 module Types = struct
8143 module Dto = struct
8144 type t = {
8145 code_challenge : string option;
8146 redirect_uri : string;
8147 state : string option;
8148 }
8149 end
8150 end
8151
8152 module Dto = struct
8153 include Types.Dto
8154
8155 let v ~redirect_uri ?code_challenge ?state () = { code_challenge; redirect_uri; state }
8156
8157 let code_challenge t = t.code_challenge
8158 let redirect_uri t = t.redirect_uri
8159 let state t = t.state
8160
8161 let jsont : t Jsont.t =
8162 Jsont.Object.map ~kind:"OAuthConfigDto"
8163 (fun code_challenge redirect_uri state -> { code_challenge; redirect_uri; state })
8164 |> Jsont.Object.opt_mem "codeChallenge" Jsont.string ~enc:(fun r -> r.code_challenge)
8165 |> Jsont.Object.mem "redirectUri" Jsont.string ~enc:(fun r -> r.redirect_uri)
8166 |> Jsont.Object.opt_mem "state" Jsont.string ~enc:(fun r -> r.state)
8167 |> Jsont.Object.skip_unknown
8168 |> Jsont.Object.finish
8169 end
8170end
8171
8172module OauthAuthorize = struct
8173 module Types = struct
8174 module ResponseDto = struct
8175 type t = {
8176 url : string;
8177 }
8178 end
8179 end
8180
8181 module ResponseDto = struct
8182 include Types.ResponseDto
8183
8184 let v ~url () = { url }
8185
8186 let url t = t.url
8187
8188 let jsont : t Jsont.t =
8189 Jsont.Object.map ~kind:"OAuthAuthorizeResponseDto"
8190 (fun url -> { url })
8191 |> Jsont.Object.mem "url" Jsont.string ~enc:(fun r -> r.url)
8192 |> Jsont.Object.skip_unknown
8193 |> Jsont.Object.finish
8194 end
8195
8196 (** Start OAuth
8197
8198 Initiate the OAuth authorization process. *)
8199 let start_oauth ~body client () =
8200 let op_name = "start_oauth" in
8201 let url_path = "/oauth/authorize" in
8202 let query = "" in
8203 let url = client.base_url ^ url_path ^ query in
8204 let response =
8205 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json OauthConfig.Dto.jsont body)) url
8206 with Eio.Io _ as ex ->
8207 let bt = Printexc.get_raw_backtrace () in
8208 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
8209 in
8210 if Requests.Response.ok response then
8211 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
8212 else
8213 let body = Requests.Response.text response in
8214 let parsed_body =
8215 match Jsont_bytesrw.decode_string Jsont.json body with
8216 | Ok json -> Some (Openapi.Runtime.Json json)
8217 | Error _ -> Some (Openapi.Runtime.Raw body)
8218 in
8219 raise (Openapi.Runtime.Api_error {
8220 operation = op_name;
8221 method_ = "POST";
8222 url;
8223 status = Requests.Response.status_code response;
8224 body;
8225 parsed_body;
8226 })
8227end
8228
8229module OauthCallback = struct
8230 module Types = struct
8231 module Dto = struct
8232 type t = {
8233 code_verifier : string option;
8234 state : string option;
8235 url : string;
8236 }
8237 end
8238 end
8239
8240 module Dto = struct
8241 include Types.Dto
8242
8243 let v ~url ?code_verifier ?state () = { code_verifier; state; url }
8244
8245 let code_verifier t = t.code_verifier
8246 let state t = t.state
8247 let url t = t.url
8248
8249 let jsont : t Jsont.t =
8250 Jsont.Object.map ~kind:"OAuthCallbackDto"
8251 (fun code_verifier state url -> { code_verifier; state; url })
8252 |> Jsont.Object.opt_mem "codeVerifier" Jsont.string ~enc:(fun r -> r.code_verifier)
8253 |> Jsont.Object.opt_mem "state" Jsont.string ~enc:(fun r -> r.state)
8254 |> Jsont.Object.mem "url" Jsont.string ~enc:(fun r -> r.url)
8255 |> Jsont.Object.skip_unknown
8256 |> Jsont.Object.finish
8257 end
8258end
8259
8260module NotificationUpdateAll = struct
8261 module Types = struct
8262 module Dto = struct
8263 type t = {
8264 ids : string list;
8265 read_at : Ptime.t option;
8266 }
8267 end
8268 end
8269
8270 module Dto = struct
8271 include Types.Dto
8272
8273 let v ~ids ?read_at () = { ids; read_at }
8274
8275 let ids t = t.ids
8276 let read_at t = t.read_at
8277
8278 let jsont : t Jsont.t =
8279 Jsont.Object.map ~kind:"NotificationUpdateAllDto"
8280 (fun ids read_at -> { ids; read_at })
8281 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
8282 |> Jsont.Object.mem "readAt" Openapi.Runtime.nullable_ptime
8283 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.read_at)
8284 |> Jsont.Object.skip_unknown
8285 |> Jsont.Object.finish
8286 end
8287end
8288
8289module NotificationLevel = struct
8290 module Types = struct
8291 module T = struct
8292 type t = [
8293 | `Success
8294 | `Error
8295 | `Warning
8296 | `Info
8297 ]
8298 end
8299 end
8300
8301 module T = struct
8302 include Types.T
8303
8304 let jsont : t Jsont.t =
8305 Jsont.map Jsont.string ~kind:"NotificationLevel"
8306 ~dec:(function
8307 | "success" -> `Success
8308 | "error" -> `Error
8309 | "warning" -> `Warning
8310 | "info" -> `Info
8311 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8312 ~enc:(function
8313 | `Success -> "success"
8314 | `Error -> "error"
8315 | `Warning -> "warning"
8316 | `Info -> "info")
8317 end
8318end
8319
8320module Notification = struct
8321 module Types = struct
8322 module UpdateDto = struct
8323 type t = {
8324 read_at : Ptime.t option;
8325 }
8326 end
8327
8328 module Type = struct
8329 type t = [
8330 | `Job_failed
8331 | `Backup_failed
8332 | `System_message
8333 | `Album_invite
8334 | `Album_update
8335 | `Custom
8336 ]
8337 end
8338
8339 module Dto = struct
8340 type t = {
8341 created_at : Ptime.t;
8342 data : Jsont.json option;
8343 description : string option;
8344 id : string;
8345 level : NotificationLevel.T.t;
8346 read_at : Ptime.t option;
8347 title : string;
8348 type_ : Type.t;
8349 }
8350 end
8351
8352 module CreateDto = struct
8353 type t = {
8354 data : Jsont.json option;
8355 description : string option;
8356 level : NotificationLevel.T.t option;
8357 read_at : Ptime.t option;
8358 title : string;
8359 type_ : Type.t option;
8360 user_id : string;
8361 }
8362 end
8363 end
8364
8365 module UpdateDto = struct
8366 include Types.UpdateDto
8367
8368 let v ?read_at () = { read_at }
8369
8370 let read_at t = t.read_at
8371
8372 let jsont : t Jsont.t =
8373 Jsont.Object.map ~kind:"NotificationUpdateDto"
8374 (fun read_at -> { read_at })
8375 |> Jsont.Object.mem "readAt" Openapi.Runtime.nullable_ptime
8376 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.read_at)
8377 |> Jsont.Object.skip_unknown
8378 |> Jsont.Object.finish
8379 end
8380
8381 module Type = struct
8382 include Types.Type
8383
8384 let jsont : t Jsont.t =
8385 Jsont.map Jsont.string ~kind:"NotificationType"
8386 ~dec:(function
8387 | "JobFailed" -> `Job_failed
8388 | "BackupFailed" -> `Backup_failed
8389 | "SystemMessage" -> `System_message
8390 | "AlbumInvite" -> `Album_invite
8391 | "AlbumUpdate" -> `Album_update
8392 | "Custom" -> `Custom
8393 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8394 ~enc:(function
8395 | `Job_failed -> "JobFailed"
8396 | `Backup_failed -> "BackupFailed"
8397 | `System_message -> "SystemMessage"
8398 | `Album_invite -> "AlbumInvite"
8399 | `Album_update -> "AlbumUpdate"
8400 | `Custom -> "Custom")
8401 end
8402
8403 module Dto = struct
8404 include Types.Dto
8405
8406 let v ~created_at ~id ~level ~title ~type_ ?data ?description ?read_at () = { created_at; data; description; id; level; read_at; title; type_ }
8407
8408 let created_at t = t.created_at
8409 let data t = t.data
8410 let description t = t.description
8411 let id t = t.id
8412 let level t = t.level
8413 let read_at t = t.read_at
8414 let title t = t.title
8415 let type_ t = t.type_
8416
8417 let jsont : t Jsont.t =
8418 Jsont.Object.map ~kind:"NotificationDto"
8419 (fun created_at data description id level read_at title type_ -> { created_at; data; description; id; level; read_at; title; type_ })
8420 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
8421 |> Jsont.Object.opt_mem "data" Jsont.json ~enc:(fun r -> r.data)
8422 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
8423 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
8424 |> Jsont.Object.mem "level" NotificationLevel.T.jsont ~enc:(fun r -> r.level)
8425 |> Jsont.Object.opt_mem "readAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.read_at)
8426 |> Jsont.Object.mem "title" Jsont.string ~enc:(fun r -> r.title)
8427 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
8428 |> Jsont.Object.skip_unknown
8429 |> Jsont.Object.finish
8430 end
8431
8432 module CreateDto = struct
8433 include Types.CreateDto
8434
8435 let v ~title ~user_id ?data ?description ?level ?read_at ?type_ () = { data; description; level; read_at; title; type_; user_id }
8436
8437 let data t = t.data
8438 let description t = t.description
8439 let level t = t.level
8440 let read_at t = t.read_at
8441 let title t = t.title
8442 let type_ t = t.type_
8443 let user_id t = t.user_id
8444
8445 let jsont : t Jsont.t =
8446 Jsont.Object.map ~kind:"NotificationCreateDto"
8447 (fun data description level read_at title type_ user_id -> { data; description; level; read_at; title; type_; user_id })
8448 |> Jsont.Object.opt_mem "data" Jsont.json ~enc:(fun r -> r.data)
8449 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
8450 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
8451 |> Jsont.Object.opt_mem "level" NotificationLevel.T.jsont ~enc:(fun r -> r.level)
8452 |> Jsont.Object.mem "readAt" Openapi.Runtime.nullable_ptime
8453 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.read_at)
8454 |> Jsont.Object.mem "title" Jsont.string ~enc:(fun r -> r.title)
8455 |> Jsont.Object.opt_mem "type" Type.jsont ~enc:(fun r -> r.type_)
8456 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
8457 |> Jsont.Object.skip_unknown
8458 |> Jsont.Object.finish
8459 end
8460
8461 (** Create a notification
8462
8463 Create a new notification for a specific user. *)
8464 let create_notification ~body client () =
8465 let op_name = "create_notification" in
8466 let url_path = "/admin/notifications" in
8467 let query = "" in
8468 let url = client.base_url ^ url_path ^ query in
8469 let response =
8470 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
8471 with Eio.Io _ as ex ->
8472 let bt = Printexc.get_raw_backtrace () in
8473 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
8474 in
8475 if Requests.Response.ok response then
8476 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
8477 else
8478 let body = Requests.Response.text response in
8479 let parsed_body =
8480 match Jsont_bytesrw.decode_string Jsont.json body with
8481 | Ok json -> Some (Openapi.Runtime.Json json)
8482 | Error _ -> Some (Openapi.Runtime.Raw body)
8483 in
8484 raise (Openapi.Runtime.Api_error {
8485 operation = op_name;
8486 method_ = "POST";
8487 url;
8488 status = Requests.Response.status_code response;
8489 body;
8490 parsed_body;
8491 })
8492
8493 (** Retrieve notifications
8494
8495 Retrieve a list of notifications. *)
8496 let get_notifications ?id ?level ?type_ ?unread client () =
8497 let op_name = "get_notifications" in
8498 let url_path = "/notifications" in
8499 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"id" ~value:id; Openapi.Runtime.Query.optional ~key:"level" ~value:level; Openapi.Runtime.Query.optional ~key:"type" ~value:type_; Openapi.Runtime.Query.optional ~key:"unread" ~value:unread]) in
8500 let url = client.base_url ^ url_path ^ query in
8501 let response =
8502 try Requests.get client.session url
8503 with Eio.Io _ as ex ->
8504 let bt = Printexc.get_raw_backtrace () in
8505 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
8506 in
8507 if Requests.Response.ok response then
8508 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
8509 else
8510 let body = Requests.Response.text response in
8511 let parsed_body =
8512 match Jsont_bytesrw.decode_string Jsont.json body with
8513 | Ok json -> Some (Openapi.Runtime.Json json)
8514 | Error _ -> Some (Openapi.Runtime.Raw body)
8515 in
8516 raise (Openapi.Runtime.Api_error {
8517 operation = op_name;
8518 method_ = "GET";
8519 url;
8520 status = Requests.Response.status_code response;
8521 body;
8522 parsed_body;
8523 })
8524
8525 (** Get a notification
8526
8527 Retrieve a specific notification identified by id. *)
8528 let get_notification ~id client () =
8529 let op_name = "get_notification" in
8530 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/notifications/{id}" in
8531 let query = "" in
8532 let url = client.base_url ^ url_path ^ query in
8533 let response =
8534 try Requests.get client.session url
8535 with Eio.Io _ as ex ->
8536 let bt = Printexc.get_raw_backtrace () in
8537 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
8538 in
8539 if Requests.Response.ok response then
8540 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
8541 else
8542 let body = Requests.Response.text response in
8543 let parsed_body =
8544 match Jsont_bytesrw.decode_string Jsont.json body with
8545 | Ok json -> Some (Openapi.Runtime.Json json)
8546 | Error _ -> Some (Openapi.Runtime.Raw body)
8547 in
8548 raise (Openapi.Runtime.Api_error {
8549 operation = op_name;
8550 method_ = "GET";
8551 url;
8552 status = Requests.Response.status_code response;
8553 body;
8554 parsed_body;
8555 })
8556
8557 (** Update a notification
8558
8559 Update a specific notification to set its read status. *)
8560 let update_notification ~id ~body client () =
8561 let op_name = "update_notification" in
8562 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/notifications/{id}" in
8563 let query = "" in
8564 let url = client.base_url ^ url_path ^ query in
8565 let response =
8566 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
8567 with Eio.Io _ as ex ->
8568 let bt = Printexc.get_raw_backtrace () in
8569 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
8570 in
8571 if Requests.Response.ok response then
8572 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
8573 else
8574 let body = Requests.Response.text response in
8575 let parsed_body =
8576 match Jsont_bytesrw.decode_string Jsont.json body with
8577 | Ok json -> Some (Openapi.Runtime.Json json)
8578 | Error _ -> Some (Openapi.Runtime.Raw body)
8579 in
8580 raise (Openapi.Runtime.Api_error {
8581 operation = op_name;
8582 method_ = "PUT";
8583 url;
8584 status = Requests.Response.status_code response;
8585 body;
8586 parsed_body;
8587 })
8588end
8589
8590module NotificationDeleteAll = struct
8591 module Types = struct
8592 module Dto = struct
8593 type t = {
8594 ids : string list;
8595 }
8596 end
8597 end
8598
8599 module Dto = struct
8600 include Types.Dto
8601
8602 let v ~ids () = { ids }
8603
8604 let ids t = t.ids
8605
8606 let jsont : t Jsont.t =
8607 Jsont.Object.map ~kind:"NotificationDeleteAllDto"
8608 (fun ids -> { ids })
8609 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
8610 |> Jsont.Object.skip_unknown
8611 |> Jsont.Object.finish
8612 end
8613end
8614
8615module MirrorAxis = struct
8616 module Types = struct
8617 module T = struct
8618 (** Axis to mirror along *)
8619 type t = [
8620 | `Horizontal
8621 | `Vertical
8622 ]
8623 end
8624 end
8625
8626 module T = struct
8627 include Types.T
8628
8629 let jsont : t Jsont.t =
8630 Jsont.map Jsont.string ~kind:"MirrorAxis"
8631 ~dec:(function
8632 | "horizontal" -> `Horizontal
8633 | "vertical" -> `Vertical
8634 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8635 ~enc:(function
8636 | `Horizontal -> "horizontal"
8637 | `Vertical -> "vertical")
8638 end
8639end
8640
8641module MirrorParameters = struct
8642 module Types = struct
8643 module T = struct
8644 type t = {
8645 axis : MirrorAxis.T.t; (** Axis to mirror along *)
8646 }
8647 end
8648 end
8649
8650 module T = struct
8651 include Types.T
8652
8653 let v ~axis () = { axis }
8654
8655 let axis t = t.axis
8656
8657 let jsont : t Jsont.t =
8658 Jsont.Object.map ~kind:"MirrorParameters"
8659 (fun axis -> { axis })
8660 |> Jsont.Object.mem "axis" MirrorAxis.T.jsont ~enc:(fun r -> r.axis)
8661 |> Jsont.Object.skip_unknown
8662 |> Jsont.Object.finish
8663 end
8664end
8665
8666module MergePerson = struct
8667 module Types = struct
8668 module Dto = struct
8669 type t = {
8670 ids : string list;
8671 }
8672 end
8673 end
8674
8675 module Dto = struct
8676 include Types.Dto
8677
8678 let v ~ids () = { ids }
8679
8680 let ids t = t.ids
8681
8682 let jsont : t Jsont.t =
8683 Jsont.Object.map ~kind:"MergePersonDto"
8684 (fun ids -> { ids })
8685 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
8686 |> Jsont.Object.skip_unknown
8687 |> Jsont.Object.finish
8688 end
8689end
8690
8691module MemoryStatistics = struct
8692 module Types = struct
8693 module ResponseDto = struct
8694 type t = {
8695 total : int;
8696 }
8697 end
8698 end
8699
8700 module ResponseDto = struct
8701 include Types.ResponseDto
8702
8703 let v ~total () = { total }
8704
8705 let total t = t.total
8706
8707 let jsont : t Jsont.t =
8708 Jsont.Object.map ~kind:"MemoryStatisticsResponseDto"
8709 (fun total -> { total })
8710 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
8711 |> Jsont.Object.skip_unknown
8712 |> Jsont.Object.finish
8713 end
8714
8715 (** Retrieve memories statistics
8716
8717 Retrieve statistics about memories, such as total count and other relevant metrics.
8718 @param size Number of memories to return
8719 *)
8720 let memories_statistics ?for_ ?is_saved ?is_trashed ?order ?size ?type_ client () =
8721 let op_name = "memories_statistics" in
8722 let url_path = "/memories/statistics" in
8723 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"for" ~value:for_; Openapi.Runtime.Query.optional ~key:"isSaved" ~value:is_saved; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"order" ~value:order; Openapi.Runtime.Query.optional ~key:"size" ~value:size; Openapi.Runtime.Query.optional ~key:"type" ~value:type_]) in
8724 let url = client.base_url ^ url_path ^ query in
8725 let response =
8726 try Requests.get client.session url
8727 with Eio.Io _ as ex ->
8728 let bt = Printexc.get_raw_backtrace () in
8729 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
8730 in
8731 if Requests.Response.ok response then
8732 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
8733 else
8734 let body = Requests.Response.text response in
8735 let parsed_body =
8736 match Jsont_bytesrw.decode_string Jsont.json body with
8737 | Ok json -> Some (Openapi.Runtime.Json json)
8738 | Error _ -> Some (Openapi.Runtime.Raw body)
8739 in
8740 raise (Openapi.Runtime.Api_error {
8741 operation = op_name;
8742 method_ = "GET";
8743 url;
8744 status = Requests.Response.status_code response;
8745 body;
8746 parsed_body;
8747 })
8748end
8749
8750module MemorySearchOrder = struct
8751 module Types = struct
8752 module T = struct
8753 type t = [
8754 | `Asc
8755 | `Desc
8756 | `Random
8757 ]
8758 end
8759 end
8760
8761 module T = struct
8762 include Types.T
8763
8764 let jsont : t Jsont.t =
8765 Jsont.map Jsont.string ~kind:"MemorySearchOrder"
8766 ~dec:(function
8767 | "asc" -> `Asc
8768 | "desc" -> `Desc
8769 | "random" -> `Random
8770 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8771 ~enc:(function
8772 | `Asc -> "asc"
8773 | `Desc -> "desc"
8774 | `Random -> "random")
8775 end
8776end
8777
8778module Memories = struct
8779 module Types = struct
8780 module Update = struct
8781 type t = {
8782 duration : int option;
8783 enabled : bool option;
8784 }
8785 end
8786
8787 module Response = struct
8788 type t = {
8789 duration : int;
8790 enabled : bool;
8791 }
8792 end
8793 end
8794
8795 module Update = struct
8796 include Types.Update
8797
8798 let v ?duration ?enabled () = { duration; enabled }
8799
8800 let duration t = t.duration
8801 let enabled t = t.enabled
8802
8803 let jsont : t Jsont.t =
8804 Jsont.Object.map ~kind:"MemoriesUpdate"
8805 (fun duration enabled -> { duration; enabled })
8806 |> Jsont.Object.opt_mem "duration" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.duration)
8807 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
8808 |> Jsont.Object.skip_unknown
8809 |> Jsont.Object.finish
8810 end
8811
8812 module Response = struct
8813 include Types.Response
8814
8815 let v ?(duration=5) ?(enabled=true) () = { duration; enabled }
8816
8817 let duration t = t.duration
8818 let enabled t = t.enabled
8819
8820 let jsont : t Jsont.t =
8821 Jsont.Object.map ~kind:"MemoriesResponse"
8822 (fun duration enabled -> { duration; enabled })
8823 |> Jsont.Object.mem "duration" Jsont.int ~dec_absent:5 ~enc:(fun r -> r.duration)
8824 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.enabled)
8825 |> Jsont.Object.skip_unknown
8826 |> Jsont.Object.finish
8827 end
8828end
8829
8830module MapReverseGeocode = struct
8831 module Types = struct
8832 module ResponseDto = struct
8833 type t = {
8834 city : string option;
8835 country : string option;
8836 state : string option;
8837 }
8838 end
8839 end
8840
8841 module ResponseDto = struct
8842 include Types.ResponseDto
8843
8844 let v ?city ?country ?state () = { city; country; state }
8845
8846 let city t = t.city
8847 let country t = t.country
8848 let state t = t.state
8849
8850 let jsont : t Jsont.t =
8851 Jsont.Object.map ~kind:"MapReverseGeocodeResponseDto"
8852 (fun city country state -> { city; country; state })
8853 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
8854 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
8855 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
8856 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
8857 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
8858 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
8859 |> Jsont.Object.skip_unknown
8860 |> Jsont.Object.finish
8861 end
8862
8863 (** Reverse geocode coordinates
8864
8865 Retrieve location information (e.g., city, country) for given latitude and longitude coordinates. *)
8866 let reverse_geocode ~lat ~lon client () =
8867 let op_name = "reverse_geocode" in
8868 let url_path = "/map/reverse-geocode" in
8869 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"lat" ~value:lat; Openapi.Runtime.Query.singleton ~key:"lon" ~value:lon]) in
8870 let url = client.base_url ^ url_path ^ query in
8871 let response =
8872 try Requests.get client.session url
8873 with Eio.Io _ as ex ->
8874 let bt = Printexc.get_raw_backtrace () in
8875 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
8876 in
8877 if Requests.Response.ok response then
8878 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
8879 else
8880 let body = Requests.Response.text response in
8881 let parsed_body =
8882 match Jsont_bytesrw.decode_string Jsont.json body with
8883 | Ok json -> Some (Openapi.Runtime.Json json)
8884 | Error _ -> Some (Openapi.Runtime.Raw body)
8885 in
8886 raise (Openapi.Runtime.Api_error {
8887 operation = op_name;
8888 method_ = "GET";
8889 url;
8890 status = Requests.Response.status_code response;
8891 body;
8892 parsed_body;
8893 })
8894end
8895
8896module MapMarker = struct
8897 module Types = struct
8898 module ResponseDto = struct
8899 type t = {
8900 city : string option;
8901 country : string option;
8902 id : string;
8903 lat : float;
8904 lon : float;
8905 state : string option;
8906 }
8907 end
8908 end
8909
8910 module ResponseDto = struct
8911 include Types.ResponseDto
8912
8913 let v ~id ~lat ~lon ?city ?country ?state () = { city; country; id; lat; lon; state }
8914
8915 let city t = t.city
8916 let country t = t.country
8917 let id t = t.id
8918 let lat t = t.lat
8919 let lon t = t.lon
8920 let state t = t.state
8921
8922 let jsont : t Jsont.t =
8923 Jsont.Object.map ~kind:"MapMarkerResponseDto"
8924 (fun city country id lat lon state -> { city; country; id; lat; lon; state })
8925 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
8926 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
8927 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
8928 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
8929 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
8930 |> Jsont.Object.mem "lat" Jsont.number ~enc:(fun r -> r.lat)
8931 |> Jsont.Object.mem "lon" Jsont.number ~enc:(fun r -> r.lon)
8932 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
8933 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
8934 |> Jsont.Object.skip_unknown
8935 |> Jsont.Object.finish
8936 end
8937
8938 (** Retrieve map markers
8939
8940 Retrieve a list of latitude and longitude coordinates for every asset with location data. *)
8941 let get_map_markers ?file_created_after ?file_created_before ?is_archived ?is_favorite ?with_partners ?with_shared_albums client () =
8942 let op_name = "get_map_markers" in
8943 let url_path = "/map/markers" in
8944 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"fileCreatedAfter" ~value:file_created_after; Openapi.Runtime.Query.optional ~key:"fileCreatedBefore" ~value:file_created_before; Openapi.Runtime.Query.optional ~key:"isArchived" ~value:is_archived; Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"withPartners" ~value:with_partners; Openapi.Runtime.Query.optional ~key:"withSharedAlbums" ~value:with_shared_albums]) in
8945 let url = client.base_url ^ url_path ^ query in
8946 let response =
8947 try Requests.get client.session url
8948 with Eio.Io _ as ex ->
8949 let bt = Printexc.get_raw_backtrace () in
8950 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
8951 in
8952 if Requests.Response.ok response then
8953 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
8954 else
8955 let body = Requests.Response.text response in
8956 let parsed_body =
8957 match Jsont_bytesrw.decode_string Jsont.json body with
8958 | Ok json -> Some (Openapi.Runtime.Json json)
8959 | Error _ -> Some (Openapi.Runtime.Raw body)
8960 in
8961 raise (Openapi.Runtime.Api_error {
8962 operation = op_name;
8963 method_ = "GET";
8964 url;
8965 status = Requests.Response.status_code response;
8966 body;
8967 parsed_body;
8968 })
8969end
8970
8971module ManualJobName = struct
8972 module Types = struct
8973 module T = struct
8974 type t = [
8975 | `Person_cleanup
8976 | `Tag_cleanup
8977 | `User_cleanup
8978 | `Memory_cleanup
8979 | `Memory_create
8980 | `Backup_database
8981 ]
8982 end
8983 end
8984
8985 module T = struct
8986 include Types.T
8987
8988 let jsont : t Jsont.t =
8989 Jsont.map Jsont.string ~kind:"ManualJobName"
8990 ~dec:(function
8991 | "person-cleanup" -> `Person_cleanup
8992 | "tag-cleanup" -> `Tag_cleanup
8993 | "user-cleanup" -> `User_cleanup
8994 | "memory-cleanup" -> `Memory_cleanup
8995 | "memory-create" -> `Memory_create
8996 | "backup-database" -> `Backup_database
8997 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
8998 ~enc:(function
8999 | `Person_cleanup -> "person-cleanup"
9000 | `Tag_cleanup -> "tag-cleanup"
9001 | `User_cleanup -> "user-cleanup"
9002 | `Memory_cleanup -> "memory-cleanup"
9003 | `Memory_create -> "memory-create"
9004 | `Backup_database -> "backup-database")
9005 end
9006end
9007
9008module Job = struct
9009 module Types = struct
9010 module CreateDto = struct
9011 type t = {
9012 name : ManualJobName.T.t;
9013 }
9014 end
9015 end
9016
9017 module CreateDto = struct
9018 include Types.CreateDto
9019
9020 let v ~name () = { name }
9021
9022 let name t = t.name
9023
9024 let jsont : t Jsont.t =
9025 Jsont.Object.map ~kind:"JobCreateDto"
9026 (fun name -> { name })
9027 |> Jsont.Object.mem "name" ManualJobName.T.jsont ~enc:(fun r -> r.name)
9028 |> Jsont.Object.skip_unknown
9029 |> Jsont.Object.finish
9030 end
9031end
9032
9033module MaintenanceLogin = struct
9034 module Types = struct
9035 module Dto = struct
9036 type t = {
9037 token : string option;
9038 }
9039 end
9040 end
9041
9042 module Dto = struct
9043 include Types.Dto
9044
9045 let v ?token () = { token }
9046
9047 let token t = t.token
9048
9049 let jsont : t Jsont.t =
9050 Jsont.Object.map ~kind:"MaintenanceLoginDto"
9051 (fun token -> { token })
9052 |> Jsont.Object.opt_mem "token" Jsont.string ~enc:(fun r -> r.token)
9053 |> Jsont.Object.skip_unknown
9054 |> Jsont.Object.finish
9055 end
9056end
9057
9058module MaintenanceAuth = struct
9059 module Types = struct
9060 module Dto = struct
9061 type t = {
9062 username : string;
9063 }
9064 end
9065 end
9066
9067 module Dto = struct
9068 include Types.Dto
9069
9070 let v ~username () = { username }
9071
9072 let username t = t.username
9073
9074 let jsont : t Jsont.t =
9075 Jsont.Object.map ~kind:"MaintenanceAuthDto"
9076 (fun username -> { username })
9077 |> Jsont.Object.mem "username" Jsont.string ~enc:(fun r -> r.username)
9078 |> Jsont.Object.skip_unknown
9079 |> Jsont.Object.finish
9080 end
9081
9082 (** Log into maintenance mode
9083
9084 Login with maintenance token or cookie to receive current information and perform further actions. *)
9085 let maintenance_login ~body client () =
9086 let op_name = "maintenance_login" in
9087 let url_path = "/admin/maintenance/login" in
9088 let query = "" in
9089 let url = client.base_url ^ url_path ^ query in
9090 let response =
9091 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json MaintenanceLogin.Dto.jsont body)) url
9092 with Eio.Io _ as ex ->
9093 let bt = Printexc.get_raw_backtrace () in
9094 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
9095 in
9096 if Requests.Response.ok response then
9097 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
9098 else
9099 let body = Requests.Response.text response in
9100 let parsed_body =
9101 match Jsont_bytesrw.decode_string Jsont.json body with
9102 | Ok json -> Some (Openapi.Runtime.Json json)
9103 | Error _ -> Some (Openapi.Runtime.Raw body)
9104 in
9105 raise (Openapi.Runtime.Api_error {
9106 operation = op_name;
9107 method_ = "POST";
9108 url;
9109 status = Requests.Response.status_code response;
9110 body;
9111 parsed_body;
9112 })
9113end
9114
9115module MaintenanceAction = struct
9116 module Types = struct
9117 module T = struct
9118 type t = [
9119 | `Start
9120 | `End_
9121 | `Select_database_restore
9122 | `Restore_database
9123 ]
9124 end
9125 end
9126
9127 module T = struct
9128 include Types.T
9129
9130 let jsont : t Jsont.t =
9131 Jsont.map Jsont.string ~kind:"MaintenanceAction"
9132 ~dec:(function
9133 | "start" -> `Start
9134 | "end" -> `End_
9135 | "select_database_restore" -> `Select_database_restore
9136 | "restore_database" -> `Restore_database
9137 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
9138 ~enc:(function
9139 | `Start -> "start"
9140 | `End_ -> "end"
9141 | `Select_database_restore -> "select_database_restore"
9142 | `Restore_database -> "restore_database")
9143 end
9144end
9145
9146module SetMaintenanceMode = struct
9147 module Types = struct
9148 module Dto = struct
9149 type t = {
9150 action : MaintenanceAction.T.t;
9151 restore_backup_filename : string option;
9152 }
9153 end
9154 end
9155
9156 module Dto = struct
9157 include Types.Dto
9158
9159 let v ~action ?restore_backup_filename () = { action; restore_backup_filename }
9160
9161 let action t = t.action
9162 let restore_backup_filename t = t.restore_backup_filename
9163
9164 let jsont : t Jsont.t =
9165 Jsont.Object.map ~kind:"SetMaintenanceModeDto"
9166 (fun action restore_backup_filename -> { action; restore_backup_filename })
9167 |> Jsont.Object.mem "action" MaintenanceAction.T.jsont ~enc:(fun r -> r.action)
9168 |> Jsont.Object.opt_mem "restoreBackupFilename" Jsont.string ~enc:(fun r -> r.restore_backup_filename)
9169 |> Jsont.Object.skip_unknown
9170 |> Jsont.Object.finish
9171 end
9172end
9173
9174module MaintenanceStatus = struct
9175 module Types = struct
9176 module ResponseDto = struct
9177 type t = {
9178 action : MaintenanceAction.T.t;
9179 active : bool;
9180 error : string option;
9181 progress : float option;
9182 task : string option;
9183 }
9184 end
9185 end
9186
9187 module ResponseDto = struct
9188 include Types.ResponseDto
9189
9190 let v ~action ~active ?error ?progress ?task () = { action; active; error; progress; task }
9191
9192 let action t = t.action
9193 let active t = t.active
9194 let error t = t.error
9195 let progress t = t.progress
9196 let task t = t.task
9197
9198 let jsont : t Jsont.t =
9199 Jsont.Object.map ~kind:"MaintenanceStatusResponseDto"
9200 (fun action active error progress task -> { action; active; error; progress; task })
9201 |> Jsont.Object.mem "action" MaintenanceAction.T.jsont ~enc:(fun r -> r.action)
9202 |> Jsont.Object.mem "active" Jsont.bool ~enc:(fun r -> r.active)
9203 |> Jsont.Object.opt_mem "error" Jsont.string ~enc:(fun r -> r.error)
9204 |> Jsont.Object.opt_mem "progress" Jsont.number ~enc:(fun r -> r.progress)
9205 |> Jsont.Object.opt_mem "task" Jsont.string ~enc:(fun r -> r.task)
9206 |> Jsont.Object.skip_unknown
9207 |> Jsont.Object.finish
9208 end
9209
9210 (** Get maintenance mode status
9211
9212 Fetch information about the currently running maintenance action. *)
9213 let get_maintenance_status client () =
9214 let op_name = "get_maintenance_status" in
9215 let url_path = "/admin/maintenance/status" in
9216 let query = "" in
9217 let url = client.base_url ^ url_path ^ query in
9218 let response =
9219 try Requests.get client.session url
9220 with Eio.Io _ as ex ->
9221 let bt = Printexc.get_raw_backtrace () in
9222 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
9223 in
9224 if Requests.Response.ok response then
9225 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9226 else
9227 let body = Requests.Response.text response in
9228 let parsed_body =
9229 match Jsont_bytesrw.decode_string Jsont.json body with
9230 | Ok json -> Some (Openapi.Runtime.Json json)
9231 | Error _ -> Some (Openapi.Runtime.Raw body)
9232 in
9233 raise (Openapi.Runtime.Api_error {
9234 operation = op_name;
9235 method_ = "GET";
9236 url;
9237 status = Requests.Response.status_code response;
9238 body;
9239 parsed_body;
9240 })
9241end
9242
9243module MachineLearningAvailabilityChecks = struct
9244 module Types = struct
9245 module Dto = struct
9246 type t = {
9247 enabled : bool;
9248 interval : float;
9249 timeout : float;
9250 }
9251 end
9252 end
9253
9254 module Dto = struct
9255 include Types.Dto
9256
9257 let v ~enabled ~interval ~timeout () = { enabled; interval; timeout }
9258
9259 let enabled t = t.enabled
9260 let interval t = t.interval
9261 let timeout t = t.timeout
9262
9263 let jsont : t Jsont.t =
9264 Jsont.Object.map ~kind:"MachineLearningAvailabilityChecksDto"
9265 (fun enabled interval timeout -> { enabled; interval; timeout })
9266 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
9267 |> Jsont.Object.mem "interval" Jsont.number ~enc:(fun r -> r.interval)
9268 |> Jsont.Object.mem "timeout" Jsont.number ~enc:(fun r -> r.timeout)
9269 |> Jsont.Object.skip_unknown
9270 |> Jsont.Object.finish
9271 end
9272end
9273
9274module Logout = struct
9275 module Types = struct
9276 module ResponseDto = struct
9277 type t = {
9278 redirect_uri : string;
9279 successful : bool;
9280 }
9281 end
9282 end
9283
9284 module ResponseDto = struct
9285 include Types.ResponseDto
9286
9287 let v ~redirect_uri ~successful () = { redirect_uri; successful }
9288
9289 let redirect_uri t = t.redirect_uri
9290 let successful t = t.successful
9291
9292 let jsont : t Jsont.t =
9293 Jsont.Object.map ~kind:"LogoutResponseDto"
9294 (fun redirect_uri successful -> { redirect_uri; successful })
9295 |> Jsont.Object.mem "redirectUri" Jsont.string ~enc:(fun r -> r.redirect_uri)
9296 |> Jsont.Object.mem "successful" Jsont.bool ~enc:(fun r -> r.successful)
9297 |> Jsont.Object.skip_unknown
9298 |> Jsont.Object.finish
9299 end
9300
9301 (** Logout
9302
9303 Logout the current user and invalidate the session token. *)
9304 let logout client () =
9305 let op_name = "logout" in
9306 let url_path = "/auth/logout" in
9307 let query = "" in
9308 let url = client.base_url ^ url_path ^ query in
9309 let response =
9310 try Requests.post client.session url
9311 with Eio.Io _ as ex ->
9312 let bt = Printexc.get_raw_backtrace () in
9313 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
9314 in
9315 if Requests.Response.ok response then
9316 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9317 else
9318 let body = Requests.Response.text response in
9319 let parsed_body =
9320 match Jsont_bytesrw.decode_string Jsont.json body with
9321 | Ok json -> Some (Openapi.Runtime.Json json)
9322 | Error _ -> Some (Openapi.Runtime.Raw body)
9323 in
9324 raise (Openapi.Runtime.Api_error {
9325 operation = op_name;
9326 method_ = "POST";
9327 url;
9328 status = Requests.Response.status_code response;
9329 body;
9330 parsed_body;
9331 })
9332end
9333
9334module LoginCredential = struct
9335 module Types = struct
9336 module Dto = struct
9337 type t = {
9338 email : string;
9339 password : string;
9340 }
9341 end
9342 end
9343
9344 module Dto = struct
9345 include Types.Dto
9346
9347 let v ~email ~password () = { email; password }
9348
9349 let email t = t.email
9350 let password t = t.password
9351
9352 let jsont : t Jsont.t =
9353 Jsont.Object.map ~kind:"LoginCredentialDto"
9354 (fun email password -> { email; password })
9355 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
9356 |> Jsont.Object.mem "password" Jsont.string ~enc:(fun r -> r.password)
9357 |> Jsont.Object.skip_unknown
9358 |> Jsont.Object.finish
9359 end
9360end
9361
9362module Login = struct
9363 module Types = struct
9364 module ResponseDto = struct
9365 type t = {
9366 access_token : string;
9367 is_admin : bool;
9368 is_onboarded : bool;
9369 name : string;
9370 profile_image_path : string;
9371 should_change_password : bool;
9372 user_email : string;
9373 user_id : string;
9374 }
9375 end
9376 end
9377
9378 module ResponseDto = struct
9379 include Types.ResponseDto
9380
9381 let v ~access_token ~is_admin ~is_onboarded ~name ~profile_image_path ~should_change_password ~user_email ~user_id () = { access_token; is_admin; is_onboarded; name; profile_image_path; should_change_password; user_email; user_id }
9382
9383 let access_token t = t.access_token
9384 let is_admin t = t.is_admin
9385 let is_onboarded t = t.is_onboarded
9386 let name t = t.name
9387 let profile_image_path t = t.profile_image_path
9388 let should_change_password t = t.should_change_password
9389 let user_email t = t.user_email
9390 let user_id t = t.user_id
9391
9392 let jsont : t Jsont.t =
9393 Jsont.Object.map ~kind:"LoginResponseDto"
9394 (fun access_token is_admin is_onboarded name profile_image_path should_change_password user_email user_id -> { access_token; is_admin; is_onboarded; name; profile_image_path; should_change_password; user_email; user_id })
9395 |> Jsont.Object.mem "accessToken" Jsont.string ~enc:(fun r -> r.access_token)
9396 |> Jsont.Object.mem "isAdmin" Jsont.bool ~enc:(fun r -> r.is_admin)
9397 |> Jsont.Object.mem "isOnboarded" Jsont.bool ~enc:(fun r -> r.is_onboarded)
9398 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
9399 |> Jsont.Object.mem "profileImagePath" Jsont.string ~enc:(fun r -> r.profile_image_path)
9400 |> Jsont.Object.mem "shouldChangePassword" Jsont.bool ~enc:(fun r -> r.should_change_password)
9401 |> Jsont.Object.mem "userEmail" Jsont.string ~enc:(fun r -> r.user_email)
9402 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
9403 |> Jsont.Object.skip_unknown
9404 |> Jsont.Object.finish
9405 end
9406
9407 (** Login
9408
9409 Login with username and password and receive a session token. *)
9410 let login ~body client () =
9411 let op_name = "login" in
9412 let url_path = "/auth/login" in
9413 let query = "" in
9414 let url = client.base_url ^ url_path ^ query in
9415 let response =
9416 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json LoginCredential.Dto.jsont body)) url
9417 with Eio.Io _ as ex ->
9418 let bt = Printexc.get_raw_backtrace () in
9419 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
9420 in
9421 if Requests.Response.ok response then
9422 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9423 else
9424 let body = Requests.Response.text response in
9425 let parsed_body =
9426 match Jsont_bytesrw.decode_string Jsont.json body with
9427 | Ok json -> Some (Openapi.Runtime.Json json)
9428 | Error _ -> Some (Openapi.Runtime.Raw body)
9429 in
9430 raise (Openapi.Runtime.Api_error {
9431 operation = op_name;
9432 method_ = "POST";
9433 url;
9434 status = Requests.Response.status_code response;
9435 body;
9436 parsed_body;
9437 })
9438
9439 (** Finish OAuth
9440
9441 Complete the OAuth authorization process by exchanging the authorization code for a session token. *)
9442 let finish_oauth ~body client () =
9443 let op_name = "finish_oauth" in
9444 let url_path = "/oauth/callback" in
9445 let query = "" in
9446 let url = client.base_url ^ url_path ^ query in
9447 let response =
9448 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json OauthCallback.Dto.jsont body)) url
9449 with Eio.Io _ as ex ->
9450 let bt = Printexc.get_raw_backtrace () in
9451 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
9452 in
9453 if Requests.Response.ok response then
9454 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9455 else
9456 let body = Requests.Response.text response in
9457 let parsed_body =
9458 match Jsont_bytesrw.decode_string Jsont.json body with
9459 | Ok json -> Some (Openapi.Runtime.Json json)
9460 | Error _ -> Some (Openapi.Runtime.Raw body)
9461 in
9462 raise (Openapi.Runtime.Api_error {
9463 operation = op_name;
9464 method_ = "POST";
9465 url;
9466 status = Requests.Response.status_code response;
9467 body;
9468 parsed_body;
9469 })
9470end
9471
9472module LogLevel = struct
9473 module Types = struct
9474 module T = struct
9475 type t = [
9476 | `Verbose
9477 | `Debug
9478 | `Log
9479 | `Warn
9480 | `Error
9481 | `Fatal
9482 ]
9483 end
9484 end
9485
9486 module T = struct
9487 include Types.T
9488
9489 let jsont : t Jsont.t =
9490 Jsont.map Jsont.string ~kind:"LogLevel"
9491 ~dec:(function
9492 | "verbose" -> `Verbose
9493 | "debug" -> `Debug
9494 | "log" -> `Log
9495 | "warn" -> `Warn
9496 | "error" -> `Error
9497 | "fatal" -> `Fatal
9498 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
9499 ~enc:(function
9500 | `Verbose -> "verbose"
9501 | `Debug -> "debug"
9502 | `Log -> "log"
9503 | `Warn -> "warn"
9504 | `Error -> "error"
9505 | `Fatal -> "fatal")
9506 end
9507end
9508
9509module SystemConfigLogging = struct
9510 module Types = struct
9511 module Dto = struct
9512 type t = {
9513 enabled : bool;
9514 level : LogLevel.T.t;
9515 }
9516 end
9517 end
9518
9519 module Dto = struct
9520 include Types.Dto
9521
9522 let v ~enabled ~level () = { enabled; level }
9523
9524 let enabled t = t.enabled
9525 let level t = t.level
9526
9527 let jsont : t Jsont.t =
9528 Jsont.Object.map ~kind:"SystemConfigLoggingDto"
9529 (fun enabled level -> { enabled; level })
9530 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
9531 |> Jsont.Object.mem "level" LogLevel.T.jsont ~enc:(fun r -> r.level)
9532 |> Jsont.Object.skip_unknown
9533 |> Jsont.Object.finish
9534 end
9535end
9536
9537module LicenseKey = struct
9538 module Types = struct
9539 module Dto = struct
9540 type t = {
9541 activation_key : string;
9542 license_key : string;
9543 }
9544 end
9545 end
9546
9547 module Dto = struct
9548 include Types.Dto
9549
9550 let v ~activation_key ~license_key () = { activation_key; license_key }
9551
9552 let activation_key t = t.activation_key
9553 let license_key t = t.license_key
9554
9555 let jsont : t Jsont.t =
9556 Jsont.Object.map ~kind:"LicenseKeyDto"
9557 (fun activation_key license_key -> { activation_key; license_key })
9558 |> Jsont.Object.mem "activationKey" Jsont.string ~enc:(fun r -> r.activation_key)
9559 |> Jsont.Object.mem "licenseKey" (Openapi.Runtime.validated_string ~pattern:"/IM(SV|CL)(-[\\dA-Za-z]{4}){8}/" Jsont.string) ~enc:(fun r -> r.license_key)
9560 |> Jsont.Object.skip_unknown
9561 |> Jsont.Object.finish
9562 end
9563end
9564
9565module License = struct
9566 module Types = struct
9567 module ResponseDto = struct
9568 type t = {
9569 activated_at : Ptime.t;
9570 activation_key : string;
9571 license_key : string;
9572 }
9573 end
9574 end
9575
9576 module ResponseDto = struct
9577 include Types.ResponseDto
9578
9579 let v ~activated_at ~activation_key ~license_key () = { activated_at; activation_key; license_key }
9580
9581 let activated_at t = t.activated_at
9582 let activation_key t = t.activation_key
9583 let license_key t = t.license_key
9584
9585 let jsont : t Jsont.t =
9586 Jsont.Object.map ~kind:"LicenseResponseDto"
9587 (fun activated_at activation_key license_key -> { activated_at; activation_key; license_key })
9588 |> Jsont.Object.mem "activatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.activated_at)
9589 |> Jsont.Object.mem "activationKey" Jsont.string ~enc:(fun r -> r.activation_key)
9590 |> Jsont.Object.mem "licenseKey" (Openapi.Runtime.validated_string ~pattern:"/IM(SV|CL)(-[\\dA-Za-z]{4}){8}/" Jsont.string) ~enc:(fun r -> r.license_key)
9591 |> Jsont.Object.skip_unknown
9592 |> Jsont.Object.finish
9593 end
9594
9595 (** Get product key
9596
9597 Retrieve information about whether the server currently has a product key registered. *)
9598 let get_server_license client () =
9599 let op_name = "get_server_license" in
9600 let url_path = "/server/license" in
9601 let query = "" in
9602 let url = client.base_url ^ url_path ^ query in
9603 let response =
9604 try Requests.get client.session url
9605 with Eio.Io _ as ex ->
9606 let bt = Printexc.get_raw_backtrace () in
9607 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
9608 in
9609 if Requests.Response.ok response then
9610 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9611 else
9612 let body = Requests.Response.text response in
9613 let parsed_body =
9614 match Jsont_bytesrw.decode_string Jsont.json body with
9615 | Ok json -> Some (Openapi.Runtime.Json json)
9616 | Error _ -> Some (Openapi.Runtime.Raw body)
9617 in
9618 raise (Openapi.Runtime.Api_error {
9619 operation = op_name;
9620 method_ = "GET";
9621 url;
9622 status = Requests.Response.status_code response;
9623 body;
9624 parsed_body;
9625 })
9626
9627 (** Set server product key
9628
9629 Validate and set the server product key if successful. *)
9630 let set_server_license ~body client () =
9631 let op_name = "set_server_license" in
9632 let url_path = "/server/license" in
9633 let query = "" in
9634 let url = client.base_url ^ url_path ^ query in
9635 let response =
9636 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json LicenseKey.Dto.jsont body)) url
9637 with Eio.Io _ as ex ->
9638 let bt = Printexc.get_raw_backtrace () in
9639 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
9640 in
9641 if Requests.Response.ok response then
9642 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9643 else
9644 let body = Requests.Response.text response in
9645 let parsed_body =
9646 match Jsont_bytesrw.decode_string Jsont.json body with
9647 | Ok json -> Some (Openapi.Runtime.Json json)
9648 | Error _ -> Some (Openapi.Runtime.Raw body)
9649 in
9650 raise (Openapi.Runtime.Api_error {
9651 operation = op_name;
9652 method_ = "PUT";
9653 url;
9654 status = Requests.Response.status_code response;
9655 body;
9656 parsed_body;
9657 })
9658
9659 (** Retrieve user product key
9660
9661 Retrieve information about whether the current user has a registered product key. *)
9662 let get_user_license client () =
9663 let op_name = "get_user_license" in
9664 let url_path = "/users/me/license" in
9665 let query = "" in
9666 let url = client.base_url ^ url_path ^ query in
9667 let response =
9668 try Requests.get client.session url
9669 with Eio.Io _ as ex ->
9670 let bt = Printexc.get_raw_backtrace () in
9671 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
9672 in
9673 if Requests.Response.ok response then
9674 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9675 else
9676 let body = Requests.Response.text response in
9677 let parsed_body =
9678 match Jsont_bytesrw.decode_string Jsont.json body with
9679 | Ok json -> Some (Openapi.Runtime.Json json)
9680 | Error _ -> Some (Openapi.Runtime.Raw body)
9681 in
9682 raise (Openapi.Runtime.Api_error {
9683 operation = op_name;
9684 method_ = "GET";
9685 url;
9686 status = Requests.Response.status_code response;
9687 body;
9688 parsed_body;
9689 })
9690
9691 (** Set user product key
9692
9693 Register a product key for the current user. *)
9694 let set_user_license ~body client () =
9695 let op_name = "set_user_license" in
9696 let url_path = "/users/me/license" in
9697 let query = "" in
9698 let url = client.base_url ^ url_path ^ query in
9699 let response =
9700 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json LicenseKey.Dto.jsont body)) url
9701 with Eio.Io _ as ex ->
9702 let bt = Printexc.get_raw_backtrace () in
9703 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
9704 in
9705 if Requests.Response.ok response then
9706 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9707 else
9708 let body = Requests.Response.text response in
9709 let parsed_body =
9710 match Jsont_bytesrw.decode_string Jsont.json body with
9711 | Ok json -> Some (Openapi.Runtime.Json json)
9712 | Error _ -> Some (Openapi.Runtime.Raw body)
9713 in
9714 raise (Openapi.Runtime.Api_error {
9715 operation = op_name;
9716 method_ = "PUT";
9717 url;
9718 status = Requests.Response.status_code response;
9719 body;
9720 parsed_body;
9721 })
9722end
9723
9724module LibraryStats = struct
9725 module Types = struct
9726 module ResponseDto = struct
9727 type t = {
9728 photos : int;
9729 total : int;
9730 usage : int64;
9731 videos : int;
9732 }
9733 end
9734 end
9735
9736 module ResponseDto = struct
9737 include Types.ResponseDto
9738
9739 let v ?(photos=0) ?(total=0) ?(usage=0L) ?(videos=0) () = { photos; total; usage; videos }
9740
9741 let photos t = t.photos
9742 let total t = t.total
9743 let usage t = t.usage
9744 let videos t = t.videos
9745
9746 let jsont : t Jsont.t =
9747 Jsont.Object.map ~kind:"LibraryStatsResponseDto"
9748 (fun photos total usage videos -> { photos; total; usage; videos })
9749 |> Jsont.Object.mem "photos" Jsont.int ~dec_absent:0 ~enc:(fun r -> r.photos)
9750 |> Jsont.Object.mem "total" Jsont.int ~dec_absent:0 ~enc:(fun r -> r.total)
9751 |> Jsont.Object.mem "usage" Jsont.int64 ~dec_absent:0L ~enc:(fun r -> r.usage)
9752 |> Jsont.Object.mem "videos" Jsont.int ~dec_absent:0 ~enc:(fun r -> r.videos)
9753 |> Jsont.Object.skip_unknown
9754 |> Jsont.Object.finish
9755 end
9756
9757 (** Retrieve library statistics
9758
9759 Retrieve statistics for a specific external library, including number of videos, images, and storage usage. *)
9760 let get_library_statistics ~id client () =
9761 let op_name = "get_library_statistics" in
9762 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}/statistics" in
9763 let query = "" in
9764 let url = client.base_url ^ url_path ^ query in
9765 let response =
9766 try Requests.get client.session url
9767 with Eio.Io _ as ex ->
9768 let bt = Printexc.get_raw_backtrace () in
9769 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
9770 in
9771 if Requests.Response.ok response then
9772 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
9773 else
9774 let body = Requests.Response.text response in
9775 let parsed_body =
9776 match Jsont_bytesrw.decode_string Jsont.json body with
9777 | Ok json -> Some (Openapi.Runtime.Json json)
9778 | Error _ -> Some (Openapi.Runtime.Raw body)
9779 in
9780 raise (Openapi.Runtime.Api_error {
9781 operation = op_name;
9782 method_ = "GET";
9783 url;
9784 status = Requests.Response.status_code response;
9785 body;
9786 parsed_body;
9787 })
9788end
9789
9790module JobSettings = struct
9791 module Types = struct
9792 module Dto = struct
9793 type t = {
9794 concurrency : int;
9795 }
9796 end
9797 end
9798
9799 module Dto = struct
9800 include Types.Dto
9801
9802 let v ~concurrency () = { concurrency }
9803
9804 let concurrency t = t.concurrency
9805
9806 let jsont : t Jsont.t =
9807 Jsont.Object.map ~kind:"JobSettingsDto"
9808 (fun concurrency -> { concurrency })
9809 |> Jsont.Object.mem "concurrency" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.concurrency)
9810 |> Jsont.Object.skip_unknown
9811 |> Jsont.Object.finish
9812 end
9813end
9814
9815module SystemConfigJob = struct
9816 module Types = struct
9817 module Dto = struct
9818 type t = {
9819 background_task : JobSettings.Dto.t;
9820 editor : JobSettings.Dto.t;
9821 face_detection : JobSettings.Dto.t;
9822 library : JobSettings.Dto.t;
9823 metadata_extraction : JobSettings.Dto.t;
9824 migration : JobSettings.Dto.t;
9825 notifications : JobSettings.Dto.t;
9826 ocr : JobSettings.Dto.t;
9827 search : JobSettings.Dto.t;
9828 sidecar : JobSettings.Dto.t;
9829 smart_search : JobSettings.Dto.t;
9830 thumbnail_generation : JobSettings.Dto.t;
9831 video_conversion : JobSettings.Dto.t;
9832 workflow : JobSettings.Dto.t;
9833 }
9834 end
9835 end
9836
9837 module Dto = struct
9838 include Types.Dto
9839
9840 let v ~background_task ~editor ~face_detection ~library ~metadata_extraction ~migration ~notifications ~ocr ~search ~sidecar ~smart_search ~thumbnail_generation ~video_conversion ~workflow () = { background_task; editor; face_detection; library; metadata_extraction; migration; notifications; ocr; search; sidecar; smart_search; thumbnail_generation; video_conversion; workflow }
9841
9842 let background_task t = t.background_task
9843 let editor t = t.editor
9844 let face_detection t = t.face_detection
9845 let library t = t.library
9846 let metadata_extraction t = t.metadata_extraction
9847 let migration t = t.migration
9848 let notifications t = t.notifications
9849 let ocr t = t.ocr
9850 let search t = t.search
9851 let sidecar t = t.sidecar
9852 let smart_search t = t.smart_search
9853 let thumbnail_generation t = t.thumbnail_generation
9854 let video_conversion t = t.video_conversion
9855 let workflow t = t.workflow
9856
9857 let jsont : t Jsont.t =
9858 Jsont.Object.map ~kind:"SystemConfigJobDto"
9859 (fun background_task editor face_detection library metadata_extraction migration notifications ocr search sidecar smart_search thumbnail_generation video_conversion workflow -> { background_task; editor; face_detection; library; metadata_extraction; migration; notifications; ocr; search; sidecar; smart_search; thumbnail_generation; video_conversion; workflow })
9860 |> Jsont.Object.mem "backgroundTask" JobSettings.Dto.jsont ~enc:(fun r -> r.background_task)
9861 |> Jsont.Object.mem "editor" JobSettings.Dto.jsont ~enc:(fun r -> r.editor)
9862 |> Jsont.Object.mem "faceDetection" JobSettings.Dto.jsont ~enc:(fun r -> r.face_detection)
9863 |> Jsont.Object.mem "library" JobSettings.Dto.jsont ~enc:(fun r -> r.library)
9864 |> Jsont.Object.mem "metadataExtraction" JobSettings.Dto.jsont ~enc:(fun r -> r.metadata_extraction)
9865 |> Jsont.Object.mem "migration" JobSettings.Dto.jsont ~enc:(fun r -> r.migration)
9866 |> Jsont.Object.mem "notifications" JobSettings.Dto.jsont ~enc:(fun r -> r.notifications)
9867 |> Jsont.Object.mem "ocr" JobSettings.Dto.jsont ~enc:(fun r -> r.ocr)
9868 |> Jsont.Object.mem "search" JobSettings.Dto.jsont ~enc:(fun r -> r.search)
9869 |> Jsont.Object.mem "sidecar" JobSettings.Dto.jsont ~enc:(fun r -> r.sidecar)
9870 |> Jsont.Object.mem "smartSearch" JobSettings.Dto.jsont ~enc:(fun r -> r.smart_search)
9871 |> Jsont.Object.mem "thumbnailGeneration" JobSettings.Dto.jsont ~enc:(fun r -> r.thumbnail_generation)
9872 |> Jsont.Object.mem "videoConversion" JobSettings.Dto.jsont ~enc:(fun r -> r.video_conversion)
9873 |> Jsont.Object.mem "workflow" JobSettings.Dto.jsont ~enc:(fun r -> r.workflow)
9874 |> Jsont.Object.skip_unknown
9875 |> Jsont.Object.finish
9876 end
9877end
9878
9879module JobName = struct
9880 module Types = struct
9881 module T = struct
9882 type t = [
9883 | `Asset_delete
9884 | `Asset_delete_check
9885 | `Asset_detect_faces_queue_all
9886 | `Asset_detect_faces
9887 | `Asset_detect_duplicates_queue_all
9888 | `Asset_detect_duplicates
9889 | `Asset_edit_thumbnail_generation
9890 | `Asset_encode_video_queue_all
9891 | `Asset_encode_video
9892 | `Asset_empty_trash
9893 | `Asset_extract_metadata_queue_all
9894 | `Asset_extract_metadata
9895 | `Asset_file_migration
9896 | `Asset_generate_thumbnails_queue_all
9897 | `Asset_generate_thumbnails
9898 | `Audit_log_cleanup
9899 | `Audit_table_cleanup
9900 | `Database_backup
9901 | `Facial_recognition_queue_all
9902 | `Facial_recognition
9903 | `File_delete
9904 | `File_migration_queue_all
9905 | `Library_delete_check
9906 | `Library_delete
9907 | `Library_remove_asset
9908 | `Library_scan_assets_queue_all
9909 | `Library_sync_assets
9910 | `Library_sync_files_queue_all
9911 | `Library_sync_files
9912 | `Library_scan_queue_all
9913 | `Memory_cleanup
9914 | `Memory_generate
9915 | `Notifications_cleanup
9916 | `Notify_user_signup
9917 | `Notify_album_invite
9918 | `Notify_album_update
9919 | `User_delete
9920 | `User_delete_check
9921 | `User_sync_usage
9922 | `Person_cleanup
9923 | `Person_file_migration
9924 | `Person_generate_thumbnail
9925 | `Session_cleanup
9926 | `Send_mail
9927 | `Sidecar_queue_all
9928 | `Sidecar_check
9929 | `Sidecar_write
9930 | `Smart_search_queue_all
9931 | `Smart_search
9932 | `Storage_template_migration
9933 | `Storage_template_migration_single
9934 | `Tag_cleanup
9935 | `Version_check
9936 | `Ocr_queue_all
9937 | `Ocr
9938 | `Workflow_run
9939 ]
9940 end
9941 end
9942
9943 module T = struct
9944 include Types.T
9945
9946 let jsont : t Jsont.t =
9947 Jsont.map Jsont.string ~kind:"JobName"
9948 ~dec:(function
9949 | "AssetDelete" -> `Asset_delete
9950 | "AssetDeleteCheck" -> `Asset_delete_check
9951 | "AssetDetectFacesQueueAll" -> `Asset_detect_faces_queue_all
9952 | "AssetDetectFaces" -> `Asset_detect_faces
9953 | "AssetDetectDuplicatesQueueAll" -> `Asset_detect_duplicates_queue_all
9954 | "AssetDetectDuplicates" -> `Asset_detect_duplicates
9955 | "AssetEditThumbnailGeneration" -> `Asset_edit_thumbnail_generation
9956 | "AssetEncodeVideoQueueAll" -> `Asset_encode_video_queue_all
9957 | "AssetEncodeVideo" -> `Asset_encode_video
9958 | "AssetEmptyTrash" -> `Asset_empty_trash
9959 | "AssetExtractMetadataQueueAll" -> `Asset_extract_metadata_queue_all
9960 | "AssetExtractMetadata" -> `Asset_extract_metadata
9961 | "AssetFileMigration" -> `Asset_file_migration
9962 | "AssetGenerateThumbnailsQueueAll" -> `Asset_generate_thumbnails_queue_all
9963 | "AssetGenerateThumbnails" -> `Asset_generate_thumbnails
9964 | "AuditLogCleanup" -> `Audit_log_cleanup
9965 | "AuditTableCleanup" -> `Audit_table_cleanup
9966 | "DatabaseBackup" -> `Database_backup
9967 | "FacialRecognitionQueueAll" -> `Facial_recognition_queue_all
9968 | "FacialRecognition" -> `Facial_recognition
9969 | "FileDelete" -> `File_delete
9970 | "FileMigrationQueueAll" -> `File_migration_queue_all
9971 | "LibraryDeleteCheck" -> `Library_delete_check
9972 | "LibraryDelete" -> `Library_delete
9973 | "LibraryRemoveAsset" -> `Library_remove_asset
9974 | "LibraryScanAssetsQueueAll" -> `Library_scan_assets_queue_all
9975 | "LibrarySyncAssets" -> `Library_sync_assets
9976 | "LibrarySyncFilesQueueAll" -> `Library_sync_files_queue_all
9977 | "LibrarySyncFiles" -> `Library_sync_files
9978 | "LibraryScanQueueAll" -> `Library_scan_queue_all
9979 | "MemoryCleanup" -> `Memory_cleanup
9980 | "MemoryGenerate" -> `Memory_generate
9981 | "NotificationsCleanup" -> `Notifications_cleanup
9982 | "NotifyUserSignup" -> `Notify_user_signup
9983 | "NotifyAlbumInvite" -> `Notify_album_invite
9984 | "NotifyAlbumUpdate" -> `Notify_album_update
9985 | "UserDelete" -> `User_delete
9986 | "UserDeleteCheck" -> `User_delete_check
9987 | "UserSyncUsage" -> `User_sync_usage
9988 | "PersonCleanup" -> `Person_cleanup
9989 | "PersonFileMigration" -> `Person_file_migration
9990 | "PersonGenerateThumbnail" -> `Person_generate_thumbnail
9991 | "SessionCleanup" -> `Session_cleanup
9992 | "SendMail" -> `Send_mail
9993 | "SidecarQueueAll" -> `Sidecar_queue_all
9994 | "SidecarCheck" -> `Sidecar_check
9995 | "SidecarWrite" -> `Sidecar_write
9996 | "SmartSearchQueueAll" -> `Smart_search_queue_all
9997 | "SmartSearch" -> `Smart_search
9998 | "StorageTemplateMigration" -> `Storage_template_migration
9999 | "StorageTemplateMigrationSingle" -> `Storage_template_migration_single
10000 | "TagCleanup" -> `Tag_cleanup
10001 | "VersionCheck" -> `Version_check
10002 | "OcrQueueAll" -> `Ocr_queue_all
10003 | "Ocr" -> `Ocr
10004 | "WorkflowRun" -> `Workflow_run
10005 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
10006 ~enc:(function
10007 | `Asset_delete -> "AssetDelete"
10008 | `Asset_delete_check -> "AssetDeleteCheck"
10009 | `Asset_detect_faces_queue_all -> "AssetDetectFacesQueueAll"
10010 | `Asset_detect_faces -> "AssetDetectFaces"
10011 | `Asset_detect_duplicates_queue_all -> "AssetDetectDuplicatesQueueAll"
10012 | `Asset_detect_duplicates -> "AssetDetectDuplicates"
10013 | `Asset_edit_thumbnail_generation -> "AssetEditThumbnailGeneration"
10014 | `Asset_encode_video_queue_all -> "AssetEncodeVideoQueueAll"
10015 | `Asset_encode_video -> "AssetEncodeVideo"
10016 | `Asset_empty_trash -> "AssetEmptyTrash"
10017 | `Asset_extract_metadata_queue_all -> "AssetExtractMetadataQueueAll"
10018 | `Asset_extract_metadata -> "AssetExtractMetadata"
10019 | `Asset_file_migration -> "AssetFileMigration"
10020 | `Asset_generate_thumbnails_queue_all -> "AssetGenerateThumbnailsQueueAll"
10021 | `Asset_generate_thumbnails -> "AssetGenerateThumbnails"
10022 | `Audit_log_cleanup -> "AuditLogCleanup"
10023 | `Audit_table_cleanup -> "AuditTableCleanup"
10024 | `Database_backup -> "DatabaseBackup"
10025 | `Facial_recognition_queue_all -> "FacialRecognitionQueueAll"
10026 | `Facial_recognition -> "FacialRecognition"
10027 | `File_delete -> "FileDelete"
10028 | `File_migration_queue_all -> "FileMigrationQueueAll"
10029 | `Library_delete_check -> "LibraryDeleteCheck"
10030 | `Library_delete -> "LibraryDelete"
10031 | `Library_remove_asset -> "LibraryRemoveAsset"
10032 | `Library_scan_assets_queue_all -> "LibraryScanAssetsQueueAll"
10033 | `Library_sync_assets -> "LibrarySyncAssets"
10034 | `Library_sync_files_queue_all -> "LibrarySyncFilesQueueAll"
10035 | `Library_sync_files -> "LibrarySyncFiles"
10036 | `Library_scan_queue_all -> "LibraryScanQueueAll"
10037 | `Memory_cleanup -> "MemoryCleanup"
10038 | `Memory_generate -> "MemoryGenerate"
10039 | `Notifications_cleanup -> "NotificationsCleanup"
10040 | `Notify_user_signup -> "NotifyUserSignup"
10041 | `Notify_album_invite -> "NotifyAlbumInvite"
10042 | `Notify_album_update -> "NotifyAlbumUpdate"
10043 | `User_delete -> "UserDelete"
10044 | `User_delete_check -> "UserDeleteCheck"
10045 | `User_sync_usage -> "UserSyncUsage"
10046 | `Person_cleanup -> "PersonCleanup"
10047 | `Person_file_migration -> "PersonFileMigration"
10048 | `Person_generate_thumbnail -> "PersonGenerateThumbnail"
10049 | `Session_cleanup -> "SessionCleanup"
10050 | `Send_mail -> "SendMail"
10051 | `Sidecar_queue_all -> "SidecarQueueAll"
10052 | `Sidecar_check -> "SidecarCheck"
10053 | `Sidecar_write -> "SidecarWrite"
10054 | `Smart_search_queue_all -> "SmartSearchQueueAll"
10055 | `Smart_search -> "SmartSearch"
10056 | `Storage_template_migration -> "StorageTemplateMigration"
10057 | `Storage_template_migration_single -> "StorageTemplateMigrationSingle"
10058 | `Tag_cleanup -> "TagCleanup"
10059 | `Version_check -> "VersionCheck"
10060 | `Ocr_queue_all -> "OcrQueueAll"
10061 | `Ocr -> "Ocr"
10062 | `Workflow_run -> "WorkflowRun")
10063 end
10064end
10065
10066module QueueJob = struct
10067 module Types = struct
10068 module Status = struct
10069 type t = [
10070 | `Active
10071 | `Failed
10072 | `Completed
10073 | `Delayed
10074 | `Waiting
10075 | `Paused
10076 ]
10077 end
10078
10079 module ResponseDto = struct
10080 type t = {
10081 data : Jsont.json;
10082 id : string option;
10083 name : JobName.T.t;
10084 timestamp : int;
10085 }
10086 end
10087 end
10088
10089 module Status = struct
10090 include Types.Status
10091
10092 let jsont : t Jsont.t =
10093 Jsont.map Jsont.string ~kind:"QueueJobStatus"
10094 ~dec:(function
10095 | "active" -> `Active
10096 | "failed" -> `Failed
10097 | "completed" -> `Completed
10098 | "delayed" -> `Delayed
10099 | "waiting" -> `Waiting
10100 | "paused" -> `Paused
10101 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
10102 ~enc:(function
10103 | `Active -> "active"
10104 | `Failed -> "failed"
10105 | `Completed -> "completed"
10106 | `Delayed -> "delayed"
10107 | `Waiting -> "waiting"
10108 | `Paused -> "paused")
10109 end
10110
10111 module ResponseDto = struct
10112 include Types.ResponseDto
10113
10114 let v ~data ~name ~timestamp ?id () = { data; id; name; timestamp }
10115
10116 let data t = t.data
10117 let id t = t.id
10118 let name t = t.name
10119 let timestamp t = t.timestamp
10120
10121 let jsont : t Jsont.t =
10122 Jsont.Object.map ~kind:"QueueJobResponseDto"
10123 (fun data id name timestamp -> { data; id; name; timestamp })
10124 |> Jsont.Object.mem "data" Jsont.json ~enc:(fun r -> r.data)
10125 |> Jsont.Object.opt_mem "id" Jsont.string ~enc:(fun r -> r.id)
10126 |> Jsont.Object.mem "name" JobName.T.jsont ~enc:(fun r -> r.name)
10127 |> Jsont.Object.mem "timestamp" Jsont.int ~enc:(fun r -> r.timestamp)
10128 |> Jsont.Object.skip_unknown
10129 |> Jsont.Object.finish
10130 end
10131
10132 (** Retrieve queue jobs
10133
10134 Retrieves a list of queue jobs from the specified queue. *)
10135 let get_queue_jobs ~name ?status client () =
10136 let op_name = "get_queue_jobs" in
10137 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/queues/{name}/jobs" in
10138 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"status" ~value:status]) in
10139 let url = client.base_url ^ url_path ^ query in
10140 let response =
10141 try Requests.get client.session url
10142 with Eio.Io _ as ex ->
10143 let bt = Printexc.get_raw_backtrace () in
10144 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
10145 in
10146 if Requests.Response.ok response then
10147 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
10148 else
10149 let body = Requests.Response.text response in
10150 let parsed_body =
10151 match Jsont_bytesrw.decode_string Jsont.json body with
10152 | Ok json -> Some (Openapi.Runtime.Json json)
10153 | Error _ -> Some (Openapi.Runtime.Raw body)
10154 in
10155 raise (Openapi.Runtime.Api_error {
10156 operation = op_name;
10157 method_ = "GET";
10158 url;
10159 status = Requests.Response.status_code response;
10160 body;
10161 parsed_body;
10162 })
10163end
10164
10165module ImageFormat = struct
10166 module Types = struct
10167 module T = struct
10168 type t = [
10169 | `Jpeg
10170 | `Webp
10171 ]
10172 end
10173 end
10174
10175 module T = struct
10176 include Types.T
10177
10178 let jsont : t Jsont.t =
10179 Jsont.map Jsont.string ~kind:"ImageFormat"
10180 ~dec:(function
10181 | "jpeg" -> `Jpeg
10182 | "webp" -> `Webp
10183 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
10184 ~enc:(function
10185 | `Jpeg -> "jpeg"
10186 | `Webp -> "webp")
10187 end
10188end
10189
10190module SystemConfigGeneratedImage = struct
10191 module Types = struct
10192 module Dto = struct
10193 type t = {
10194 format : ImageFormat.T.t;
10195 progressive : bool;
10196 quality : int;
10197 size : int;
10198 }
10199 end
10200 end
10201
10202 module Dto = struct
10203 include Types.Dto
10204
10205 let v ~format ~quality ~size ?(progressive=false) () = { format; progressive; quality; size }
10206
10207 let format t = t.format
10208 let progressive t = t.progressive
10209 let quality t = t.quality
10210 let size t = t.size
10211
10212 let jsont : t Jsont.t =
10213 Jsont.Object.map ~kind:"SystemConfigGeneratedImageDto"
10214 (fun format progressive quality size -> { format; progressive; quality; size })
10215 |> Jsont.Object.mem "format" ImageFormat.T.jsont ~enc:(fun r -> r.format)
10216 |> Jsont.Object.mem "progressive" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.progressive)
10217 |> Jsont.Object.mem "quality" (Openapi.Runtime.validated_int ~minimum:1. ~maximum:100. Jsont.int) ~enc:(fun r -> r.quality)
10218 |> Jsont.Object.mem "size" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.size)
10219 |> Jsont.Object.skip_unknown
10220 |> Jsont.Object.finish
10221 end
10222end
10223
10224module SystemConfigGeneratedFullsizeImage = struct
10225 module Types = struct
10226 module Dto = struct
10227 type t = {
10228 enabled : bool;
10229 format : ImageFormat.T.t;
10230 progressive : bool;
10231 quality : int;
10232 }
10233 end
10234 end
10235
10236 module Dto = struct
10237 include Types.Dto
10238
10239 let v ~enabled ~format ~quality ?(progressive=false) () = { enabled; format; progressive; quality }
10240
10241 let enabled t = t.enabled
10242 let format t = t.format
10243 let progressive t = t.progressive
10244 let quality t = t.quality
10245
10246 let jsont : t Jsont.t =
10247 Jsont.Object.map ~kind:"SystemConfigGeneratedFullsizeImageDto"
10248 (fun enabled format progressive quality -> { enabled; format; progressive; quality })
10249 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10250 |> Jsont.Object.mem "format" ImageFormat.T.jsont ~enc:(fun r -> r.format)
10251 |> Jsont.Object.mem "progressive" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.progressive)
10252 |> Jsont.Object.mem "quality" (Openapi.Runtime.validated_int ~minimum:1. ~maximum:100. Jsont.int) ~enc:(fun r -> r.quality)
10253 |> Jsont.Object.skip_unknown
10254 |> Jsont.Object.finish
10255 end
10256end
10257
10258module Folders = struct
10259 module Types = struct
10260 module Update = struct
10261 type t = {
10262 enabled : bool option;
10263 sidebar_web : bool option;
10264 }
10265 end
10266
10267 module Response = struct
10268 type t = {
10269 enabled : bool;
10270 sidebar_web : bool;
10271 }
10272 end
10273 end
10274
10275 module Update = struct
10276 include Types.Update
10277
10278 let v ?enabled ?sidebar_web () = { enabled; sidebar_web }
10279
10280 let enabled t = t.enabled
10281 let sidebar_web t = t.sidebar_web
10282
10283 let jsont : t Jsont.t =
10284 Jsont.Object.map ~kind:"FoldersUpdate"
10285 (fun enabled sidebar_web -> { enabled; sidebar_web })
10286 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10287 |> Jsont.Object.opt_mem "sidebarWeb" Jsont.bool ~enc:(fun r -> r.sidebar_web)
10288 |> Jsont.Object.skip_unknown
10289 |> Jsont.Object.finish
10290 end
10291
10292 module Response = struct
10293 include Types.Response
10294
10295 let v ?(enabled=false) ?(sidebar_web=false) () = { enabled; sidebar_web }
10296
10297 let enabled t = t.enabled
10298 let sidebar_web t = t.sidebar_web
10299
10300 let jsont : t Jsont.t =
10301 Jsont.Object.map ~kind:"FoldersResponse"
10302 (fun enabled sidebar_web -> { enabled; sidebar_web })
10303 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.enabled)
10304 |> Jsont.Object.mem "sidebarWeb" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.sidebar_web)
10305 |> Jsont.Object.skip_unknown
10306 |> Jsont.Object.finish
10307 end
10308end
10309
10310module FacialRecognition = struct
10311 module Types = struct
10312 module Config = struct
10313 type t = {
10314 enabled : bool;
10315 max_distance : float;
10316 min_faces : int;
10317 min_score : float;
10318 model_name : string;
10319 }
10320 end
10321 end
10322
10323 module Config = struct
10324 include Types.Config
10325
10326 let v ~enabled ~max_distance ~min_faces ~min_score ~model_name () = { enabled; max_distance; min_faces; min_score; model_name }
10327
10328 let enabled t = t.enabled
10329 let max_distance t = t.max_distance
10330 let min_faces t = t.min_faces
10331 let min_score t = t.min_score
10332 let model_name t = t.model_name
10333
10334 let jsont : t Jsont.t =
10335 Jsont.Object.map ~kind:"FacialRecognitionConfig"
10336 (fun enabled max_distance min_faces min_score model_name -> { enabled; max_distance; min_faces; min_score; model_name })
10337 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10338 |> Jsont.Object.mem "maxDistance" (Openapi.Runtime.validated_float ~minimum:0.1 ~maximum:2. Jsont.number) ~enc:(fun r -> r.max_distance)
10339 |> Jsont.Object.mem "minFaces" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.min_faces)
10340 |> Jsont.Object.mem "minScore" (Openapi.Runtime.validated_float ~minimum:0.1 ~maximum:1. Jsont.number) ~enc:(fun r -> r.min_score)
10341 |> Jsont.Object.mem "modelName" Jsont.string ~enc:(fun r -> r.model_name)
10342 |> Jsont.Object.skip_unknown
10343 |> Jsont.Object.finish
10344 end
10345end
10346
10347module Face = struct
10348 module Types = struct
10349 module Dto = struct
10350 type t = {
10351 id : string;
10352 }
10353 end
10354 end
10355
10356 module Dto = struct
10357 include Types.Dto
10358
10359 let v ~id () = { id }
10360
10361 let id t = t.id
10362
10363 let jsont : t Jsont.t =
10364 Jsont.Object.map ~kind:"FaceDto"
10365 (fun id -> { id })
10366 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
10367 |> Jsont.Object.skip_unknown
10368 |> Jsont.Object.finish
10369 end
10370end
10371
10372module Exif = struct
10373 module Types = struct
10374 module ResponseDto = struct
10375 type t = {
10376 city : string option;
10377 country : string option;
10378 date_time_original : Ptime.t option;
10379 description : string option;
10380 exif_image_height : float option;
10381 exif_image_width : float option;
10382 exposure_time : string option;
10383 f_number : float option;
10384 file_size_in_byte : int64 option;
10385 focal_length : float option;
10386 iso : float option;
10387 latitude : float option;
10388 lens_model : string option;
10389 longitude : float option;
10390 make : string option;
10391 model : string option;
10392 modify_date : Ptime.t option;
10393 orientation : string option;
10394 projection_type : string option;
10395 rating : float option;
10396 state : string option;
10397 time_zone : string option;
10398 }
10399 end
10400 end
10401
10402 module ResponseDto = struct
10403 include Types.ResponseDto
10404
10405 let v ?(city=None) ?(country=None) ?(date_time_original=None) ?(description=None) ?(exif_image_height=None) ?(exif_image_width=None) ?(exposure_time=None) ?(f_number=None) ?(file_size_in_byte=None) ?(focal_length=None) ?(iso=None) ?(latitude=None) ?(lens_model=None) ?(longitude=None) ?(make=None) ?(model=None) ?(modify_date=None) ?(orientation=None) ?(projection_type=None) ?(rating=None) ?(state=None) ?(time_zone=None) () = { city; country; date_time_original; description; exif_image_height; exif_image_width; exposure_time; f_number; file_size_in_byte; focal_length; iso; latitude; lens_model; longitude; make; model; modify_date; orientation; projection_type; rating; state; time_zone }
10406
10407 let city t = t.city
10408 let country t = t.country
10409 let date_time_original t = t.date_time_original
10410 let description t = t.description
10411 let exif_image_height t = t.exif_image_height
10412 let exif_image_width t = t.exif_image_width
10413 let exposure_time t = t.exposure_time
10414 let f_number t = t.f_number
10415 let file_size_in_byte t = t.file_size_in_byte
10416 let focal_length t = t.focal_length
10417 let iso t = t.iso
10418 let latitude t = t.latitude
10419 let lens_model t = t.lens_model
10420 let longitude t = t.longitude
10421 let make t = t.make
10422 let model t = t.model
10423 let modify_date t = t.modify_date
10424 let orientation t = t.orientation
10425 let projection_type t = t.projection_type
10426 let rating t = t.rating
10427 let state t = t.state
10428 let time_zone t = t.time_zone
10429
10430 let jsont : t Jsont.t =
10431 Jsont.Object.map ~kind:"ExifResponseDto"
10432 (fun city country date_time_original description exif_image_height exif_image_width exposure_time f_number file_size_in_byte focal_length iso latitude lens_model longitude make model modify_date orientation projection_type rating state time_zone -> { city; country; date_time_original; description; exif_image_height; exif_image_width; exposure_time; f_number; file_size_in_byte; focal_length; iso; latitude; lens_model; longitude; make; model; modify_date; orientation; projection_type; rating; state; time_zone })
10433 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
10434 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
10435 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
10436 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
10437 |> Jsont.Object.mem "dateTimeOriginal" Openapi.Runtime.nullable_ptime
10438 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.date_time_original)
10439 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
10440 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
10441 |> Jsont.Object.mem "exifImageHeight" Openapi.Runtime.nullable_float
10442 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exif_image_height)
10443 |> Jsont.Object.mem "exifImageWidth" Openapi.Runtime.nullable_float
10444 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exif_image_width)
10445 |> Jsont.Object.mem "exposureTime" Openapi.Runtime.nullable_string
10446 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.exposure_time)
10447 |> Jsont.Object.mem "fNumber" Openapi.Runtime.nullable_float
10448 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.f_number)
10449 |> Jsont.Object.mem "fileSizeInByte" (Openapi.Runtime.nullable_any Jsont.int64)
10450 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.file_size_in_byte)
10451 |> Jsont.Object.mem "focalLength" Openapi.Runtime.nullable_float
10452 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.focal_length)
10453 |> Jsont.Object.mem "iso" Openapi.Runtime.nullable_float
10454 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.iso)
10455 |> Jsont.Object.mem "latitude" Openapi.Runtime.nullable_float
10456 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.latitude)
10457 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
10458 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
10459 |> Jsont.Object.mem "longitude" Openapi.Runtime.nullable_float
10460 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.longitude)
10461 |> Jsont.Object.mem "make" Openapi.Runtime.nullable_string
10462 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.make)
10463 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
10464 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
10465 |> Jsont.Object.mem "modifyDate" Openapi.Runtime.nullable_ptime
10466 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.modify_date)
10467 |> Jsont.Object.mem "orientation" Openapi.Runtime.nullable_string
10468 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.orientation)
10469 |> Jsont.Object.mem "projectionType" Openapi.Runtime.nullable_string
10470 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.projection_type)
10471 |> Jsont.Object.mem "rating" Openapi.Runtime.nullable_float
10472 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.rating)
10473 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
10474 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
10475 |> Jsont.Object.mem "timeZone" Openapi.Runtime.nullable_string
10476 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.time_zone)
10477 |> Jsont.Object.skip_unknown
10478 |> Jsont.Object.finish
10479 end
10480end
10481
10482module EmailNotifications = struct
10483 module Types = struct
10484 module Update = struct
10485 type t = {
10486 album_invite : bool option;
10487 album_update : bool option;
10488 enabled : bool option;
10489 }
10490 end
10491
10492 module Response = struct
10493 type t = {
10494 album_invite : bool;
10495 album_update : bool;
10496 enabled : bool;
10497 }
10498 end
10499 end
10500
10501 module Update = struct
10502 include Types.Update
10503
10504 let v ?album_invite ?album_update ?enabled () = { album_invite; album_update; enabled }
10505
10506 let album_invite t = t.album_invite
10507 let album_update t = t.album_update
10508 let enabled t = t.enabled
10509
10510 let jsont : t Jsont.t =
10511 Jsont.Object.map ~kind:"EmailNotificationsUpdate"
10512 (fun album_invite album_update enabled -> { album_invite; album_update; enabled })
10513 |> Jsont.Object.opt_mem "albumInvite" Jsont.bool ~enc:(fun r -> r.album_invite)
10514 |> Jsont.Object.opt_mem "albumUpdate" Jsont.bool ~enc:(fun r -> r.album_update)
10515 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10516 |> Jsont.Object.skip_unknown
10517 |> Jsont.Object.finish
10518 end
10519
10520 module Response = struct
10521 include Types.Response
10522
10523 let v ~album_invite ~album_update ~enabled () = { album_invite; album_update; enabled }
10524
10525 let album_invite t = t.album_invite
10526 let album_update t = t.album_update
10527 let enabled t = t.enabled
10528
10529 let jsont : t Jsont.t =
10530 Jsont.Object.map ~kind:"EmailNotificationsResponse"
10531 (fun album_invite album_update enabled -> { album_invite; album_update; enabled })
10532 |> Jsont.Object.mem "albumInvite" Jsont.bool ~enc:(fun r -> r.album_invite)
10533 |> Jsont.Object.mem "albumUpdate" Jsont.bool ~enc:(fun r -> r.album_update)
10534 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10535 |> Jsont.Object.skip_unknown
10536 |> Jsont.Object.finish
10537 end
10538end
10539
10540module DuplicateDetection = struct
10541 module Types = struct
10542 module Config = struct
10543 type t = {
10544 enabled : bool;
10545 max_distance : float;
10546 }
10547 end
10548 end
10549
10550 module Config = struct
10551 include Types.Config
10552
10553 let v ~enabled ~max_distance () = { enabled; max_distance }
10554
10555 let enabled t = t.enabled
10556 let max_distance t = t.max_distance
10557
10558 let jsont : t Jsont.t =
10559 Jsont.Object.map ~kind:"DuplicateDetectionConfig"
10560 (fun enabled max_distance -> { enabled; max_distance })
10561 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10562 |> Jsont.Object.mem "maxDistance" (Openapi.Runtime.validated_float ~minimum:0.001 ~maximum:0.1 Jsont.number) ~enc:(fun r -> r.max_distance)
10563 |> Jsont.Object.skip_unknown
10564 |> Jsont.Object.finish
10565 end
10566end
10567
10568module DownloadInfo = struct
10569 module Types = struct
10570 module Dto = struct
10571 type t = {
10572 album_id : string option;
10573 archive_size : int option;
10574 asset_ids : string list option;
10575 user_id : string option;
10576 }
10577 end
10578 end
10579
10580 module Dto = struct
10581 include Types.Dto
10582
10583 let v ?album_id ?archive_size ?asset_ids ?user_id () = { album_id; archive_size; asset_ids; user_id }
10584
10585 let album_id t = t.album_id
10586 let archive_size t = t.archive_size
10587 let asset_ids t = t.asset_ids
10588 let user_id t = t.user_id
10589
10590 let jsont : t Jsont.t =
10591 Jsont.Object.map ~kind:"DownloadInfoDto"
10592 (fun album_id archive_size asset_ids user_id -> { album_id; archive_size; asset_ids; user_id })
10593 |> Jsont.Object.opt_mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
10594 |> Jsont.Object.opt_mem "archiveSize" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.archive_size)
10595 |> Jsont.Object.opt_mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
10596 |> Jsont.Object.opt_mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
10597 |> Jsont.Object.skip_unknown
10598 |> Jsont.Object.finish
10599 end
10600end
10601
10602module DownloadArchive = struct
10603 module Types = struct
10604 module Info = struct
10605 type t = {
10606 asset_ids : string list;
10607 size : int;
10608 }
10609 end
10610 end
10611
10612 module Info = struct
10613 include Types.Info
10614
10615 let v ~asset_ids ~size () = { asset_ids; size }
10616
10617 let asset_ids t = t.asset_ids
10618 let size t = t.size
10619
10620 let jsont : t Jsont.t =
10621 Jsont.Object.map ~kind:"DownloadArchiveInfo"
10622 (fun asset_ids size -> { asset_ids; size })
10623 |> Jsont.Object.mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
10624 |> Jsont.Object.mem "size" Jsont.int ~enc:(fun r -> r.size)
10625 |> Jsont.Object.skip_unknown
10626 |> Jsont.Object.finish
10627 end
10628end
10629
10630module Download = struct
10631 module Types = struct
10632 module Update = struct
10633 type t = {
10634 archive_size : int option;
10635 include_embedded_videos : bool option;
10636 }
10637 end
10638
10639 module ResponseDto = struct
10640 type t = {
10641 archives : DownloadArchive.Info.t list;
10642 total_size : int;
10643 }
10644 end
10645
10646 module Response = struct
10647 type t = {
10648 archive_size : int;
10649 include_embedded_videos : bool;
10650 }
10651 end
10652 end
10653
10654 module Update = struct
10655 include Types.Update
10656
10657 let v ?archive_size ?include_embedded_videos () = { archive_size; include_embedded_videos }
10658
10659 let archive_size t = t.archive_size
10660 let include_embedded_videos t = t.include_embedded_videos
10661
10662 let jsont : t Jsont.t =
10663 Jsont.Object.map ~kind:"DownloadUpdate"
10664 (fun archive_size include_embedded_videos -> { archive_size; include_embedded_videos })
10665 |> Jsont.Object.opt_mem "archiveSize" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.archive_size)
10666 |> Jsont.Object.opt_mem "includeEmbeddedVideos" Jsont.bool ~enc:(fun r -> r.include_embedded_videos)
10667 |> Jsont.Object.skip_unknown
10668 |> Jsont.Object.finish
10669 end
10670
10671 module ResponseDto = struct
10672 include Types.ResponseDto
10673
10674 let v ~archives ~total_size () = { archives; total_size }
10675
10676 let archives t = t.archives
10677 let total_size t = t.total_size
10678
10679 let jsont : t Jsont.t =
10680 Jsont.Object.map ~kind:"DownloadResponseDto"
10681 (fun archives total_size -> { archives; total_size })
10682 |> Jsont.Object.mem "archives" (Jsont.list DownloadArchive.Info.jsont) ~enc:(fun r -> r.archives)
10683 |> Jsont.Object.mem "totalSize" Jsont.int ~enc:(fun r -> r.total_size)
10684 |> Jsont.Object.skip_unknown
10685 |> Jsont.Object.finish
10686 end
10687
10688 module Response = struct
10689 include Types.Response
10690
10691 let v ~archive_size ?(include_embedded_videos=false) () = { archive_size; include_embedded_videos }
10692
10693 let archive_size t = t.archive_size
10694 let include_embedded_videos t = t.include_embedded_videos
10695
10696 let jsont : t Jsont.t =
10697 Jsont.Object.map ~kind:"DownloadResponse"
10698 (fun archive_size include_embedded_videos -> { archive_size; include_embedded_videos })
10699 |> Jsont.Object.mem "archiveSize" Jsont.int ~enc:(fun r -> r.archive_size)
10700 |> Jsont.Object.mem "includeEmbeddedVideos" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.include_embedded_videos)
10701 |> Jsont.Object.skip_unknown
10702 |> Jsont.Object.finish
10703 end
10704
10705 (** Retrieve download information
10706
10707 Retrieve information about how to request a download for the specified assets or album. The response includes groups of assets that can be downloaded together. *)
10708 let get_download_info ?key ?slug ~body client () =
10709 let op_name = "get_download_info" in
10710 let url_path = "/download/info" in
10711 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
10712 let url = client.base_url ^ url_path ^ query in
10713 let response =
10714 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json DownloadInfo.Dto.jsont body)) url
10715 with Eio.Io _ as ex ->
10716 let bt = Printexc.get_raw_backtrace () in
10717 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
10718 in
10719 if Requests.Response.ok response then
10720 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
10721 else
10722 let body = Requests.Response.text response in
10723 let parsed_body =
10724 match Jsont_bytesrw.decode_string Jsont.json body with
10725 | Ok json -> Some (Openapi.Runtime.Json json)
10726 | Error _ -> Some (Openapi.Runtime.Raw body)
10727 in
10728 raise (Openapi.Runtime.Api_error {
10729 operation = op_name;
10730 method_ = "POST";
10731 url;
10732 status = Requests.Response.status_code response;
10733 body;
10734 parsed_body;
10735 })
10736end
10737
10738module DatabaseBackupUpload = struct
10739 module Types = struct
10740 module Dto = struct
10741 type t = {
10742 file : string option;
10743 }
10744 end
10745 end
10746
10747 module Dto = struct
10748 include Types.Dto
10749
10750 let v ?file () = { file }
10751
10752 let file t = t.file
10753
10754 let jsont : t Jsont.t =
10755 Jsont.Object.map ~kind:"DatabaseBackupUploadDto"
10756 (fun file -> { file })
10757 |> Jsont.Object.opt_mem "file" Jsont.string ~enc:(fun r -> r.file)
10758 |> Jsont.Object.skip_unknown
10759 |> Jsont.Object.finish
10760 end
10761end
10762
10763module DatabaseBackupDelete = struct
10764 module Types = struct
10765 module Dto = struct
10766 type t = {
10767 backups : string list;
10768 }
10769 end
10770 end
10771
10772 module Dto = struct
10773 include Types.Dto
10774
10775 let v ~backups () = { backups }
10776
10777 let backups t = t.backups
10778
10779 let jsont : t Jsont.t =
10780 Jsont.Object.map ~kind:"DatabaseBackupDeleteDto"
10781 (fun backups -> { backups })
10782 |> Jsont.Object.mem "backups" (Jsont.list Jsont.string) ~enc:(fun r -> r.backups)
10783 |> Jsont.Object.skip_unknown
10784 |> Jsont.Object.finish
10785 end
10786end
10787
10788module DatabaseBackup = struct
10789 module Types = struct
10790 module Dto = struct
10791 type t = {
10792 filename : string;
10793 filesize : float;
10794 }
10795 end
10796
10797 module Config = struct
10798 type t = {
10799 cron_expression : string;
10800 enabled : bool;
10801 keep_last_amount : float;
10802 }
10803 end
10804 end
10805
10806 module Dto = struct
10807 include Types.Dto
10808
10809 let v ~filename ~filesize () = { filename; filesize }
10810
10811 let filename t = t.filename
10812 let filesize t = t.filesize
10813
10814 let jsont : t Jsont.t =
10815 Jsont.Object.map ~kind:"DatabaseBackupDto"
10816 (fun filename filesize -> { filename; filesize })
10817 |> Jsont.Object.mem "filename" Jsont.string ~enc:(fun r -> r.filename)
10818 |> Jsont.Object.mem "filesize" Jsont.number ~enc:(fun r -> r.filesize)
10819 |> Jsont.Object.skip_unknown
10820 |> Jsont.Object.finish
10821 end
10822
10823 module Config = struct
10824 include Types.Config
10825
10826 let v ~cron_expression ~enabled ~keep_last_amount () = { cron_expression; enabled; keep_last_amount }
10827
10828 let cron_expression t = t.cron_expression
10829 let enabled t = t.enabled
10830 let keep_last_amount t = t.keep_last_amount
10831
10832 let jsont : t Jsont.t =
10833 Jsont.Object.map ~kind:"DatabaseBackupConfig"
10834 (fun cron_expression enabled keep_last_amount -> { cron_expression; enabled; keep_last_amount })
10835 |> Jsont.Object.mem "cronExpression" Jsont.string ~enc:(fun r -> r.cron_expression)
10836 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
10837 |> Jsont.Object.mem "keepLastAmount" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.keep_last_amount)
10838 |> Jsont.Object.skip_unknown
10839 |> Jsont.Object.finish
10840 end
10841end
10842
10843module SystemConfigBackups = struct
10844 module Types = struct
10845 module Dto = struct
10846 type t = {
10847 database : DatabaseBackup.Config.t;
10848 }
10849 end
10850 end
10851
10852 module Dto = struct
10853 include Types.Dto
10854
10855 let v ~database () = { database }
10856
10857 let database t = t.database
10858
10859 let jsont : t Jsont.t =
10860 Jsont.Object.map ~kind:"SystemConfigBackupsDto"
10861 (fun database -> { database })
10862 |> Jsont.Object.mem "database" DatabaseBackup.Config.jsont ~enc:(fun r -> r.database)
10863 |> Jsont.Object.skip_unknown
10864 |> Jsont.Object.finish
10865 end
10866end
10867
10868module DatabaseBackupList = struct
10869 module Types = struct
10870 module ResponseDto = struct
10871 type t = {
10872 backups : DatabaseBackup.Dto.t list;
10873 }
10874 end
10875 end
10876
10877 module ResponseDto = struct
10878 include Types.ResponseDto
10879
10880 let v ~backups () = { backups }
10881
10882 let backups t = t.backups
10883
10884 let jsont : t Jsont.t =
10885 Jsont.Object.map ~kind:"DatabaseBackupListResponseDto"
10886 (fun backups -> { backups })
10887 |> Jsont.Object.mem "backups" (Jsont.list DatabaseBackup.Dto.jsont) ~enc:(fun r -> r.backups)
10888 |> Jsont.Object.skip_unknown
10889 |> Jsont.Object.finish
10890 end
10891
10892 (** List database backups
10893
10894 Get the list of the successful and failed backups *)
10895 let list_database_backups client () =
10896 let op_name = "list_database_backups" in
10897 let url_path = "/admin/database-backups" in
10898 let query = "" in
10899 let url = client.base_url ^ url_path ^ query in
10900 let response =
10901 try Requests.get client.session url
10902 with Eio.Io _ as ex ->
10903 let bt = Printexc.get_raw_backtrace () in
10904 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
10905 in
10906 if Requests.Response.ok response then
10907 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
10908 else
10909 let body = Requests.Response.text response in
10910 let parsed_body =
10911 match Jsont_bytesrw.decode_string Jsont.json body with
10912 | Ok json -> Some (Openapi.Runtime.Json json)
10913 | Error _ -> Some (Openapi.Runtime.Raw body)
10914 in
10915 raise (Openapi.Runtime.Api_error {
10916 operation = op_name;
10917 method_ = "GET";
10918 url;
10919 status = Requests.Response.status_code response;
10920 body;
10921 parsed_body;
10922 })
10923end
10924
10925module CropParameters = struct
10926 module Types = struct
10927 module T = struct
10928 type t = {
10929 height : float; (** Height of the crop *)
10930 width : float; (** Width of the crop *)
10931 x : float; (** Top-Left X coordinate of crop *)
10932 y : float; (** Top-Left Y coordinate of crop *)
10933 }
10934 end
10935 end
10936
10937 module T = struct
10938 include Types.T
10939
10940 let v ~height ~width ~x ~y () = { height; width; x; y }
10941
10942 let height t = t.height
10943 let width t = t.width
10944 let x t = t.x
10945 let y t = t.y
10946
10947 let jsont : t Jsont.t =
10948 Jsont.Object.map ~kind:"CropParameters"
10949 (fun height width x y -> { height; width; x; y })
10950 |> Jsont.Object.mem "height" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.height)
10951 |> Jsont.Object.mem "width" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.width)
10952 |> Jsont.Object.mem "x" (Openapi.Runtime.validated_float ~minimum:0. Jsont.number) ~enc:(fun r -> r.x)
10953 |> Jsont.Object.mem "y" (Openapi.Runtime.validated_float ~minimum:0. Jsont.number) ~enc:(fun r -> r.y)
10954 |> Jsont.Object.skip_unknown
10955 |> Jsont.Object.finish
10956 end
10957end
10958
10959module CreateProfileImage = struct
10960 module Types = struct
10961 module ResponseDto = struct
10962 type t = {
10963 profile_changed_at : Ptime.t;
10964 profile_image_path : string;
10965 user_id : string;
10966 }
10967 end
10968
10969 module Dto = struct
10970 type t = {
10971 file : string;
10972 }
10973 end
10974 end
10975
10976 module ResponseDto = struct
10977 include Types.ResponseDto
10978
10979 let v ~profile_changed_at ~profile_image_path ~user_id () = { profile_changed_at; profile_image_path; user_id }
10980
10981 let profile_changed_at t = t.profile_changed_at
10982 let profile_image_path t = t.profile_image_path
10983 let user_id t = t.user_id
10984
10985 let jsont : t Jsont.t =
10986 Jsont.Object.map ~kind:"CreateProfileImageResponseDto"
10987 (fun profile_changed_at profile_image_path user_id -> { profile_changed_at; profile_image_path; user_id })
10988 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
10989 |> Jsont.Object.mem "profileImagePath" Jsont.string ~enc:(fun r -> r.profile_image_path)
10990 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
10991 |> Jsont.Object.skip_unknown
10992 |> Jsont.Object.finish
10993 end
10994
10995 module Dto = struct
10996 include Types.Dto
10997
10998 let v ~file () = { file }
10999
11000 let file t = t.file
11001
11002 let jsont : t Jsont.t =
11003 Jsont.Object.map ~kind:"CreateProfileImageDto"
11004 (fun file -> { file })
11005 |> Jsont.Object.mem "file" Jsont.string ~enc:(fun r -> r.file)
11006 |> Jsont.Object.skip_unknown
11007 |> Jsont.Object.finish
11008 end
11009
11010 (** Create user profile image
11011
11012 Upload and set a new profile image for the current user. *)
11013 let create_profile_image client () =
11014 let op_name = "create_profile_image" in
11015 let url_path = "/users/profile-image" in
11016 let query = "" in
11017 let url = client.base_url ^ url_path ^ query in
11018 let response =
11019 try Requests.post client.session url
11020 with Eio.Io _ as ex ->
11021 let bt = Printexc.get_raw_backtrace () in
11022 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11023 in
11024 if Requests.Response.ok response then
11025 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11026 else
11027 let body = Requests.Response.text response in
11028 let parsed_body =
11029 match Jsont_bytesrw.decode_string Jsont.json body with
11030 | Ok json -> Some (Openapi.Runtime.Json json)
11031 | Error _ -> Some (Openapi.Runtime.Raw body)
11032 in
11033 raise (Openapi.Runtime.Api_error {
11034 operation = op_name;
11035 method_ = "POST";
11036 url;
11037 status = Requests.Response.status_code response;
11038 body;
11039 parsed_body;
11040 })
11041end
11042
11043module CreateLibrary = struct
11044 module Types = struct
11045 module Dto = struct
11046 type t = {
11047 exclusion_patterns : string list option;
11048 import_paths : string list option;
11049 name : string option;
11050 owner_id : string;
11051 }
11052 end
11053 end
11054
11055 module Dto = struct
11056 include Types.Dto
11057
11058 let v ~owner_id ?exclusion_patterns ?import_paths ?name () = { exclusion_patterns; import_paths; name; owner_id }
11059
11060 let exclusion_patterns t = t.exclusion_patterns
11061 let import_paths t = t.import_paths
11062 let name t = t.name
11063 let owner_id t = t.owner_id
11064
11065 let jsont : t Jsont.t =
11066 Jsont.Object.map ~kind:"CreateLibraryDto"
11067 (fun exclusion_patterns import_paths name owner_id -> { exclusion_patterns; import_paths; name; owner_id })
11068 |> Jsont.Object.opt_mem "exclusionPatterns" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.exclusion_patterns)
11069 |> Jsont.Object.opt_mem "importPaths" (Openapi.Runtime.validated_list ~max_items:128 ~unique_items:true Jsont.string) ~enc:(fun r -> r.import_paths)
11070 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
11071 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
11072 |> Jsont.Object.skip_unknown
11073 |> Jsont.Object.finish
11074 end
11075end
11076
11077module Library = struct
11078 module Types = struct
11079 module ResponseDto = struct
11080 type t = {
11081 asset_count : int;
11082 created_at : Ptime.t;
11083 exclusion_patterns : string list;
11084 id : string;
11085 import_paths : string list;
11086 name : string;
11087 owner_id : string;
11088 refreshed_at : Ptime.t option;
11089 updated_at : Ptime.t;
11090 }
11091 end
11092 end
11093
11094 module ResponseDto = struct
11095 include Types.ResponseDto
11096
11097 let v ~asset_count ~created_at ~exclusion_patterns ~id ~import_paths ~name ~owner_id ~updated_at ?refreshed_at () = { asset_count; created_at; exclusion_patterns; id; import_paths; name; owner_id; refreshed_at; updated_at }
11098
11099 let asset_count t = t.asset_count
11100 let created_at t = t.created_at
11101 let exclusion_patterns t = t.exclusion_patterns
11102 let id t = t.id
11103 let import_paths t = t.import_paths
11104 let name t = t.name
11105 let owner_id t = t.owner_id
11106 let refreshed_at t = t.refreshed_at
11107 let updated_at t = t.updated_at
11108
11109 let jsont : t Jsont.t =
11110 Jsont.Object.map ~kind:"LibraryResponseDto"
11111 (fun asset_count created_at exclusion_patterns id import_paths name owner_id refreshed_at updated_at -> { asset_count; created_at; exclusion_patterns; id; import_paths; name; owner_id; refreshed_at; updated_at })
11112 |> Jsont.Object.mem "assetCount" Jsont.int ~enc:(fun r -> r.asset_count)
11113 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
11114 |> Jsont.Object.mem "exclusionPatterns" (Jsont.list Jsont.string) ~enc:(fun r -> r.exclusion_patterns)
11115 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
11116 |> Jsont.Object.mem "importPaths" (Jsont.list Jsont.string) ~enc:(fun r -> r.import_paths)
11117 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
11118 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
11119 |> Jsont.Object.mem "refreshedAt" Openapi.Runtime.nullable_ptime
11120 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.refreshed_at)
11121 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
11122 |> Jsont.Object.skip_unknown
11123 |> Jsont.Object.finish
11124 end
11125
11126 (** Retrieve libraries
11127
11128 Retrieve a list of external libraries. *)
11129 let get_all_libraries client () =
11130 let op_name = "get_all_libraries" in
11131 let url_path = "/libraries" in
11132 let query = "" in
11133 let url = client.base_url ^ url_path ^ query in
11134 let response =
11135 try Requests.get client.session url
11136 with Eio.Io _ as ex ->
11137 let bt = Printexc.get_raw_backtrace () in
11138 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
11139 in
11140 if Requests.Response.ok response then
11141 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11142 else
11143 let body = Requests.Response.text response in
11144 let parsed_body =
11145 match Jsont_bytesrw.decode_string Jsont.json body with
11146 | Ok json -> Some (Openapi.Runtime.Json json)
11147 | Error _ -> Some (Openapi.Runtime.Raw body)
11148 in
11149 raise (Openapi.Runtime.Api_error {
11150 operation = op_name;
11151 method_ = "GET";
11152 url;
11153 status = Requests.Response.status_code response;
11154 body;
11155 parsed_body;
11156 })
11157
11158 (** Create a library
11159
11160 Create a new external library. *)
11161 let create_library ~body client () =
11162 let op_name = "create_library" in
11163 let url_path = "/libraries" in
11164 let query = "" in
11165 let url = client.base_url ^ url_path ^ query in
11166 let response =
11167 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateLibrary.Dto.jsont body)) url
11168 with Eio.Io _ as ex ->
11169 let bt = Printexc.get_raw_backtrace () in
11170 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11171 in
11172 if Requests.Response.ok response then
11173 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11174 else
11175 let body = Requests.Response.text response in
11176 let parsed_body =
11177 match Jsont_bytesrw.decode_string Jsont.json body with
11178 | Ok json -> Some (Openapi.Runtime.Json json)
11179 | Error _ -> Some (Openapi.Runtime.Raw body)
11180 in
11181 raise (Openapi.Runtime.Api_error {
11182 operation = op_name;
11183 method_ = "POST";
11184 url;
11185 status = Requests.Response.status_code response;
11186 body;
11187 parsed_body;
11188 })
11189
11190 (** Retrieve a library
11191
11192 Retrieve an external library by its ID. *)
11193 let get_library ~id client () =
11194 let op_name = "get_library" in
11195 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}" in
11196 let query = "" in
11197 let url = client.base_url ^ url_path ^ query in
11198 let response =
11199 try Requests.get client.session url
11200 with Eio.Io _ as ex ->
11201 let bt = Printexc.get_raw_backtrace () in
11202 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
11203 in
11204 if Requests.Response.ok response then
11205 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11206 else
11207 let body = Requests.Response.text response in
11208 let parsed_body =
11209 match Jsont_bytesrw.decode_string Jsont.json body with
11210 | Ok json -> Some (Openapi.Runtime.Json json)
11211 | Error _ -> Some (Openapi.Runtime.Raw body)
11212 in
11213 raise (Openapi.Runtime.Api_error {
11214 operation = op_name;
11215 method_ = "GET";
11216 url;
11217 status = Requests.Response.status_code response;
11218 body;
11219 parsed_body;
11220 })
11221
11222 (** Update a library
11223
11224 Update an existing external library. *)
11225 let update_library ~id ~body client () =
11226 let op_name = "update_library" in
11227 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}" in
11228 let query = "" in
11229 let url = client.base_url ^ url_path ^ query in
11230 let response =
11231 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateLibrary.Dto.jsont body)) url
11232 with Eio.Io _ as ex ->
11233 let bt = Printexc.get_raw_backtrace () in
11234 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
11235 in
11236 if Requests.Response.ok response then
11237 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11238 else
11239 let body = Requests.Response.text response in
11240 let parsed_body =
11241 match Jsont_bytesrw.decode_string Jsont.json body with
11242 | Ok json -> Some (Openapi.Runtime.Json json)
11243 | Error _ -> Some (Openapi.Runtime.Raw body)
11244 in
11245 raise (Openapi.Runtime.Api_error {
11246 operation = op_name;
11247 method_ = "PUT";
11248 url;
11249 status = Requests.Response.status_code response;
11250 body;
11251 parsed_body;
11252 })
11253end
11254
11255module Cqmode = struct
11256 module Types = struct
11257 module T = struct
11258 type t = [
11259 | `Auto
11260 | `Cqp
11261 | `Icq
11262 ]
11263 end
11264 end
11265
11266 module T = struct
11267 include Types.T
11268
11269 let jsont : t Jsont.t =
11270 Jsont.map Jsont.string ~kind:"CQMode"
11271 ~dec:(function
11272 | "auto" -> `Auto
11273 | "cqp" -> `Cqp
11274 | "icq" -> `Icq
11275 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
11276 ~enc:(function
11277 | `Auto -> "auto"
11278 | `Cqp -> "cqp"
11279 | `Icq -> "icq")
11280 end
11281end
11282
11283module ContributorCount = struct
11284 module Types = struct
11285 module ResponseDto = struct
11286 type t = {
11287 asset_count : int;
11288 user_id : string;
11289 }
11290 end
11291 end
11292
11293 module ResponseDto = struct
11294 include Types.ResponseDto
11295
11296 let v ~asset_count ~user_id () = { asset_count; user_id }
11297
11298 let asset_count t = t.asset_count
11299 let user_id t = t.user_id
11300
11301 let jsont : t Jsont.t =
11302 Jsont.Object.map ~kind:"ContributorCountResponseDto"
11303 (fun asset_count user_id -> { asset_count; user_id })
11304 |> Jsont.Object.mem "assetCount" Jsont.int ~enc:(fun r -> r.asset_count)
11305 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
11306 |> Jsont.Object.skip_unknown
11307 |> Jsont.Object.finish
11308 end
11309end
11310
11311module Colorspace = struct
11312 module Types = struct
11313 module T = struct
11314 type t = [
11315 | `Srgb
11316 | `P3
11317 ]
11318 end
11319 end
11320
11321 module T = struct
11322 include Types.T
11323
11324 let jsont : t Jsont.t =
11325 Jsont.map Jsont.string ~kind:"Colorspace"
11326 ~dec:(function
11327 | "srgb" -> `Srgb
11328 | "p3" -> `P3
11329 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
11330 ~enc:(function
11331 | `Srgb -> "srgb"
11332 | `P3 -> "p3")
11333 end
11334end
11335
11336module SystemConfigImage = struct
11337 module Types = struct
11338 module Dto = struct
11339 type t = {
11340 colorspace : Colorspace.T.t;
11341 extract_embedded : bool;
11342 fullsize : SystemConfigGeneratedFullsizeImage.Dto.t;
11343 preview : SystemConfigGeneratedImage.Dto.t;
11344 thumbnail : SystemConfigGeneratedImage.Dto.t;
11345 }
11346 end
11347 end
11348
11349 module Dto = struct
11350 include Types.Dto
11351
11352 let v ~colorspace ~extract_embedded ~fullsize ~preview ~thumbnail () = { colorspace; extract_embedded; fullsize; preview; thumbnail }
11353
11354 let colorspace t = t.colorspace
11355 let extract_embedded t = t.extract_embedded
11356 let fullsize t = t.fullsize
11357 let preview t = t.preview
11358 let thumbnail t = t.thumbnail
11359
11360 let jsont : t Jsont.t =
11361 Jsont.Object.map ~kind:"SystemConfigImageDto"
11362 (fun colorspace extract_embedded fullsize preview thumbnail -> { colorspace; extract_embedded; fullsize; preview; thumbnail })
11363 |> Jsont.Object.mem "colorspace" Colorspace.T.jsont ~enc:(fun r -> r.colorspace)
11364 |> Jsont.Object.mem "extractEmbedded" Jsont.bool ~enc:(fun r -> r.extract_embedded)
11365 |> Jsont.Object.mem "fullsize" SystemConfigGeneratedFullsizeImage.Dto.jsont ~enc:(fun r -> r.fullsize)
11366 |> Jsont.Object.mem "preview" SystemConfigGeneratedImage.Dto.jsont ~enc:(fun r -> r.preview)
11367 |> Jsont.Object.mem "thumbnail" SystemConfigGeneratedImage.Dto.jsont ~enc:(fun r -> r.thumbnail)
11368 |> Jsont.Object.skip_unknown
11369 |> Jsont.Object.finish
11370 end
11371end
11372
11373module Clip = struct
11374 module Types = struct
11375 module Config = struct
11376 type t = {
11377 enabled : bool;
11378 model_name : string;
11379 }
11380 end
11381 end
11382
11383 module Config = struct
11384 include Types.Config
11385
11386 let v ~enabled ~model_name () = { enabled; model_name }
11387
11388 let enabled t = t.enabled
11389 let model_name t = t.model_name
11390
11391 let jsont : t Jsont.t =
11392 Jsont.Object.map ~kind:"CLIPConfig"
11393 (fun enabled model_name -> { enabled; model_name })
11394 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
11395 |> Jsont.Object.mem "modelName" Jsont.string ~enc:(fun r -> r.model_name)
11396 |> Jsont.Object.skip_unknown
11397 |> Jsont.Object.finish
11398 end
11399end
11400
11401module SystemConfigMachineLearning = struct
11402 module Types = struct
11403 module Dto = struct
11404 type t = {
11405 availability_checks : MachineLearningAvailabilityChecks.Dto.t;
11406 clip : Clip.Config.t;
11407 duplicate_detection : DuplicateDetection.Config.t;
11408 enabled : bool;
11409 facial_recognition : FacialRecognition.Config.t;
11410 ocr : Ocr.Config.t;
11411 urls : string list;
11412 }
11413 end
11414 end
11415
11416 module Dto = struct
11417 include Types.Dto
11418
11419 let v ~availability_checks ~clip ~duplicate_detection ~enabled ~facial_recognition ~ocr ~urls () = { availability_checks; clip; duplicate_detection; enabled; facial_recognition; ocr; urls }
11420
11421 let availability_checks t = t.availability_checks
11422 let clip t = t.clip
11423 let duplicate_detection t = t.duplicate_detection
11424 let enabled t = t.enabled
11425 let facial_recognition t = t.facial_recognition
11426 let ocr t = t.ocr
11427 let urls t = t.urls
11428
11429 let jsont : t Jsont.t =
11430 Jsont.Object.map ~kind:"SystemConfigMachineLearningDto"
11431 (fun availability_checks clip duplicate_detection enabled facial_recognition ocr urls -> { availability_checks; clip; duplicate_detection; enabled; facial_recognition; ocr; urls })
11432 |> Jsont.Object.mem "availabilityChecks" MachineLearningAvailabilityChecks.Dto.jsont ~enc:(fun r -> r.availability_checks)
11433 |> Jsont.Object.mem "clip" Clip.Config.jsont ~enc:(fun r -> r.clip)
11434 |> Jsont.Object.mem "duplicateDetection" DuplicateDetection.Config.jsont ~enc:(fun r -> r.duplicate_detection)
11435 |> Jsont.Object.mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
11436 |> Jsont.Object.mem "facialRecognition" FacialRecognition.Config.jsont ~enc:(fun r -> r.facial_recognition)
11437 |> Jsont.Object.mem "ocr" Ocr.Config.jsont ~enc:(fun r -> r.ocr)
11438 |> Jsont.Object.mem "urls" (Openapi.Runtime.validated_list ~min_items:1 Jsont.string) ~enc:(fun r -> r.urls)
11439 |> Jsont.Object.skip_unknown
11440 |> Jsont.Object.finish
11441 end
11442end
11443
11444module CheckExistingAssets = struct
11445 module Types = struct
11446 module ResponseDto = struct
11447 type t = {
11448 existing_ids : string list;
11449 }
11450 end
11451
11452 module Dto = struct
11453 type t = {
11454 device_asset_ids : string list;
11455 device_id : string;
11456 }
11457 end
11458 end
11459
11460 module ResponseDto = struct
11461 include Types.ResponseDto
11462
11463 let v ~existing_ids () = { existing_ids }
11464
11465 let existing_ids t = t.existing_ids
11466
11467 let jsont : t Jsont.t =
11468 Jsont.Object.map ~kind:"CheckExistingAssetsResponseDto"
11469 (fun existing_ids -> { existing_ids })
11470 |> Jsont.Object.mem "existingIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.existing_ids)
11471 |> Jsont.Object.skip_unknown
11472 |> Jsont.Object.finish
11473 end
11474
11475 module Dto = struct
11476 include Types.Dto
11477
11478 let v ~device_asset_ids ~device_id () = { device_asset_ids; device_id }
11479
11480 let device_asset_ids t = t.device_asset_ids
11481 let device_id t = t.device_id
11482
11483 let jsont : t Jsont.t =
11484 Jsont.Object.map ~kind:"CheckExistingAssetsDto"
11485 (fun device_asset_ids device_id -> { device_asset_ids; device_id })
11486 |> Jsont.Object.mem "deviceAssetIds" (Openapi.Runtime.validated_list ~min_items:1 Jsont.string) ~enc:(fun r -> r.device_asset_ids)
11487 |> Jsont.Object.mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
11488 |> Jsont.Object.skip_unknown
11489 |> Jsont.Object.finish
11490 end
11491
11492 (** Check existing assets
11493
11494 Checks if multiple assets exist on the server and returns all existing - used by background backup *)
11495 let check_existing_assets ~body client () =
11496 let op_name = "check_existing_assets" in
11497 let url_path = "/assets/exist" in
11498 let query = "" in
11499 let url = client.base_url ^ url_path ^ query in
11500 let response =
11501 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
11502 with Eio.Io _ as ex ->
11503 let bt = Printexc.get_raw_backtrace () in
11504 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11505 in
11506 if Requests.Response.ok response then
11507 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11508 else
11509 let body = Requests.Response.text response in
11510 let parsed_body =
11511 match Jsont_bytesrw.decode_string Jsont.json body with
11512 | Ok json -> Some (Openapi.Runtime.Json json)
11513 | Error _ -> Some (Openapi.Runtime.Raw body)
11514 in
11515 raise (Openapi.Runtime.Api_error {
11516 operation = op_name;
11517 method_ = "POST";
11518 url;
11519 status = Requests.Response.status_code response;
11520 body;
11521 parsed_body;
11522 })
11523end
11524
11525module ChangePassword = struct
11526 module Types = struct
11527 module Dto = struct
11528 type t = {
11529 invalidate_sessions : bool;
11530 new_password : string;
11531 password : string;
11532 }
11533 end
11534 end
11535
11536 module Dto = struct
11537 include Types.Dto
11538
11539 let v ~new_password ~password ?(invalidate_sessions=false) () = { invalidate_sessions; new_password; password }
11540
11541 let invalidate_sessions t = t.invalidate_sessions
11542 let new_password t = t.new_password
11543 let password t = t.password
11544
11545 let jsont : t Jsont.t =
11546 Jsont.Object.map ~kind:"ChangePasswordDto"
11547 (fun invalidate_sessions new_password password -> { invalidate_sessions; new_password; password })
11548 |> Jsont.Object.mem "invalidateSessions" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.invalidate_sessions)
11549 |> Jsont.Object.mem "newPassword" (Openapi.Runtime.validated_string ~min_length:8 Jsont.string) ~enc:(fun r -> r.new_password)
11550 |> Jsont.Object.mem "password" Jsont.string ~enc:(fun r -> r.password)
11551 |> Jsont.Object.skip_unknown
11552 |> Jsont.Object.finish
11553 end
11554end
11555
11556module UserAdmin = struct
11557 module Types = struct
11558 module UpdateDto = struct
11559 type t = {
11560 avatar_color : UserAvatarColor.T.t option;
11561 email : string option;
11562 is_admin : bool option;
11563 name : string option;
11564 password : string option;
11565 pin_code : string option;
11566 quota_size_in_bytes : int64 option;
11567 should_change_password : bool option;
11568 storage_label : string option;
11569 }
11570 end
11571
11572 module ResponseDto = struct
11573 type t = {
11574 avatar_color : UserAvatarColor.T.t;
11575 created_at : Ptime.t;
11576 deleted_at : Ptime.t option;
11577 email : string;
11578 id : string;
11579 is_admin : bool;
11580 license : UserLicense.T.t;
11581 name : string;
11582 oauth_id : string;
11583 profile_changed_at : Ptime.t;
11584 profile_image_path : string;
11585 quota_size_in_bytes : int64 option;
11586 quota_usage_in_bytes : int64 option;
11587 should_change_password : bool;
11588 status : User.Status.t;
11589 storage_label : string option;
11590 updated_at : Ptime.t;
11591 }
11592 end
11593
11594 module CreateDto = struct
11595 type t = {
11596 avatar_color : UserAvatarColor.T.t option;
11597 email : string;
11598 is_admin : bool option;
11599 name : string;
11600 notify : bool option;
11601 password : string;
11602 quota_size_in_bytes : int64 option;
11603 should_change_password : bool option;
11604 storage_label : string option;
11605 }
11606 end
11607 end
11608
11609 module UpdateDto = struct
11610 include Types.UpdateDto
11611
11612 let v ?avatar_color ?email ?is_admin ?name ?password ?pin_code ?quota_size_in_bytes ?should_change_password ?storage_label () = { avatar_color; email; is_admin; name; password; pin_code; quota_size_in_bytes; should_change_password; storage_label }
11613
11614 let avatar_color t = t.avatar_color
11615 let email t = t.email
11616 let is_admin t = t.is_admin
11617 let name t = t.name
11618 let password t = t.password
11619 let pin_code t = t.pin_code
11620 let quota_size_in_bytes t = t.quota_size_in_bytes
11621 let should_change_password t = t.should_change_password
11622 let storage_label t = t.storage_label
11623
11624 let jsont : t Jsont.t =
11625 Jsont.Object.map ~kind:"UserAdminUpdateDto"
11626 (fun avatar_color email is_admin name password pin_code quota_size_in_bytes should_change_password storage_label -> { avatar_color; email; is_admin; name; password; pin_code; quota_size_in_bytes; should_change_password; storage_label })
11627 |> Jsont.Object.opt_mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
11628 |> Jsont.Object.opt_mem "email" Jsont.string ~enc:(fun r -> r.email)
11629 |> Jsont.Object.opt_mem "isAdmin" Jsont.bool ~enc:(fun r -> r.is_admin)
11630 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
11631 |> Jsont.Object.opt_mem "password" Jsont.string ~enc:(fun r -> r.password)
11632 |> Jsont.Object.mem "pinCode" Openapi.Runtime.nullable_string
11633 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.pin_code)
11634 |> Jsont.Object.mem "quotaSizeInBytes" (Openapi.Runtime.nullable_any Jsont.int64)
11635 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_size_in_bytes)
11636 |> Jsont.Object.opt_mem "shouldChangePassword" Jsont.bool ~enc:(fun r -> r.should_change_password)
11637 |> Jsont.Object.mem "storageLabel" Openapi.Runtime.nullable_string
11638 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.storage_label)
11639 |> Jsont.Object.skip_unknown
11640 |> Jsont.Object.finish
11641 end
11642
11643 module ResponseDto = struct
11644 include Types.ResponseDto
11645
11646 let v ~avatar_color ~created_at ~email ~id ~is_admin ~license ~name ~oauth_id ~profile_changed_at ~profile_image_path ~should_change_password ~status ~updated_at ?deleted_at ?quota_size_in_bytes ?quota_usage_in_bytes ?storage_label () = { avatar_color; created_at; deleted_at; email; id; is_admin; license; name; oauth_id; profile_changed_at; profile_image_path; quota_size_in_bytes; quota_usage_in_bytes; should_change_password; status; storage_label; updated_at }
11647
11648 let avatar_color t = t.avatar_color
11649 let created_at t = t.created_at
11650 let deleted_at t = t.deleted_at
11651 let email t = t.email
11652 let id t = t.id
11653 let is_admin t = t.is_admin
11654 let license t = t.license
11655 let name t = t.name
11656 let oauth_id t = t.oauth_id
11657 let profile_changed_at t = t.profile_changed_at
11658 let profile_image_path t = t.profile_image_path
11659 let quota_size_in_bytes t = t.quota_size_in_bytes
11660 let quota_usage_in_bytes t = t.quota_usage_in_bytes
11661 let should_change_password t = t.should_change_password
11662 let status t = t.status
11663 let storage_label t = t.storage_label
11664 let updated_at t = t.updated_at
11665
11666 let jsont : t Jsont.t =
11667 Jsont.Object.map ~kind:"UserAdminResponseDto"
11668 (fun avatar_color created_at deleted_at email id is_admin license name oauth_id profile_changed_at profile_image_path quota_size_in_bytes quota_usage_in_bytes should_change_password status storage_label updated_at -> { avatar_color; created_at; deleted_at; email; id; is_admin; license; name; oauth_id; profile_changed_at; profile_image_path; quota_size_in_bytes; quota_usage_in_bytes; should_change_password; status; storage_label; updated_at })
11669 |> Jsont.Object.mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
11670 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
11671 |> Jsont.Object.mem "deletedAt" Openapi.Runtime.nullable_ptime
11672 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.deleted_at)
11673 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
11674 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
11675 |> Jsont.Object.mem "isAdmin" Jsont.bool ~enc:(fun r -> r.is_admin)
11676 |> Jsont.Object.mem "license" UserLicense.T.jsont ~enc:(fun r -> r.license)
11677 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
11678 |> Jsont.Object.mem "oauthId" Jsont.string ~enc:(fun r -> r.oauth_id)
11679 |> Jsont.Object.mem "profileChangedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.profile_changed_at)
11680 |> Jsont.Object.mem "profileImagePath" Jsont.string ~enc:(fun r -> r.profile_image_path)
11681 |> Jsont.Object.mem "quotaSizeInBytes" (Openapi.Runtime.nullable_any Jsont.int64)
11682 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_size_in_bytes)
11683 |> Jsont.Object.mem "quotaUsageInBytes" (Openapi.Runtime.nullable_any Jsont.int64)
11684 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_usage_in_bytes)
11685 |> Jsont.Object.mem "shouldChangePassword" Jsont.bool ~enc:(fun r -> r.should_change_password)
11686 |> Jsont.Object.mem "status" User.Status.jsont ~enc:(fun r -> r.status)
11687 |> Jsont.Object.mem "storageLabel" Openapi.Runtime.nullable_string
11688 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.storage_label)
11689 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
11690 |> Jsont.Object.skip_unknown
11691 |> Jsont.Object.finish
11692 end
11693
11694 module CreateDto = struct
11695 include Types.CreateDto
11696
11697 let v ~email ~name ~password ?avatar_color ?is_admin ?notify ?quota_size_in_bytes ?should_change_password ?storage_label () = { avatar_color; email; is_admin; name; notify; password; quota_size_in_bytes; should_change_password; storage_label }
11698
11699 let avatar_color t = t.avatar_color
11700 let email t = t.email
11701 let is_admin t = t.is_admin
11702 let name t = t.name
11703 let notify t = t.notify
11704 let password t = t.password
11705 let quota_size_in_bytes t = t.quota_size_in_bytes
11706 let should_change_password t = t.should_change_password
11707 let storage_label t = t.storage_label
11708
11709 let jsont : t Jsont.t =
11710 Jsont.Object.map ~kind:"UserAdminCreateDto"
11711 (fun avatar_color email is_admin name notify password quota_size_in_bytes should_change_password storage_label -> { avatar_color; email; is_admin; name; notify; password; quota_size_in_bytes; should_change_password; storage_label })
11712 |> Jsont.Object.opt_mem "avatarColor" UserAvatarColor.T.jsont ~enc:(fun r -> r.avatar_color)
11713 |> Jsont.Object.mem "email" Jsont.string ~enc:(fun r -> r.email)
11714 |> Jsont.Object.opt_mem "isAdmin" Jsont.bool ~enc:(fun r -> r.is_admin)
11715 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
11716 |> Jsont.Object.opt_mem "notify" Jsont.bool ~enc:(fun r -> r.notify)
11717 |> Jsont.Object.mem "password" Jsont.string ~enc:(fun r -> r.password)
11718 |> Jsont.Object.mem "quotaSizeInBytes" (Openapi.Runtime.nullable_any Jsont.int64)
11719 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.quota_size_in_bytes)
11720 |> Jsont.Object.opt_mem "shouldChangePassword" Jsont.bool ~enc:(fun r -> r.should_change_password)
11721 |> Jsont.Object.mem "storageLabel" Openapi.Runtime.nullable_string
11722 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.storage_label)
11723 |> Jsont.Object.skip_unknown
11724 |> Jsont.Object.finish
11725 end
11726
11727 (** Search users
11728
11729 Search for users. *)
11730 let search_users_admin ?id ?with_deleted client () =
11731 let op_name = "search_users_admin" in
11732 let url_path = "/admin/users" in
11733 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"id" ~value:id; Openapi.Runtime.Query.optional ~key:"withDeleted" ~value:with_deleted]) in
11734 let url = client.base_url ^ url_path ^ query in
11735 let response =
11736 try Requests.get client.session url
11737 with Eio.Io _ as ex ->
11738 let bt = Printexc.get_raw_backtrace () in
11739 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
11740 in
11741 if Requests.Response.ok response then
11742 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11743 else
11744 let body = Requests.Response.text response in
11745 let parsed_body =
11746 match Jsont_bytesrw.decode_string Jsont.json body with
11747 | Ok json -> Some (Openapi.Runtime.Json json)
11748 | Error _ -> Some (Openapi.Runtime.Raw body)
11749 in
11750 raise (Openapi.Runtime.Api_error {
11751 operation = op_name;
11752 method_ = "GET";
11753 url;
11754 status = Requests.Response.status_code response;
11755 body;
11756 parsed_body;
11757 })
11758
11759 (** Create a user
11760
11761 Create a new user. *)
11762 let create_user_admin ~body client () =
11763 let op_name = "create_user_admin" in
11764 let url_path = "/admin/users" in
11765 let query = "" in
11766 let url = client.base_url ^ url_path ^ query in
11767 let response =
11768 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
11769 with Eio.Io _ as ex ->
11770 let bt = Printexc.get_raw_backtrace () in
11771 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11772 in
11773 if Requests.Response.ok response then
11774 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11775 else
11776 let body = Requests.Response.text response in
11777 let parsed_body =
11778 match Jsont_bytesrw.decode_string Jsont.json body with
11779 | Ok json -> Some (Openapi.Runtime.Json json)
11780 | Error _ -> Some (Openapi.Runtime.Raw body)
11781 in
11782 raise (Openapi.Runtime.Api_error {
11783 operation = op_name;
11784 method_ = "POST";
11785 url;
11786 status = Requests.Response.status_code response;
11787 body;
11788 parsed_body;
11789 })
11790
11791 (** Retrieve a user
11792
11793 Retrieve a specific user by their ID. *)
11794 let get_user_admin ~id client () =
11795 let op_name = "get_user_admin" in
11796 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}" in
11797 let query = "" in
11798 let url = client.base_url ^ url_path ^ query in
11799 let response =
11800 try Requests.get client.session url
11801 with Eio.Io _ as ex ->
11802 let bt = Printexc.get_raw_backtrace () in
11803 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
11804 in
11805 if Requests.Response.ok response then
11806 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11807 else
11808 let body = Requests.Response.text response in
11809 let parsed_body =
11810 match Jsont_bytesrw.decode_string Jsont.json body with
11811 | Ok json -> Some (Openapi.Runtime.Json json)
11812 | Error _ -> Some (Openapi.Runtime.Raw body)
11813 in
11814 raise (Openapi.Runtime.Api_error {
11815 operation = op_name;
11816 method_ = "GET";
11817 url;
11818 status = Requests.Response.status_code response;
11819 body;
11820 parsed_body;
11821 })
11822
11823 (** Update a user
11824
11825 Update an existing user. *)
11826 let update_user_admin ~id ~body client () =
11827 let op_name = "update_user_admin" in
11828 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}" in
11829 let query = "" in
11830 let url = client.base_url ^ url_path ^ query in
11831 let response =
11832 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
11833 with Eio.Io _ as ex ->
11834 let bt = Printexc.get_raw_backtrace () in
11835 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
11836 in
11837 if Requests.Response.ok response then
11838 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11839 else
11840 let body = Requests.Response.text response in
11841 let parsed_body =
11842 match Jsont_bytesrw.decode_string Jsont.json body with
11843 | Ok json -> Some (Openapi.Runtime.Json json)
11844 | Error _ -> Some (Openapi.Runtime.Raw body)
11845 in
11846 raise (Openapi.Runtime.Api_error {
11847 operation = op_name;
11848 method_ = "PUT";
11849 url;
11850 status = Requests.Response.status_code response;
11851 body;
11852 parsed_body;
11853 })
11854
11855 (** Delete a user
11856
11857 Delete a user. *)
11858 let delete_user_admin ~id client () =
11859 let op_name = "delete_user_admin" in
11860 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}" in
11861 let query = "" in
11862 let url = client.base_url ^ url_path ^ query in
11863 let response =
11864 try Requests.delete client.session url
11865 with Eio.Io _ as ex ->
11866 let bt = Printexc.get_raw_backtrace () in
11867 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
11868 in
11869 if Requests.Response.ok response then
11870 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11871 else
11872 let body = Requests.Response.text response in
11873 let parsed_body =
11874 match Jsont_bytesrw.decode_string Jsont.json body with
11875 | Ok json -> Some (Openapi.Runtime.Json json)
11876 | Error _ -> Some (Openapi.Runtime.Raw body)
11877 in
11878 raise (Openapi.Runtime.Api_error {
11879 operation = op_name;
11880 method_ = "DELETE";
11881 url;
11882 status = Requests.Response.status_code response;
11883 body;
11884 parsed_body;
11885 })
11886
11887 (** Restore a deleted user
11888
11889 Restore a previously deleted user. *)
11890 let restore_user_admin ~id client () =
11891 let op_name = "restore_user_admin" in
11892 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}/restore" in
11893 let query = "" in
11894 let url = client.base_url ^ url_path ^ query in
11895 let response =
11896 try Requests.post client.session url
11897 with Eio.Io _ as ex ->
11898 let bt = Printexc.get_raw_backtrace () in
11899 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11900 in
11901 if Requests.Response.ok response then
11902 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11903 else
11904 let body = Requests.Response.text response in
11905 let parsed_body =
11906 match Jsont_bytesrw.decode_string Jsont.json body with
11907 | Ok json -> Some (Openapi.Runtime.Json json)
11908 | Error _ -> Some (Openapi.Runtime.Raw body)
11909 in
11910 raise (Openapi.Runtime.Api_error {
11911 operation = op_name;
11912 method_ = "POST";
11913 url;
11914 status = Requests.Response.status_code response;
11915 body;
11916 parsed_body;
11917 })
11918
11919 (** Register admin
11920
11921 Create the first admin user in the system. *)
11922 let sign_up_admin ~body client () =
11923 let op_name = "sign_up_admin" in
11924 let url_path = "/auth/admin-sign-up" in
11925 let query = "" in
11926 let url = client.base_url ^ url_path ^ query in
11927 let response =
11928 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SignUp.Dto.jsont body)) url
11929 with Eio.Io _ as ex ->
11930 let bt = Printexc.get_raw_backtrace () in
11931 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11932 in
11933 if Requests.Response.ok response then
11934 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11935 else
11936 let body = Requests.Response.text response in
11937 let parsed_body =
11938 match Jsont_bytesrw.decode_string Jsont.json body with
11939 | Ok json -> Some (Openapi.Runtime.Json json)
11940 | Error _ -> Some (Openapi.Runtime.Raw body)
11941 in
11942 raise (Openapi.Runtime.Api_error {
11943 operation = op_name;
11944 method_ = "POST";
11945 url;
11946 status = Requests.Response.status_code response;
11947 body;
11948 parsed_body;
11949 })
11950
11951 (** Change password
11952
11953 Change the password of the current user. *)
11954 let change_password ~body client () =
11955 let op_name = "change_password" in
11956 let url_path = "/auth/change-password" in
11957 let query = "" in
11958 let url = client.base_url ^ url_path ^ query in
11959 let response =
11960 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json ChangePassword.Dto.jsont body)) url
11961 with Eio.Io _ as ex ->
11962 let bt = Printexc.get_raw_backtrace () in
11963 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11964 in
11965 if Requests.Response.ok response then
11966 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11967 else
11968 let body = Requests.Response.text response in
11969 let parsed_body =
11970 match Jsont_bytesrw.decode_string Jsont.json body with
11971 | Ok json -> Some (Openapi.Runtime.Json json)
11972 | Error _ -> Some (Openapi.Runtime.Raw body)
11973 in
11974 raise (Openapi.Runtime.Api_error {
11975 operation = op_name;
11976 method_ = "POST";
11977 url;
11978 status = Requests.Response.status_code response;
11979 body;
11980 parsed_body;
11981 })
11982
11983 (** Link OAuth account
11984
11985 Link an OAuth account to the authenticated user. *)
11986 let link_oauth_account ~body client () =
11987 let op_name = "link_oauth_account" in
11988 let url_path = "/oauth/link" in
11989 let query = "" in
11990 let url = client.base_url ^ url_path ^ query in
11991 let response =
11992 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json OauthCallback.Dto.jsont body)) url
11993 with Eio.Io _ as ex ->
11994 let bt = Printexc.get_raw_backtrace () in
11995 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
11996 in
11997 if Requests.Response.ok response then
11998 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
11999 else
12000 let body = Requests.Response.text response in
12001 let parsed_body =
12002 match Jsont_bytesrw.decode_string Jsont.json body with
12003 | Ok json -> Some (Openapi.Runtime.Json json)
12004 | Error _ -> Some (Openapi.Runtime.Raw body)
12005 in
12006 raise (Openapi.Runtime.Api_error {
12007 operation = op_name;
12008 method_ = "POST";
12009 url;
12010 status = Requests.Response.status_code response;
12011 body;
12012 parsed_body;
12013 })
12014
12015 (** Unlink OAuth account
12016
12017 Unlink the OAuth account from the authenticated user. *)
12018 let unlink_oauth_account client () =
12019 let op_name = "unlink_oauth_account" in
12020 let url_path = "/oauth/unlink" in
12021 let query = "" in
12022 let url = client.base_url ^ url_path ^ query in
12023 let response =
12024 try Requests.post client.session url
12025 with Eio.Io _ as ex ->
12026 let bt = Printexc.get_raw_backtrace () in
12027 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
12028 in
12029 if Requests.Response.ok response then
12030 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12031 else
12032 let body = Requests.Response.text response in
12033 let parsed_body =
12034 match Jsont_bytesrw.decode_string Jsont.json body with
12035 | Ok json -> Some (Openapi.Runtime.Json json)
12036 | Error _ -> Some (Openapi.Runtime.Raw body)
12037 in
12038 raise (Openapi.Runtime.Api_error {
12039 operation = op_name;
12040 method_ = "POST";
12041 url;
12042 status = Requests.Response.status_code response;
12043 body;
12044 parsed_body;
12045 })
12046
12047 (** Get current user
12048
12049 Retrieve information about the user making the API request. *)
12050 let get_my_user client () =
12051 let op_name = "get_my_user" in
12052 let url_path = "/users/me" in
12053 let query = "" in
12054 let url = client.base_url ^ url_path ^ query in
12055 let response =
12056 try Requests.get client.session url
12057 with Eio.Io _ as ex ->
12058 let bt = Printexc.get_raw_backtrace () in
12059 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
12060 in
12061 if Requests.Response.ok response then
12062 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12063 else
12064 let body = Requests.Response.text response in
12065 let parsed_body =
12066 match Jsont_bytesrw.decode_string Jsont.json body with
12067 | Ok json -> Some (Openapi.Runtime.Json json)
12068 | Error _ -> Some (Openapi.Runtime.Raw body)
12069 in
12070 raise (Openapi.Runtime.Api_error {
12071 operation = op_name;
12072 method_ = "GET";
12073 url;
12074 status = Requests.Response.status_code response;
12075 body;
12076 parsed_body;
12077 })
12078
12079 (** Update current user
12080
12081 Update the current user making teh API request. *)
12082 let update_my_user ~body client () =
12083 let op_name = "update_my_user" in
12084 let url_path = "/users/me" in
12085 let query = "" in
12086 let url = client.base_url ^ url_path ^ query in
12087 let response =
12088 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UserUpdateMe.Dto.jsont body)) url
12089 with Eio.Io _ as ex ->
12090 let bt = Printexc.get_raw_backtrace () in
12091 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
12092 in
12093 if Requests.Response.ok response then
12094 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12095 else
12096 let body = Requests.Response.text response in
12097 let parsed_body =
12098 match Jsont_bytesrw.decode_string Jsont.json body with
12099 | Ok json -> Some (Openapi.Runtime.Json json)
12100 | Error _ -> Some (Openapi.Runtime.Raw body)
12101 in
12102 raise (Openapi.Runtime.Api_error {
12103 operation = op_name;
12104 method_ = "PUT";
12105 url;
12106 status = Requests.Response.status_code response;
12107 body;
12108 parsed_body;
12109 })
12110end
12111
12112module Cast = struct
12113 module Types = struct
12114 module Update = struct
12115 type t = {
12116 g_cast_enabled : bool option;
12117 }
12118 end
12119
12120 module Response = struct
12121 type t = {
12122 g_cast_enabled : bool;
12123 }
12124 end
12125 end
12126
12127 module Update = struct
12128 include Types.Update
12129
12130 let v ?g_cast_enabled () = { g_cast_enabled }
12131
12132 let g_cast_enabled t = t.g_cast_enabled
12133
12134 let jsont : t Jsont.t =
12135 Jsont.Object.map ~kind:"CastUpdate"
12136 (fun g_cast_enabled -> { g_cast_enabled })
12137 |> Jsont.Object.opt_mem "gCastEnabled" Jsont.bool ~enc:(fun r -> r.g_cast_enabled)
12138 |> Jsont.Object.skip_unknown
12139 |> Jsont.Object.finish
12140 end
12141
12142 module Response = struct
12143 include Types.Response
12144
12145 let v ?(g_cast_enabled=false) () = { g_cast_enabled }
12146
12147 let g_cast_enabled t = t.g_cast_enabled
12148
12149 let jsont : t Jsont.t =
12150 Jsont.Object.map ~kind:"CastResponse"
12151 (fun g_cast_enabled -> { g_cast_enabled })
12152 |> Jsont.Object.mem "gCastEnabled" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.g_cast_enabled)
12153 |> Jsont.Object.skip_unknown
12154 |> Jsont.Object.finish
12155 end
12156end
12157
12158module BulkIds = struct
12159 module Types = struct
12160 module Dto = struct
12161 type t = {
12162 ids : string list;
12163 }
12164 end
12165 end
12166
12167 module Dto = struct
12168 include Types.Dto
12169
12170 let v ~ids () = { ids }
12171
12172 let ids t = t.ids
12173
12174 let jsont : t Jsont.t =
12175 Jsont.Object.map ~kind:"BulkIdsDto"
12176 (fun ids -> { ids })
12177 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
12178 |> Jsont.Object.skip_unknown
12179 |> Jsont.Object.finish
12180 end
12181end
12182
12183module Trash = struct
12184 module Types = struct
12185 module ResponseDto = struct
12186 type t = {
12187 count : int;
12188 }
12189 end
12190 end
12191
12192 module ResponseDto = struct
12193 include Types.ResponseDto
12194
12195 let v ~count () = { count }
12196
12197 let count t = t.count
12198
12199 let jsont : t Jsont.t =
12200 Jsont.Object.map ~kind:"TrashResponseDto"
12201 (fun count -> { count })
12202 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
12203 |> Jsont.Object.skip_unknown
12204 |> Jsont.Object.finish
12205 end
12206
12207 (** Empty trash
12208
12209 Permanently delete all items in the trash. *)
12210 let empty_trash client () =
12211 let op_name = "empty_trash" in
12212 let url_path = "/trash/empty" in
12213 let query = "" in
12214 let url = client.base_url ^ url_path ^ query in
12215 let response =
12216 try Requests.post client.session url
12217 with Eio.Io _ as ex ->
12218 let bt = Printexc.get_raw_backtrace () in
12219 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
12220 in
12221 if Requests.Response.ok response then
12222 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12223 else
12224 let body = Requests.Response.text response in
12225 let parsed_body =
12226 match Jsont_bytesrw.decode_string Jsont.json body with
12227 | Ok json -> Some (Openapi.Runtime.Json json)
12228 | Error _ -> Some (Openapi.Runtime.Raw body)
12229 in
12230 raise (Openapi.Runtime.Api_error {
12231 operation = op_name;
12232 method_ = "POST";
12233 url;
12234 status = Requests.Response.status_code response;
12235 body;
12236 parsed_body;
12237 })
12238
12239 (** Restore trash
12240
12241 Restore all items in the trash. *)
12242 let restore_trash client () =
12243 let op_name = "restore_trash" in
12244 let url_path = "/trash/restore" in
12245 let query = "" in
12246 let url = client.base_url ^ url_path ^ query in
12247 let response =
12248 try Requests.post client.session url
12249 with Eio.Io _ as ex ->
12250 let bt = Printexc.get_raw_backtrace () in
12251 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
12252 in
12253 if Requests.Response.ok response then
12254 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12255 else
12256 let body = Requests.Response.text response in
12257 let parsed_body =
12258 match Jsont_bytesrw.decode_string Jsont.json body with
12259 | Ok json -> Some (Openapi.Runtime.Json json)
12260 | Error _ -> Some (Openapi.Runtime.Raw body)
12261 in
12262 raise (Openapi.Runtime.Api_error {
12263 operation = op_name;
12264 method_ = "POST";
12265 url;
12266 status = Requests.Response.status_code response;
12267 body;
12268 parsed_body;
12269 })
12270
12271 (** Restore assets
12272
12273 Restore specific assets from the trash. *)
12274 let restore_assets ~body client () =
12275 let op_name = "restore_assets" in
12276 let url_path = "/trash/restore/assets" in
12277 let query = "" in
12278 let url = client.base_url ^ url_path ^ query in
12279 let response =
12280 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json BulkIds.Dto.jsont body)) url
12281 with Eio.Io _ as ex ->
12282 let bt = Printexc.get_raw_backtrace () in
12283 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
12284 in
12285 if Requests.Response.ok response then
12286 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12287 else
12288 let body = Requests.Response.text response in
12289 let parsed_body =
12290 match Jsont_bytesrw.decode_string Jsont.json body with
12291 | Ok json -> Some (Openapi.Runtime.Json json)
12292 | Error _ -> Some (Openapi.Runtime.Raw body)
12293 in
12294 raise (Openapi.Runtime.Api_error {
12295 operation = op_name;
12296 method_ = "POST";
12297 url;
12298 status = Requests.Response.status_code response;
12299 body;
12300 parsed_body;
12301 })
12302end
12303
12304module BulkIdErrorReason = struct
12305 module Types = struct
12306 module T = struct
12307 type t = [
12308 | `Duplicate
12309 | `No_permission
12310 | `Not_found
12311 | `Unknown
12312 ]
12313 end
12314 end
12315
12316 module T = struct
12317 include Types.T
12318
12319 let jsont : t Jsont.t =
12320 Jsont.map Jsont.string ~kind:"BulkIdErrorReason"
12321 ~dec:(function
12322 | "duplicate" -> `Duplicate
12323 | "no_permission" -> `No_permission
12324 | "not_found" -> `Not_found
12325 | "unknown" -> `Unknown
12326 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
12327 ~enc:(function
12328 | `Duplicate -> "duplicate"
12329 | `No_permission -> "no_permission"
12330 | `Not_found -> "not_found"
12331 | `Unknown -> "unknown")
12332 end
12333end
12334
12335module AlbumsAddAssets = struct
12336 module Types = struct
12337 module ResponseDto = struct
12338 type t = {
12339 error : BulkIdErrorReason.T.t option;
12340 success : bool;
12341 }
12342 end
12343
12344 module Dto = struct
12345 type t = {
12346 album_ids : string list;
12347 asset_ids : string list;
12348 }
12349 end
12350 end
12351
12352 module ResponseDto = struct
12353 include Types.ResponseDto
12354
12355 let v ~success ?error () = { error; success }
12356
12357 let error t = t.error
12358 let success t = t.success
12359
12360 let jsont : t Jsont.t =
12361 Jsont.Object.map ~kind:"AlbumsAddAssetsResponseDto"
12362 (fun error success -> { error; success })
12363 |> Jsont.Object.opt_mem "error" BulkIdErrorReason.T.jsont ~enc:(fun r -> r.error)
12364 |> Jsont.Object.mem "success" Jsont.bool ~enc:(fun r -> r.success)
12365 |> Jsont.Object.skip_unknown
12366 |> Jsont.Object.finish
12367 end
12368
12369 module Dto = struct
12370 include Types.Dto
12371
12372 let v ~album_ids ~asset_ids () = { album_ids; asset_ids }
12373
12374 let album_ids t = t.album_ids
12375 let asset_ids t = t.asset_ids
12376
12377 let jsont : t Jsont.t =
12378 Jsont.Object.map ~kind:"AlbumsAddAssetsDto"
12379 (fun album_ids asset_ids -> { album_ids; asset_ids })
12380 |> Jsont.Object.mem "albumIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.album_ids)
12381 |> Jsont.Object.mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
12382 |> Jsont.Object.skip_unknown
12383 |> Jsont.Object.finish
12384 end
12385
12386 (** Add assets to albums
12387
12388 Send a list of asset IDs and album IDs to add each asset to each album. *)
12389 let add_assets_to_albums ?key ?slug ~body client () =
12390 let op_name = "add_assets_to_albums" in
12391 let url_path = "/albums/assets" in
12392 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
12393 let url = client.base_url ^ url_path ^ query in
12394 let response =
12395 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
12396 with Eio.Io _ as ex ->
12397 let bt = Printexc.get_raw_backtrace () in
12398 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
12399 in
12400 if Requests.Response.ok response then
12401 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12402 else
12403 let body = Requests.Response.text response in
12404 let parsed_body =
12405 match Jsont_bytesrw.decode_string Jsont.json body with
12406 | Ok json -> Some (Openapi.Runtime.Json json)
12407 | Error _ -> Some (Openapi.Runtime.Raw body)
12408 in
12409 raise (Openapi.Runtime.Api_error {
12410 operation = op_name;
12411 method_ = "PUT";
12412 url;
12413 status = Requests.Response.status_code response;
12414 body;
12415 parsed_body;
12416 })
12417end
12418
12419module AuthStatus = struct
12420 module Types = struct
12421 module ResponseDto = struct
12422 type t = {
12423 expires_at : string option;
12424 is_elevated : bool;
12425 password : bool;
12426 pin_code : bool;
12427 pin_expires_at : string option;
12428 }
12429 end
12430 end
12431
12432 module ResponseDto = struct
12433 include Types.ResponseDto
12434
12435 let v ~is_elevated ~password ~pin_code ?expires_at ?pin_expires_at () = { expires_at; is_elevated; password; pin_code; pin_expires_at }
12436
12437 let expires_at t = t.expires_at
12438 let is_elevated t = t.is_elevated
12439 let password t = t.password
12440 let pin_code t = t.pin_code
12441 let pin_expires_at t = t.pin_expires_at
12442
12443 let jsont : t Jsont.t =
12444 Jsont.Object.map ~kind:"AuthStatusResponseDto"
12445 (fun expires_at is_elevated password pin_code pin_expires_at -> { expires_at; is_elevated; password; pin_code; pin_expires_at })
12446 |> Jsont.Object.opt_mem "expiresAt" Jsont.string ~enc:(fun r -> r.expires_at)
12447 |> Jsont.Object.mem "isElevated" Jsont.bool ~enc:(fun r -> r.is_elevated)
12448 |> Jsont.Object.mem "password" Jsont.bool ~enc:(fun r -> r.password)
12449 |> Jsont.Object.mem "pinCode" Jsont.bool ~enc:(fun r -> r.pin_code)
12450 |> Jsont.Object.opt_mem "pinExpiresAt" Jsont.string ~enc:(fun r -> r.pin_expires_at)
12451 |> Jsont.Object.skip_unknown
12452 |> Jsont.Object.finish
12453 end
12454
12455 (** Retrieve auth status
12456
12457 Get information about the current session, including whether the user has a password, and if the session can access locked assets. *)
12458 let get_auth_status client () =
12459 let op_name = "get_auth_status" in
12460 let url_path = "/auth/status" in
12461 let query = "" in
12462 let url = client.base_url ^ url_path ^ query in
12463 let response =
12464 try Requests.get client.session url
12465 with Eio.Io _ as ex ->
12466 let bt = Printexc.get_raw_backtrace () in
12467 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
12468 in
12469 if Requests.Response.ok response then
12470 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12471 else
12472 let body = Requests.Response.text response in
12473 let parsed_body =
12474 match Jsont_bytesrw.decode_string Jsont.json body with
12475 | Ok json -> Some (Openapi.Runtime.Json json)
12476 | Error _ -> Some (Openapi.Runtime.Raw body)
12477 in
12478 raise (Openapi.Runtime.Api_error {
12479 operation = op_name;
12480 method_ = "GET";
12481 url;
12482 status = Requests.Response.status_code response;
12483 body;
12484 parsed_body;
12485 })
12486end
12487
12488module AudioCodec = struct
12489 module Types = struct
12490 module T = struct
12491 type t = [
12492 | `Mp3
12493 | `Aac
12494 | `Libopus
12495 | `Pcm_s16le
12496 ]
12497 end
12498 end
12499
12500 module T = struct
12501 include Types.T
12502
12503 let jsont : t Jsont.t =
12504 Jsont.map Jsont.string ~kind:"AudioCodec"
12505 ~dec:(function
12506 | "mp3" -> `Mp3
12507 | "aac" -> `Aac
12508 | "libopus" -> `Libopus
12509 | "pcm_s16le" -> `Pcm_s16le
12510 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
12511 ~enc:(function
12512 | `Mp3 -> "mp3"
12513 | `Aac -> "aac"
12514 | `Libopus -> "libopus"
12515 | `Pcm_s16le -> "pcm_s16le")
12516 end
12517end
12518
12519module SystemConfigFfmpeg = struct
12520 module Types = struct
12521 module Dto = struct
12522 type t = {
12523 accel : TranscodeHwaccel.T.t;
12524 accel_decode : bool;
12525 accepted_audio_codecs : AudioCodec.T.t list;
12526 accepted_containers : VideoContainer.T.t list;
12527 accepted_video_codecs : VideoCodec.T.t list;
12528 bframes : int;
12529 cq_mode : Cqmode.T.t;
12530 crf : int;
12531 gop_size : int;
12532 max_bitrate : string;
12533 preferred_hw_device : string;
12534 preset : string;
12535 refs : int;
12536 target_audio_codec : AudioCodec.T.t;
12537 target_resolution : string;
12538 target_video_codec : VideoCodec.T.t;
12539 temporal_aq : bool;
12540 threads : int;
12541 tonemap : ToneMapping.T.t;
12542 transcode : TranscodePolicy.T.t;
12543 two_pass : bool;
12544 }
12545 end
12546 end
12547
12548 module Dto = struct
12549 include Types.Dto
12550
12551 let v ~accel ~accel_decode ~accepted_audio_codecs ~accepted_containers ~accepted_video_codecs ~bframes ~cq_mode ~crf ~gop_size ~max_bitrate ~preferred_hw_device ~preset ~refs ~target_audio_codec ~target_resolution ~target_video_codec ~temporal_aq ~threads ~tonemap ~transcode ~two_pass () = { accel; accel_decode; accepted_audio_codecs; accepted_containers; accepted_video_codecs; bframes; cq_mode; crf; gop_size; max_bitrate; preferred_hw_device; preset; refs; target_audio_codec; target_resolution; target_video_codec; temporal_aq; threads; tonemap; transcode; two_pass }
12552
12553 let accel t = t.accel
12554 let accel_decode t = t.accel_decode
12555 let accepted_audio_codecs t = t.accepted_audio_codecs
12556 let accepted_containers t = t.accepted_containers
12557 let accepted_video_codecs t = t.accepted_video_codecs
12558 let bframes t = t.bframes
12559 let cq_mode t = t.cq_mode
12560 let crf t = t.crf
12561 let gop_size t = t.gop_size
12562 let max_bitrate t = t.max_bitrate
12563 let preferred_hw_device t = t.preferred_hw_device
12564 let preset t = t.preset
12565 let refs t = t.refs
12566 let target_audio_codec t = t.target_audio_codec
12567 let target_resolution t = t.target_resolution
12568 let target_video_codec t = t.target_video_codec
12569 let temporal_aq t = t.temporal_aq
12570 let threads t = t.threads
12571 let tonemap t = t.tonemap
12572 let transcode t = t.transcode
12573 let two_pass t = t.two_pass
12574
12575 let jsont : t Jsont.t =
12576 Jsont.Object.map ~kind:"SystemConfigFFmpegDto"
12577 (fun accel accel_decode accepted_audio_codecs accepted_containers accepted_video_codecs bframes cq_mode crf gop_size max_bitrate preferred_hw_device preset refs target_audio_codec target_resolution target_video_codec temporal_aq threads tonemap transcode two_pass -> { accel; accel_decode; accepted_audio_codecs; accepted_containers; accepted_video_codecs; bframes; cq_mode; crf; gop_size; max_bitrate; preferred_hw_device; preset; refs; target_audio_codec; target_resolution; target_video_codec; temporal_aq; threads; tonemap; transcode; two_pass })
12578 |> Jsont.Object.mem "accel" TranscodeHwaccel.T.jsont ~enc:(fun r -> r.accel)
12579 |> Jsont.Object.mem "accelDecode" Jsont.bool ~enc:(fun r -> r.accel_decode)
12580 |> Jsont.Object.mem "acceptedAudioCodecs" (Jsont.list AudioCodec.T.jsont) ~enc:(fun r -> r.accepted_audio_codecs)
12581 |> Jsont.Object.mem "acceptedContainers" (Jsont.list VideoContainer.T.jsont) ~enc:(fun r -> r.accepted_containers)
12582 |> Jsont.Object.mem "acceptedVideoCodecs" (Jsont.list VideoCodec.T.jsont) ~enc:(fun r -> r.accepted_video_codecs)
12583 |> Jsont.Object.mem "bframes" (Openapi.Runtime.validated_int ~minimum:(-1.) ~maximum:16. Jsont.int) ~enc:(fun r -> r.bframes)
12584 |> Jsont.Object.mem "cqMode" Cqmode.T.jsont ~enc:(fun r -> r.cq_mode)
12585 |> Jsont.Object.mem "crf" (Openapi.Runtime.validated_int ~minimum:0. ~maximum:51. Jsont.int) ~enc:(fun r -> r.crf)
12586 |> Jsont.Object.mem "gopSize" (Openapi.Runtime.validated_int ~minimum:0. Jsont.int) ~enc:(fun r -> r.gop_size)
12587 |> Jsont.Object.mem "maxBitrate" Jsont.string ~enc:(fun r -> r.max_bitrate)
12588 |> Jsont.Object.mem "preferredHwDevice" Jsont.string ~enc:(fun r -> r.preferred_hw_device)
12589 |> Jsont.Object.mem "preset" Jsont.string ~enc:(fun r -> r.preset)
12590 |> Jsont.Object.mem "refs" (Openapi.Runtime.validated_int ~minimum:0. ~maximum:6. Jsont.int) ~enc:(fun r -> r.refs)
12591 |> Jsont.Object.mem "targetAudioCodec" AudioCodec.T.jsont ~enc:(fun r -> r.target_audio_codec)
12592 |> Jsont.Object.mem "targetResolution" Jsont.string ~enc:(fun r -> r.target_resolution)
12593 |> Jsont.Object.mem "targetVideoCodec" VideoCodec.T.jsont ~enc:(fun r -> r.target_video_codec)
12594 |> Jsont.Object.mem "temporalAQ" Jsont.bool ~enc:(fun r -> r.temporal_aq)
12595 |> Jsont.Object.mem "threads" (Openapi.Runtime.validated_int ~minimum:0. Jsont.int) ~enc:(fun r -> r.threads)
12596 |> Jsont.Object.mem "tonemap" ToneMapping.T.jsont ~enc:(fun r -> r.tonemap)
12597 |> Jsont.Object.mem "transcode" TranscodePolicy.T.jsont ~enc:(fun r -> r.transcode)
12598 |> Jsont.Object.mem "twoPass" Jsont.bool ~enc:(fun r -> r.two_pass)
12599 |> Jsont.Object.skip_unknown
12600 |> Jsont.Object.finish
12601 end
12602end
12603
12604module SystemConfig = struct
12605 module Types = struct
12606 module Dto = struct
12607 type t = {
12608 backup : SystemConfigBackups.Dto.t;
12609 ffmpeg : SystemConfigFfmpeg.Dto.t;
12610 image : SystemConfigImage.Dto.t;
12611 job : SystemConfigJob.Dto.t;
12612 library : SystemConfigLibrary.Dto.t;
12613 logging : SystemConfigLogging.Dto.t;
12614 machine_learning : SystemConfigMachineLearning.Dto.t;
12615 map : SystemConfigMap.Dto.t;
12616 metadata : SystemConfigMetadata.Dto.t;
12617 new_version_check : SystemConfigNewVersionCheck.Dto.t;
12618 nightly_tasks : SystemConfigNightlyTasks.Dto.t;
12619 notifications : SystemConfigNotifications.Dto.t;
12620 oauth : SystemConfigOauth.Dto.t;
12621 password_login : SystemConfigPasswordLogin.Dto.t;
12622 reverse_geocoding : SystemConfigReverseGeocoding.Dto.t;
12623 server : SystemConfigServer.Dto.t;
12624 storage_template : SystemConfigStorageTemplate.Dto.t;
12625 templates : SystemConfigTemplates.Dto.t;
12626 theme : SystemConfigTheme.Dto.t;
12627 trash : SystemConfigTrash.Dto.t;
12628 user : SystemConfigUser.Dto.t;
12629 }
12630 end
12631 end
12632
12633 module Dto = struct
12634 include Types.Dto
12635
12636 let v ~backup ~ffmpeg ~image ~job ~library ~logging ~machine_learning ~map ~metadata ~new_version_check ~nightly_tasks ~notifications ~oauth ~password_login ~reverse_geocoding ~server ~storage_template ~templates ~theme ~trash ~user () = { backup; ffmpeg; image; job; library; logging; machine_learning; map; metadata; new_version_check; nightly_tasks; notifications; oauth; password_login; reverse_geocoding; server; storage_template; templates; theme; trash; user }
12637
12638 let backup t = t.backup
12639 let ffmpeg t = t.ffmpeg
12640 let image t = t.image
12641 let job t = t.job
12642 let library t = t.library
12643 let logging t = t.logging
12644 let machine_learning t = t.machine_learning
12645 let map t = t.map
12646 let metadata t = t.metadata
12647 let new_version_check t = t.new_version_check
12648 let nightly_tasks t = t.nightly_tasks
12649 let notifications t = t.notifications
12650 let oauth t = t.oauth
12651 let password_login t = t.password_login
12652 let reverse_geocoding t = t.reverse_geocoding
12653 let server t = t.server
12654 let storage_template t = t.storage_template
12655 let templates t = t.templates
12656 let theme t = t.theme
12657 let trash t = t.trash
12658 let user t = t.user
12659
12660 let jsont : t Jsont.t =
12661 Jsont.Object.map ~kind:"SystemConfigDto"
12662 (fun backup ffmpeg image job library logging machine_learning map metadata new_version_check nightly_tasks notifications oauth password_login reverse_geocoding server storage_template templates theme trash user -> { backup; ffmpeg; image; job; library; logging; machine_learning; map; metadata; new_version_check; nightly_tasks; notifications; oauth; password_login; reverse_geocoding; server; storage_template; templates; theme; trash; user })
12663 |> Jsont.Object.mem "backup" SystemConfigBackups.Dto.jsont ~enc:(fun r -> r.backup)
12664 |> Jsont.Object.mem "ffmpeg" SystemConfigFfmpeg.Dto.jsont ~enc:(fun r -> r.ffmpeg)
12665 |> Jsont.Object.mem "image" SystemConfigImage.Dto.jsont ~enc:(fun r -> r.image)
12666 |> Jsont.Object.mem "job" SystemConfigJob.Dto.jsont ~enc:(fun r -> r.job)
12667 |> Jsont.Object.mem "library" SystemConfigLibrary.Dto.jsont ~enc:(fun r -> r.library)
12668 |> Jsont.Object.mem "logging" SystemConfigLogging.Dto.jsont ~enc:(fun r -> r.logging)
12669 |> Jsont.Object.mem "machineLearning" SystemConfigMachineLearning.Dto.jsont ~enc:(fun r -> r.machine_learning)
12670 |> Jsont.Object.mem "map" SystemConfigMap.Dto.jsont ~enc:(fun r -> r.map)
12671 |> Jsont.Object.mem "metadata" SystemConfigMetadata.Dto.jsont ~enc:(fun r -> r.metadata)
12672 |> Jsont.Object.mem "newVersionCheck" SystemConfigNewVersionCheck.Dto.jsont ~enc:(fun r -> r.new_version_check)
12673 |> Jsont.Object.mem "nightlyTasks" SystemConfigNightlyTasks.Dto.jsont ~enc:(fun r -> r.nightly_tasks)
12674 |> Jsont.Object.mem "notifications" SystemConfigNotifications.Dto.jsont ~enc:(fun r -> r.notifications)
12675 |> Jsont.Object.mem "oauth" SystemConfigOauth.Dto.jsont ~enc:(fun r -> r.oauth)
12676 |> Jsont.Object.mem "passwordLogin" SystemConfigPasswordLogin.Dto.jsont ~enc:(fun r -> r.password_login)
12677 |> Jsont.Object.mem "reverseGeocoding" SystemConfigReverseGeocoding.Dto.jsont ~enc:(fun r -> r.reverse_geocoding)
12678 |> Jsont.Object.mem "server" SystemConfigServer.Dto.jsont ~enc:(fun r -> r.server)
12679 |> Jsont.Object.mem "storageTemplate" SystemConfigStorageTemplate.Dto.jsont ~enc:(fun r -> r.storage_template)
12680 |> Jsont.Object.mem "templates" SystemConfigTemplates.Dto.jsont ~enc:(fun r -> r.templates)
12681 |> Jsont.Object.mem "theme" SystemConfigTheme.Dto.jsont ~enc:(fun r -> r.theme)
12682 |> Jsont.Object.mem "trash" SystemConfigTrash.Dto.jsont ~enc:(fun r -> r.trash)
12683 |> Jsont.Object.mem "user" SystemConfigUser.Dto.jsont ~enc:(fun r -> r.user)
12684 |> Jsont.Object.skip_unknown
12685 |> Jsont.Object.finish
12686 end
12687
12688 (** Get system configuration
12689
12690 Retrieve the current system configuration. *)
12691 let get_config client () =
12692 let op_name = "get_config" in
12693 let url_path = "/system-config" in
12694 let query = "" in
12695 let url = client.base_url ^ url_path ^ query in
12696 let response =
12697 try Requests.get client.session url
12698 with Eio.Io _ as ex ->
12699 let bt = Printexc.get_raw_backtrace () in
12700 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
12701 in
12702 if Requests.Response.ok response then
12703 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
12704 else
12705 let body = Requests.Response.text response in
12706 let parsed_body =
12707 match Jsont_bytesrw.decode_string Jsont.json body with
12708 | Ok json -> Some (Openapi.Runtime.Json json)
12709 | Error _ -> Some (Openapi.Runtime.Raw body)
12710 in
12711 raise (Openapi.Runtime.Api_error {
12712 operation = op_name;
12713 method_ = "GET";
12714 url;
12715 status = Requests.Response.status_code response;
12716 body;
12717 parsed_body;
12718 })
12719
12720 (** Update system configuration
12721
12722 Update the system configuration with a new system configuration. *)
12723 let update_config ~body client () =
12724 let op_name = "update_config" in
12725 let url_path = "/system-config" in
12726 let query = "" in
12727 let url = client.base_url ^ url_path ^ query in
12728 let response =
12729 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
12730 with Eio.Io _ as ex ->
12731 let bt = Printexc.get_raw_backtrace () in
12732 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
12733 in
12734 if Requests.Response.ok response then
12735 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
12736 else
12737 let body = Requests.Response.text response in
12738 let parsed_body =
12739 match Jsont_bytesrw.decode_string Jsont.json body with
12740 | Ok json -> Some (Openapi.Runtime.Json json)
12741 | Error _ -> Some (Openapi.Runtime.Raw body)
12742 in
12743 raise (Openapi.Runtime.Api_error {
12744 operation = op_name;
12745 method_ = "PUT";
12746 url;
12747 status = Requests.Response.status_code response;
12748 body;
12749 parsed_body;
12750 })
12751
12752 (** Get system configuration defaults
12753
12754 Retrieve the default values for the system configuration. *)
12755 let get_config_defaults client () =
12756 let op_name = "get_config_defaults" in
12757 let url_path = "/system-config/defaults" in
12758 let query = "" in
12759 let url = client.base_url ^ url_path ^ query in
12760 let response =
12761 try Requests.get client.session url
12762 with Eio.Io _ as ex ->
12763 let bt = Printexc.get_raw_backtrace () in
12764 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
12765 in
12766 if Requests.Response.ok response then
12767 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
12768 else
12769 let body = Requests.Response.text response in
12770 let parsed_body =
12771 match Jsont_bytesrw.decode_string Jsont.json body with
12772 | Ok json -> Some (Openapi.Runtime.Json json)
12773 | Error _ -> Some (Openapi.Runtime.Raw body)
12774 in
12775 raise (Openapi.Runtime.Api_error {
12776 operation = op_name;
12777 method_ = "GET";
12778 url;
12779 status = Requests.Response.status_code response;
12780 body;
12781 parsed_body;
12782 })
12783end
12784
12785module AssetVisibility = struct
12786 module Types = struct
12787 module T = struct
12788 type t = [
12789 | `Archive
12790 | `Timeline
12791 | `Hidden
12792 | `Locked
12793 ]
12794 end
12795 end
12796
12797 module T = struct
12798 include Types.T
12799
12800 let jsont : t Jsont.t =
12801 Jsont.map Jsont.string ~kind:"AssetVisibility"
12802 ~dec:(function
12803 | "archive" -> `Archive
12804 | "timeline" -> `Timeline
12805 | "hidden" -> `Hidden
12806 | "locked" -> `Locked
12807 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
12808 ~enc:(function
12809 | `Archive -> "archive"
12810 | `Timeline -> "timeline"
12811 | `Hidden -> "hidden"
12812 | `Locked -> "locked")
12813 end
12814end
12815
12816module UpdateAsset = struct
12817 module Types = struct
12818 module Dto = struct
12819 type t = {
12820 date_time_original : string option;
12821 description : string option;
12822 is_favorite : bool option;
12823 latitude : float option;
12824 live_photo_video_id : string option;
12825 longitude : float option;
12826 rating : float option;
12827 visibility : AssetVisibility.T.t option;
12828 }
12829 end
12830 end
12831
12832 module Dto = struct
12833 include Types.Dto
12834
12835 let v ?date_time_original ?description ?is_favorite ?latitude ?live_photo_video_id ?longitude ?rating ?visibility () = { date_time_original; description; is_favorite; latitude; live_photo_video_id; longitude; rating; visibility }
12836
12837 let date_time_original t = t.date_time_original
12838 let description t = t.description
12839 let is_favorite t = t.is_favorite
12840 let latitude t = t.latitude
12841 let live_photo_video_id t = t.live_photo_video_id
12842 let longitude t = t.longitude
12843 let rating t = t.rating
12844 let visibility t = t.visibility
12845
12846 let jsont : t Jsont.t =
12847 Jsont.Object.map ~kind:"UpdateAssetDto"
12848 (fun date_time_original description is_favorite latitude live_photo_video_id longitude rating visibility -> { date_time_original; description; is_favorite; latitude; live_photo_video_id; longitude; rating; visibility })
12849 |> Jsont.Object.opt_mem "dateTimeOriginal" Jsont.string ~enc:(fun r -> r.date_time_original)
12850 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
12851 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
12852 |> Jsont.Object.opt_mem "latitude" Jsont.number ~enc:(fun r -> r.latitude)
12853 |> Jsont.Object.mem "livePhotoVideoId" Openapi.Runtime.nullable_string
12854 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.live_photo_video_id)
12855 |> Jsont.Object.opt_mem "longitude" Jsont.number ~enc:(fun r -> r.longitude)
12856 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
12857 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
12858 |> Jsont.Object.skip_unknown
12859 |> Jsont.Object.finish
12860 end
12861end
12862
12863module TimeBucketAsset = struct
12864 module Types = struct
12865 module ResponseDto = struct
12866 type t = {
12867 city : string list; (** Array of city names extracted from EXIF GPS data *)
12868 country : string list; (** Array of country names extracted from EXIF GPS data *)
12869 duration : string list; (** Array of video durations in HH:MM:SS format (null for images) *)
12870 file_created_at : string list; (** Array of file creation timestamps in UTC (ISO 8601 format, without timezone) *)
12871 id : string list; (** Array of asset IDs in the time bucket *)
12872 is_favorite : bool list; (** Array indicating whether each asset is favorited *)
12873 is_image : bool list; (** Array indicating whether each asset is an image (false for videos) *)
12874 is_trashed : bool list; (** Array indicating whether each asset is in the trash *)
12875 latitude : float list option; (** Array of latitude coordinates extracted from EXIF GPS data *)
12876 live_photo_video_id : string list; (** Array of live photo video asset IDs (null for non-live photos) *)
12877 local_offset_hours : float list; (** Array of UTC offset hours at the time each photo was taken. Positive values are east of UTC, negative values are west of UTC. Values may be fractional (e.g., 5.5 for +05:30, -9.75 for -09:45). Applying this offset to 'fileCreatedAt' will give you the time the photo was taken from the photographer's perspective. *)
12878 longitude : float list option; (** Array of longitude coordinates extracted from EXIF GPS data *)
12879 owner_id : string list; (** Array of owner IDs for each asset *)
12880 projection_type : string list; (** Array of projection types for 360° content (e.g., "EQUIRECTANGULAR", "CUBEFACE", "CYLINDRICAL") *)
12881 ratio : float list; (** Array of aspect ratios (width/height) for each asset *)
12882 stack : string list list option; (** Array of stack information as [stackId, assetCount] tuples (null for non-stacked assets) *)
12883 thumbhash : string list; (** Array of BlurHash strings for generating asset previews (base64 encoded) *)
12884 visibility : AssetVisibility.T.t list; (** Array of visibility statuses for each asset (e.g., ARCHIVE, TIMELINE, HIDDEN, LOCKED) *)
12885 }
12886 end
12887 end
12888
12889 module ResponseDto = struct
12890 include Types.ResponseDto
12891
12892 let v ~city ~country ~duration ~file_created_at ~id ~is_favorite ~is_image ~is_trashed ~live_photo_video_id ~local_offset_hours ~owner_id ~projection_type ~ratio ~thumbhash ~visibility ?latitude ?longitude ?stack () = { city; country; duration; file_created_at; id; is_favorite; is_image; is_trashed; latitude; live_photo_video_id; local_offset_hours; longitude; owner_id; projection_type; ratio; stack; thumbhash; visibility }
12893
12894 let city t = t.city
12895 let country t = t.country
12896 let duration t = t.duration
12897 let file_created_at t = t.file_created_at
12898 let id t = t.id
12899 let is_favorite t = t.is_favorite
12900 let is_image t = t.is_image
12901 let is_trashed t = t.is_trashed
12902 let latitude t = t.latitude
12903 let live_photo_video_id t = t.live_photo_video_id
12904 let local_offset_hours t = t.local_offset_hours
12905 let longitude t = t.longitude
12906 let owner_id t = t.owner_id
12907 let projection_type t = t.projection_type
12908 let ratio t = t.ratio
12909 let stack t = t.stack
12910 let thumbhash t = t.thumbhash
12911 let visibility t = t.visibility
12912
12913 let jsont : t Jsont.t =
12914 Jsont.Object.map ~kind:"TimeBucketAssetResponseDto"
12915 (fun city country duration file_created_at id is_favorite is_image is_trashed latitude live_photo_video_id local_offset_hours longitude owner_id projection_type ratio stack thumbhash visibility -> { city; country; duration; file_created_at; id; is_favorite; is_image; is_trashed; latitude; live_photo_video_id; local_offset_hours; longitude; owner_id; projection_type; ratio; stack; thumbhash; visibility })
12916 |> Jsont.Object.mem "city" (Jsont.list Jsont.string) ~enc:(fun r -> r.city)
12917 |> Jsont.Object.mem "country" (Jsont.list Jsont.string) ~enc:(fun r -> r.country)
12918 |> Jsont.Object.mem "duration" (Jsont.list Jsont.string) ~enc:(fun r -> r.duration)
12919 |> Jsont.Object.mem "fileCreatedAt" (Jsont.list Jsont.string) ~enc:(fun r -> r.file_created_at)
12920 |> Jsont.Object.mem "id" (Jsont.list Jsont.string) ~enc:(fun r -> r.id)
12921 |> Jsont.Object.mem "isFavorite" (Jsont.list Jsont.bool) ~enc:(fun r -> r.is_favorite)
12922 |> Jsont.Object.mem "isImage" (Jsont.list Jsont.bool) ~enc:(fun r -> r.is_image)
12923 |> Jsont.Object.mem "isTrashed" (Jsont.list Jsont.bool) ~enc:(fun r -> r.is_trashed)
12924 |> Jsont.Object.opt_mem "latitude" (Jsont.list Jsont.number) ~enc:(fun r -> r.latitude)
12925 |> Jsont.Object.mem "livePhotoVideoId" (Jsont.list Jsont.string) ~enc:(fun r -> r.live_photo_video_id)
12926 |> Jsont.Object.mem "localOffsetHours" (Jsont.list Jsont.number) ~enc:(fun r -> r.local_offset_hours)
12927 |> Jsont.Object.opt_mem "longitude" (Jsont.list Jsont.number) ~enc:(fun r -> r.longitude)
12928 |> Jsont.Object.mem "ownerId" (Jsont.list Jsont.string) ~enc:(fun r -> r.owner_id)
12929 |> Jsont.Object.mem "projectionType" (Jsont.list Jsont.string) ~enc:(fun r -> r.projection_type)
12930 |> Jsont.Object.mem "ratio" (Jsont.list Jsont.number) ~enc:(fun r -> r.ratio)
12931 |> Jsont.Object.opt_mem "stack" (Jsont.list (Jsont.list Jsont.string)) ~enc:(fun r -> r.stack)
12932 |> Jsont.Object.mem "thumbhash" (Jsont.list Jsont.string) ~enc:(fun r -> r.thumbhash)
12933 |> Jsont.Object.mem "visibility" (Jsont.list AssetVisibility.T.jsont) ~enc:(fun r -> r.visibility)
12934 |> Jsont.Object.skip_unknown
12935 |> Jsont.Object.finish
12936 end
12937
12938 (** Get time bucket
12939
12940 Retrieve a string of all asset ids in a given time bucket.
12941 @param album_id Filter assets belonging to a specific album
12942 @param is_favorite Filter by favorite status (true for favorites only, false for non-favorites only)
12943 @param is_trashed Filter by trash status (true for trashed assets only, false for non-trashed only)
12944 @param order Sort order for assets within time buckets (ASC for oldest first, DESC for newest first)
12945 @param person_id Filter assets containing a specific person (face recognition)
12946 @param tag_id Filter assets with a specific tag
12947 @param time_bucket Time bucket identifier in YYYY-MM-DD format (e.g., "2024-01-01" for January 2024)
12948 @param user_id Filter assets by specific user ID
12949 @param visibility Filter by asset visibility status (ARCHIVE, TIMELINE, HIDDEN, LOCKED)
12950 @param with_coordinates Include location data in the response
12951 @param with_partners Include assets shared by partners
12952 @param with_stacked Include stacked assets in the response. When true, only primary assets from stacks are returned.
12953 *)
12954 let get_time_bucket ?album_id ?is_favorite ?is_trashed ?key ?order ?person_id ?slug ?tag_id ~time_bucket ?user_id ?visibility ?with_coordinates ?with_partners ?with_stacked client () =
12955 let op_name = "get_time_bucket" in
12956 let url_path = "/timeline/bucket" in
12957 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"albumId" ~value:album_id; Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"order" ~value:order; Openapi.Runtime.Query.optional ~key:"personId" ~value:person_id; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug; Openapi.Runtime.Query.optional ~key:"tagId" ~value:tag_id; Openapi.Runtime.Query.singleton ~key:"timeBucket" ~value:time_bucket; Openapi.Runtime.Query.optional ~key:"userId" ~value:user_id; Openapi.Runtime.Query.optional ~key:"visibility" ~value:visibility; Openapi.Runtime.Query.optional ~key:"withCoordinates" ~value:with_coordinates; Openapi.Runtime.Query.optional ~key:"withPartners" ~value:with_partners; Openapi.Runtime.Query.optional ~key:"withStacked" ~value:with_stacked]) in
12958 let url = client.base_url ^ url_path ^ query in
12959 let response =
12960 try Requests.get client.session url
12961 with Eio.Io _ as ex ->
12962 let bt = Printexc.get_raw_backtrace () in
12963 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
12964 in
12965 if Requests.Response.ok response then
12966 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
12967 else
12968 let body = Requests.Response.text response in
12969 let parsed_body =
12970 match Jsont_bytesrw.decode_string Jsont.json body with
12971 | Ok json -> Some (Openapi.Runtime.Json json)
12972 | Error _ -> Some (Openapi.Runtime.Raw body)
12973 in
12974 raise (Openapi.Runtime.Api_error {
12975 operation = op_name;
12976 method_ = "GET";
12977 url;
12978 status = Requests.Response.status_code response;
12979 body;
12980 parsed_body;
12981 })
12982end
12983
12984module AssetBulk = struct
12985 module Types = struct
12986 module UpdateDto = struct
12987 type t = {
12988 date_time_original : string option;
12989 date_time_relative : float option;
12990 description : string option;
12991 duplicate_id : string option;
12992 ids : string list;
12993 is_favorite : bool option;
12994 latitude : float option;
12995 longitude : float option;
12996 rating : float option;
12997 time_zone : string option;
12998 visibility : AssetVisibility.T.t option;
12999 }
13000 end
13001 end
13002
13003 module UpdateDto = struct
13004 include Types.UpdateDto
13005
13006 let v ~ids ?date_time_original ?date_time_relative ?description ?duplicate_id ?is_favorite ?latitude ?longitude ?rating ?time_zone ?visibility () = { date_time_original; date_time_relative; description; duplicate_id; ids; is_favorite; latitude; longitude; rating; time_zone; visibility }
13007
13008 let date_time_original t = t.date_time_original
13009 let date_time_relative t = t.date_time_relative
13010 let description t = t.description
13011 let duplicate_id t = t.duplicate_id
13012 let ids t = t.ids
13013 let is_favorite t = t.is_favorite
13014 let latitude t = t.latitude
13015 let longitude t = t.longitude
13016 let rating t = t.rating
13017 let time_zone t = t.time_zone
13018 let visibility t = t.visibility
13019
13020 let jsont : t Jsont.t =
13021 Jsont.Object.map ~kind:"AssetBulkUpdateDto"
13022 (fun date_time_original date_time_relative description duplicate_id ids is_favorite latitude longitude rating time_zone visibility -> { date_time_original; date_time_relative; description; duplicate_id; ids; is_favorite; latitude; longitude; rating; time_zone; visibility })
13023 |> Jsont.Object.opt_mem "dateTimeOriginal" Jsont.string ~enc:(fun r -> r.date_time_original)
13024 |> Jsont.Object.opt_mem "dateTimeRelative" Jsont.number ~enc:(fun r -> r.date_time_relative)
13025 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
13026 |> Jsont.Object.mem "duplicateId" Openapi.Runtime.nullable_string
13027 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.duplicate_id)
13028 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
13029 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13030 |> Jsont.Object.opt_mem "latitude" Jsont.number ~enc:(fun r -> r.latitude)
13031 |> Jsont.Object.opt_mem "longitude" Jsont.number ~enc:(fun r -> r.longitude)
13032 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
13033 |> Jsont.Object.opt_mem "timeZone" Jsont.string ~enc:(fun r -> r.time_zone)
13034 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13035 |> Jsont.Object.skip_unknown
13036 |> Jsont.Object.finish
13037 end
13038end
13039
13040module AssetTypeEnum = struct
13041 module Types = struct
13042 module T = struct
13043 type t = [
13044 | `Image
13045 | `Video
13046 | `Audio
13047 | `Other
13048 ]
13049 end
13050 end
13051
13052 module T = struct
13053 include Types.T
13054
13055 let jsont : t Jsont.t =
13056 Jsont.map Jsont.string ~kind:"AssetTypeEnum"
13057 ~dec:(function
13058 | "IMAGE" -> `Image
13059 | "VIDEO" -> `Video
13060 | "AUDIO" -> `Audio
13061 | "OTHER" -> `Other
13062 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
13063 ~enc:(function
13064 | `Image -> "IMAGE"
13065 | `Video -> "VIDEO"
13066 | `Audio -> "AUDIO"
13067 | `Other -> "OTHER")
13068 end
13069end
13070
13071module SyncAssetV1 = struct
13072 module Types = struct
13073 module T = struct
13074 type t = {
13075 checksum : string;
13076 deleted_at : Ptime.t option;
13077 duration : string option;
13078 file_created_at : Ptime.t option;
13079 file_modified_at : Ptime.t option;
13080 height : int option;
13081 id : string;
13082 is_edited : bool;
13083 is_favorite : bool;
13084 library_id : string option;
13085 live_photo_video_id : string option;
13086 local_date_time : Ptime.t option;
13087 original_file_name : string;
13088 owner_id : string;
13089 stack_id : string option;
13090 thumbhash : string option;
13091 type_ : AssetTypeEnum.T.t;
13092 visibility : AssetVisibility.T.t;
13093 width : int option;
13094 }
13095 end
13096 end
13097
13098 module T = struct
13099 include Types.T
13100
13101 let v ~checksum ~id ~is_edited ~is_favorite ~original_file_name ~owner_id ~type_ ~visibility ?deleted_at ?duration ?file_created_at ?file_modified_at ?height ?library_id ?live_photo_video_id ?local_date_time ?stack_id ?thumbhash ?width () = { checksum; deleted_at; duration; file_created_at; file_modified_at; height; id; is_edited; is_favorite; library_id; live_photo_video_id; local_date_time; original_file_name; owner_id; stack_id; thumbhash; type_; visibility; width }
13102
13103 let checksum t = t.checksum
13104 let deleted_at t = t.deleted_at
13105 let duration t = t.duration
13106 let file_created_at t = t.file_created_at
13107 let file_modified_at t = t.file_modified_at
13108 let height t = t.height
13109 let id t = t.id
13110 let is_edited t = t.is_edited
13111 let is_favorite t = t.is_favorite
13112 let library_id t = t.library_id
13113 let live_photo_video_id t = t.live_photo_video_id
13114 let local_date_time t = t.local_date_time
13115 let original_file_name t = t.original_file_name
13116 let owner_id t = t.owner_id
13117 let stack_id t = t.stack_id
13118 let thumbhash t = t.thumbhash
13119 let type_ t = t.type_
13120 let visibility t = t.visibility
13121 let width t = t.width
13122
13123 let jsont : t Jsont.t =
13124 Jsont.Object.map ~kind:"SyncAssetV1"
13125 (fun checksum deleted_at duration file_created_at file_modified_at height id is_edited is_favorite library_id live_photo_video_id local_date_time original_file_name owner_id stack_id thumbhash type_ visibility width -> { checksum; deleted_at; duration; file_created_at; file_modified_at; height; id; is_edited; is_favorite; library_id; live_photo_video_id; local_date_time; original_file_name; owner_id; stack_id; thumbhash; type_; visibility; width })
13126 |> Jsont.Object.mem "checksum" Jsont.string ~enc:(fun r -> r.checksum)
13127 |> Jsont.Object.mem "deletedAt" Openapi.Runtime.nullable_ptime
13128 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.deleted_at)
13129 |> Jsont.Object.mem "duration" Openapi.Runtime.nullable_string
13130 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.duration)
13131 |> Jsont.Object.mem "fileCreatedAt" Openapi.Runtime.nullable_ptime
13132 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.file_created_at)
13133 |> Jsont.Object.mem "fileModifiedAt" Openapi.Runtime.nullable_ptime
13134 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.file_modified_at)
13135 |> Jsont.Object.mem "height" Openapi.Runtime.nullable_int
13136 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.height)
13137 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
13138 |> Jsont.Object.mem "isEdited" Jsont.bool ~enc:(fun r -> r.is_edited)
13139 |> Jsont.Object.mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13140 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
13141 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
13142 |> Jsont.Object.mem "livePhotoVideoId" Openapi.Runtime.nullable_string
13143 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.live_photo_video_id)
13144 |> Jsont.Object.mem "localDateTime" Openapi.Runtime.nullable_ptime
13145 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.local_date_time)
13146 |> Jsont.Object.mem "originalFileName" Jsont.string ~enc:(fun r -> r.original_file_name)
13147 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
13148 |> Jsont.Object.mem "stackId" Openapi.Runtime.nullable_string
13149 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.stack_id)
13150 |> Jsont.Object.mem "thumbhash" Openapi.Runtime.nullable_string
13151 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.thumbhash)
13152 |> Jsont.Object.mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
13153 |> Jsont.Object.mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13154 |> Jsont.Object.mem "width" Openapi.Runtime.nullable_int
13155 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.width)
13156 |> Jsont.Object.skip_unknown
13157 |> Jsont.Object.finish
13158 end
13159end
13160
13161module StatisticsSearch = struct
13162 module Types = struct
13163 module Dto = struct
13164 type t = {
13165 album_ids : string list option;
13166 city : string option;
13167 country : string option;
13168 created_after : Ptime.t option;
13169 created_before : Ptime.t option;
13170 description : string option;
13171 device_id : string option;
13172 is_encoded : bool option;
13173 is_favorite : bool option;
13174 is_motion : bool option;
13175 is_not_in_album : bool option;
13176 is_offline : bool option;
13177 lens_model : string option;
13178 library_id : string option;
13179 make : string option;
13180 model : string option;
13181 ocr : string option;
13182 person_ids : string list option;
13183 rating : float option;
13184 state : string option;
13185 tag_ids : string list option;
13186 taken_after : Ptime.t option;
13187 taken_before : Ptime.t option;
13188 trashed_after : Ptime.t option;
13189 trashed_before : Ptime.t option;
13190 type_ : AssetTypeEnum.T.t option;
13191 updated_after : Ptime.t option;
13192 updated_before : Ptime.t option;
13193 visibility : AssetVisibility.T.t option;
13194 }
13195 end
13196 end
13197
13198 module Dto = struct
13199 include Types.Dto
13200
13201 let v ?album_ids ?city ?country ?created_after ?created_before ?description ?device_id ?is_encoded ?is_favorite ?is_motion ?is_not_in_album ?is_offline ?lens_model ?library_id ?make ?model ?ocr ?person_ids ?rating ?state ?tag_ids ?taken_after ?taken_before ?trashed_after ?trashed_before ?type_ ?updated_after ?updated_before ?visibility () = { album_ids; city; country; created_after; created_before; description; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; person_ids; rating; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility }
13202
13203 let album_ids t = t.album_ids
13204 let city t = t.city
13205 let country t = t.country
13206 let created_after t = t.created_after
13207 let created_before t = t.created_before
13208 let description t = t.description
13209 let device_id t = t.device_id
13210 let is_encoded t = t.is_encoded
13211 let is_favorite t = t.is_favorite
13212 let is_motion t = t.is_motion
13213 let is_not_in_album t = t.is_not_in_album
13214 let is_offline t = t.is_offline
13215 let lens_model t = t.lens_model
13216 let library_id t = t.library_id
13217 let make t = t.make
13218 let model t = t.model
13219 let ocr t = t.ocr
13220 let person_ids t = t.person_ids
13221 let rating t = t.rating
13222 let state t = t.state
13223 let tag_ids t = t.tag_ids
13224 let taken_after t = t.taken_after
13225 let taken_before t = t.taken_before
13226 let trashed_after t = t.trashed_after
13227 let trashed_before t = t.trashed_before
13228 let type_ t = t.type_
13229 let updated_after t = t.updated_after
13230 let updated_before t = t.updated_before
13231 let visibility t = t.visibility
13232
13233 let jsont : t Jsont.t =
13234 Jsont.Object.map ~kind:"StatisticsSearchDto"
13235 (fun album_ids city country created_after created_before description device_id is_encoded is_favorite is_motion is_not_in_album is_offline lens_model library_id make model ocr person_ids rating state tag_ids taken_after taken_before trashed_after trashed_before type_ updated_after updated_before visibility -> { album_ids; city; country; created_after; created_before; description; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; person_ids; rating; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility })
13236 |> Jsont.Object.opt_mem "albumIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.album_ids)
13237 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
13238 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
13239 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
13240 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
13241 |> Jsont.Object.opt_mem "createdAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_after)
13242 |> Jsont.Object.opt_mem "createdBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_before)
13243 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
13244 |> Jsont.Object.opt_mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
13245 |> Jsont.Object.opt_mem "isEncoded" Jsont.bool ~enc:(fun r -> r.is_encoded)
13246 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13247 |> Jsont.Object.opt_mem "isMotion" Jsont.bool ~enc:(fun r -> r.is_motion)
13248 |> Jsont.Object.opt_mem "isNotInAlbum" Jsont.bool ~enc:(fun r -> r.is_not_in_album)
13249 |> Jsont.Object.opt_mem "isOffline" Jsont.bool ~enc:(fun r -> r.is_offline)
13250 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
13251 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
13252 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
13253 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
13254 |> Jsont.Object.opt_mem "make" Jsont.string ~enc:(fun r -> r.make)
13255 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
13256 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
13257 |> Jsont.Object.opt_mem "ocr" Jsont.string ~enc:(fun r -> r.ocr)
13258 |> Jsont.Object.opt_mem "personIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.person_ids)
13259 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
13260 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
13261 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
13262 |> Jsont.Object.mem "tagIds" (Openapi.Runtime.nullable_any (Jsont.list Jsont.string))
13263 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.tag_ids)
13264 |> Jsont.Object.opt_mem "takenAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_after)
13265 |> Jsont.Object.opt_mem "takenBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_before)
13266 |> Jsont.Object.opt_mem "trashedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_after)
13267 |> Jsont.Object.opt_mem "trashedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_before)
13268 |> Jsont.Object.opt_mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
13269 |> Jsont.Object.opt_mem "updatedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_after)
13270 |> Jsont.Object.opt_mem "updatedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_before)
13271 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13272 |> Jsont.Object.skip_unknown
13273 |> Jsont.Object.finish
13274 end
13275end
13276
13277module SearchStatistics = struct
13278 module Types = struct
13279 module ResponseDto = struct
13280 type t = {
13281 total : int;
13282 }
13283 end
13284 end
13285
13286 module ResponseDto = struct
13287 include Types.ResponseDto
13288
13289 let v ~total () = { total }
13290
13291 let total t = t.total
13292
13293 let jsont : t Jsont.t =
13294 Jsont.Object.map ~kind:"SearchStatisticsResponseDto"
13295 (fun total -> { total })
13296 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
13297 |> Jsont.Object.skip_unknown
13298 |> Jsont.Object.finish
13299 end
13300
13301 (** Search asset statistics
13302
13303 Retrieve statistical data about assets based on search criteria, such as the total matching count. *)
13304 let search_asset_statistics ~body client () =
13305 let op_name = "search_asset_statistics" in
13306 let url_path = "/search/statistics" in
13307 let query = "" in
13308 let url = client.base_url ^ url_path ^ query in
13309 let response =
13310 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json StatisticsSearch.Dto.jsont body)) url
13311 with Eio.Io _ as ex ->
13312 let bt = Printexc.get_raw_backtrace () in
13313 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
13314 in
13315 if Requests.Response.ok response then
13316 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
13317 else
13318 let body = Requests.Response.text response in
13319 let parsed_body =
13320 match Jsont_bytesrw.decode_string Jsont.json body with
13321 | Ok json -> Some (Openapi.Runtime.Json json)
13322 | Error _ -> Some (Openapi.Runtime.Raw body)
13323 in
13324 raise (Openapi.Runtime.Api_error {
13325 operation = op_name;
13326 method_ = "POST";
13327 url;
13328 status = Requests.Response.status_code response;
13329 body;
13330 parsed_body;
13331 })
13332end
13333
13334module SmartSearch = struct
13335 module Types = struct
13336 module Dto = struct
13337 type t = {
13338 album_ids : string list option;
13339 city : string option;
13340 country : string option;
13341 created_after : Ptime.t option;
13342 created_before : Ptime.t option;
13343 device_id : string option;
13344 is_encoded : bool option;
13345 is_favorite : bool option;
13346 is_motion : bool option;
13347 is_not_in_album : bool option;
13348 is_offline : bool option;
13349 language : string option;
13350 lens_model : string option;
13351 library_id : string option;
13352 make : string option;
13353 model : string option;
13354 ocr : string option;
13355 page : float option;
13356 person_ids : string list option;
13357 query : string option;
13358 query_asset_id : string option;
13359 rating : float option;
13360 size : float option;
13361 state : string option;
13362 tag_ids : string list option;
13363 taken_after : Ptime.t option;
13364 taken_before : Ptime.t option;
13365 trashed_after : Ptime.t option;
13366 trashed_before : Ptime.t option;
13367 type_ : AssetTypeEnum.T.t option;
13368 updated_after : Ptime.t option;
13369 updated_before : Ptime.t option;
13370 visibility : AssetVisibility.T.t option;
13371 with_deleted : bool option;
13372 with_exif : bool option;
13373 }
13374 end
13375 end
13376
13377 module Dto = struct
13378 include Types.Dto
13379
13380 let v ?album_ids ?city ?country ?created_after ?created_before ?device_id ?is_encoded ?is_favorite ?is_motion ?is_not_in_album ?is_offline ?language ?lens_model ?library_id ?make ?model ?ocr ?page ?person_ids ?query ?query_asset_id ?rating ?size ?state ?tag_ids ?taken_after ?taken_before ?trashed_after ?trashed_before ?type_ ?updated_after ?updated_before ?visibility ?with_deleted ?with_exif () = { album_ids; city; country; created_after; created_before; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; language; lens_model; library_id; make; model; ocr; page; person_ids; query; query_asset_id; rating; size; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif }
13381
13382 let album_ids t = t.album_ids
13383 let city t = t.city
13384 let country t = t.country
13385 let created_after t = t.created_after
13386 let created_before t = t.created_before
13387 let device_id t = t.device_id
13388 let is_encoded t = t.is_encoded
13389 let is_favorite t = t.is_favorite
13390 let is_motion t = t.is_motion
13391 let is_not_in_album t = t.is_not_in_album
13392 let is_offline t = t.is_offline
13393 let language t = t.language
13394 let lens_model t = t.lens_model
13395 let library_id t = t.library_id
13396 let make t = t.make
13397 let model t = t.model
13398 let ocr t = t.ocr
13399 let page t = t.page
13400 let person_ids t = t.person_ids
13401 let query t = t.query
13402 let query_asset_id t = t.query_asset_id
13403 let rating t = t.rating
13404 let size t = t.size
13405 let state t = t.state
13406 let tag_ids t = t.tag_ids
13407 let taken_after t = t.taken_after
13408 let taken_before t = t.taken_before
13409 let trashed_after t = t.trashed_after
13410 let trashed_before t = t.trashed_before
13411 let type_ t = t.type_
13412 let updated_after t = t.updated_after
13413 let updated_before t = t.updated_before
13414 let visibility t = t.visibility
13415 let with_deleted t = t.with_deleted
13416 let with_exif t = t.with_exif
13417
13418 let jsont : t Jsont.t =
13419 Jsont.Object.map ~kind:"SmartSearchDto"
13420 (fun album_ids city country created_after created_before device_id is_encoded is_favorite is_motion is_not_in_album is_offline language lens_model library_id make model ocr page person_ids query query_asset_id rating size state tag_ids taken_after taken_before trashed_after trashed_before type_ updated_after updated_before visibility with_deleted with_exif -> { album_ids; city; country; created_after; created_before; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; language; lens_model; library_id; make; model; ocr; page; person_ids; query; query_asset_id; rating; size; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif })
13421 |> Jsont.Object.opt_mem "albumIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.album_ids)
13422 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
13423 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
13424 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
13425 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
13426 |> Jsont.Object.opt_mem "createdAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_after)
13427 |> Jsont.Object.opt_mem "createdBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_before)
13428 |> Jsont.Object.opt_mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
13429 |> Jsont.Object.opt_mem "isEncoded" Jsont.bool ~enc:(fun r -> r.is_encoded)
13430 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13431 |> Jsont.Object.opt_mem "isMotion" Jsont.bool ~enc:(fun r -> r.is_motion)
13432 |> Jsont.Object.opt_mem "isNotInAlbum" Jsont.bool ~enc:(fun r -> r.is_not_in_album)
13433 |> Jsont.Object.opt_mem "isOffline" Jsont.bool ~enc:(fun r -> r.is_offline)
13434 |> Jsont.Object.opt_mem "language" Jsont.string ~enc:(fun r -> r.language)
13435 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
13436 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
13437 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
13438 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
13439 |> Jsont.Object.opt_mem "make" Jsont.string ~enc:(fun r -> r.make)
13440 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
13441 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
13442 |> Jsont.Object.opt_mem "ocr" Jsont.string ~enc:(fun r -> r.ocr)
13443 |> Jsont.Object.opt_mem "page" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.page)
13444 |> Jsont.Object.opt_mem "personIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.person_ids)
13445 |> Jsont.Object.opt_mem "query" Jsont.string ~enc:(fun r -> r.query)
13446 |> Jsont.Object.opt_mem "queryAssetId" Jsont.string ~enc:(fun r -> r.query_asset_id)
13447 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
13448 |> Jsont.Object.opt_mem "size" (Openapi.Runtime.validated_float ~minimum:1. ~maximum:1000. Jsont.number) ~enc:(fun r -> r.size)
13449 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
13450 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
13451 |> Jsont.Object.mem "tagIds" (Openapi.Runtime.nullable_any (Jsont.list Jsont.string))
13452 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.tag_ids)
13453 |> Jsont.Object.opt_mem "takenAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_after)
13454 |> Jsont.Object.opt_mem "takenBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_before)
13455 |> Jsont.Object.opt_mem "trashedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_after)
13456 |> Jsont.Object.opt_mem "trashedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_before)
13457 |> Jsont.Object.opt_mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
13458 |> Jsont.Object.opt_mem "updatedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_after)
13459 |> Jsont.Object.opt_mem "updatedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_before)
13460 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13461 |> Jsont.Object.opt_mem "withDeleted" Jsont.bool ~enc:(fun r -> r.with_deleted)
13462 |> Jsont.Object.opt_mem "withExif" Jsont.bool ~enc:(fun r -> r.with_exif)
13463 |> Jsont.Object.skip_unknown
13464 |> Jsont.Object.finish
13465 end
13466end
13467
13468module RandomSearch = struct
13469 module Types = struct
13470 module Dto = struct
13471 type t = {
13472 album_ids : string list option;
13473 city : string option;
13474 country : string option;
13475 created_after : Ptime.t option;
13476 created_before : Ptime.t option;
13477 device_id : string option;
13478 is_encoded : bool option;
13479 is_favorite : bool option;
13480 is_motion : bool option;
13481 is_not_in_album : bool option;
13482 is_offline : bool option;
13483 lens_model : string option;
13484 library_id : string option;
13485 make : string option;
13486 model : string option;
13487 ocr : string option;
13488 person_ids : string list option;
13489 rating : float option;
13490 size : float option;
13491 state : string option;
13492 tag_ids : string list option;
13493 taken_after : Ptime.t option;
13494 taken_before : Ptime.t option;
13495 trashed_after : Ptime.t option;
13496 trashed_before : Ptime.t option;
13497 type_ : AssetTypeEnum.T.t option;
13498 updated_after : Ptime.t option;
13499 updated_before : Ptime.t option;
13500 visibility : AssetVisibility.T.t option;
13501 with_deleted : bool option;
13502 with_exif : bool option;
13503 with_people : bool option;
13504 with_stacked : bool option;
13505 }
13506 end
13507 end
13508
13509 module Dto = struct
13510 include Types.Dto
13511
13512 let v ?album_ids ?city ?country ?created_after ?created_before ?device_id ?is_encoded ?is_favorite ?is_motion ?is_not_in_album ?is_offline ?lens_model ?library_id ?make ?model ?ocr ?person_ids ?rating ?size ?state ?tag_ids ?taken_after ?taken_before ?trashed_after ?trashed_before ?type_ ?updated_after ?updated_before ?visibility ?with_deleted ?with_exif ?with_people ?with_stacked () = { album_ids; city; country; created_after; created_before; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; person_ids; rating; size; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif; with_people; with_stacked }
13513
13514 let album_ids t = t.album_ids
13515 let city t = t.city
13516 let country t = t.country
13517 let created_after t = t.created_after
13518 let created_before t = t.created_before
13519 let device_id t = t.device_id
13520 let is_encoded t = t.is_encoded
13521 let is_favorite t = t.is_favorite
13522 let is_motion t = t.is_motion
13523 let is_not_in_album t = t.is_not_in_album
13524 let is_offline t = t.is_offline
13525 let lens_model t = t.lens_model
13526 let library_id t = t.library_id
13527 let make t = t.make
13528 let model t = t.model
13529 let ocr t = t.ocr
13530 let person_ids t = t.person_ids
13531 let rating t = t.rating
13532 let size t = t.size
13533 let state t = t.state
13534 let tag_ids t = t.tag_ids
13535 let taken_after t = t.taken_after
13536 let taken_before t = t.taken_before
13537 let trashed_after t = t.trashed_after
13538 let trashed_before t = t.trashed_before
13539 let type_ t = t.type_
13540 let updated_after t = t.updated_after
13541 let updated_before t = t.updated_before
13542 let visibility t = t.visibility
13543 let with_deleted t = t.with_deleted
13544 let with_exif t = t.with_exif
13545 let with_people t = t.with_people
13546 let with_stacked t = t.with_stacked
13547
13548 let jsont : t Jsont.t =
13549 Jsont.Object.map ~kind:"RandomSearchDto"
13550 (fun album_ids city country created_after created_before device_id is_encoded is_favorite is_motion is_not_in_album is_offline lens_model library_id make model ocr person_ids rating size state tag_ids taken_after taken_before trashed_after trashed_before type_ updated_after updated_before visibility with_deleted with_exif with_people with_stacked -> { album_ids; city; country; created_after; created_before; device_id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; person_ids; rating; size; state; tag_ids; taken_after; taken_before; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif; with_people; with_stacked })
13551 |> Jsont.Object.opt_mem "albumIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.album_ids)
13552 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
13553 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
13554 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
13555 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
13556 |> Jsont.Object.opt_mem "createdAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_after)
13557 |> Jsont.Object.opt_mem "createdBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_before)
13558 |> Jsont.Object.opt_mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
13559 |> Jsont.Object.opt_mem "isEncoded" Jsont.bool ~enc:(fun r -> r.is_encoded)
13560 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13561 |> Jsont.Object.opt_mem "isMotion" Jsont.bool ~enc:(fun r -> r.is_motion)
13562 |> Jsont.Object.opt_mem "isNotInAlbum" Jsont.bool ~enc:(fun r -> r.is_not_in_album)
13563 |> Jsont.Object.opt_mem "isOffline" Jsont.bool ~enc:(fun r -> r.is_offline)
13564 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
13565 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
13566 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
13567 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
13568 |> Jsont.Object.opt_mem "make" Jsont.string ~enc:(fun r -> r.make)
13569 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
13570 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
13571 |> Jsont.Object.opt_mem "ocr" Jsont.string ~enc:(fun r -> r.ocr)
13572 |> Jsont.Object.opt_mem "personIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.person_ids)
13573 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
13574 |> Jsont.Object.opt_mem "size" (Openapi.Runtime.validated_float ~minimum:1. ~maximum:1000. Jsont.number) ~enc:(fun r -> r.size)
13575 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
13576 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
13577 |> Jsont.Object.mem "tagIds" (Openapi.Runtime.nullable_any (Jsont.list Jsont.string))
13578 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.tag_ids)
13579 |> Jsont.Object.opt_mem "takenAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_after)
13580 |> Jsont.Object.opt_mem "takenBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_before)
13581 |> Jsont.Object.opt_mem "trashedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_after)
13582 |> Jsont.Object.opt_mem "trashedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_before)
13583 |> Jsont.Object.opt_mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
13584 |> Jsont.Object.opt_mem "updatedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_after)
13585 |> Jsont.Object.opt_mem "updatedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_before)
13586 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13587 |> Jsont.Object.opt_mem "withDeleted" Jsont.bool ~enc:(fun r -> r.with_deleted)
13588 |> Jsont.Object.opt_mem "withExif" Jsont.bool ~enc:(fun r -> r.with_exif)
13589 |> Jsont.Object.opt_mem "withPeople" Jsont.bool ~enc:(fun r -> r.with_people)
13590 |> Jsont.Object.opt_mem "withStacked" Jsont.bool ~enc:(fun r -> r.with_stacked)
13591 |> Jsont.Object.skip_unknown
13592 |> Jsont.Object.finish
13593 end
13594end
13595
13596module AssetStats = struct
13597 module Types = struct
13598 module ResponseDto = struct
13599 type t = {
13600 images : int;
13601 total : int;
13602 videos : int;
13603 }
13604 end
13605 end
13606
13607 module ResponseDto = struct
13608 include Types.ResponseDto
13609
13610 let v ~images ~total ~videos () = { images; total; videos }
13611
13612 let images t = t.images
13613 let total t = t.total
13614 let videos t = t.videos
13615
13616 let jsont : t Jsont.t =
13617 Jsont.Object.map ~kind:"AssetStatsResponseDto"
13618 (fun images total videos -> { images; total; videos })
13619 |> Jsont.Object.mem "images" Jsont.int ~enc:(fun r -> r.images)
13620 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
13621 |> Jsont.Object.mem "videos" Jsont.int ~enc:(fun r -> r.videos)
13622 |> Jsont.Object.skip_unknown
13623 |> Jsont.Object.finish
13624 end
13625
13626 (** Retrieve user statistics
13627
13628 Retrieve asset statistics for a specific user. *)
13629 let get_user_statistics_admin ~id ?is_favorite ?is_trashed ?visibility client () =
13630 let op_name = "get_user_statistics_admin" in
13631 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}/statistics" in
13632 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"visibility" ~value:visibility]) in
13633 let url = client.base_url ^ url_path ^ query in
13634 let response =
13635 try Requests.get client.session url
13636 with Eio.Io _ as ex ->
13637 let bt = Printexc.get_raw_backtrace () in
13638 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
13639 in
13640 if Requests.Response.ok response then
13641 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
13642 else
13643 let body = Requests.Response.text response in
13644 let parsed_body =
13645 match Jsont_bytesrw.decode_string Jsont.json body with
13646 | Ok json -> Some (Openapi.Runtime.Json json)
13647 | Error _ -> Some (Openapi.Runtime.Raw body)
13648 in
13649 raise (Openapi.Runtime.Api_error {
13650 operation = op_name;
13651 method_ = "GET";
13652 url;
13653 status = Requests.Response.status_code response;
13654 body;
13655 parsed_body;
13656 })
13657
13658 (** Get asset statistics
13659
13660 Retrieve various statistics about the assets owned by the authenticated user. *)
13661 let get_asset_statistics ?is_favorite ?is_trashed ?visibility client () =
13662 let op_name = "get_asset_statistics" in
13663 let url_path = "/assets/statistics" in
13664 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"visibility" ~value:visibility]) in
13665 let url = client.base_url ^ url_path ^ query in
13666 let response =
13667 try Requests.get client.session url
13668 with Eio.Io _ as ex ->
13669 let bt = Printexc.get_raw_backtrace () in
13670 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
13671 in
13672 if Requests.Response.ok response then
13673 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
13674 else
13675 let body = Requests.Response.text response in
13676 let parsed_body =
13677 match Jsont_bytesrw.decode_string Jsont.json body with
13678 | Ok json -> Some (Openapi.Runtime.Json json)
13679 | Error _ -> Some (Openapi.Runtime.Raw body)
13680 in
13681 raise (Openapi.Runtime.Api_error {
13682 operation = op_name;
13683 method_ = "GET";
13684 url;
13685 status = Requests.Response.status_code response;
13686 body;
13687 parsed_body;
13688 })
13689end
13690
13691module AssetStack = struct
13692 module Types = struct
13693 module ResponseDto = struct
13694 type t = {
13695 asset_count : int;
13696 id : string;
13697 primary_asset_id : string;
13698 }
13699 end
13700 end
13701
13702 module ResponseDto = struct
13703 include Types.ResponseDto
13704
13705 let v ~asset_count ~id ~primary_asset_id () = { asset_count; id; primary_asset_id }
13706
13707 let asset_count t = t.asset_count
13708 let id t = t.id
13709 let primary_asset_id t = t.primary_asset_id
13710
13711 let jsont : t Jsont.t =
13712 Jsont.Object.map ~kind:"AssetStackResponseDto"
13713 (fun asset_count id primary_asset_id -> { asset_count; id; primary_asset_id })
13714 |> Jsont.Object.mem "assetCount" Jsont.int ~enc:(fun r -> r.asset_count)
13715 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
13716 |> Jsont.Object.mem "primaryAssetId" Jsont.string ~enc:(fun r -> r.primary_asset_id)
13717 |> Jsont.Object.skip_unknown
13718 |> Jsont.Object.finish
13719 end
13720end
13721
13722module AssetOrder = struct
13723 module Types = struct
13724 module T = struct
13725 type t = [
13726 | `Asc
13727 | `Desc
13728 ]
13729 end
13730 end
13731
13732 module T = struct
13733 include Types.T
13734
13735 let jsont : t Jsont.t =
13736 Jsont.map Jsont.string ~kind:"AssetOrder"
13737 ~dec:(function
13738 | "asc" -> `Asc
13739 | "desc" -> `Desc
13740 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
13741 ~enc:(function
13742 | `Asc -> "asc"
13743 | `Desc -> "desc")
13744 end
13745end
13746
13747module UpdateAlbum = struct
13748 module Types = struct
13749 module Dto = struct
13750 type t = {
13751 album_name : string option;
13752 album_thumbnail_asset_id : string option;
13753 description : string option;
13754 is_activity_enabled : bool option;
13755 order : AssetOrder.T.t option;
13756 }
13757 end
13758 end
13759
13760 module Dto = struct
13761 include Types.Dto
13762
13763 let v ?album_name ?album_thumbnail_asset_id ?description ?is_activity_enabled ?order () = { album_name; album_thumbnail_asset_id; description; is_activity_enabled; order }
13764
13765 let album_name t = t.album_name
13766 let album_thumbnail_asset_id t = t.album_thumbnail_asset_id
13767 let description t = t.description
13768 let is_activity_enabled t = t.is_activity_enabled
13769 let order t = t.order
13770
13771 let jsont : t Jsont.t =
13772 Jsont.Object.map ~kind:"UpdateAlbumDto"
13773 (fun album_name album_thumbnail_asset_id description is_activity_enabled order -> { album_name; album_thumbnail_asset_id; description; is_activity_enabled; order })
13774 |> Jsont.Object.opt_mem "albumName" Jsont.string ~enc:(fun r -> r.album_name)
13775 |> Jsont.Object.opt_mem "albumThumbnailAssetId" Jsont.string ~enc:(fun r -> r.album_thumbnail_asset_id)
13776 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
13777 |> Jsont.Object.opt_mem "isActivityEnabled" Jsont.bool ~enc:(fun r -> r.is_activity_enabled)
13778 |> Jsont.Object.opt_mem "order" AssetOrder.T.jsont ~enc:(fun r -> r.order)
13779 |> Jsont.Object.skip_unknown
13780 |> Jsont.Object.finish
13781 end
13782end
13783
13784module SyncAlbumV1 = struct
13785 module Types = struct
13786 module T = struct
13787 type t = {
13788 created_at : Ptime.t;
13789 description : string;
13790 id : string;
13791 is_activity_enabled : bool;
13792 name : string;
13793 order : AssetOrder.T.t;
13794 owner_id : string;
13795 thumbnail_asset_id : string option;
13796 updated_at : Ptime.t;
13797 }
13798 end
13799 end
13800
13801 module T = struct
13802 include Types.T
13803
13804 let v ~created_at ~description ~id ~is_activity_enabled ~name ~order ~owner_id ~updated_at ?thumbnail_asset_id () = { created_at; description; id; is_activity_enabled; name; order; owner_id; thumbnail_asset_id; updated_at }
13805
13806 let created_at t = t.created_at
13807 let description t = t.description
13808 let id t = t.id
13809 let is_activity_enabled t = t.is_activity_enabled
13810 let name t = t.name
13811 let order t = t.order
13812 let owner_id t = t.owner_id
13813 let thumbnail_asset_id t = t.thumbnail_asset_id
13814 let updated_at t = t.updated_at
13815
13816 let jsont : t Jsont.t =
13817 Jsont.Object.map ~kind:"SyncAlbumV1"
13818 (fun created_at description id is_activity_enabled name order owner_id thumbnail_asset_id updated_at -> { created_at; description; id; is_activity_enabled; name; order; owner_id; thumbnail_asset_id; updated_at })
13819 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
13820 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
13821 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
13822 |> Jsont.Object.mem "isActivityEnabled" Jsont.bool ~enc:(fun r -> r.is_activity_enabled)
13823 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
13824 |> Jsont.Object.mem "order" AssetOrder.T.jsont ~enc:(fun r -> r.order)
13825 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
13826 |> Jsont.Object.mem "thumbnailAssetId" Openapi.Runtime.nullable_string
13827 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.thumbnail_asset_id)
13828 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
13829 |> Jsont.Object.skip_unknown
13830 |> Jsont.Object.finish
13831 end
13832end
13833
13834module MetadataSearch = struct
13835 module Types = struct
13836 module Dto = struct
13837 type t = {
13838 album_ids : string list option;
13839 checksum : string option;
13840 city : string option;
13841 country : string option;
13842 created_after : Ptime.t option;
13843 created_before : Ptime.t option;
13844 description : string option;
13845 device_asset_id : string option;
13846 device_id : string option;
13847 encoded_video_path : string option;
13848 id : string option;
13849 is_encoded : bool option;
13850 is_favorite : bool option;
13851 is_motion : bool option;
13852 is_not_in_album : bool option;
13853 is_offline : bool option;
13854 lens_model : string option;
13855 library_id : string option;
13856 make : string option;
13857 model : string option;
13858 ocr : string option;
13859 order : AssetOrder.T.t;
13860 original_file_name : string option;
13861 original_path : string option;
13862 page : float option;
13863 person_ids : string list option;
13864 preview_path : string option;
13865 rating : float option;
13866 size : float option;
13867 state : string option;
13868 tag_ids : string list option;
13869 taken_after : Ptime.t option;
13870 taken_before : Ptime.t option;
13871 thumbnail_path : string option;
13872 trashed_after : Ptime.t option;
13873 trashed_before : Ptime.t option;
13874 type_ : AssetTypeEnum.T.t option;
13875 updated_after : Ptime.t option;
13876 updated_before : Ptime.t option;
13877 visibility : AssetVisibility.T.t option;
13878 with_deleted : bool option;
13879 with_exif : bool option;
13880 with_people : bool option;
13881 with_stacked : bool option;
13882 }
13883 end
13884 end
13885
13886 module Dto = struct
13887 include Types.Dto
13888
13889 let v ?(order=`Desc) ?album_ids ?checksum ?city ?country ?created_after ?created_before ?description ?device_asset_id ?device_id ?encoded_video_path ?id ?is_encoded ?is_favorite ?is_motion ?is_not_in_album ?is_offline ?lens_model ?library_id ?make ?model ?ocr ?original_file_name ?original_path ?page ?person_ids ?preview_path ?rating ?size ?state ?tag_ids ?taken_after ?taken_before ?thumbnail_path ?trashed_after ?trashed_before ?type_ ?updated_after ?updated_before ?visibility ?with_deleted ?with_exif ?with_people ?with_stacked () = { album_ids; checksum; city; country; created_after; created_before; description; device_asset_id; device_id; encoded_video_path; id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; order; original_file_name; original_path; page; person_ids; preview_path; rating; size; state; tag_ids; taken_after; taken_before; thumbnail_path; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif; with_people; with_stacked }
13890
13891 let album_ids t = t.album_ids
13892 let checksum t = t.checksum
13893 let city t = t.city
13894 let country t = t.country
13895 let created_after t = t.created_after
13896 let created_before t = t.created_before
13897 let description t = t.description
13898 let device_asset_id t = t.device_asset_id
13899 let device_id t = t.device_id
13900 let encoded_video_path t = t.encoded_video_path
13901 let id t = t.id
13902 let is_encoded t = t.is_encoded
13903 let is_favorite t = t.is_favorite
13904 let is_motion t = t.is_motion
13905 let is_not_in_album t = t.is_not_in_album
13906 let is_offline t = t.is_offline
13907 let lens_model t = t.lens_model
13908 let library_id t = t.library_id
13909 let make t = t.make
13910 let model t = t.model
13911 let ocr t = t.ocr
13912 let order t = t.order
13913 let original_file_name t = t.original_file_name
13914 let original_path t = t.original_path
13915 let page t = t.page
13916 let person_ids t = t.person_ids
13917 let preview_path t = t.preview_path
13918 let rating t = t.rating
13919 let size t = t.size
13920 let state t = t.state
13921 let tag_ids t = t.tag_ids
13922 let taken_after t = t.taken_after
13923 let taken_before t = t.taken_before
13924 let thumbnail_path t = t.thumbnail_path
13925 let trashed_after t = t.trashed_after
13926 let trashed_before t = t.trashed_before
13927 let type_ t = t.type_
13928 let updated_after t = t.updated_after
13929 let updated_before t = t.updated_before
13930 let visibility t = t.visibility
13931 let with_deleted t = t.with_deleted
13932 let with_exif t = t.with_exif
13933 let with_people t = t.with_people
13934 let with_stacked t = t.with_stacked
13935
13936 let jsont : t Jsont.t =
13937 Jsont.Object.map ~kind:"MetadataSearchDto"
13938 (fun album_ids checksum city country created_after created_before description device_asset_id device_id encoded_video_path id is_encoded is_favorite is_motion is_not_in_album is_offline lens_model library_id make model ocr order original_file_name original_path page person_ids preview_path rating size state tag_ids taken_after taken_before thumbnail_path trashed_after trashed_before type_ updated_after updated_before visibility with_deleted with_exif with_people with_stacked -> { album_ids; checksum; city; country; created_after; created_before; description; device_asset_id; device_id; encoded_video_path; id; is_encoded; is_favorite; is_motion; is_not_in_album; is_offline; lens_model; library_id; make; model; ocr; order; original_file_name; original_path; page; person_ids; preview_path; rating; size; state; tag_ids; taken_after; taken_before; thumbnail_path; trashed_after; trashed_before; type_; updated_after; updated_before; visibility; with_deleted; with_exif; with_people; with_stacked })
13939 |> Jsont.Object.opt_mem "albumIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.album_ids)
13940 |> Jsont.Object.opt_mem "checksum" Jsont.string ~enc:(fun r -> r.checksum)
13941 |> Jsont.Object.mem "city" Openapi.Runtime.nullable_string
13942 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.city)
13943 |> Jsont.Object.mem "country" Openapi.Runtime.nullable_string
13944 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.country)
13945 |> Jsont.Object.opt_mem "createdAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_after)
13946 |> Jsont.Object.opt_mem "createdBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_before)
13947 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
13948 |> Jsont.Object.opt_mem "deviceAssetId" Jsont.string ~enc:(fun r -> r.device_asset_id)
13949 |> Jsont.Object.opt_mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
13950 |> Jsont.Object.opt_mem "encodedVideoPath" Jsont.string ~enc:(fun r -> r.encoded_video_path)
13951 |> Jsont.Object.opt_mem "id" Jsont.string ~enc:(fun r -> r.id)
13952 |> Jsont.Object.opt_mem "isEncoded" Jsont.bool ~enc:(fun r -> r.is_encoded)
13953 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
13954 |> Jsont.Object.opt_mem "isMotion" Jsont.bool ~enc:(fun r -> r.is_motion)
13955 |> Jsont.Object.opt_mem "isNotInAlbum" Jsont.bool ~enc:(fun r -> r.is_not_in_album)
13956 |> Jsont.Object.opt_mem "isOffline" Jsont.bool ~enc:(fun r -> r.is_offline)
13957 |> Jsont.Object.mem "lensModel" Openapi.Runtime.nullable_string
13958 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.lens_model)
13959 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
13960 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
13961 |> Jsont.Object.opt_mem "make" Jsont.string ~enc:(fun r -> r.make)
13962 |> Jsont.Object.mem "model" Openapi.Runtime.nullable_string
13963 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.model)
13964 |> Jsont.Object.opt_mem "ocr" Jsont.string ~enc:(fun r -> r.ocr)
13965 |> Jsont.Object.mem "order" AssetOrder.T.jsont ~dec_absent:`Desc ~enc:(fun r -> r.order)
13966 |> Jsont.Object.opt_mem "originalFileName" Jsont.string ~enc:(fun r -> r.original_file_name)
13967 |> Jsont.Object.opt_mem "originalPath" Jsont.string ~enc:(fun r -> r.original_path)
13968 |> Jsont.Object.opt_mem "page" (Openapi.Runtime.validated_float ~minimum:1. Jsont.number) ~enc:(fun r -> r.page)
13969 |> Jsont.Object.opt_mem "personIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.person_ids)
13970 |> Jsont.Object.opt_mem "previewPath" Jsont.string ~enc:(fun r -> r.preview_path)
13971 |> Jsont.Object.opt_mem "rating" (Openapi.Runtime.validated_float ~minimum:(-1.) ~maximum:5. Jsont.number) ~enc:(fun r -> r.rating)
13972 |> Jsont.Object.opt_mem "size" (Openapi.Runtime.validated_float ~minimum:1. ~maximum:1000. Jsont.number) ~enc:(fun r -> r.size)
13973 |> Jsont.Object.mem "state" Openapi.Runtime.nullable_string
13974 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.state)
13975 |> Jsont.Object.mem "tagIds" (Openapi.Runtime.nullable_any (Jsont.list Jsont.string))
13976 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.tag_ids)
13977 |> Jsont.Object.opt_mem "takenAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_after)
13978 |> Jsont.Object.opt_mem "takenBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.taken_before)
13979 |> Jsont.Object.opt_mem "thumbnailPath" Jsont.string ~enc:(fun r -> r.thumbnail_path)
13980 |> Jsont.Object.opt_mem "trashedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_after)
13981 |> Jsont.Object.opt_mem "trashedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.trashed_before)
13982 |> Jsont.Object.opt_mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
13983 |> Jsont.Object.opt_mem "updatedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_after)
13984 |> Jsont.Object.opt_mem "updatedBefore" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_before)
13985 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
13986 |> Jsont.Object.opt_mem "withDeleted" Jsont.bool ~enc:(fun r -> r.with_deleted)
13987 |> Jsont.Object.opt_mem "withExif" Jsont.bool ~enc:(fun r -> r.with_exif)
13988 |> Jsont.Object.opt_mem "withPeople" Jsont.bool ~enc:(fun r -> r.with_people)
13989 |> Jsont.Object.opt_mem "withStacked" Jsont.bool ~enc:(fun r -> r.with_stacked)
13990 |> Jsont.Object.skip_unknown
13991 |> Jsont.Object.finish
13992 end
13993end
13994
13995module Albums = struct
13996 module Types = struct
13997 module Update = struct
13998 type t = {
13999 default_asset_order : AssetOrder.T.t option;
14000 }
14001 end
14002
14003 module Response = struct
14004 type t = {
14005 default_asset_order : AssetOrder.T.t;
14006 }
14007 end
14008 end
14009
14010 module Update = struct
14011 include Types.Update
14012
14013 let v ?default_asset_order () = { default_asset_order }
14014
14015 let default_asset_order t = t.default_asset_order
14016
14017 let jsont : t Jsont.t =
14018 Jsont.Object.map ~kind:"AlbumsUpdate"
14019 (fun default_asset_order -> { default_asset_order })
14020 |> Jsont.Object.opt_mem "defaultAssetOrder" AssetOrder.T.jsont ~enc:(fun r -> r.default_asset_order)
14021 |> Jsont.Object.skip_unknown
14022 |> Jsont.Object.finish
14023 end
14024
14025 module Response = struct
14026 include Types.Response
14027
14028 let v ?(default_asset_order=`Desc) () = { default_asset_order }
14029
14030 let default_asset_order t = t.default_asset_order
14031
14032 let jsont : t Jsont.t =
14033 Jsont.Object.map ~kind:"AlbumsResponse"
14034 (fun default_asset_order -> { default_asset_order })
14035 |> Jsont.Object.mem "defaultAssetOrder" AssetOrder.T.jsont ~dec_absent:`Desc ~enc:(fun r -> r.default_asset_order)
14036 |> Jsont.Object.skip_unknown
14037 |> Jsont.Object.finish
14038 end
14039end
14040
14041module AssetOcr = struct
14042 module Types = struct
14043 module ResponseDto = struct
14044 type t = {
14045 asset_id : string;
14046 box_score : float; (** Confidence score for text detection box *)
14047 id : string;
14048 text : string; (** Recognized text *)
14049 text_score : float; (** Confidence score for text recognition *)
14050 x1 : float; (** Normalized x coordinate of box corner 1 (0-1) *)
14051 x2 : float; (** Normalized x coordinate of box corner 2 (0-1) *)
14052 x3 : float; (** Normalized x coordinate of box corner 3 (0-1) *)
14053 x4 : float; (** Normalized x coordinate of box corner 4 (0-1) *)
14054 y1 : float; (** Normalized y coordinate of box corner 1 (0-1) *)
14055 y2 : float; (** Normalized y coordinate of box corner 2 (0-1) *)
14056 y3 : float; (** Normalized y coordinate of box corner 3 (0-1) *)
14057 y4 : float; (** Normalized y coordinate of box corner 4 (0-1) *)
14058 }
14059 end
14060 end
14061
14062 module ResponseDto = struct
14063 include Types.ResponseDto
14064
14065 let v ~asset_id ~box_score ~id ~text ~text_score ~x1 ~x2 ~x3 ~x4 ~y1 ~y2 ~y3 ~y4 () = { asset_id; box_score; id; text; text_score; x1; x2; x3; x4; y1; y2; y3; y4 }
14066
14067 let asset_id t = t.asset_id
14068 let box_score t = t.box_score
14069 let id t = t.id
14070 let text t = t.text
14071 let text_score t = t.text_score
14072 let x1 t = t.x1
14073 let x2 t = t.x2
14074 let x3 t = t.x3
14075 let x4 t = t.x4
14076 let y1 t = t.y1
14077 let y2 t = t.y2
14078 let y3 t = t.y3
14079 let y4 t = t.y4
14080
14081 let jsont : t Jsont.t =
14082 Jsont.Object.map ~kind:"AssetOcrResponseDto"
14083 (fun asset_id box_score id text text_score x1 x2 x3 x4 y1 y2 y3 y4 -> { asset_id; box_score; id; text; text_score; x1; x2; x3; x4; y1; y2; y3; y4 })
14084 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
14085 |> Jsont.Object.mem "boxScore" Jsont.number ~enc:(fun r -> r.box_score)
14086 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
14087 |> Jsont.Object.mem "text" Jsont.string ~enc:(fun r -> r.text)
14088 |> Jsont.Object.mem "textScore" Jsont.number ~enc:(fun r -> r.text_score)
14089 |> Jsont.Object.mem "x1" Jsont.number ~enc:(fun r -> r.x1)
14090 |> Jsont.Object.mem "x2" Jsont.number ~enc:(fun r -> r.x2)
14091 |> Jsont.Object.mem "x3" Jsont.number ~enc:(fun r -> r.x3)
14092 |> Jsont.Object.mem "x4" Jsont.number ~enc:(fun r -> r.x4)
14093 |> Jsont.Object.mem "y1" Jsont.number ~enc:(fun r -> r.y1)
14094 |> Jsont.Object.mem "y2" Jsont.number ~enc:(fun r -> r.y2)
14095 |> Jsont.Object.mem "y3" Jsont.number ~enc:(fun r -> r.y3)
14096 |> Jsont.Object.mem "y4" Jsont.number ~enc:(fun r -> r.y4)
14097 |> Jsont.Object.skip_unknown
14098 |> Jsont.Object.finish
14099 end
14100
14101 (** Retrieve asset OCR data
14102
14103 Retrieve all OCR (Optical Character Recognition) data associated with the specified asset. *)
14104 let get_asset_ocr ~id client () =
14105 let op_name = "get_asset_ocr" in
14106 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/ocr" in
14107 let query = "" in
14108 let url = client.base_url ^ url_path ^ query in
14109 let response =
14110 try Requests.get client.session url
14111 with Eio.Io _ as ex ->
14112 let bt = Printexc.get_raw_backtrace () in
14113 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
14114 in
14115 if Requests.Response.ok response then
14116 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14117 else
14118 let body = Requests.Response.text response in
14119 let parsed_body =
14120 match Jsont_bytesrw.decode_string Jsont.json body with
14121 | Ok json -> Some (Openapi.Runtime.Json json)
14122 | Error _ -> Some (Openapi.Runtime.Raw body)
14123 in
14124 raise (Openapi.Runtime.Api_error {
14125 operation = op_name;
14126 method_ = "GET";
14127 url;
14128 status = Requests.Response.status_code response;
14129 body;
14130 parsed_body;
14131 })
14132end
14133
14134module AssetMetadataUpsertItem = struct
14135 module Types = struct
14136 module Dto = struct
14137 type t = {
14138 key : string;
14139 value : Jsont.json;
14140 }
14141 end
14142 end
14143
14144 module Dto = struct
14145 include Types.Dto
14146
14147 let v ~key ~value () = { key; value }
14148
14149 let key t = t.key
14150 let value t = t.value
14151
14152 let jsont : t Jsont.t =
14153 Jsont.Object.map ~kind:"AssetMetadataUpsertItemDto"
14154 (fun key value -> { key; value })
14155 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
14156 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
14157 |> Jsont.Object.skip_unknown
14158 |> Jsont.Object.finish
14159 end
14160end
14161
14162module AssetMetadataUpsert = struct
14163 module Types = struct
14164 module Dto = struct
14165 type t = {
14166 items : AssetMetadataUpsertItem.Dto.t list;
14167 }
14168 end
14169 end
14170
14171 module Dto = struct
14172 include Types.Dto
14173
14174 let v ~items () = { items }
14175
14176 let items t = t.items
14177
14178 let jsont : t Jsont.t =
14179 Jsont.Object.map ~kind:"AssetMetadataUpsertDto"
14180 (fun items -> { items })
14181 |> Jsont.Object.mem "items" (Jsont.list AssetMetadataUpsertItem.Dto.jsont) ~enc:(fun r -> r.items)
14182 |> Jsont.Object.skip_unknown
14183 |> Jsont.Object.finish
14184 end
14185end
14186
14187module AssetMetadata = struct
14188 module Types = struct
14189 module ResponseDto = struct
14190 type t = {
14191 key : string;
14192 updated_at : Ptime.t;
14193 value : Jsont.json;
14194 }
14195 end
14196 end
14197
14198 module ResponseDto = struct
14199 include Types.ResponseDto
14200
14201 let v ~key ~updated_at ~value () = { key; updated_at; value }
14202
14203 let key t = t.key
14204 let updated_at t = t.updated_at
14205 let value t = t.value
14206
14207 let jsont : t Jsont.t =
14208 Jsont.Object.map ~kind:"AssetMetadataResponseDto"
14209 (fun key updated_at value -> { key; updated_at; value })
14210 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
14211 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
14212 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
14213 |> Jsont.Object.skip_unknown
14214 |> Jsont.Object.finish
14215 end
14216
14217 (** Get asset metadata
14218
14219 Retrieve all metadata key-value pairs associated with the specified asset. *)
14220 let get_asset_metadata ~id client () =
14221 let op_name = "get_asset_metadata" in
14222 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/metadata" in
14223 let query = "" in
14224 let url = client.base_url ^ url_path ^ query in
14225 let response =
14226 try Requests.get client.session url
14227 with Eio.Io _ as ex ->
14228 let bt = Printexc.get_raw_backtrace () in
14229 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
14230 in
14231 if Requests.Response.ok response then
14232 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14233 else
14234 let body = Requests.Response.text response in
14235 let parsed_body =
14236 match Jsont_bytesrw.decode_string Jsont.json body with
14237 | Ok json -> Some (Openapi.Runtime.Json json)
14238 | Error _ -> Some (Openapi.Runtime.Raw body)
14239 in
14240 raise (Openapi.Runtime.Api_error {
14241 operation = op_name;
14242 method_ = "GET";
14243 url;
14244 status = Requests.Response.status_code response;
14245 body;
14246 parsed_body;
14247 })
14248
14249 (** Update asset metadata
14250
14251 Update or add metadata key-value pairs for the specified asset. *)
14252 let update_asset_metadata ~id ~body client () =
14253 let op_name = "update_asset_metadata" in
14254 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/metadata" in
14255 let query = "" in
14256 let url = client.base_url ^ url_path ^ query in
14257 let response =
14258 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetMetadataUpsert.Dto.jsont body)) url
14259 with Eio.Io _ as ex ->
14260 let bt = Printexc.get_raw_backtrace () in
14261 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
14262 in
14263 if Requests.Response.ok response then
14264 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14265 else
14266 let body = Requests.Response.text response in
14267 let parsed_body =
14268 match Jsont_bytesrw.decode_string Jsont.json body with
14269 | Ok json -> Some (Openapi.Runtime.Json json)
14270 | Error _ -> Some (Openapi.Runtime.Raw body)
14271 in
14272 raise (Openapi.Runtime.Api_error {
14273 operation = op_name;
14274 method_ = "PUT";
14275 url;
14276 status = Requests.Response.status_code response;
14277 body;
14278 parsed_body;
14279 })
14280
14281 (** Retrieve asset metadata by key
14282
14283 Retrieve the value of a specific metadata key associated with the specified asset. *)
14284 let get_asset_metadata_by_key ~id ~key client () =
14285 let op_name = "get_asset_metadata_by_key" in
14286 let url_path = Openapi.Runtime.Path.render ~params:[("id", id); ("key", key)] "/assets/{id}/metadata/{key}" in
14287 let query = "" in
14288 let url = client.base_url ^ url_path ^ query in
14289 let response =
14290 try Requests.get client.session url
14291 with Eio.Io _ as ex ->
14292 let bt = Printexc.get_raw_backtrace () in
14293 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
14294 in
14295 if Requests.Response.ok response then
14296 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14297 else
14298 let body = Requests.Response.text response in
14299 let parsed_body =
14300 match Jsont_bytesrw.decode_string Jsont.json body with
14301 | Ok json -> Some (Openapi.Runtime.Json json)
14302 | Error _ -> Some (Openapi.Runtime.Raw body)
14303 in
14304 raise (Openapi.Runtime.Api_error {
14305 operation = op_name;
14306 method_ = "GET";
14307 url;
14308 status = Requests.Response.status_code response;
14309 body;
14310 parsed_body;
14311 })
14312end
14313
14314module AssetMedia = struct
14315 module Types = struct
14316 module Status = struct
14317 type t = [
14318 | `Created
14319 | `Replaced
14320 | `Duplicate
14321 ]
14322 end
14323
14324 module ResponseDto = struct
14325 type t = {
14326 id : string;
14327 status : Status.t;
14328 }
14329 end
14330
14331 module CreateDto = struct
14332 type t = {
14333 asset_data : string;
14334 device_asset_id : string;
14335 device_id : string;
14336 duration : string option;
14337 file_created_at : Ptime.t;
14338 file_modified_at : Ptime.t;
14339 filename : string option;
14340 is_favorite : bool option;
14341 live_photo_video_id : string option;
14342 metadata : AssetMetadataUpsertItem.Dto.t list option;
14343 sidecar_data : string option;
14344 visibility : AssetVisibility.T.t option;
14345 }
14346 end
14347 end
14348
14349 module Status = struct
14350 include Types.Status
14351
14352 let jsont : t Jsont.t =
14353 Jsont.map Jsont.string ~kind:"AssetMediaStatus"
14354 ~dec:(function
14355 | "created" -> `Created
14356 | "replaced" -> `Replaced
14357 | "duplicate" -> `Duplicate
14358 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
14359 ~enc:(function
14360 | `Created -> "created"
14361 | `Replaced -> "replaced"
14362 | `Duplicate -> "duplicate")
14363 end
14364
14365 module ResponseDto = struct
14366 include Types.ResponseDto
14367
14368 let v ~id ~status () = { id; status }
14369
14370 let id t = t.id
14371 let status t = t.status
14372
14373 let jsont : t Jsont.t =
14374 Jsont.Object.map ~kind:"AssetMediaResponseDto"
14375 (fun id status -> { id; status })
14376 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
14377 |> Jsont.Object.mem "status" Status.jsont ~enc:(fun r -> r.status)
14378 |> Jsont.Object.skip_unknown
14379 |> Jsont.Object.finish
14380 end
14381
14382 module CreateDto = struct
14383 include Types.CreateDto
14384
14385 let v ~asset_data ~device_asset_id ~device_id ~file_created_at ~file_modified_at ?duration ?filename ?is_favorite ?live_photo_video_id ?metadata ?sidecar_data ?visibility () = { asset_data; device_asset_id; device_id; duration; file_created_at; file_modified_at; filename; is_favorite; live_photo_video_id; metadata; sidecar_data; visibility }
14386
14387 let asset_data t = t.asset_data
14388 let device_asset_id t = t.device_asset_id
14389 let device_id t = t.device_id
14390 let duration t = t.duration
14391 let file_created_at t = t.file_created_at
14392 let file_modified_at t = t.file_modified_at
14393 let filename t = t.filename
14394 let is_favorite t = t.is_favorite
14395 let live_photo_video_id t = t.live_photo_video_id
14396 let metadata t = t.metadata
14397 let sidecar_data t = t.sidecar_data
14398 let visibility t = t.visibility
14399
14400 let jsont : t Jsont.t =
14401 Jsont.Object.map ~kind:"AssetMediaCreateDto"
14402 (fun asset_data device_asset_id device_id duration file_created_at file_modified_at filename is_favorite live_photo_video_id metadata sidecar_data visibility -> { asset_data; device_asset_id; device_id; duration; file_created_at; file_modified_at; filename; is_favorite; live_photo_video_id; metadata; sidecar_data; visibility })
14403 |> Jsont.Object.mem "assetData" Jsont.string ~enc:(fun r -> r.asset_data)
14404 |> Jsont.Object.mem "deviceAssetId" Jsont.string ~enc:(fun r -> r.device_asset_id)
14405 |> Jsont.Object.mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
14406 |> Jsont.Object.opt_mem "duration" Jsont.string ~enc:(fun r -> r.duration)
14407 |> Jsont.Object.mem "fileCreatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_created_at)
14408 |> Jsont.Object.mem "fileModifiedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_modified_at)
14409 |> Jsont.Object.opt_mem "filename" Jsont.string ~enc:(fun r -> r.filename)
14410 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
14411 |> Jsont.Object.opt_mem "livePhotoVideoId" Jsont.string ~enc:(fun r -> r.live_photo_video_id)
14412 |> Jsont.Object.opt_mem "metadata" (Jsont.list AssetMetadataUpsertItem.Dto.jsont) ~enc:(fun r -> r.metadata)
14413 |> Jsont.Object.opt_mem "sidecarData" Jsont.string ~enc:(fun r -> r.sidecar_data)
14414 |> Jsont.Object.opt_mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
14415 |> Jsont.Object.skip_unknown
14416 |> Jsont.Object.finish
14417 end
14418
14419 (** Upload asset
14420
14421 Uploads a new asset to the server. *)
14422 let upload_asset ?key ?slug client () =
14423 let op_name = "upload_asset" in
14424 let url_path = "/assets" in
14425 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
14426 let url = client.base_url ^ url_path ^ query in
14427 let response =
14428 try Requests.post client.session url
14429 with Eio.Io _ as ex ->
14430 let bt = Printexc.get_raw_backtrace () in
14431 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
14432 in
14433 if Requests.Response.ok response then
14434 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14435 else
14436 let body = Requests.Response.text response in
14437 let parsed_body =
14438 match Jsont_bytesrw.decode_string Jsont.json body with
14439 | Ok json -> Some (Openapi.Runtime.Json json)
14440 | Error _ -> Some (Openapi.Runtime.Raw body)
14441 in
14442 raise (Openapi.Runtime.Api_error {
14443 operation = op_name;
14444 method_ = "POST";
14445 url;
14446 status = Requests.Response.status_code response;
14447 body;
14448 parsed_body;
14449 })
14450
14451 (** Replace asset
14452
14453 Replace the asset with new file, without changing its id. *)
14454 let replace_asset ~id ?key ?slug client () =
14455 let op_name = "replace_asset" in
14456 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/original" in
14457 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
14458 let url = client.base_url ^ url_path ^ query in
14459 let response =
14460 try Requests.put client.session url
14461 with Eio.Io _ as ex ->
14462 let bt = Printexc.get_raw_backtrace () in
14463 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
14464 in
14465 if Requests.Response.ok response then
14466 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14467 else
14468 let body = Requests.Response.text response in
14469 let parsed_body =
14470 match Jsont_bytesrw.decode_string Jsont.json body with
14471 | Ok json -> Some (Openapi.Runtime.Json json)
14472 | Error _ -> Some (Openapi.Runtime.Raw body)
14473 in
14474 raise (Openapi.Runtime.Api_error {
14475 operation = op_name;
14476 method_ = "PUT";
14477 url;
14478 status = Requests.Response.status_code response;
14479 body;
14480 parsed_body;
14481 })
14482end
14483
14484module AssetMetadataBulkUpsertItem = struct
14485 module Types = struct
14486 module Dto = struct
14487 type t = {
14488 asset_id : string;
14489 key : string;
14490 value : Jsont.json;
14491 }
14492 end
14493 end
14494
14495 module Dto = struct
14496 include Types.Dto
14497
14498 let v ~asset_id ~key ~value () = { asset_id; key; value }
14499
14500 let asset_id t = t.asset_id
14501 let key t = t.key
14502 let value t = t.value
14503
14504 let jsont : t Jsont.t =
14505 Jsont.Object.map ~kind:"AssetMetadataBulkUpsertItemDto"
14506 (fun asset_id key value -> { asset_id; key; value })
14507 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
14508 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
14509 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
14510 |> Jsont.Object.skip_unknown
14511 |> Jsont.Object.finish
14512 end
14513end
14514
14515module AssetMetadataBulkUpsert = struct
14516 module Types = struct
14517 module Dto = struct
14518 type t = {
14519 items : AssetMetadataBulkUpsertItem.Dto.t list;
14520 }
14521 end
14522 end
14523
14524 module Dto = struct
14525 include Types.Dto
14526
14527 let v ~items () = { items }
14528
14529 let items t = t.items
14530
14531 let jsont : t Jsont.t =
14532 Jsont.Object.map ~kind:"AssetMetadataBulkUpsertDto"
14533 (fun items -> { items })
14534 |> Jsont.Object.mem "items" (Jsont.list AssetMetadataBulkUpsertItem.Dto.jsont) ~enc:(fun r -> r.items)
14535 |> Jsont.Object.skip_unknown
14536 |> Jsont.Object.finish
14537 end
14538end
14539
14540module AssetMetadataBulk = struct
14541 module Types = struct
14542 module ResponseDto = struct
14543 type t = {
14544 asset_id : string;
14545 key : string;
14546 updated_at : Ptime.t;
14547 value : Jsont.json;
14548 }
14549 end
14550 end
14551
14552 module ResponseDto = struct
14553 include Types.ResponseDto
14554
14555 let v ~asset_id ~key ~updated_at ~value () = { asset_id; key; updated_at; value }
14556
14557 let asset_id t = t.asset_id
14558 let key t = t.key
14559 let updated_at t = t.updated_at
14560 let value t = t.value
14561
14562 let jsont : t Jsont.t =
14563 Jsont.Object.map ~kind:"AssetMetadataBulkResponseDto"
14564 (fun asset_id key updated_at value -> { asset_id; key; updated_at; value })
14565 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
14566 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
14567 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
14568 |> Jsont.Object.mem "value" Jsont.json ~enc:(fun r -> r.value)
14569 |> Jsont.Object.skip_unknown
14570 |> Jsont.Object.finish
14571 end
14572
14573 (** Upsert asset metadata
14574
14575 Upsert metadata key-value pairs for multiple assets. *)
14576 let update_bulk_asset_metadata ~body client () =
14577 let op_name = "update_bulk_asset_metadata" in
14578 let url_path = "/assets/metadata" in
14579 let query = "" in
14580 let url = client.base_url ^ url_path ^ query in
14581 let response =
14582 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetMetadataBulkUpsert.Dto.jsont body)) url
14583 with Eio.Io _ as ex ->
14584 let bt = Printexc.get_raw_backtrace () in
14585 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
14586 in
14587 if Requests.Response.ok response then
14588 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14589 else
14590 let body = Requests.Response.text response in
14591 let parsed_body =
14592 match Jsont_bytesrw.decode_string Jsont.json body with
14593 | Ok json -> Some (Openapi.Runtime.Json json)
14594 | Error _ -> Some (Openapi.Runtime.Raw body)
14595 in
14596 raise (Openapi.Runtime.Api_error {
14597 operation = op_name;
14598 method_ = "PUT";
14599 url;
14600 status = Requests.Response.status_code response;
14601 body;
14602 parsed_body;
14603 })
14604end
14605
14606module AssetMetadataBulkDeleteItem = struct
14607 module Types = struct
14608 module Dto = struct
14609 type t = {
14610 asset_id : string;
14611 key : string;
14612 }
14613 end
14614 end
14615
14616 module Dto = struct
14617 include Types.Dto
14618
14619 let v ~asset_id ~key () = { asset_id; key }
14620
14621 let asset_id t = t.asset_id
14622 let key t = t.key
14623
14624 let jsont : t Jsont.t =
14625 Jsont.Object.map ~kind:"AssetMetadataBulkDeleteItemDto"
14626 (fun asset_id key -> { asset_id; key })
14627 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
14628 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
14629 |> Jsont.Object.skip_unknown
14630 |> Jsont.Object.finish
14631 end
14632end
14633
14634module AssetMetadataBulkDelete = struct
14635 module Types = struct
14636 module Dto = struct
14637 type t = {
14638 items : AssetMetadataBulkDeleteItem.Dto.t list;
14639 }
14640 end
14641 end
14642
14643 module Dto = struct
14644 include Types.Dto
14645
14646 let v ~items () = { items }
14647
14648 let items t = t.items
14649
14650 let jsont : t Jsont.t =
14651 Jsont.Object.map ~kind:"AssetMetadataBulkDeleteDto"
14652 (fun items -> { items })
14653 |> Jsont.Object.mem "items" (Jsont.list AssetMetadataBulkDeleteItem.Dto.jsont) ~enc:(fun r -> r.items)
14654 |> Jsont.Object.skip_unknown
14655 |> Jsont.Object.finish
14656 end
14657end
14658
14659module AssetMediaSize = struct
14660 module Types = struct
14661 module T = struct
14662 type t = [
14663 | `Original
14664 | `Fullsize
14665 | `Preview
14666 | `Thumbnail
14667 ]
14668 end
14669 end
14670
14671 module T = struct
14672 include Types.T
14673
14674 let jsont : t Jsont.t =
14675 Jsont.map Jsont.string ~kind:"AssetMediaSize"
14676 ~dec:(function
14677 | "original" -> `Original
14678 | "fullsize" -> `Fullsize
14679 | "preview" -> `Preview
14680 | "thumbnail" -> `Thumbnail
14681 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
14682 ~enc:(function
14683 | `Original -> "original"
14684 | `Fullsize -> "fullsize"
14685 | `Preview -> "preview"
14686 | `Thumbnail -> "thumbnail")
14687 end
14688end
14689
14690module AssetMediaReplace = struct
14691 module Types = struct
14692 module Dto = struct
14693 type t = {
14694 asset_data : string;
14695 device_asset_id : string;
14696 device_id : string;
14697 duration : string option;
14698 file_created_at : Ptime.t;
14699 file_modified_at : Ptime.t;
14700 filename : string option;
14701 }
14702 end
14703 end
14704
14705 module Dto = struct
14706 include Types.Dto
14707
14708 let v ~asset_data ~device_asset_id ~device_id ~file_created_at ~file_modified_at ?duration ?filename () = { asset_data; device_asset_id; device_id; duration; file_created_at; file_modified_at; filename }
14709
14710 let asset_data t = t.asset_data
14711 let device_asset_id t = t.device_asset_id
14712 let device_id t = t.device_id
14713 let duration t = t.duration
14714 let file_created_at t = t.file_created_at
14715 let file_modified_at t = t.file_modified_at
14716 let filename t = t.filename
14717
14718 let jsont : t Jsont.t =
14719 Jsont.Object.map ~kind:"AssetMediaReplaceDto"
14720 (fun asset_data device_asset_id device_id duration file_created_at file_modified_at filename -> { asset_data; device_asset_id; device_id; duration; file_created_at; file_modified_at; filename })
14721 |> Jsont.Object.mem "assetData" Jsont.string ~enc:(fun r -> r.asset_data)
14722 |> Jsont.Object.mem "deviceAssetId" Jsont.string ~enc:(fun r -> r.device_asset_id)
14723 |> Jsont.Object.mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
14724 |> Jsont.Object.opt_mem "duration" Jsont.string ~enc:(fun r -> r.duration)
14725 |> Jsont.Object.mem "fileCreatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_created_at)
14726 |> Jsont.Object.mem "fileModifiedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_modified_at)
14727 |> Jsont.Object.opt_mem "filename" Jsont.string ~enc:(fun r -> r.filename)
14728 |> Jsont.Object.skip_unknown
14729 |> Jsont.Object.finish
14730 end
14731end
14732
14733module AssetJobName = struct
14734 module Types = struct
14735 module T = struct
14736 type t = [
14737 | `Refresh_faces
14738 | `Refresh_metadata
14739 | `Regenerate_thumbnail
14740 | `Transcode_video
14741 ]
14742 end
14743 end
14744
14745 module T = struct
14746 include Types.T
14747
14748 let jsont : t Jsont.t =
14749 Jsont.map Jsont.string ~kind:"AssetJobName"
14750 ~dec:(function
14751 | "refresh-faces" -> `Refresh_faces
14752 | "refresh-metadata" -> `Refresh_metadata
14753 | "regenerate-thumbnail" -> `Regenerate_thumbnail
14754 | "transcode-video" -> `Transcode_video
14755 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
14756 ~enc:(function
14757 | `Refresh_faces -> "refresh-faces"
14758 | `Refresh_metadata -> "refresh-metadata"
14759 | `Regenerate_thumbnail -> "regenerate-thumbnail"
14760 | `Transcode_video -> "transcode-video")
14761 end
14762end
14763
14764module AssetJobs = struct
14765 module Types = struct
14766 module Dto = struct
14767 type t = {
14768 asset_ids : string list;
14769 name : AssetJobName.T.t;
14770 }
14771 end
14772 end
14773
14774 module Dto = struct
14775 include Types.Dto
14776
14777 let v ~asset_ids ~name () = { asset_ids; name }
14778
14779 let asset_ids t = t.asset_ids
14780 let name t = t.name
14781
14782 let jsont : t Jsont.t =
14783 Jsont.Object.map ~kind:"AssetJobsDto"
14784 (fun asset_ids name -> { asset_ids; name })
14785 |> Jsont.Object.mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
14786 |> Jsont.Object.mem "name" AssetJobName.T.jsont ~enc:(fun r -> r.name)
14787 |> Jsont.Object.skip_unknown
14788 |> Jsont.Object.finish
14789 end
14790end
14791
14792module AssetIds = struct
14793 module Types = struct
14794 module ResponseDto = struct
14795 type t = {
14796 asset_id : string;
14797 error : string option;
14798 success : bool;
14799 }
14800 end
14801
14802 module Dto = struct
14803 type t = {
14804 asset_ids : string list;
14805 }
14806 end
14807 end
14808
14809 module ResponseDto = struct
14810 include Types.ResponseDto
14811
14812 let v ~asset_id ~success ?error () = { asset_id; error; success }
14813
14814 let asset_id t = t.asset_id
14815 let error t = t.error
14816 let success t = t.success
14817
14818 let jsont : t Jsont.t =
14819 Jsont.Object.map ~kind:"AssetIdsResponseDto"
14820 (fun asset_id error success -> { asset_id; error; success })
14821 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
14822 |> Jsont.Object.opt_mem "error" Jsont.string ~enc:(fun r -> r.error)
14823 |> Jsont.Object.mem "success" Jsont.bool ~enc:(fun r -> r.success)
14824 |> Jsont.Object.skip_unknown
14825 |> Jsont.Object.finish
14826 end
14827
14828 module Dto = struct
14829 include Types.Dto
14830
14831 let v ~asset_ids () = { asset_ids }
14832
14833 let asset_ids t = t.asset_ids
14834
14835 let jsont : t Jsont.t =
14836 Jsont.Object.map ~kind:"AssetIdsDto"
14837 (fun asset_ids -> { asset_ids })
14838 |> Jsont.Object.mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
14839 |> Jsont.Object.skip_unknown
14840 |> Jsont.Object.finish
14841 end
14842
14843 (** Add assets to a shared link
14844
14845 Add assets to a specific shared link by its ID. This endpoint is only relevant for shared link of type individual. *)
14846 let add_shared_link_assets ~id ?key ?slug ~body client () =
14847 let op_name = "add_shared_link_assets" in
14848 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/shared-links/{id}/assets" in
14849 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
14850 let url = client.base_url ^ url_path ^ query in
14851 let response =
14852 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
14853 with Eio.Io _ as ex ->
14854 let bt = Printexc.get_raw_backtrace () in
14855 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
14856 in
14857 if Requests.Response.ok response then
14858 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14859 else
14860 let body = Requests.Response.text response in
14861 let parsed_body =
14862 match Jsont_bytesrw.decode_string Jsont.json body with
14863 | Ok json -> Some (Openapi.Runtime.Json json)
14864 | Error _ -> Some (Openapi.Runtime.Raw body)
14865 in
14866 raise (Openapi.Runtime.Api_error {
14867 operation = op_name;
14868 method_ = "PUT";
14869 url;
14870 status = Requests.Response.status_code response;
14871 body;
14872 parsed_body;
14873 })
14874
14875 (** Remove assets from a shared link
14876
14877 Remove assets from a specific shared link by its ID. This endpoint is only relevant for shared link of type individual. *)
14878 let remove_shared_link_assets ~id ?key ?slug client () =
14879 let op_name = "remove_shared_link_assets" in
14880 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/shared-links/{id}/assets" in
14881 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
14882 let url = client.base_url ^ url_path ^ query in
14883 let response =
14884 try Requests.delete client.session url
14885 with Eio.Io _ as ex ->
14886 let bt = Printexc.get_raw_backtrace () in
14887 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
14888 in
14889 if Requests.Response.ok response then
14890 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
14891 else
14892 let body = Requests.Response.text response in
14893 let parsed_body =
14894 match Jsont_bytesrw.decode_string Jsont.json body with
14895 | Ok json -> Some (Openapi.Runtime.Json json)
14896 | Error _ -> Some (Openapi.Runtime.Raw body)
14897 in
14898 raise (Openapi.Runtime.Api_error {
14899 operation = op_name;
14900 method_ = "DELETE";
14901 url;
14902 status = Requests.Response.status_code response;
14903 body;
14904 parsed_body;
14905 })
14906end
14907
14908module AssetFullSync = struct
14909 module Types = struct
14910 module Dto = struct
14911 type t = {
14912 last_id : string option;
14913 limit : int;
14914 updated_until : Ptime.t;
14915 user_id : string option;
14916 }
14917 end
14918 end
14919
14920 module Dto = struct
14921 include Types.Dto
14922
14923 let v ~limit ~updated_until ?last_id ?user_id () = { last_id; limit; updated_until; user_id }
14924
14925 let last_id t = t.last_id
14926 let limit t = t.limit
14927 let updated_until t = t.updated_until
14928 let user_id t = t.user_id
14929
14930 let jsont : t Jsont.t =
14931 Jsont.Object.map ~kind:"AssetFullSyncDto"
14932 (fun last_id limit updated_until user_id -> { last_id; limit; updated_until; user_id })
14933 |> Jsont.Object.opt_mem "lastId" Jsont.string ~enc:(fun r -> r.last_id)
14934 |> Jsont.Object.mem "limit" (Openapi.Runtime.validated_int ~minimum:1. Jsont.int) ~enc:(fun r -> r.limit)
14935 |> Jsont.Object.mem "updatedUntil" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_until)
14936 |> Jsont.Object.opt_mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
14937 |> Jsont.Object.skip_unknown
14938 |> Jsont.Object.finish
14939 end
14940end
14941
14942module Asset = struct
14943 module Types = struct
14944 module ResponseDto = struct
14945 type t = {
14946 checksum : string; (** base64 encoded sha1 hash *)
14947 created_at : Ptime.t; (** The UTC timestamp when the asset was originally uploaded to Immich. *)
14948 device_asset_id : string;
14949 device_id : string;
14950 duplicate_id : string option;
14951 duration : string;
14952 exif_info : Exif.ResponseDto.t option;
14953 file_created_at : Ptime.t; (** The actual UTC timestamp when the file was created/captured, preserving timezone information. This is the authoritative timestamp for chronological sorting within timeline groups. Combined with timezone data, this can be used to determine the exact moment the photo was taken. *)
14954 file_modified_at : Ptime.t; (** The UTC timestamp when the file was last modified on the filesystem. This reflects the last time the physical file was changed, which may be different from when the photo was originally taken. *)
14955 has_metadata : bool;
14956 height : float option;
14957 id : string;
14958 is_archived : bool;
14959 is_edited : bool;
14960 is_favorite : bool;
14961 is_offline : bool;
14962 is_trashed : bool;
14963 library_id : string option;
14964 live_photo_video_id : string option;
14965 local_date_time : Ptime.t; (** The local date and time when the photo/video was taken, derived from EXIF metadata. This represents the photographer's local time regardless of timezone, stored as a timezone-agnostic timestamp. Used for timeline grouping by "local" days and months. *)
14966 original_file_name : string;
14967 original_mime_type : string option;
14968 original_path : string;
14969 owner : User.ResponseDto.t option;
14970 owner_id : string;
14971 people : PersonWithFaces.ResponseDto.t list option;
14972 resized : bool option;
14973 stack : AssetStack.ResponseDto.t option;
14974 tags : Tag.ResponseDto.t list option;
14975 thumbhash : string option;
14976 type_ : AssetTypeEnum.T.t;
14977 unassigned_faces : AssetFaceWithoutPerson.ResponseDto.t list option;
14978 updated_at : Ptime.t; (** The UTC timestamp when the asset record was last updated in the database. This is automatically maintained by the database and reflects when any field in the asset was last modified. *)
14979 visibility : AssetVisibility.T.t;
14980 width : float option;
14981 }
14982 end
14983 end
14984
14985 module ResponseDto = struct
14986 include Types.ResponseDto
14987
14988 let v ~checksum ~created_at ~device_asset_id ~device_id ~duration ~file_created_at ~file_modified_at ~has_metadata ~id ~is_archived ~is_edited ~is_favorite ~is_offline ~is_trashed ~local_date_time ~original_file_name ~original_path ~owner_id ~type_ ~updated_at ~visibility ?duplicate_id ?exif_info ?height ?library_id ?live_photo_video_id ?original_mime_type ?owner ?people ?resized ?stack ?tags ?thumbhash ?unassigned_faces ?width () = { checksum; created_at; device_asset_id; device_id; duplicate_id; duration; exif_info; file_created_at; file_modified_at; has_metadata; height; id; is_archived; is_edited; is_favorite; is_offline; is_trashed; library_id; live_photo_video_id; local_date_time; original_file_name; original_mime_type; original_path; owner; owner_id; people; resized; stack; tags; thumbhash; type_; unassigned_faces; updated_at; visibility; width }
14989
14990 let checksum t = t.checksum
14991 let created_at t = t.created_at
14992 let device_asset_id t = t.device_asset_id
14993 let device_id t = t.device_id
14994 let duplicate_id t = t.duplicate_id
14995 let duration t = t.duration
14996 let exif_info t = t.exif_info
14997 let file_created_at t = t.file_created_at
14998 let file_modified_at t = t.file_modified_at
14999 let has_metadata t = t.has_metadata
15000 let height t = t.height
15001 let id t = t.id
15002 let is_archived t = t.is_archived
15003 let is_edited t = t.is_edited
15004 let is_favorite t = t.is_favorite
15005 let is_offline t = t.is_offline
15006 let is_trashed t = t.is_trashed
15007 let library_id t = t.library_id
15008 let live_photo_video_id t = t.live_photo_video_id
15009 let local_date_time t = t.local_date_time
15010 let original_file_name t = t.original_file_name
15011 let original_mime_type t = t.original_mime_type
15012 let original_path t = t.original_path
15013 let owner t = t.owner
15014 let owner_id t = t.owner_id
15015 let people t = t.people
15016 let resized t = t.resized
15017 let stack t = t.stack
15018 let tags t = t.tags
15019 let thumbhash t = t.thumbhash
15020 let type_ t = t.type_
15021 let unassigned_faces t = t.unassigned_faces
15022 let updated_at t = t.updated_at
15023 let visibility t = t.visibility
15024 let width t = t.width
15025
15026 let jsont : t Jsont.t =
15027 Jsont.Object.map ~kind:"AssetResponseDto"
15028 (fun checksum created_at device_asset_id device_id duplicate_id duration exif_info file_created_at file_modified_at has_metadata height id is_archived is_edited is_favorite is_offline is_trashed library_id live_photo_video_id local_date_time original_file_name original_mime_type original_path owner owner_id people resized stack tags thumbhash type_ unassigned_faces updated_at visibility width -> { checksum; created_at; device_asset_id; device_id; duplicate_id; duration; exif_info; file_created_at; file_modified_at; has_metadata; height; id; is_archived; is_edited; is_favorite; is_offline; is_trashed; library_id; live_photo_video_id; local_date_time; original_file_name; original_mime_type; original_path; owner; owner_id; people; resized; stack; tags; thumbhash; type_; unassigned_faces; updated_at; visibility; width })
15029 |> Jsont.Object.mem "checksum" Jsont.string ~enc:(fun r -> r.checksum)
15030 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
15031 |> Jsont.Object.mem "deviceAssetId" Jsont.string ~enc:(fun r -> r.device_asset_id)
15032 |> Jsont.Object.mem "deviceId" Jsont.string ~enc:(fun r -> r.device_id)
15033 |> Jsont.Object.mem "duplicateId" Openapi.Runtime.nullable_string
15034 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.duplicate_id)
15035 |> Jsont.Object.mem "duration" Jsont.string ~enc:(fun r -> r.duration)
15036 |> Jsont.Object.opt_mem "exifInfo" Exif.ResponseDto.jsont ~enc:(fun r -> r.exif_info)
15037 |> Jsont.Object.mem "fileCreatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_created_at)
15038 |> Jsont.Object.mem "fileModifiedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.file_modified_at)
15039 |> Jsont.Object.mem "hasMetadata" Jsont.bool ~enc:(fun r -> r.has_metadata)
15040 |> Jsont.Object.mem "height" Openapi.Runtime.nullable_float
15041 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.height)
15042 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
15043 |> Jsont.Object.mem "isArchived" Jsont.bool ~enc:(fun r -> r.is_archived)
15044 |> Jsont.Object.mem "isEdited" Jsont.bool ~enc:(fun r -> r.is_edited)
15045 |> Jsont.Object.mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
15046 |> Jsont.Object.mem "isOffline" Jsont.bool ~enc:(fun r -> r.is_offline)
15047 |> Jsont.Object.mem "isTrashed" Jsont.bool ~enc:(fun r -> r.is_trashed)
15048 |> Jsont.Object.mem "libraryId" Openapi.Runtime.nullable_string
15049 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.library_id)
15050 |> Jsont.Object.mem "livePhotoVideoId" Openapi.Runtime.nullable_string
15051 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.live_photo_video_id)
15052 |> Jsont.Object.mem "localDateTime" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.local_date_time)
15053 |> Jsont.Object.mem "originalFileName" Jsont.string ~enc:(fun r -> r.original_file_name)
15054 |> Jsont.Object.opt_mem "originalMimeType" Jsont.string ~enc:(fun r -> r.original_mime_type)
15055 |> Jsont.Object.mem "originalPath" Jsont.string ~enc:(fun r -> r.original_path)
15056 |> Jsont.Object.opt_mem "owner" User.ResponseDto.jsont ~enc:(fun r -> r.owner)
15057 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
15058 |> Jsont.Object.opt_mem "people" (Jsont.list PersonWithFaces.ResponseDto.jsont) ~enc:(fun r -> r.people)
15059 |> Jsont.Object.opt_mem "resized" Jsont.bool ~enc:(fun r -> r.resized)
15060 |> Jsont.Object.opt_mem "stack" AssetStack.ResponseDto.jsont ~enc:(fun r -> r.stack)
15061 |> Jsont.Object.opt_mem "tags" (Jsont.list Tag.ResponseDto.jsont) ~enc:(fun r -> r.tags)
15062 |> Jsont.Object.mem "thumbhash" Openapi.Runtime.nullable_string
15063 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.thumbhash)
15064 |> Jsont.Object.mem "type" AssetTypeEnum.T.jsont ~enc:(fun r -> r.type_)
15065 |> Jsont.Object.opt_mem "unassignedFaces" (Jsont.list AssetFaceWithoutPerson.ResponseDto.jsont) ~enc:(fun r -> r.unassigned_faces)
15066 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
15067 |> Jsont.Object.mem "visibility" AssetVisibility.T.jsont ~enc:(fun r -> r.visibility)
15068 |> Jsont.Object.mem "width" Openapi.Runtime.nullable_float
15069 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.width)
15070 |> Jsont.Object.skip_unknown
15071 |> Jsont.Object.finish
15072 end
15073
15074 (** Get random assets
15075
15076 Retrieve a specified number of random assets for the authenticated user. *)
15077 let get_random ?count client () =
15078 let op_name = "get_random" in
15079 let url_path = "/assets/random" in
15080 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"count" ~value:count]) in
15081 let url = client.base_url ^ url_path ^ query in
15082 let response =
15083 try Requests.get client.session url
15084 with Eio.Io _ as ex ->
15085 let bt = Printexc.get_raw_backtrace () in
15086 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15087 in
15088 if Requests.Response.ok response then
15089 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15090 else
15091 let body = Requests.Response.text response in
15092 let parsed_body =
15093 match Jsont_bytesrw.decode_string Jsont.json body with
15094 | Ok json -> Some (Openapi.Runtime.Json json)
15095 | Error _ -> Some (Openapi.Runtime.Raw body)
15096 in
15097 raise (Openapi.Runtime.Api_error {
15098 operation = op_name;
15099 method_ = "GET";
15100 url;
15101 status = Requests.Response.status_code response;
15102 body;
15103 parsed_body;
15104 })
15105
15106 (** Retrieve an asset
15107
15108 Retrieve detailed information about a specific asset. *)
15109 let get_asset_info ~id ?key ?slug client () =
15110 let op_name = "get_asset_info" in
15111 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}" in
15112 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
15113 let url = client.base_url ^ url_path ^ query in
15114 let response =
15115 try Requests.get client.session url
15116 with Eio.Io _ as ex ->
15117 let bt = Printexc.get_raw_backtrace () in
15118 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15119 in
15120 if Requests.Response.ok response then
15121 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15122 else
15123 let body = Requests.Response.text response in
15124 let parsed_body =
15125 match Jsont_bytesrw.decode_string Jsont.json body with
15126 | Ok json -> Some (Openapi.Runtime.Json json)
15127 | Error _ -> Some (Openapi.Runtime.Raw body)
15128 in
15129 raise (Openapi.Runtime.Api_error {
15130 operation = op_name;
15131 method_ = "GET";
15132 url;
15133 status = Requests.Response.status_code response;
15134 body;
15135 parsed_body;
15136 })
15137
15138 (** Update an asset
15139
15140 Update information of a specific asset. *)
15141 let update_asset ~id ~body client () =
15142 let op_name = "update_asset" in
15143 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}" in
15144 let query = "" in
15145 let url = client.base_url ^ url_path ^ query in
15146 let response =
15147 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateAsset.Dto.jsont body)) url
15148 with Eio.Io _ as ex ->
15149 let bt = Printexc.get_raw_backtrace () in
15150 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
15151 in
15152 if Requests.Response.ok response then
15153 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15154 else
15155 let body = Requests.Response.text response in
15156 let parsed_body =
15157 match Jsont_bytesrw.decode_string Jsont.json body with
15158 | Ok json -> Some (Openapi.Runtime.Json json)
15159 | Error _ -> Some (Openapi.Runtime.Raw body)
15160 in
15161 raise (Openapi.Runtime.Api_error {
15162 operation = op_name;
15163 method_ = "PUT";
15164 url;
15165 status = Requests.Response.status_code response;
15166 body;
15167 parsed_body;
15168 })
15169
15170 (** Retrieve assets by city
15171
15172 Retrieve a list of assets with each asset belonging to a different city. This endpoint is used on the places pages to show a single thumbnail for each city the user has assets in. *)
15173 let get_assets_by_city client () =
15174 let op_name = "get_assets_by_city" in
15175 let url_path = "/search/cities" in
15176 let query = "" in
15177 let url = client.base_url ^ url_path ^ query in
15178 let response =
15179 try Requests.get client.session url
15180 with Eio.Io _ as ex ->
15181 let bt = Printexc.get_raw_backtrace () in
15182 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15183 in
15184 if Requests.Response.ok response then
15185 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15186 else
15187 let body = Requests.Response.text response in
15188 let parsed_body =
15189 match Jsont_bytesrw.decode_string Jsont.json body with
15190 | Ok json -> Some (Openapi.Runtime.Json json)
15191 | Error _ -> Some (Openapi.Runtime.Raw body)
15192 in
15193 raise (Openapi.Runtime.Api_error {
15194 operation = op_name;
15195 method_ = "GET";
15196 url;
15197 status = Requests.Response.status_code response;
15198 body;
15199 parsed_body;
15200 })
15201
15202 (** Search large assets
15203
15204 Search for assets that are considered large based on specified criteria. *)
15205 let search_large_assets ?album_ids ?city ?country ?created_after ?created_before ?device_id ?is_encoded ?is_favorite ?is_motion ?is_not_in_album ?is_offline ?lens_model ?library_id ?make ?min_file_size ?model ?ocr ?person_ids ?rating ?size ?state ?tag_ids ?taken_after ?taken_before ?trashed_after ?trashed_before ?type_ ?updated_after ?updated_before ?visibility ?with_deleted ?with_exif client () =
15206 let op_name = "search_large_assets" in
15207 let url_path = "/search/large-assets" in
15208 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"albumIds" ~value:album_ids; Openapi.Runtime.Query.optional ~key:"city" ~value:city; Openapi.Runtime.Query.optional ~key:"country" ~value:country; Openapi.Runtime.Query.optional ~key:"createdAfter" ~value:created_after; Openapi.Runtime.Query.optional ~key:"createdBefore" ~value:created_before; Openapi.Runtime.Query.optional ~key:"deviceId" ~value:device_id; Openapi.Runtime.Query.optional ~key:"isEncoded" ~value:is_encoded; Openapi.Runtime.Query.optional ~key:"isFavorite" ~value:is_favorite; Openapi.Runtime.Query.optional ~key:"isMotion" ~value:is_motion; Openapi.Runtime.Query.optional ~key:"isNotInAlbum" ~value:is_not_in_album; Openapi.Runtime.Query.optional ~key:"isOffline" ~value:is_offline; Openapi.Runtime.Query.optional ~key:"lensModel" ~value:lens_model; Openapi.Runtime.Query.optional ~key:"libraryId" ~value:library_id; Openapi.Runtime.Query.optional ~key:"make" ~value:make; Openapi.Runtime.Query.optional ~key:"minFileSize" ~value:min_file_size; Openapi.Runtime.Query.optional ~key:"model" ~value:model; Openapi.Runtime.Query.optional ~key:"ocr" ~value:ocr; Openapi.Runtime.Query.optional ~key:"personIds" ~value:person_ids; Openapi.Runtime.Query.optional ~key:"rating" ~value:rating; Openapi.Runtime.Query.optional ~key:"size" ~value:size; Openapi.Runtime.Query.optional ~key:"state" ~value:state; Openapi.Runtime.Query.optional ~key:"tagIds" ~value:tag_ids; Openapi.Runtime.Query.optional ~key:"takenAfter" ~value:taken_after; Openapi.Runtime.Query.optional ~key:"takenBefore" ~value:taken_before; Openapi.Runtime.Query.optional ~key:"trashedAfter" ~value:trashed_after; Openapi.Runtime.Query.optional ~key:"trashedBefore" ~value:trashed_before; Openapi.Runtime.Query.optional ~key:"type" ~value:type_; Openapi.Runtime.Query.optional ~key:"updatedAfter" ~value:updated_after; Openapi.Runtime.Query.optional ~key:"updatedBefore" ~value:updated_before; Openapi.Runtime.Query.optional ~key:"visibility" ~value:visibility; Openapi.Runtime.Query.optional ~key:"withDeleted" ~value:with_deleted; Openapi.Runtime.Query.optional ~key:"withExif" ~value:with_exif]) in
15209 let url = client.base_url ^ url_path ^ query in
15210 let response =
15211 try Requests.post client.session url
15212 with Eio.Io _ as ex ->
15213 let bt = Printexc.get_raw_backtrace () in
15214 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
15215 in
15216 if Requests.Response.ok response then
15217 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15218 else
15219 let body = Requests.Response.text response in
15220 let parsed_body =
15221 match Jsont_bytesrw.decode_string Jsont.json body with
15222 | Ok json -> Some (Openapi.Runtime.Json json)
15223 | Error _ -> Some (Openapi.Runtime.Raw body)
15224 in
15225 raise (Openapi.Runtime.Api_error {
15226 operation = op_name;
15227 method_ = "POST";
15228 url;
15229 status = Requests.Response.status_code response;
15230 body;
15231 parsed_body;
15232 })
15233
15234 (** Search random assets
15235
15236 Retrieve a random selection of assets based on the provided criteria. *)
15237 let search_random ~body client () =
15238 let op_name = "search_random" in
15239 let url_path = "/search/random" in
15240 let query = "" in
15241 let url = client.base_url ^ url_path ^ query in
15242 let response =
15243 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json RandomSearch.Dto.jsont body)) url
15244 with Eio.Io _ as ex ->
15245 let bt = Printexc.get_raw_backtrace () in
15246 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
15247 in
15248 if Requests.Response.ok response then
15249 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15250 else
15251 let body = Requests.Response.text response in
15252 let parsed_body =
15253 match Jsont_bytesrw.decode_string Jsont.json body with
15254 | Ok json -> Some (Openapi.Runtime.Json json)
15255 | Error _ -> Some (Openapi.Runtime.Raw body)
15256 in
15257 raise (Openapi.Runtime.Api_error {
15258 operation = op_name;
15259 method_ = "POST";
15260 url;
15261 status = Requests.Response.status_code response;
15262 body;
15263 parsed_body;
15264 })
15265
15266 (** Get full sync for user
15267
15268 Retrieve all assets for a full synchronization for the authenticated user. *)
15269 let get_full_sync_for_user ~body client () =
15270 let op_name = "get_full_sync_for_user" in
15271 let url_path = "/sync/full-sync" in
15272 let query = "" in
15273 let url = client.base_url ^ url_path ^ query in
15274 let response =
15275 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetFullSync.Dto.jsont body)) url
15276 with Eio.Io _ as ex ->
15277 let bt = Printexc.get_raw_backtrace () in
15278 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
15279 in
15280 if Requests.Response.ok response then
15281 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15282 else
15283 let body = Requests.Response.text response in
15284 let parsed_body =
15285 match Jsont_bytesrw.decode_string Jsont.json body with
15286 | Ok json -> Some (Openapi.Runtime.Json json)
15287 | Error _ -> Some (Openapi.Runtime.Raw body)
15288 in
15289 raise (Openapi.Runtime.Api_error {
15290 operation = op_name;
15291 method_ = "POST";
15292 url;
15293 status = Requests.Response.status_code response;
15294 body;
15295 parsed_body;
15296 })
15297
15298 (** Retrieve assets by original path
15299
15300 Retrieve assets that are children of a specific folder. *)
15301 let get_assets_by_original_path ~path client () =
15302 let op_name = "get_assets_by_original_path" in
15303 let url_path = "/view/folder" in
15304 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"path" ~value:path]) in
15305 let url = client.base_url ^ url_path ^ query in
15306 let response =
15307 try Requests.get client.session url
15308 with Eio.Io _ as ex ->
15309 let bt = Printexc.get_raw_backtrace () in
15310 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15311 in
15312 if Requests.Response.ok response then
15313 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15314 else
15315 let body = Requests.Response.text response in
15316 let parsed_body =
15317 match Jsont_bytesrw.decode_string Jsont.json body with
15318 | Ok json -> Some (Openapi.Runtime.Json json)
15319 | Error _ -> Some (Openapi.Runtime.Raw body)
15320 in
15321 raise (Openapi.Runtime.Api_error {
15322 operation = op_name;
15323 method_ = "GET";
15324 url;
15325 status = Requests.Response.status_code response;
15326 body;
15327 parsed_body;
15328 })
15329end
15330
15331module Stack = struct
15332 module Types = struct
15333 module UpdateDto = struct
15334 type t = {
15335 primary_asset_id : string option;
15336 }
15337 end
15338
15339 module ResponseDto = struct
15340 type t = {
15341 assets : Asset.ResponseDto.t list;
15342 id : string;
15343 primary_asset_id : string;
15344 }
15345 end
15346
15347 module CreateDto = struct
15348 type t = {
15349 asset_ids : string list; (** first asset becomes the primary *)
15350 }
15351 end
15352 end
15353
15354 module UpdateDto = struct
15355 include Types.UpdateDto
15356
15357 let v ?primary_asset_id () = { primary_asset_id }
15358
15359 let primary_asset_id t = t.primary_asset_id
15360
15361 let jsont : t Jsont.t =
15362 Jsont.Object.map ~kind:"StackUpdateDto"
15363 (fun primary_asset_id -> { primary_asset_id })
15364 |> Jsont.Object.opt_mem "primaryAssetId" Jsont.string ~enc:(fun r -> r.primary_asset_id)
15365 |> Jsont.Object.skip_unknown
15366 |> Jsont.Object.finish
15367 end
15368
15369 module ResponseDto = struct
15370 include Types.ResponseDto
15371
15372 let v ~assets ~id ~primary_asset_id () = { assets; id; primary_asset_id }
15373
15374 let assets t = t.assets
15375 let id t = t.id
15376 let primary_asset_id t = t.primary_asset_id
15377
15378 let jsont : t Jsont.t =
15379 Jsont.Object.map ~kind:"StackResponseDto"
15380 (fun assets id primary_asset_id -> { assets; id; primary_asset_id })
15381 |> Jsont.Object.mem "assets" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.assets)
15382 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
15383 |> Jsont.Object.mem "primaryAssetId" Jsont.string ~enc:(fun r -> r.primary_asset_id)
15384 |> Jsont.Object.skip_unknown
15385 |> Jsont.Object.finish
15386 end
15387
15388 module CreateDto = struct
15389 include Types.CreateDto
15390
15391 let v ~asset_ids () = { asset_ids }
15392
15393 let asset_ids t = t.asset_ids
15394
15395 let jsont : t Jsont.t =
15396 Jsont.Object.map ~kind:"StackCreateDto"
15397 (fun asset_ids -> { asset_ids })
15398 |> Jsont.Object.mem "assetIds" (Openapi.Runtime.validated_list ~min_items:2 Jsont.string) ~enc:(fun r -> r.asset_ids)
15399 |> Jsont.Object.skip_unknown
15400 |> Jsont.Object.finish
15401 end
15402
15403 (** Retrieve stacks
15404
15405 Retrieve a list of stacks. *)
15406 let search_stacks ?primary_asset_id client () =
15407 let op_name = "search_stacks" in
15408 let url_path = "/stacks" in
15409 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"primaryAssetId" ~value:primary_asset_id]) in
15410 let url = client.base_url ^ url_path ^ query in
15411 let response =
15412 try Requests.get client.session url
15413 with Eio.Io _ as ex ->
15414 let bt = Printexc.get_raw_backtrace () in
15415 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15416 in
15417 if Requests.Response.ok response then
15418 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15419 else
15420 let body = Requests.Response.text response in
15421 let parsed_body =
15422 match Jsont_bytesrw.decode_string Jsont.json body with
15423 | Ok json -> Some (Openapi.Runtime.Json json)
15424 | Error _ -> Some (Openapi.Runtime.Raw body)
15425 in
15426 raise (Openapi.Runtime.Api_error {
15427 operation = op_name;
15428 method_ = "GET";
15429 url;
15430 status = Requests.Response.status_code response;
15431 body;
15432 parsed_body;
15433 })
15434
15435 (** Create a stack
15436
15437 Create a new stack by providing a name and a list of asset IDs to include in the stack. If any of the provided asset IDs are primary assets of an existing stack, the existing stack will be merged into the newly created stack. *)
15438 let create_stack ~body client () =
15439 let op_name = "create_stack" in
15440 let url_path = "/stacks" in
15441 let query = "" in
15442 let url = client.base_url ^ url_path ^ query in
15443 let response =
15444 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
15445 with Eio.Io _ as ex ->
15446 let bt = Printexc.get_raw_backtrace () in
15447 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
15448 in
15449 if Requests.Response.ok response then
15450 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15451 else
15452 let body = Requests.Response.text response in
15453 let parsed_body =
15454 match Jsont_bytesrw.decode_string Jsont.json body with
15455 | Ok json -> Some (Openapi.Runtime.Json json)
15456 | Error _ -> Some (Openapi.Runtime.Raw body)
15457 in
15458 raise (Openapi.Runtime.Api_error {
15459 operation = op_name;
15460 method_ = "POST";
15461 url;
15462 status = Requests.Response.status_code response;
15463 body;
15464 parsed_body;
15465 })
15466
15467 (** Retrieve a stack
15468
15469 Retrieve a specific stack by its ID. *)
15470 let get_stack ~id client () =
15471 let op_name = "get_stack" in
15472 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/stacks/{id}" in
15473 let query = "" in
15474 let url = client.base_url ^ url_path ^ query in
15475 let response =
15476 try Requests.get client.session url
15477 with Eio.Io _ as ex ->
15478 let bt = Printexc.get_raw_backtrace () in
15479 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15480 in
15481 if Requests.Response.ok response then
15482 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15483 else
15484 let body = Requests.Response.text response in
15485 let parsed_body =
15486 match Jsont_bytesrw.decode_string Jsont.json body with
15487 | Ok json -> Some (Openapi.Runtime.Json json)
15488 | Error _ -> Some (Openapi.Runtime.Raw body)
15489 in
15490 raise (Openapi.Runtime.Api_error {
15491 operation = op_name;
15492 method_ = "GET";
15493 url;
15494 status = Requests.Response.status_code response;
15495 body;
15496 parsed_body;
15497 })
15498
15499 (** Update a stack
15500
15501 Update an existing stack by its ID. *)
15502 let update_stack ~id ~body client () =
15503 let op_name = "update_stack" in
15504 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/stacks/{id}" in
15505 let query = "" in
15506 let url = client.base_url ^ url_path ^ query in
15507 let response =
15508 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
15509 with Eio.Io _ as ex ->
15510 let bt = Printexc.get_raw_backtrace () in
15511 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
15512 in
15513 if Requests.Response.ok response then
15514 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15515 else
15516 let body = Requests.Response.text response in
15517 let parsed_body =
15518 match Jsont_bytesrw.decode_string Jsont.json body with
15519 | Ok json -> Some (Openapi.Runtime.Json json)
15520 | Error _ -> Some (Openapi.Runtime.Raw body)
15521 in
15522 raise (Openapi.Runtime.Api_error {
15523 operation = op_name;
15524 method_ = "PUT";
15525 url;
15526 status = Requests.Response.status_code response;
15527 body;
15528 parsed_body;
15529 })
15530end
15531
15532module SearchExplore = struct
15533 module Types = struct
15534 module Item = struct
15535 type t = {
15536 data : Asset.ResponseDto.t;
15537 value : string;
15538 }
15539 end
15540
15541 module ResponseDto = struct
15542 type t = {
15543 field_name : string;
15544 items : Item.t list;
15545 }
15546 end
15547 end
15548
15549 module Item = struct
15550 include Types.Item
15551
15552 let v ~data ~value () = { data; value }
15553
15554 let data t = t.data
15555 let value t = t.value
15556
15557 let jsont : t Jsont.t =
15558 Jsont.Object.map ~kind:"SearchExploreItem"
15559 (fun data value -> { data; value })
15560 |> Jsont.Object.mem "data" Asset.ResponseDto.jsont ~enc:(fun r -> r.data)
15561 |> Jsont.Object.mem "value" Jsont.string ~enc:(fun r -> r.value)
15562 |> Jsont.Object.skip_unknown
15563 |> Jsont.Object.finish
15564 end
15565
15566 module ResponseDto = struct
15567 include Types.ResponseDto
15568
15569 let v ~field_name ~items () = { field_name; items }
15570
15571 let field_name t = t.field_name
15572 let items t = t.items
15573
15574 let jsont : t Jsont.t =
15575 Jsont.Object.map ~kind:"SearchExploreResponseDto"
15576 (fun field_name items -> { field_name; items })
15577 |> Jsont.Object.mem "fieldName" Jsont.string ~enc:(fun r -> r.field_name)
15578 |> Jsont.Object.mem "items" (Jsont.list Item.jsont) ~enc:(fun r -> r.items)
15579 |> Jsont.Object.skip_unknown
15580 |> Jsont.Object.finish
15581 end
15582
15583 (** Retrieve explore data
15584
15585 Retrieve data for the explore section, such as popular people and places. *)
15586 let get_explore_data client () =
15587 let op_name = "get_explore_data" in
15588 let url_path = "/search/explore" in
15589 let query = "" in
15590 let url = client.base_url ^ url_path ^ query in
15591 let response =
15592 try Requests.get client.session url
15593 with Eio.Io _ as ex ->
15594 let bt = Printexc.get_raw_backtrace () in
15595 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15596 in
15597 if Requests.Response.ok response then
15598 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15599 else
15600 let body = Requests.Response.text response in
15601 let parsed_body =
15602 match Jsont_bytesrw.decode_string Jsont.json body with
15603 | Ok json -> Some (Openapi.Runtime.Json json)
15604 | Error _ -> Some (Openapi.Runtime.Raw body)
15605 in
15606 raise (Openapi.Runtime.Api_error {
15607 operation = op_name;
15608 method_ = "GET";
15609 url;
15610 status = Requests.Response.status_code response;
15611 body;
15612 parsed_body;
15613 })
15614end
15615
15616module SearchAsset = struct
15617 module Types = struct
15618 module ResponseDto = struct
15619 type t = {
15620 count : int;
15621 facets : SearchFacet.ResponseDto.t list;
15622 items : Asset.ResponseDto.t list;
15623 next_page : string option;
15624 total : int;
15625 }
15626 end
15627 end
15628
15629 module ResponseDto = struct
15630 include Types.ResponseDto
15631
15632 let v ~count ~facets ~items ~total ?next_page () = { count; facets; items; next_page; total }
15633
15634 let count t = t.count
15635 let facets t = t.facets
15636 let items t = t.items
15637 let next_page t = t.next_page
15638 let total t = t.total
15639
15640 let jsont : t Jsont.t =
15641 Jsont.Object.map ~kind:"SearchAssetResponseDto"
15642 (fun count facets items next_page total -> { count; facets; items; next_page; total })
15643 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
15644 |> Jsont.Object.mem "facets" (Jsont.list SearchFacet.ResponseDto.jsont) ~enc:(fun r -> r.facets)
15645 |> Jsont.Object.mem "items" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.items)
15646 |> Jsont.Object.mem "nextPage" Openapi.Runtime.nullable_string
15647 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.next_page)
15648 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
15649 |> Jsont.Object.skip_unknown
15650 |> Jsont.Object.finish
15651 end
15652end
15653
15654module Memory = struct
15655 module Types = struct
15656 module UpdateDto = struct
15657 type t = {
15658 is_saved : bool option;
15659 memory_at : Ptime.t option;
15660 seen_at : Ptime.t option;
15661 }
15662 end
15663
15664 module Type = struct
15665 type t = [
15666 | `On_this_day
15667 ]
15668 end
15669
15670 module ResponseDto = struct
15671 type t = {
15672 assets : Asset.ResponseDto.t list;
15673 created_at : Ptime.t;
15674 data : OnThisDay.Dto.t;
15675 deleted_at : Ptime.t option;
15676 hide_at : Ptime.t option;
15677 id : string;
15678 is_saved : bool;
15679 memory_at : Ptime.t;
15680 owner_id : string;
15681 seen_at : Ptime.t option;
15682 show_at : Ptime.t option;
15683 type_ : Type.t;
15684 updated_at : Ptime.t;
15685 }
15686 end
15687
15688 module CreateDto = struct
15689 type t = {
15690 asset_ids : string list option;
15691 data : OnThisDay.Dto.t;
15692 is_saved : bool option;
15693 memory_at : Ptime.t;
15694 seen_at : Ptime.t option;
15695 type_ : Type.t;
15696 }
15697 end
15698 end
15699
15700 module UpdateDto = struct
15701 include Types.UpdateDto
15702
15703 let v ?is_saved ?memory_at ?seen_at () = { is_saved; memory_at; seen_at }
15704
15705 let is_saved t = t.is_saved
15706 let memory_at t = t.memory_at
15707 let seen_at t = t.seen_at
15708
15709 let jsont : t Jsont.t =
15710 Jsont.Object.map ~kind:"MemoryUpdateDto"
15711 (fun is_saved memory_at seen_at -> { is_saved; memory_at; seen_at })
15712 |> Jsont.Object.opt_mem "isSaved" Jsont.bool ~enc:(fun r -> r.is_saved)
15713 |> Jsont.Object.opt_mem "memoryAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.memory_at)
15714 |> Jsont.Object.opt_mem "seenAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.seen_at)
15715 |> Jsont.Object.skip_unknown
15716 |> Jsont.Object.finish
15717 end
15718
15719 module Type = struct
15720 include Types.Type
15721
15722 let jsont : t Jsont.t =
15723 Jsont.map Jsont.string ~kind:"MemoryType"
15724 ~dec:(function
15725 | "on_this_day" -> `On_this_day
15726 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
15727 ~enc:(function
15728 | `On_this_day -> "on_this_day")
15729 end
15730
15731 module ResponseDto = struct
15732 include Types.ResponseDto
15733
15734 let v ~assets ~created_at ~data ~id ~is_saved ~memory_at ~owner_id ~type_ ~updated_at ?deleted_at ?hide_at ?seen_at ?show_at () = { assets; created_at; data; deleted_at; hide_at; id; is_saved; memory_at; owner_id; seen_at; show_at; type_; updated_at }
15735
15736 let assets t = t.assets
15737 let created_at t = t.created_at
15738 let data t = t.data
15739 let deleted_at t = t.deleted_at
15740 let hide_at t = t.hide_at
15741 let id t = t.id
15742 let is_saved t = t.is_saved
15743 let memory_at t = t.memory_at
15744 let owner_id t = t.owner_id
15745 let seen_at t = t.seen_at
15746 let show_at t = t.show_at
15747 let type_ t = t.type_
15748 let updated_at t = t.updated_at
15749
15750 let jsont : t Jsont.t =
15751 Jsont.Object.map ~kind:"MemoryResponseDto"
15752 (fun assets created_at data deleted_at hide_at id is_saved memory_at owner_id seen_at show_at type_ updated_at -> { assets; created_at; data; deleted_at; hide_at; id; is_saved; memory_at; owner_id; seen_at; show_at; type_; updated_at })
15753 |> Jsont.Object.mem "assets" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.assets)
15754 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
15755 |> Jsont.Object.mem "data" OnThisDay.Dto.jsont ~enc:(fun r -> r.data)
15756 |> Jsont.Object.opt_mem "deletedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.deleted_at)
15757 |> Jsont.Object.opt_mem "hideAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.hide_at)
15758 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
15759 |> Jsont.Object.mem "isSaved" Jsont.bool ~enc:(fun r -> r.is_saved)
15760 |> Jsont.Object.mem "memoryAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.memory_at)
15761 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
15762 |> Jsont.Object.opt_mem "seenAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.seen_at)
15763 |> Jsont.Object.opt_mem "showAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.show_at)
15764 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
15765 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
15766 |> Jsont.Object.skip_unknown
15767 |> Jsont.Object.finish
15768 end
15769
15770 module CreateDto = struct
15771 include Types.CreateDto
15772
15773 let v ~data ~memory_at ~type_ ?asset_ids ?is_saved ?seen_at () = { asset_ids; data; is_saved; memory_at; seen_at; type_ }
15774
15775 let asset_ids t = t.asset_ids
15776 let data t = t.data
15777 let is_saved t = t.is_saved
15778 let memory_at t = t.memory_at
15779 let seen_at t = t.seen_at
15780 let type_ t = t.type_
15781
15782 let jsont : t Jsont.t =
15783 Jsont.Object.map ~kind:"MemoryCreateDto"
15784 (fun asset_ids data is_saved memory_at seen_at type_ -> { asset_ids; data; is_saved; memory_at; seen_at; type_ })
15785 |> Jsont.Object.opt_mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
15786 |> Jsont.Object.mem "data" OnThisDay.Dto.jsont ~enc:(fun r -> r.data)
15787 |> Jsont.Object.opt_mem "isSaved" Jsont.bool ~enc:(fun r -> r.is_saved)
15788 |> Jsont.Object.mem "memoryAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.memory_at)
15789 |> Jsont.Object.opt_mem "seenAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.seen_at)
15790 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
15791 |> Jsont.Object.skip_unknown
15792 |> Jsont.Object.finish
15793 end
15794
15795 (** Retrieve memories
15796
15797 Retrieve a list of memories. Memories are sorted descending by creation date by default, although they can also be sorted in ascending order, or randomly.
15798 @param size Number of memories to return
15799 *)
15800 let search_memories ?for_ ?is_saved ?is_trashed ?order ?size ?type_ client () =
15801 let op_name = "search_memories" in
15802 let url_path = "/memories" in
15803 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"for" ~value:for_; Openapi.Runtime.Query.optional ~key:"isSaved" ~value:is_saved; Openapi.Runtime.Query.optional ~key:"isTrashed" ~value:is_trashed; Openapi.Runtime.Query.optional ~key:"order" ~value:order; Openapi.Runtime.Query.optional ~key:"size" ~value:size; Openapi.Runtime.Query.optional ~key:"type" ~value:type_]) in
15804 let url = client.base_url ^ url_path ^ query in
15805 let response =
15806 try Requests.get client.session url
15807 with Eio.Io _ as ex ->
15808 let bt = Printexc.get_raw_backtrace () in
15809 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15810 in
15811 if Requests.Response.ok response then
15812 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15813 else
15814 let body = Requests.Response.text response in
15815 let parsed_body =
15816 match Jsont_bytesrw.decode_string Jsont.json body with
15817 | Ok json -> Some (Openapi.Runtime.Json json)
15818 | Error _ -> Some (Openapi.Runtime.Raw body)
15819 in
15820 raise (Openapi.Runtime.Api_error {
15821 operation = op_name;
15822 method_ = "GET";
15823 url;
15824 status = Requests.Response.status_code response;
15825 body;
15826 parsed_body;
15827 })
15828
15829 (** Create a memory
15830
15831 Create a new memory by providing a name, description, and a list of asset IDs to include in the memory. *)
15832 let create_memory ~body client () =
15833 let op_name = "create_memory" in
15834 let url_path = "/memories" in
15835 let query = "" in
15836 let url = client.base_url ^ url_path ^ query in
15837 let response =
15838 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
15839 with Eio.Io _ as ex ->
15840 let bt = Printexc.get_raw_backtrace () in
15841 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
15842 in
15843 if Requests.Response.ok response then
15844 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15845 else
15846 let body = Requests.Response.text response in
15847 let parsed_body =
15848 match Jsont_bytesrw.decode_string Jsont.json body with
15849 | Ok json -> Some (Openapi.Runtime.Json json)
15850 | Error _ -> Some (Openapi.Runtime.Raw body)
15851 in
15852 raise (Openapi.Runtime.Api_error {
15853 operation = op_name;
15854 method_ = "POST";
15855 url;
15856 status = Requests.Response.status_code response;
15857 body;
15858 parsed_body;
15859 })
15860
15861 (** Retrieve a memory
15862
15863 Retrieve a specific memory by its ID. *)
15864 let get_memory ~id client () =
15865 let op_name = "get_memory" in
15866 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/memories/{id}" in
15867 let query = "" in
15868 let url = client.base_url ^ url_path ^ query in
15869 let response =
15870 try Requests.get client.session url
15871 with Eio.Io _ as ex ->
15872 let bt = Printexc.get_raw_backtrace () in
15873 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
15874 in
15875 if Requests.Response.ok response then
15876 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15877 else
15878 let body = Requests.Response.text response in
15879 let parsed_body =
15880 match Jsont_bytesrw.decode_string Jsont.json body with
15881 | Ok json -> Some (Openapi.Runtime.Json json)
15882 | Error _ -> Some (Openapi.Runtime.Raw body)
15883 in
15884 raise (Openapi.Runtime.Api_error {
15885 operation = op_name;
15886 method_ = "GET";
15887 url;
15888 status = Requests.Response.status_code response;
15889 body;
15890 parsed_body;
15891 })
15892
15893 (** Update a memory
15894
15895 Update an existing memory by its ID. *)
15896 let update_memory ~id ~body client () =
15897 let op_name = "update_memory" in
15898 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/memories/{id}" in
15899 let query = "" in
15900 let url = client.base_url ^ url_path ^ query in
15901 let response =
15902 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
15903 with Eio.Io _ as ex ->
15904 let bt = Printexc.get_raw_backtrace () in
15905 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
15906 in
15907 if Requests.Response.ok response then
15908 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
15909 else
15910 let body = Requests.Response.text response in
15911 let parsed_body =
15912 match Jsont_bytesrw.decode_string Jsont.json body with
15913 | Ok json -> Some (Openapi.Runtime.Json json)
15914 | Error _ -> Some (Openapi.Runtime.Raw body)
15915 in
15916 raise (Openapi.Runtime.Api_error {
15917 operation = op_name;
15918 method_ = "PUT";
15919 url;
15920 status = Requests.Response.status_code response;
15921 body;
15922 parsed_body;
15923 })
15924end
15925
15926module SyncMemoryV1 = struct
15927 module Types = struct
15928 module T = struct
15929 type t = {
15930 created_at : Ptime.t;
15931 data : Jsont.json;
15932 deleted_at : Ptime.t option;
15933 hide_at : Ptime.t option;
15934 id : string;
15935 is_saved : bool;
15936 memory_at : Ptime.t;
15937 owner_id : string;
15938 seen_at : Ptime.t option;
15939 show_at : Ptime.t option;
15940 type_ : Memory.Type.t;
15941 updated_at : Ptime.t;
15942 }
15943 end
15944 end
15945
15946 module T = struct
15947 include Types.T
15948
15949 let v ~created_at ~data ~id ~is_saved ~memory_at ~owner_id ~type_ ~updated_at ?deleted_at ?hide_at ?seen_at ?show_at () = { created_at; data; deleted_at; hide_at; id; is_saved; memory_at; owner_id; seen_at; show_at; type_; updated_at }
15950
15951 let created_at t = t.created_at
15952 let data t = t.data
15953 let deleted_at t = t.deleted_at
15954 let hide_at t = t.hide_at
15955 let id t = t.id
15956 let is_saved t = t.is_saved
15957 let memory_at t = t.memory_at
15958 let owner_id t = t.owner_id
15959 let seen_at t = t.seen_at
15960 let show_at t = t.show_at
15961 let type_ t = t.type_
15962 let updated_at t = t.updated_at
15963
15964 let jsont : t Jsont.t =
15965 Jsont.Object.map ~kind:"SyncMemoryV1"
15966 (fun created_at data deleted_at hide_at id is_saved memory_at owner_id seen_at show_at type_ updated_at -> { created_at; data; deleted_at; hide_at; id; is_saved; memory_at; owner_id; seen_at; show_at; type_; updated_at })
15967 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
15968 |> Jsont.Object.mem "data" Jsont.json ~enc:(fun r -> r.data)
15969 |> Jsont.Object.mem "deletedAt" Openapi.Runtime.nullable_ptime
15970 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.deleted_at)
15971 |> Jsont.Object.mem "hideAt" Openapi.Runtime.nullable_ptime
15972 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.hide_at)
15973 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
15974 |> Jsont.Object.mem "isSaved" Jsont.bool ~enc:(fun r -> r.is_saved)
15975 |> Jsont.Object.mem "memoryAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.memory_at)
15976 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
15977 |> Jsont.Object.mem "seenAt" Openapi.Runtime.nullable_ptime
15978 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.seen_at)
15979 |> Jsont.Object.mem "showAt" Openapi.Runtime.nullable_ptime
15980 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.show_at)
15981 |> Jsont.Object.mem "type" Memory.Type.jsont ~enc:(fun r -> r.type_)
15982 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
15983 |> Jsont.Object.skip_unknown
15984 |> Jsont.Object.finish
15985 end
15986end
15987
15988module Duplicate = struct
15989 module Types = struct
15990 module ResponseDto = struct
15991 type t = {
15992 assets : Asset.ResponseDto.t list;
15993 duplicate_id : string;
15994 }
15995 end
15996 end
15997
15998 module ResponseDto = struct
15999 include Types.ResponseDto
16000
16001 let v ~assets ~duplicate_id () = { assets; duplicate_id }
16002
16003 let assets t = t.assets
16004 let duplicate_id t = t.duplicate_id
16005
16006 let jsont : t Jsont.t =
16007 Jsont.Object.map ~kind:"DuplicateResponseDto"
16008 (fun assets duplicate_id -> { assets; duplicate_id })
16009 |> Jsont.Object.mem "assets" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.assets)
16010 |> Jsont.Object.mem "duplicateId" Jsont.string ~enc:(fun r -> r.duplicate_id)
16011 |> Jsont.Object.skip_unknown
16012 |> Jsont.Object.finish
16013 end
16014
16015 (** Retrieve duplicates
16016
16017 Retrieve a list of duplicate assets available to the authenticated user. *)
16018 let get_asset_duplicates client () =
16019 let op_name = "get_asset_duplicates" in
16020 let url_path = "/duplicates" in
16021 let query = "" in
16022 let url = client.base_url ^ url_path ^ query in
16023 let response =
16024 try Requests.get client.session url
16025 with Eio.Io _ as ex ->
16026 let bt = Printexc.get_raw_backtrace () in
16027 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
16028 in
16029 if Requests.Response.ok response then
16030 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
16031 else
16032 let body = Requests.Response.text response in
16033 let parsed_body =
16034 match Jsont_bytesrw.decode_string Jsont.json body with
16035 | Ok json -> Some (Openapi.Runtime.Json json)
16036 | Error _ -> Some (Openapi.Runtime.Raw body)
16037 in
16038 raise (Openapi.Runtime.Api_error {
16039 operation = op_name;
16040 method_ = "GET";
16041 url;
16042 status = Requests.Response.status_code response;
16043 body;
16044 parsed_body;
16045 })
16046end
16047
16048module AssetDeltaSync = struct
16049 module Types = struct
16050 module ResponseDto = struct
16051 type t = {
16052 deleted : string list;
16053 needs_full_sync : bool;
16054 upserted : Asset.ResponseDto.t list;
16055 }
16056 end
16057
16058 module Dto = struct
16059 type t = {
16060 updated_after : Ptime.t;
16061 user_ids : string list;
16062 }
16063 end
16064 end
16065
16066 module ResponseDto = struct
16067 include Types.ResponseDto
16068
16069 let v ~deleted ~needs_full_sync ~upserted () = { deleted; needs_full_sync; upserted }
16070
16071 let deleted t = t.deleted
16072 let needs_full_sync t = t.needs_full_sync
16073 let upserted t = t.upserted
16074
16075 let jsont : t Jsont.t =
16076 Jsont.Object.map ~kind:"AssetDeltaSyncResponseDto"
16077 (fun deleted needs_full_sync upserted -> { deleted; needs_full_sync; upserted })
16078 |> Jsont.Object.mem "deleted" (Jsont.list Jsont.string) ~enc:(fun r -> r.deleted)
16079 |> Jsont.Object.mem "needsFullSync" Jsont.bool ~enc:(fun r -> r.needs_full_sync)
16080 |> Jsont.Object.mem "upserted" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.upserted)
16081 |> Jsont.Object.skip_unknown
16082 |> Jsont.Object.finish
16083 end
16084
16085 module Dto = struct
16086 include Types.Dto
16087
16088 let v ~updated_after ~user_ids () = { updated_after; user_ids }
16089
16090 let updated_after t = t.updated_after
16091 let user_ids t = t.user_ids
16092
16093 let jsont : t Jsont.t =
16094 Jsont.Object.map ~kind:"AssetDeltaSyncDto"
16095 (fun updated_after user_ids -> { updated_after; user_ids })
16096 |> Jsont.Object.mem "updatedAfter" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_after)
16097 |> Jsont.Object.mem "userIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.user_ids)
16098 |> Jsont.Object.skip_unknown
16099 |> Jsont.Object.finish
16100 end
16101
16102 (** Get delta sync for user
16103
16104 Retrieve changed assets since the last sync for the authenticated user. *)
16105 let get_delta_sync ~body client () =
16106 let op_name = "get_delta_sync" in
16107 let url_path = "/sync/delta-sync" in
16108 let query = "" in
16109 let url = client.base_url ^ url_path ^ query in
16110 let response =
16111 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
16112 with Eio.Io _ as ex ->
16113 let bt = Printexc.get_raw_backtrace () in
16114 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
16115 in
16116 if Requests.Response.ok response then
16117 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
16118 else
16119 let body = Requests.Response.text response in
16120 let parsed_body =
16121 match Jsont_bytesrw.decode_string Jsont.json body with
16122 | Ok json -> Some (Openapi.Runtime.Json json)
16123 | Error _ -> Some (Openapi.Runtime.Raw body)
16124 in
16125 raise (Openapi.Runtime.Api_error {
16126 operation = op_name;
16127 method_ = "POST";
16128 url;
16129 status = Requests.Response.status_code response;
16130 body;
16131 parsed_body;
16132 })
16133end
16134
16135module AssetFaceUpdate = struct
16136 module Types = struct
16137 module Item = struct
16138 type t = {
16139 asset_id : string;
16140 person_id : string;
16141 }
16142 end
16143 end
16144
16145 module Item = struct
16146 include Types.Item
16147
16148 let v ~asset_id ~person_id () = { asset_id; person_id }
16149
16150 let asset_id t = t.asset_id
16151 let person_id t = t.person_id
16152
16153 let jsont : t Jsont.t =
16154 Jsont.Object.map ~kind:"AssetFaceUpdateItem"
16155 (fun asset_id person_id -> { asset_id; person_id })
16156 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
16157 |> Jsont.Object.mem "personId" Jsont.string ~enc:(fun r -> r.person_id)
16158 |> Jsont.Object.skip_unknown
16159 |> Jsont.Object.finish
16160 end
16161end
16162
16163module AssetFaceDelete = struct
16164 module Types = struct
16165 module Dto = struct
16166 type t = {
16167 force : bool;
16168 }
16169 end
16170 end
16171
16172 module Dto = struct
16173 include Types.Dto
16174
16175 let v ~force () = { force }
16176
16177 let force t = t.force
16178
16179 let jsont : t Jsont.t =
16180 Jsont.Object.map ~kind:"AssetFaceDeleteDto"
16181 (fun force -> { force })
16182 |> Jsont.Object.mem "force" Jsont.bool ~enc:(fun r -> r.force)
16183 |> Jsont.Object.skip_unknown
16184 |> Jsont.Object.finish
16185 end
16186end
16187
16188module AssetEditActionList = struct
16189 module Types = struct
16190 module Dto = struct
16191 type t = {
16192 edits : Jsont.json list; (** list of edits *)
16193 }
16194 end
16195 end
16196
16197 module Dto = struct
16198 include Types.Dto
16199
16200 let v ~edits () = { edits }
16201
16202 let edits t = t.edits
16203
16204 let jsont : t Jsont.t =
16205 Jsont.Object.map ~kind:"AssetEditActionListDto"
16206 (fun edits -> { edits })
16207 |> Jsont.Object.mem "edits" (Openapi.Runtime.validated_list ~min_items:1 Jsont.json) ~enc:(fun r -> r.edits)
16208 |> Jsont.Object.skip_unknown
16209 |> Jsont.Object.finish
16210 end
16211end
16212
16213module AssetEdits = struct
16214 module Types = struct
16215 module Dto = struct
16216 type t = {
16217 asset_id : string;
16218 edits : Jsont.json list; (** list of edits *)
16219 }
16220 end
16221 end
16222
16223 module Dto = struct
16224 include Types.Dto
16225
16226 let v ~asset_id ~edits () = { asset_id; edits }
16227
16228 let asset_id t = t.asset_id
16229 let edits t = t.edits
16230
16231 let jsont : t Jsont.t =
16232 Jsont.Object.map ~kind:"AssetEditsDto"
16233 (fun asset_id edits -> { asset_id; edits })
16234 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
16235 |> Jsont.Object.mem "edits" (Openapi.Runtime.validated_list ~min_items:1 Jsont.json) ~enc:(fun r -> r.edits)
16236 |> Jsont.Object.skip_unknown
16237 |> Jsont.Object.finish
16238 end
16239
16240 (** Retrieve edits for an existing asset
16241
16242 Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset. *)
16243 let get_asset_edits ~id client () =
16244 let op_name = "get_asset_edits" in
16245 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/edits" in
16246 let query = "" in
16247 let url = client.base_url ^ url_path ^ query in
16248 let response =
16249 try Requests.get client.session url
16250 with Eio.Io _ as ex ->
16251 let bt = Printexc.get_raw_backtrace () in
16252 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
16253 in
16254 if Requests.Response.ok response then
16255 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
16256 else
16257 let body = Requests.Response.text response in
16258 let parsed_body =
16259 match Jsont_bytesrw.decode_string Jsont.json body with
16260 | Ok json -> Some (Openapi.Runtime.Json json)
16261 | Error _ -> Some (Openapi.Runtime.Raw body)
16262 in
16263 raise (Openapi.Runtime.Api_error {
16264 operation = op_name;
16265 method_ = "GET";
16266 url;
16267 status = Requests.Response.status_code response;
16268 body;
16269 parsed_body;
16270 })
16271
16272 (** Apply edits to an existing asset
16273
16274 Apply a series of edit actions (crop, rotate, mirror) to the specified asset. *)
16275 let edit_asset ~id ~body client () =
16276 let op_name = "edit_asset" in
16277 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/edits" in
16278 let query = "" in
16279 let url = client.base_url ^ url_path ^ query in
16280 let response =
16281 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetEditActionList.Dto.jsont body)) url
16282 with Eio.Io _ as ex ->
16283 let bt = Printexc.get_raw_backtrace () in
16284 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
16285 in
16286 if Requests.Response.ok response then
16287 Openapi.Runtime.Json.decode_json_exn Dto.jsont (Requests.Response.json response)
16288 else
16289 let body = Requests.Response.text response in
16290 let parsed_body =
16291 match Jsont_bytesrw.decode_string Jsont.json body with
16292 | Ok json -> Some (Openapi.Runtime.Json json)
16293 | Error _ -> Some (Openapi.Runtime.Raw body)
16294 in
16295 raise (Openapi.Runtime.Api_error {
16296 operation = op_name;
16297 method_ = "PUT";
16298 url;
16299 status = Requests.Response.status_code response;
16300 body;
16301 parsed_body;
16302 })
16303end
16304
16305module AssetEditAction = struct
16306 module Types = struct
16307 module T = struct
16308 type t = [
16309 | `Crop
16310 | `Rotate
16311 | `Mirror
16312 ]
16313 end
16314 end
16315
16316 module T = struct
16317 include Types.T
16318
16319 let jsont : t Jsont.t =
16320 Jsont.map Jsont.string ~kind:"AssetEditAction"
16321 ~dec:(function
16322 | "crop" -> `Crop
16323 | "rotate" -> `Rotate
16324 | "mirror" -> `Mirror
16325 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
16326 ~enc:(function
16327 | `Crop -> "crop"
16328 | `Rotate -> "rotate"
16329 | `Mirror -> "mirror")
16330 end
16331end
16332
16333module AssetEditActionRotate = struct
16334 module Types = struct
16335 module T = struct
16336 type t = {
16337 action : AssetEditAction.T.t;
16338 parameters : RotateParameters.T.t;
16339 }
16340 end
16341 end
16342
16343 module T = struct
16344 include Types.T
16345
16346 let v ~action ~parameters () = { action; parameters }
16347
16348 let action t = t.action
16349 let parameters t = t.parameters
16350
16351 let jsont : t Jsont.t =
16352 Jsont.Object.map ~kind:"AssetEditActionRotate"
16353 (fun action parameters -> { action; parameters })
16354 |> Jsont.Object.mem "action" AssetEditAction.T.jsont ~enc:(fun r -> r.action)
16355 |> Jsont.Object.mem "parameters" RotateParameters.T.jsont ~enc:(fun r -> r.parameters)
16356 |> Jsont.Object.skip_unknown
16357 |> Jsont.Object.finish
16358 end
16359end
16360
16361module AssetEditActionMirror = struct
16362 module Types = struct
16363 module T = struct
16364 type t = {
16365 action : AssetEditAction.T.t;
16366 parameters : MirrorParameters.T.t;
16367 }
16368 end
16369 end
16370
16371 module T = struct
16372 include Types.T
16373
16374 let v ~action ~parameters () = { action; parameters }
16375
16376 let action t = t.action
16377 let parameters t = t.parameters
16378
16379 let jsont : t Jsont.t =
16380 Jsont.Object.map ~kind:"AssetEditActionMirror"
16381 (fun action parameters -> { action; parameters })
16382 |> Jsont.Object.mem "action" AssetEditAction.T.jsont ~enc:(fun r -> r.action)
16383 |> Jsont.Object.mem "parameters" MirrorParameters.T.jsont ~enc:(fun r -> r.parameters)
16384 |> Jsont.Object.skip_unknown
16385 |> Jsont.Object.finish
16386 end
16387end
16388
16389module AssetEditActionCrop = struct
16390 module Types = struct
16391 module T = struct
16392 type t = {
16393 action : AssetEditAction.T.t;
16394 parameters : CropParameters.T.t;
16395 }
16396 end
16397 end
16398
16399 module T = struct
16400 include Types.T
16401
16402 let v ~action ~parameters () = { action; parameters }
16403
16404 let action t = t.action
16405 let parameters t = t.parameters
16406
16407 let jsont : t Jsont.t =
16408 Jsont.Object.map ~kind:"AssetEditActionCrop"
16409 (fun action parameters -> { action; parameters })
16410 |> Jsont.Object.mem "action" AssetEditAction.T.jsont ~enc:(fun r -> r.action)
16411 |> Jsont.Object.mem "parameters" CropParameters.T.jsont ~enc:(fun r -> r.parameters)
16412 |> Jsont.Object.skip_unknown
16413 |> Jsont.Object.finish
16414 end
16415end
16416
16417module AssetCopy = struct
16418 module Types = struct
16419 module Dto = struct
16420 type t = {
16421 albums : bool;
16422 favorite : bool;
16423 shared_links : bool;
16424 sidecar : bool;
16425 source_id : string;
16426 stack : bool;
16427 target_id : string;
16428 }
16429 end
16430 end
16431
16432 module Dto = struct
16433 include Types.Dto
16434
16435 let v ~source_id ~target_id ?(albums=true) ?(favorite=true) ?(shared_links=true) ?(sidecar=true) ?(stack=true) () = { albums; favorite; shared_links; sidecar; source_id; stack; target_id }
16436
16437 let albums t = t.albums
16438 let favorite t = t.favorite
16439 let shared_links t = t.shared_links
16440 let sidecar t = t.sidecar
16441 let source_id t = t.source_id
16442 let stack t = t.stack
16443 let target_id t = t.target_id
16444
16445 let jsont : t Jsont.t =
16446 Jsont.Object.map ~kind:"AssetCopyDto"
16447 (fun albums favorite shared_links sidecar source_id stack target_id -> { albums; favorite; shared_links; sidecar; source_id; stack; target_id })
16448 |> Jsont.Object.mem "albums" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.albums)
16449 |> Jsont.Object.mem "favorite" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.favorite)
16450 |> Jsont.Object.mem "sharedLinks" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.shared_links)
16451 |> Jsont.Object.mem "sidecar" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.sidecar)
16452 |> Jsont.Object.mem "sourceId" Jsont.string ~enc:(fun r -> r.source_id)
16453 |> Jsont.Object.mem "stack" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.stack)
16454 |> Jsont.Object.mem "targetId" Jsont.string ~enc:(fun r -> r.target_id)
16455 |> Jsont.Object.skip_unknown
16456 |> Jsont.Object.finish
16457 end
16458end
16459
16460module AssetBulkUploadCheck = struct
16461 module Types = struct
16462 module Result = struct
16463 type t = {
16464 action : string;
16465 asset_id : string option;
16466 id : string;
16467 is_trashed : bool option;
16468 reason : string option;
16469 }
16470 end
16471
16472 module ResponseDto = struct
16473 type t = {
16474 results : Result.t list;
16475 }
16476 end
16477
16478 module Item = struct
16479 type t = {
16480 checksum : string; (** base64 or hex encoded sha1 hash *)
16481 id : string;
16482 }
16483 end
16484
16485 module Dto = struct
16486 type t = {
16487 assets : Item.t list;
16488 }
16489 end
16490 end
16491
16492 module Result = struct
16493 include Types.Result
16494
16495 let v ~action ~id ?asset_id ?is_trashed ?reason () = { action; asset_id; id; is_trashed; reason }
16496
16497 let action t = t.action
16498 let asset_id t = t.asset_id
16499 let id t = t.id
16500 let is_trashed t = t.is_trashed
16501 let reason t = t.reason
16502
16503 let jsont : t Jsont.t =
16504 Jsont.Object.map ~kind:"AssetBulkUploadCheckResult"
16505 (fun action asset_id id is_trashed reason -> { action; asset_id; id; is_trashed; reason })
16506 |> Jsont.Object.mem "action" Jsont.string ~enc:(fun r -> r.action)
16507 |> Jsont.Object.opt_mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
16508 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
16509 |> Jsont.Object.opt_mem "isTrashed" Jsont.bool ~enc:(fun r -> r.is_trashed)
16510 |> Jsont.Object.opt_mem "reason" Jsont.string ~enc:(fun r -> r.reason)
16511 |> Jsont.Object.skip_unknown
16512 |> Jsont.Object.finish
16513 end
16514
16515 module ResponseDto = struct
16516 include Types.ResponseDto
16517
16518 let v ~results () = { results }
16519
16520 let results t = t.results
16521
16522 let jsont : t Jsont.t =
16523 Jsont.Object.map ~kind:"AssetBulkUploadCheckResponseDto"
16524 (fun results -> { results })
16525 |> Jsont.Object.mem "results" (Jsont.list Result.jsont) ~enc:(fun r -> r.results)
16526 |> Jsont.Object.skip_unknown
16527 |> Jsont.Object.finish
16528 end
16529
16530 module Item = struct
16531 include Types.Item
16532
16533 let v ~checksum ~id () = { checksum; id }
16534
16535 let checksum t = t.checksum
16536 let id t = t.id
16537
16538 let jsont : t Jsont.t =
16539 Jsont.Object.map ~kind:"AssetBulkUploadCheckItem"
16540 (fun checksum id -> { checksum; id })
16541 |> Jsont.Object.mem "checksum" Jsont.string ~enc:(fun r -> r.checksum)
16542 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
16543 |> Jsont.Object.skip_unknown
16544 |> Jsont.Object.finish
16545 end
16546
16547 module Dto = struct
16548 include Types.Dto
16549
16550 let v ~assets () = { assets }
16551
16552 let assets t = t.assets
16553
16554 let jsont : t Jsont.t =
16555 Jsont.Object.map ~kind:"AssetBulkUploadCheckDto"
16556 (fun assets -> { assets })
16557 |> Jsont.Object.mem "assets" (Jsont.list Item.jsont) ~enc:(fun r -> r.assets)
16558 |> Jsont.Object.skip_unknown
16559 |> Jsont.Object.finish
16560 end
16561
16562 (** Check bulk upload
16563
16564 Determine which assets have already been uploaded to the server based on their SHA1 checksums. *)
16565 let check_bulk_upload ~body client () =
16566 let op_name = "check_bulk_upload" in
16567 let url_path = "/assets/bulk-upload-check" in
16568 let query = "" in
16569 let url = client.base_url ^ url_path ^ query in
16570 let response =
16571 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Dto.jsont body)) url
16572 with Eio.Io _ as ex ->
16573 let bt = Printexc.get_raw_backtrace () in
16574 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
16575 in
16576 if Requests.Response.ok response then
16577 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
16578 else
16579 let body = Requests.Response.text response in
16580 let parsed_body =
16581 match Jsont_bytesrw.decode_string Jsont.json body with
16582 | Ok json -> Some (Openapi.Runtime.Json json)
16583 | Error _ -> Some (Openapi.Runtime.Raw body)
16584 in
16585 raise (Openapi.Runtime.Api_error {
16586 operation = op_name;
16587 method_ = "POST";
16588 url;
16589 status = Requests.Response.status_code response;
16590 body;
16591 parsed_body;
16592 })
16593end
16594
16595module AssetBulkDelete = struct
16596 module Types = struct
16597 module Dto = struct
16598 type t = {
16599 force : bool option;
16600 ids : string list;
16601 }
16602 end
16603 end
16604
16605 module Dto = struct
16606 include Types.Dto
16607
16608 let v ~ids ?force () = { force; ids }
16609
16610 let force t = t.force
16611 let ids t = t.ids
16612
16613 let jsont : t Jsont.t =
16614 Jsont.Object.map ~kind:"AssetBulkDeleteDto"
16615 (fun force ids -> { force; ids })
16616 |> Jsont.Object.opt_mem "force" Jsont.bool ~enc:(fun r -> r.force)
16617 |> Jsont.Object.mem "ids" (Jsont.list Jsont.string) ~enc:(fun r -> r.ids)
16618 |> Jsont.Object.skip_unknown
16619 |> Jsont.Object.finish
16620 end
16621end
16622
16623module AlbumUserRole = struct
16624 module Types = struct
16625 module T = struct
16626 type t = [
16627 | `Editor
16628 | `Viewer
16629 ]
16630 end
16631 end
16632
16633 module T = struct
16634 include Types.T
16635
16636 let jsont : t Jsont.t =
16637 Jsont.map Jsont.string ~kind:"AlbumUserRole"
16638 ~dec:(function
16639 | "editor" -> `Editor
16640 | "viewer" -> `Viewer
16641 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
16642 ~enc:(function
16643 | `Editor -> "editor"
16644 | `Viewer -> "viewer")
16645 end
16646end
16647
16648module UpdateAlbumUser = struct
16649 module Types = struct
16650 module Dto = struct
16651 type t = {
16652 role : AlbumUserRole.T.t;
16653 }
16654 end
16655 end
16656
16657 module Dto = struct
16658 include Types.Dto
16659
16660 let v ~role () = { role }
16661
16662 let role t = t.role
16663
16664 let jsont : t Jsont.t =
16665 Jsont.Object.map ~kind:"UpdateAlbumUserDto"
16666 (fun role -> { role })
16667 |> Jsont.Object.mem "role" AlbumUserRole.T.jsont ~enc:(fun r -> r.role)
16668 |> Jsont.Object.skip_unknown
16669 |> Jsont.Object.finish
16670 end
16671end
16672
16673module SyncAlbumUserV1 = struct
16674 module Types = struct
16675 module T = struct
16676 type t = {
16677 album_id : string;
16678 role : AlbumUserRole.T.t;
16679 user_id : string;
16680 }
16681 end
16682 end
16683
16684 module T = struct
16685 include Types.T
16686
16687 let v ~album_id ~role ~user_id () = { album_id; role; user_id }
16688
16689 let album_id t = t.album_id
16690 let role t = t.role
16691 let user_id t = t.user_id
16692
16693 let jsont : t Jsont.t =
16694 Jsont.Object.map ~kind:"SyncAlbumUserV1"
16695 (fun album_id role user_id -> { album_id; role; user_id })
16696 |> Jsont.Object.mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
16697 |> Jsont.Object.mem "role" AlbumUserRole.T.jsont ~enc:(fun r -> r.role)
16698 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
16699 |> Jsont.Object.skip_unknown
16700 |> Jsont.Object.finish
16701 end
16702end
16703
16704module AlbumUserAdd = struct
16705 module Types = struct
16706 module Dto = struct
16707 type t = {
16708 role : AlbumUserRole.T.t;
16709 user_id : string;
16710 }
16711 end
16712 end
16713
16714 module Dto = struct
16715 include Types.Dto
16716
16717 let v ~user_id ?(role=`Editor) () = { role; user_id }
16718
16719 let role t = t.role
16720 let user_id t = t.user_id
16721
16722 let jsont : t Jsont.t =
16723 Jsont.Object.map ~kind:"AlbumUserAddDto"
16724 (fun role user_id -> { role; user_id })
16725 |> Jsont.Object.mem "role" AlbumUserRole.T.jsont ~dec_absent:`Editor ~enc:(fun r -> r.role)
16726 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
16727 |> Jsont.Object.skip_unknown
16728 |> Jsont.Object.finish
16729 end
16730end
16731
16732module AddUsers = struct
16733 module Types = struct
16734 module Dto = struct
16735 type t = {
16736 album_users : AlbumUserAdd.Dto.t list;
16737 }
16738 end
16739 end
16740
16741 module Dto = struct
16742 include Types.Dto
16743
16744 let v ~album_users () = { album_users }
16745
16746 let album_users t = t.album_users
16747
16748 let jsont : t Jsont.t =
16749 Jsont.Object.map ~kind:"AddUsersDto"
16750 (fun album_users -> { album_users })
16751 |> Jsont.Object.mem "albumUsers" (Openapi.Runtime.validated_list ~min_items:1 AlbumUserAdd.Dto.jsont) ~enc:(fun r -> r.album_users)
16752 |> Jsont.Object.skip_unknown
16753 |> Jsont.Object.finish
16754 end
16755end
16756
16757module AlbumUser = struct
16758 module Types = struct
16759 module ResponseDto = struct
16760 type t = {
16761 role : AlbumUserRole.T.t;
16762 user : User.ResponseDto.t;
16763 }
16764 end
16765
16766 module CreateDto = struct
16767 type t = {
16768 role : AlbumUserRole.T.t;
16769 user_id : string;
16770 }
16771 end
16772 end
16773
16774 module ResponseDto = struct
16775 include Types.ResponseDto
16776
16777 let v ~role ~user () = { role; user }
16778
16779 let role t = t.role
16780 let user t = t.user
16781
16782 let jsont : t Jsont.t =
16783 Jsont.Object.map ~kind:"AlbumUserResponseDto"
16784 (fun role user -> { role; user })
16785 |> Jsont.Object.mem "role" AlbumUserRole.T.jsont ~enc:(fun r -> r.role)
16786 |> Jsont.Object.mem "user" User.ResponseDto.jsont ~enc:(fun r -> r.user)
16787 |> Jsont.Object.skip_unknown
16788 |> Jsont.Object.finish
16789 end
16790
16791 module CreateDto = struct
16792 include Types.CreateDto
16793
16794 let v ~role ~user_id () = { role; user_id }
16795
16796 let role t = t.role
16797 let user_id t = t.user_id
16798
16799 let jsont : t Jsont.t =
16800 Jsont.Object.map ~kind:"AlbumUserCreateDto"
16801 (fun role user_id -> { role; user_id })
16802 |> Jsont.Object.mem "role" AlbumUserRole.T.jsont ~enc:(fun r -> r.role)
16803 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
16804 |> Jsont.Object.skip_unknown
16805 |> Jsont.Object.finish
16806 end
16807end
16808
16809module CreateAlbum = struct
16810 module Types = struct
16811 module Dto = struct
16812 type t = {
16813 album_name : string;
16814 album_users : AlbumUser.CreateDto.t list option;
16815 asset_ids : string list option;
16816 description : string option;
16817 }
16818 end
16819 end
16820
16821 module Dto = struct
16822 include Types.Dto
16823
16824 let v ~album_name ?album_users ?asset_ids ?description () = { album_name; album_users; asset_ids; description }
16825
16826 let album_name t = t.album_name
16827 let album_users t = t.album_users
16828 let asset_ids t = t.asset_ids
16829 let description t = t.description
16830
16831 let jsont : t Jsont.t =
16832 Jsont.Object.map ~kind:"CreateAlbumDto"
16833 (fun album_name album_users asset_ids description -> { album_name; album_users; asset_ids; description })
16834 |> Jsont.Object.mem "albumName" Jsont.string ~enc:(fun r -> r.album_name)
16835 |> Jsont.Object.opt_mem "albumUsers" (Jsont.list AlbumUser.CreateDto.jsont) ~enc:(fun r -> r.album_users)
16836 |> Jsont.Object.opt_mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
16837 |> Jsont.Object.opt_mem "description" Jsont.string ~enc:(fun r -> r.description)
16838 |> Jsont.Object.skip_unknown
16839 |> Jsont.Object.finish
16840 end
16841end
16842
16843module Album = struct
16844 module Types = struct
16845 module ResponseDto = struct
16846 type t = {
16847 album_name : string;
16848 album_thumbnail_asset_id : string option;
16849 album_users : AlbumUser.ResponseDto.t list;
16850 asset_count : int;
16851 assets : Asset.ResponseDto.t list;
16852 contributor_counts : ContributorCount.ResponseDto.t list option;
16853 created_at : Ptime.t;
16854 description : string;
16855 end_date : Ptime.t option;
16856 has_shared_link : bool;
16857 id : string;
16858 is_activity_enabled : bool;
16859 last_modified_asset_timestamp : Ptime.t option;
16860 order : AssetOrder.T.t option;
16861 owner : User.ResponseDto.t;
16862 owner_id : string;
16863 shared : bool;
16864 start_date : Ptime.t option;
16865 updated_at : Ptime.t;
16866 }
16867 end
16868 end
16869
16870 module ResponseDto = struct
16871 include Types.ResponseDto
16872
16873 let v ~album_name ~album_users ~asset_count ~assets ~created_at ~description ~has_shared_link ~id ~is_activity_enabled ~owner ~owner_id ~shared ~updated_at ?album_thumbnail_asset_id ?contributor_counts ?end_date ?last_modified_asset_timestamp ?order ?start_date () = { album_name; album_thumbnail_asset_id; album_users; asset_count; assets; contributor_counts; created_at; description; end_date; has_shared_link; id; is_activity_enabled; last_modified_asset_timestamp; order; owner; owner_id; shared; start_date; updated_at }
16874
16875 let album_name t = t.album_name
16876 let album_thumbnail_asset_id t = t.album_thumbnail_asset_id
16877 let album_users t = t.album_users
16878 let asset_count t = t.asset_count
16879 let assets t = t.assets
16880 let contributor_counts t = t.contributor_counts
16881 let created_at t = t.created_at
16882 let description t = t.description
16883 let end_date t = t.end_date
16884 let has_shared_link t = t.has_shared_link
16885 let id t = t.id
16886 let is_activity_enabled t = t.is_activity_enabled
16887 let last_modified_asset_timestamp t = t.last_modified_asset_timestamp
16888 let order t = t.order
16889 let owner t = t.owner
16890 let owner_id t = t.owner_id
16891 let shared t = t.shared
16892 let start_date t = t.start_date
16893 let updated_at t = t.updated_at
16894
16895 let jsont : t Jsont.t =
16896 Jsont.Object.map ~kind:"AlbumResponseDto"
16897 (fun album_name album_thumbnail_asset_id album_users asset_count assets contributor_counts created_at description end_date has_shared_link id is_activity_enabled last_modified_asset_timestamp order owner owner_id shared start_date updated_at -> { album_name; album_thumbnail_asset_id; album_users; asset_count; assets; contributor_counts; created_at; description; end_date; has_shared_link; id; is_activity_enabled; last_modified_asset_timestamp; order; owner; owner_id; shared; start_date; updated_at })
16898 |> Jsont.Object.mem "albumName" Jsont.string ~enc:(fun r -> r.album_name)
16899 |> Jsont.Object.mem "albumThumbnailAssetId" Openapi.Runtime.nullable_string
16900 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.album_thumbnail_asset_id)
16901 |> Jsont.Object.mem "albumUsers" (Jsont.list AlbumUser.ResponseDto.jsont) ~enc:(fun r -> r.album_users)
16902 |> Jsont.Object.mem "assetCount" Jsont.int ~enc:(fun r -> r.asset_count)
16903 |> Jsont.Object.mem "assets" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.assets)
16904 |> Jsont.Object.opt_mem "contributorCounts" (Jsont.list ContributorCount.ResponseDto.jsont) ~enc:(fun r -> r.contributor_counts)
16905 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
16906 |> Jsont.Object.mem "description" Jsont.string ~enc:(fun r -> r.description)
16907 |> Jsont.Object.opt_mem "endDate" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.end_date)
16908 |> Jsont.Object.mem "hasSharedLink" Jsont.bool ~enc:(fun r -> r.has_shared_link)
16909 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
16910 |> Jsont.Object.mem "isActivityEnabled" Jsont.bool ~enc:(fun r -> r.is_activity_enabled)
16911 |> Jsont.Object.opt_mem "lastModifiedAssetTimestamp" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.last_modified_asset_timestamp)
16912 |> Jsont.Object.opt_mem "order" AssetOrder.T.jsont ~enc:(fun r -> r.order)
16913 |> Jsont.Object.mem "owner" User.ResponseDto.jsont ~enc:(fun r -> r.owner)
16914 |> Jsont.Object.mem "ownerId" Jsont.string ~enc:(fun r -> r.owner_id)
16915 |> Jsont.Object.mem "shared" Jsont.bool ~enc:(fun r -> r.shared)
16916 |> Jsont.Object.opt_mem "startDate" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.start_date)
16917 |> Jsont.Object.mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
16918 |> Jsont.Object.skip_unknown
16919 |> Jsont.Object.finish
16920 end
16921
16922 (** List all albums
16923
16924 Retrieve a list of albums available to the authenticated user.
16925 @param asset_id Only returns albums that contain the asset
16926 Ignores the shared parameter
16927 undefined: get all albums
16928 *)
16929 let get_all_albums ?asset_id ?shared client () =
16930 let op_name = "get_all_albums" in
16931 let url_path = "/albums" in
16932 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"assetId" ~value:asset_id; Openapi.Runtime.Query.optional ~key:"shared" ~value:shared]) in
16933 let url = client.base_url ^ url_path ^ query in
16934 let response =
16935 try Requests.get client.session url
16936 with Eio.Io _ as ex ->
16937 let bt = Printexc.get_raw_backtrace () in
16938 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
16939 in
16940 if Requests.Response.ok response then
16941 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
16942 else
16943 let body = Requests.Response.text response in
16944 let parsed_body =
16945 match Jsont_bytesrw.decode_string Jsont.json body with
16946 | Ok json -> Some (Openapi.Runtime.Json json)
16947 | Error _ -> Some (Openapi.Runtime.Raw body)
16948 in
16949 raise (Openapi.Runtime.Api_error {
16950 operation = op_name;
16951 method_ = "GET";
16952 url;
16953 status = Requests.Response.status_code response;
16954 body;
16955 parsed_body;
16956 })
16957
16958 (** Create an album
16959
16960 Create a new album. The album can also be created with initial users and assets. *)
16961 let create_album ~body client () =
16962 let op_name = "create_album" in
16963 let url_path = "/albums" in
16964 let query = "" in
16965 let url = client.base_url ^ url_path ^ query in
16966 let response =
16967 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateAlbum.Dto.jsont body)) url
16968 with Eio.Io _ as ex ->
16969 let bt = Printexc.get_raw_backtrace () in
16970 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
16971 in
16972 if Requests.Response.ok response then
16973 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
16974 else
16975 let body = Requests.Response.text response in
16976 let parsed_body =
16977 match Jsont_bytesrw.decode_string Jsont.json body with
16978 | Ok json -> Some (Openapi.Runtime.Json json)
16979 | Error _ -> Some (Openapi.Runtime.Raw body)
16980 in
16981 raise (Openapi.Runtime.Api_error {
16982 operation = op_name;
16983 method_ = "POST";
16984 url;
16985 status = Requests.Response.status_code response;
16986 body;
16987 parsed_body;
16988 })
16989
16990 (** Retrieve an album
16991
16992 Retrieve information about a specific album by its ID. *)
16993 let get_album_info ~id ?key ?slug ?without_assets client () =
16994 let op_name = "get_album_info" in
16995 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}" in
16996 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug; Openapi.Runtime.Query.optional ~key:"withoutAssets" ~value:without_assets]) in
16997 let url = client.base_url ^ url_path ^ query in
16998 let response =
16999 try Requests.get client.session url
17000 with Eio.Io _ as ex ->
17001 let bt = Printexc.get_raw_backtrace () in
17002 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17003 in
17004 if Requests.Response.ok response then
17005 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17006 else
17007 let body = Requests.Response.text response in
17008 let parsed_body =
17009 match Jsont_bytesrw.decode_string Jsont.json body with
17010 | Ok json -> Some (Openapi.Runtime.Json json)
17011 | Error _ -> Some (Openapi.Runtime.Raw body)
17012 in
17013 raise (Openapi.Runtime.Api_error {
17014 operation = op_name;
17015 method_ = "GET";
17016 url;
17017 status = Requests.Response.status_code response;
17018 body;
17019 parsed_body;
17020 })
17021
17022 (** Update an album
17023
17024 Update the information of a specific album by its ID. This endpoint can be used to update the album name, description, sort order, etc. However, it is not used to add or remove assets or users from the album. *)
17025 let update_album_info ~id ~body client () =
17026 let op_name = "update_album_info" in
17027 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}" in
17028 let query = "" in
17029 let url = client.base_url ^ url_path ^ query in
17030 let response =
17031 try Requests.patch client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateAlbum.Dto.jsont body)) url
17032 with Eio.Io _ as ex ->
17033 let bt = Printexc.get_raw_backtrace () in
17034 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PATCH" url
17035 in
17036 if Requests.Response.ok response then
17037 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17038 else
17039 let body = Requests.Response.text response in
17040 let parsed_body =
17041 match Jsont_bytesrw.decode_string Jsont.json body with
17042 | Ok json -> Some (Openapi.Runtime.Json json)
17043 | Error _ -> Some (Openapi.Runtime.Raw body)
17044 in
17045 raise (Openapi.Runtime.Api_error {
17046 operation = op_name;
17047 method_ = "PATCH";
17048 url;
17049 status = Requests.Response.status_code response;
17050 body;
17051 parsed_body;
17052 })
17053
17054 (** Share album with users
17055
17056 Share an album with multiple users. Each user can be given a specific role in the album. *)
17057 let add_users_to_album ~id ~body client () =
17058 let op_name = "add_users_to_album" in
17059 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}/users" in
17060 let query = "" in
17061 let url = client.base_url ^ url_path ^ query in
17062 let response =
17063 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AddUsers.Dto.jsont body)) url
17064 with Eio.Io _ as ex ->
17065 let bt = Printexc.get_raw_backtrace () in
17066 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
17067 in
17068 if Requests.Response.ok response then
17069 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17070 else
17071 let body = Requests.Response.text response in
17072 let parsed_body =
17073 match Jsont_bytesrw.decode_string Jsont.json body with
17074 | Ok json -> Some (Openapi.Runtime.Json json)
17075 | Error _ -> Some (Openapi.Runtime.Raw body)
17076 in
17077 raise (Openapi.Runtime.Api_error {
17078 operation = op_name;
17079 method_ = "PUT";
17080 url;
17081 status = Requests.Response.status_code response;
17082 body;
17083 parsed_body;
17084 })
17085end
17086
17087module SharedLink = struct
17088 module Types = struct
17089 module Type = struct
17090 type t = [
17091 | `Album
17092 | `Individual
17093 ]
17094 end
17095
17096 module ResponseDto = struct
17097 type t = {
17098 album : Album.ResponseDto.t option;
17099 allow_download : bool;
17100 allow_upload : bool;
17101 assets : Asset.ResponseDto.t list;
17102 created_at : Ptime.t;
17103 description : string option;
17104 expires_at : Ptime.t option;
17105 id : string;
17106 key : string;
17107 password : string option;
17108 show_metadata : bool;
17109 slug : string option;
17110 token : string option;
17111 type_ : Type.t;
17112 user_id : string;
17113 }
17114 end
17115
17116 module CreateDto = struct
17117 type t = {
17118 album_id : string option;
17119 allow_download : bool;
17120 allow_upload : bool option;
17121 asset_ids : string list option;
17122 description : string option;
17123 expires_at : Ptime.t option;
17124 password : string option;
17125 show_metadata : bool;
17126 slug : string option;
17127 type_ : Type.t;
17128 }
17129 end
17130 end
17131
17132 module Type = struct
17133 include Types.Type
17134
17135 let jsont : t Jsont.t =
17136 Jsont.map Jsont.string ~kind:"SharedLinkType"
17137 ~dec:(function
17138 | "ALBUM" -> `Album
17139 | "INDIVIDUAL" -> `Individual
17140 | s -> Jsont.Error.msgf Jsont.Meta.none "Unknown value: %s" s)
17141 ~enc:(function
17142 | `Album -> "ALBUM"
17143 | `Individual -> "INDIVIDUAL")
17144 end
17145
17146 module ResponseDto = struct
17147 include Types.ResponseDto
17148
17149 let v ~allow_download ~allow_upload ~assets ~created_at ~id ~key ~show_metadata ~type_ ~user_id ?album ?description ?expires_at ?password ?slug ?token () = { album; allow_download; allow_upload; assets; created_at; description; expires_at; id; key; password; show_metadata; slug; token; type_; user_id }
17150
17151 let album t = t.album
17152 let allow_download t = t.allow_download
17153 let allow_upload t = t.allow_upload
17154 let assets t = t.assets
17155 let created_at t = t.created_at
17156 let description t = t.description
17157 let expires_at t = t.expires_at
17158 let id t = t.id
17159 let key t = t.key
17160 let password t = t.password
17161 let show_metadata t = t.show_metadata
17162 let slug t = t.slug
17163 let token t = t.token
17164 let type_ t = t.type_
17165 let user_id t = t.user_id
17166
17167 let jsont : t Jsont.t =
17168 Jsont.Object.map ~kind:"SharedLinkResponseDto"
17169 (fun album allow_download allow_upload assets created_at description expires_at id key password show_metadata slug token type_ user_id -> { album; allow_download; allow_upload; assets; created_at; description; expires_at; id; key; password; show_metadata; slug; token; type_; user_id })
17170 |> Jsont.Object.opt_mem "album" Album.ResponseDto.jsont ~enc:(fun r -> r.album)
17171 |> Jsont.Object.mem "allowDownload" Jsont.bool ~enc:(fun r -> r.allow_download)
17172 |> Jsont.Object.mem "allowUpload" Jsont.bool ~enc:(fun r -> r.allow_upload)
17173 |> Jsont.Object.mem "assets" (Jsont.list Asset.ResponseDto.jsont) ~enc:(fun r -> r.assets)
17174 |> Jsont.Object.mem "createdAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.created_at)
17175 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
17176 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
17177 |> Jsont.Object.mem "expiresAt" Openapi.Runtime.nullable_ptime
17178 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.expires_at)
17179 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
17180 |> Jsont.Object.mem "key" Jsont.string ~enc:(fun r -> r.key)
17181 |> Jsont.Object.mem "password" Openapi.Runtime.nullable_string
17182 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.password)
17183 |> Jsont.Object.mem "showMetadata" Jsont.bool ~enc:(fun r -> r.show_metadata)
17184 |> Jsont.Object.mem "slug" Openapi.Runtime.nullable_string
17185 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.slug)
17186 |> Jsont.Object.mem "token" Openapi.Runtime.nullable_string
17187 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.token)
17188 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
17189 |> Jsont.Object.mem "userId" Jsont.string ~enc:(fun r -> r.user_id)
17190 |> Jsont.Object.skip_unknown
17191 |> Jsont.Object.finish
17192 end
17193
17194 module CreateDto = struct
17195 include Types.CreateDto
17196
17197 let v ~type_ ?(allow_download=true) ?(expires_at=None) ?(show_metadata=true) ?album_id ?allow_upload ?asset_ids ?description ?password ?slug () = { album_id; allow_download; allow_upload; asset_ids; description; expires_at; password; show_metadata; slug; type_ }
17198
17199 let album_id t = t.album_id
17200 let allow_download t = t.allow_download
17201 let allow_upload t = t.allow_upload
17202 let asset_ids t = t.asset_ids
17203 let description t = t.description
17204 let expires_at t = t.expires_at
17205 let password t = t.password
17206 let show_metadata t = t.show_metadata
17207 let slug t = t.slug
17208 let type_ t = t.type_
17209
17210 let jsont : t Jsont.t =
17211 Jsont.Object.map ~kind:"SharedLinkCreateDto"
17212 (fun album_id allow_download allow_upload asset_ids description expires_at password show_metadata slug type_ -> { album_id; allow_download; allow_upload; asset_ids; description; expires_at; password; show_metadata; slug; type_ })
17213 |> Jsont.Object.opt_mem "albumId" Jsont.string ~enc:(fun r -> r.album_id)
17214 |> Jsont.Object.mem "allowDownload" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.allow_download)
17215 |> Jsont.Object.opt_mem "allowUpload" Jsont.bool ~enc:(fun r -> r.allow_upload)
17216 |> Jsont.Object.opt_mem "assetIds" (Jsont.list Jsont.string) ~enc:(fun r -> r.asset_ids)
17217 |> Jsont.Object.mem "description" Openapi.Runtime.nullable_string
17218 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.description)
17219 |> Jsont.Object.mem "expiresAt" Openapi.Runtime.nullable_ptime
17220 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.expires_at)
17221 |> Jsont.Object.mem "password" Openapi.Runtime.nullable_string
17222 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.password)
17223 |> Jsont.Object.mem "showMetadata" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.show_metadata)
17224 |> Jsont.Object.mem "slug" Openapi.Runtime.nullable_string
17225 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.slug)
17226 |> Jsont.Object.mem "type" Type.jsont ~enc:(fun r -> r.type_)
17227 |> Jsont.Object.skip_unknown
17228 |> Jsont.Object.finish
17229 end
17230
17231 (** Retrieve all shared links
17232
17233 Retrieve a list of all shared links. *)
17234 let get_all_shared_links ?album_id ?id client () =
17235 let op_name = "get_all_shared_links" in
17236 let url_path = "/shared-links" in
17237 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"albumId" ~value:album_id; Openapi.Runtime.Query.optional ~key:"id" ~value:id]) in
17238 let url = client.base_url ^ url_path ^ query in
17239 let response =
17240 try Requests.get client.session url
17241 with Eio.Io _ as ex ->
17242 let bt = Printexc.get_raw_backtrace () in
17243 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17244 in
17245 if Requests.Response.ok response then
17246 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17247 else
17248 let body = Requests.Response.text response in
17249 let parsed_body =
17250 match Jsont_bytesrw.decode_string Jsont.json body with
17251 | Ok json -> Some (Openapi.Runtime.Json json)
17252 | Error _ -> Some (Openapi.Runtime.Raw body)
17253 in
17254 raise (Openapi.Runtime.Api_error {
17255 operation = op_name;
17256 method_ = "GET";
17257 url;
17258 status = Requests.Response.status_code response;
17259 body;
17260 parsed_body;
17261 })
17262
17263 (** Create a shared link
17264
17265 Create a new shared link. *)
17266 let create_shared_link ~body client () =
17267 let op_name = "create_shared_link" in
17268 let url_path = "/shared-links" in
17269 let query = "" in
17270 let url = client.base_url ^ url_path ^ query in
17271 let response =
17272 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
17273 with Eio.Io _ as ex ->
17274 let bt = Printexc.get_raw_backtrace () in
17275 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
17276 in
17277 if Requests.Response.ok response then
17278 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17279 else
17280 let body = Requests.Response.text response in
17281 let parsed_body =
17282 match Jsont_bytesrw.decode_string Jsont.json body with
17283 | Ok json -> Some (Openapi.Runtime.Json json)
17284 | Error _ -> Some (Openapi.Runtime.Raw body)
17285 in
17286 raise (Openapi.Runtime.Api_error {
17287 operation = op_name;
17288 method_ = "POST";
17289 url;
17290 status = Requests.Response.status_code response;
17291 body;
17292 parsed_body;
17293 })
17294
17295 (** Retrieve current shared link
17296
17297 Retrieve the current shared link associated with authentication method. *)
17298 let get_my_shared_link ?key ?password ?slug ?token client () =
17299 let op_name = "get_my_shared_link" in
17300 let url_path = "/shared-links/me" in
17301 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"password" ~value:password; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug; Openapi.Runtime.Query.optional ~key:"token" ~value:token]) in
17302 let url = client.base_url ^ url_path ^ query in
17303 let response =
17304 try Requests.get client.session url
17305 with Eio.Io _ as ex ->
17306 let bt = Printexc.get_raw_backtrace () in
17307 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17308 in
17309 if Requests.Response.ok response then
17310 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17311 else
17312 let body = Requests.Response.text response in
17313 let parsed_body =
17314 match Jsont_bytesrw.decode_string Jsont.json body with
17315 | Ok json -> Some (Openapi.Runtime.Json json)
17316 | Error _ -> Some (Openapi.Runtime.Raw body)
17317 in
17318 raise (Openapi.Runtime.Api_error {
17319 operation = op_name;
17320 method_ = "GET";
17321 url;
17322 status = Requests.Response.status_code response;
17323 body;
17324 parsed_body;
17325 })
17326
17327 (** Retrieve a shared link
17328
17329 Retrieve a specific shared link by its ID. *)
17330 let get_shared_link_by_id ~id client () =
17331 let op_name = "get_shared_link_by_id" in
17332 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/shared-links/{id}" in
17333 let query = "" in
17334 let url = client.base_url ^ url_path ^ query in
17335 let response =
17336 try Requests.get client.session url
17337 with Eio.Io _ as ex ->
17338 let bt = Printexc.get_raw_backtrace () in
17339 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17340 in
17341 if Requests.Response.ok response then
17342 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17343 else
17344 let body = Requests.Response.text response in
17345 let parsed_body =
17346 match Jsont_bytesrw.decode_string Jsont.json body with
17347 | Ok json -> Some (Openapi.Runtime.Json json)
17348 | Error _ -> Some (Openapi.Runtime.Raw body)
17349 in
17350 raise (Openapi.Runtime.Api_error {
17351 operation = op_name;
17352 method_ = "GET";
17353 url;
17354 status = Requests.Response.status_code response;
17355 body;
17356 parsed_body;
17357 })
17358
17359 (** Update a shared link
17360
17361 Update an existing shared link by its ID. *)
17362 let update_shared_link ~id ~body client () =
17363 let op_name = "update_shared_link" in
17364 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/shared-links/{id}" in
17365 let query = "" in
17366 let url = client.base_url ^ url_path ^ query in
17367 let response =
17368 try Requests.patch client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SharedLinkEdit.Dto.jsont body)) url
17369 with Eio.Io _ as ex ->
17370 let bt = Printexc.get_raw_backtrace () in
17371 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PATCH" url
17372 in
17373 if Requests.Response.ok response then
17374 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17375 else
17376 let body = Requests.Response.text response in
17377 let parsed_body =
17378 match Jsont_bytesrw.decode_string Jsont.json body with
17379 | Ok json -> Some (Openapi.Runtime.Json json)
17380 | Error _ -> Some (Openapi.Runtime.Raw body)
17381 in
17382 raise (Openapi.Runtime.Api_error {
17383 operation = op_name;
17384 method_ = "PATCH";
17385 url;
17386 status = Requests.Response.status_code response;
17387 body;
17388 parsed_body;
17389 })
17390end
17391
17392module SearchAlbum = struct
17393 module Types = struct
17394 module ResponseDto = struct
17395 type t = {
17396 count : int;
17397 facets : SearchFacet.ResponseDto.t list;
17398 items : Album.ResponseDto.t list;
17399 total : int;
17400 }
17401 end
17402 end
17403
17404 module ResponseDto = struct
17405 include Types.ResponseDto
17406
17407 let v ~count ~facets ~items ~total () = { count; facets; items; total }
17408
17409 let count t = t.count
17410 let facets t = t.facets
17411 let items t = t.items
17412 let total t = t.total
17413
17414 let jsont : t Jsont.t =
17415 Jsont.Object.map ~kind:"SearchAlbumResponseDto"
17416 (fun count facets items total -> { count; facets; items; total })
17417 |> Jsont.Object.mem "count" Jsont.int ~enc:(fun r -> r.count)
17418 |> Jsont.Object.mem "facets" (Jsont.list SearchFacet.ResponseDto.jsont) ~enc:(fun r -> r.facets)
17419 |> Jsont.Object.mem "items" (Jsont.list Album.ResponseDto.jsont) ~enc:(fun r -> r.items)
17420 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
17421 |> Jsont.Object.skip_unknown
17422 |> Jsont.Object.finish
17423 end
17424end
17425
17426module Search = struct
17427 module Types = struct
17428 module ResponseDto = struct
17429 type t = {
17430 albums : SearchAlbum.ResponseDto.t;
17431 assets : SearchAsset.ResponseDto.t;
17432 }
17433 end
17434 end
17435
17436 module ResponseDto = struct
17437 include Types.ResponseDto
17438
17439 let v ~albums ~assets () = { albums; assets }
17440
17441 let albums t = t.albums
17442 let assets t = t.assets
17443
17444 let jsont : t Jsont.t =
17445 Jsont.Object.map ~kind:"SearchResponseDto"
17446 (fun albums assets -> { albums; assets })
17447 |> Jsont.Object.mem "albums" SearchAlbum.ResponseDto.jsont ~enc:(fun r -> r.albums)
17448 |> Jsont.Object.mem "assets" SearchAsset.ResponseDto.jsont ~enc:(fun r -> r.assets)
17449 |> Jsont.Object.skip_unknown
17450 |> Jsont.Object.finish
17451 end
17452
17453 (** Search assets by metadata
17454
17455 Search for assets based on various metadata criteria. *)
17456 let search_assets ~body client () =
17457 let op_name = "search_assets" in
17458 let url_path = "/search/metadata" in
17459 let query = "" in
17460 let url = client.base_url ^ url_path ^ query in
17461 let response =
17462 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json MetadataSearch.Dto.jsont body)) url
17463 with Eio.Io _ as ex ->
17464 let bt = Printexc.get_raw_backtrace () in
17465 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
17466 in
17467 if Requests.Response.ok response then
17468 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17469 else
17470 let body = Requests.Response.text response in
17471 let parsed_body =
17472 match Jsont_bytesrw.decode_string Jsont.json body with
17473 | Ok json -> Some (Openapi.Runtime.Json json)
17474 | Error _ -> Some (Openapi.Runtime.Raw body)
17475 in
17476 raise (Openapi.Runtime.Api_error {
17477 operation = op_name;
17478 method_ = "POST";
17479 url;
17480 status = Requests.Response.status_code response;
17481 body;
17482 parsed_body;
17483 })
17484
17485 (** Smart asset search
17486
17487 Perform a smart search for assets by using machine learning vectors to determine relevance. *)
17488 let search_smart ~body client () =
17489 let op_name = "search_smart" in
17490 let url_path = "/search/smart" in
17491 let query = "" in
17492 let url = client.base_url ^ url_path ^ query in
17493 let response =
17494 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SmartSearch.Dto.jsont body)) url
17495 with Eio.Io _ as ex ->
17496 let bt = Printexc.get_raw_backtrace () in
17497 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
17498 in
17499 if Requests.Response.ok response then
17500 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17501 else
17502 let body = Requests.Response.text response in
17503 let parsed_body =
17504 match Jsont_bytesrw.decode_string Jsont.json body with
17505 | Ok json -> Some (Openapi.Runtime.Json json)
17506 | Error _ -> Some (Openapi.Runtime.Raw body)
17507 in
17508 raise (Openapi.Runtime.Api_error {
17509 operation = op_name;
17510 method_ = "POST";
17511 url;
17512 status = Requests.Response.status_code response;
17513 body;
17514 parsed_body;
17515 })
17516end
17517
17518module AlbumStatistics = struct
17519 module Types = struct
17520 module ResponseDto = struct
17521 type t = {
17522 not_shared : int;
17523 owned : int;
17524 shared : int;
17525 }
17526 end
17527 end
17528
17529 module ResponseDto = struct
17530 include Types.ResponseDto
17531
17532 let v ~not_shared ~owned ~shared () = { not_shared; owned; shared }
17533
17534 let not_shared t = t.not_shared
17535 let owned t = t.owned
17536 let shared t = t.shared
17537
17538 let jsont : t Jsont.t =
17539 Jsont.Object.map ~kind:"AlbumStatisticsResponseDto"
17540 (fun not_shared owned shared -> { not_shared; owned; shared })
17541 |> Jsont.Object.mem "notShared" Jsont.int ~enc:(fun r -> r.not_shared)
17542 |> Jsont.Object.mem "owned" Jsont.int ~enc:(fun r -> r.owned)
17543 |> Jsont.Object.mem "shared" Jsont.int ~enc:(fun r -> r.shared)
17544 |> Jsont.Object.skip_unknown
17545 |> Jsont.Object.finish
17546 end
17547
17548 (** Retrieve album statistics
17549
17550 Returns statistics about the albums available to the authenticated user. *)
17551 let get_album_statistics client () =
17552 let op_name = "get_album_statistics" in
17553 let url_path = "/albums/statistics" in
17554 let query = "" in
17555 let url = client.base_url ^ url_path ^ query in
17556 let response =
17557 try Requests.get client.session url
17558 with Eio.Io _ as ex ->
17559 let bt = Printexc.get_raw_backtrace () in
17560 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17561 in
17562 if Requests.Response.ok response then
17563 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17564 else
17565 let body = Requests.Response.text response in
17566 let parsed_body =
17567 match Jsont_bytesrw.decode_string Jsont.json body with
17568 | Ok json -> Some (Openapi.Runtime.Json json)
17569 | Error _ -> Some (Openapi.Runtime.Raw body)
17570 in
17571 raise (Openapi.Runtime.Api_error {
17572 operation = op_name;
17573 method_ = "GET";
17574 url;
17575 status = Requests.Response.status_code response;
17576 body;
17577 parsed_body;
17578 })
17579end
17580
17581module AdminOnboarding = struct
17582 module Types = struct
17583 module UpdateDto = struct
17584 type t = {
17585 is_onboarded : bool;
17586 }
17587 end
17588 end
17589
17590 module UpdateDto = struct
17591 include Types.UpdateDto
17592
17593 let v ~is_onboarded () = { is_onboarded }
17594
17595 let is_onboarded t = t.is_onboarded
17596
17597 let jsont : t Jsont.t =
17598 Jsont.Object.map ~kind:"AdminOnboardingUpdateDto"
17599 (fun is_onboarded -> { is_onboarded })
17600 |> Jsont.Object.mem "isOnboarded" Jsont.bool ~enc:(fun r -> r.is_onboarded)
17601 |> Jsont.Object.skip_unknown
17602 |> Jsont.Object.finish
17603 end
17604
17605 (** Retrieve admin onboarding
17606
17607 Retrieve the current admin onboarding status. *)
17608 let get_admin_onboarding client () =
17609 let op_name = "get_admin_onboarding" in
17610 let url_path = "/system-metadata/admin-onboarding" in
17611 let query = "" in
17612 let url = client.base_url ^ url_path ^ query in
17613 let response =
17614 try Requests.get client.session url
17615 with Eio.Io _ as ex ->
17616 let bt = Printexc.get_raw_backtrace () in
17617 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17618 in
17619 if Requests.Response.ok response then
17620 Openapi.Runtime.Json.decode_json_exn UpdateDto.jsont (Requests.Response.json response)
17621 else
17622 let body = Requests.Response.text response in
17623 let parsed_body =
17624 match Jsont_bytesrw.decode_string Jsont.json body with
17625 | Ok json -> Some (Openapi.Runtime.Json json)
17626 | Error _ -> Some (Openapi.Runtime.Raw body)
17627 in
17628 raise (Openapi.Runtime.Api_error {
17629 operation = op_name;
17630 method_ = "GET";
17631 url;
17632 status = Requests.Response.status_code response;
17633 body;
17634 parsed_body;
17635 })
17636end
17637
17638module ActivityStatistics = struct
17639 module Types = struct
17640 module ResponseDto = struct
17641 type t = {
17642 comments : int;
17643 likes : int;
17644 }
17645 end
17646 end
17647
17648 module ResponseDto = struct
17649 include Types.ResponseDto
17650
17651 let v ~comments ~likes () = { comments; likes }
17652
17653 let comments t = t.comments
17654 let likes t = t.likes
17655
17656 let jsont : t Jsont.t =
17657 Jsont.Object.map ~kind:"ActivityStatisticsResponseDto"
17658 (fun comments likes -> { comments; likes })
17659 |> Jsont.Object.mem "comments" Jsont.int ~enc:(fun r -> r.comments)
17660 |> Jsont.Object.mem "likes" Jsont.int ~enc:(fun r -> r.likes)
17661 |> Jsont.Object.skip_unknown
17662 |> Jsont.Object.finish
17663 end
17664
17665 (** Retrieve activity statistics
17666
17667 Returns the number of likes and comments for a given album or asset in an album. *)
17668 let get_activity_statistics ~album_id ?asset_id client () =
17669 let op_name = "get_activity_statistics" in
17670 let url_path = "/activities/statistics" in
17671 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"albumId" ~value:album_id; Openapi.Runtime.Query.optional ~key:"assetId" ~value:asset_id]) in
17672 let url = client.base_url ^ url_path ^ query in
17673 let response =
17674 try Requests.get client.session url
17675 with Eio.Io _ as ex ->
17676 let bt = Printexc.get_raw_backtrace () in
17677 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17678 in
17679 if Requests.Response.ok response then
17680 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17681 else
17682 let body = Requests.Response.text response in
17683 let parsed_body =
17684 match Jsont_bytesrw.decode_string Jsont.json body with
17685 | Ok json -> Some (Openapi.Runtime.Json json)
17686 | Error _ -> Some (Openapi.Runtime.Raw body)
17687 in
17688 raise (Openapi.Runtime.Api_error {
17689 operation = op_name;
17690 method_ = "GET";
17691 url;
17692 status = Requests.Response.status_code response;
17693 body;
17694 parsed_body;
17695 })
17696end
17697
17698module UserPreferences = struct
17699 module Types = struct
17700 module UpdateDto = struct
17701 type t = {
17702 albums : Albums.Update.t option;
17703 avatar : Avatar.Update.t option;
17704 cast : Cast.Update.t option;
17705 download : Download.Update.t option;
17706 email_notifications : EmailNotifications.Update.t option;
17707 folders : Folders.Update.t option;
17708 memories : Memories.Update.t option;
17709 people : Jsont.json option;
17710 purchase : Purchase.Update.t option;
17711 ratings : Ratings.Update.t option;
17712 shared_links : SharedLinks.Update.t option;
17713 tags : Tags.Update.t option;
17714 }
17715 end
17716
17717 module ResponseDto = struct
17718 type t = {
17719 albums : Albums.Response.t;
17720 cast : Cast.Response.t;
17721 download : Download.Response.t;
17722 email_notifications : EmailNotifications.Response.t;
17723 folders : Folders.Response.t;
17724 memories : Memories.Response.t;
17725 people : Jsont.json;
17726 purchase : Purchase.Response.t;
17727 ratings : Ratings.Response.t;
17728 shared_links : SharedLinks.Response.t;
17729 tags : Tags.Response.t;
17730 }
17731 end
17732 end
17733
17734 module UpdateDto = struct
17735 include Types.UpdateDto
17736
17737 let v ?albums ?avatar ?cast ?download ?email_notifications ?folders ?memories ?people ?purchase ?ratings ?shared_links ?tags () = { albums; avatar; cast; download; email_notifications; folders; memories; people; purchase; ratings; shared_links; tags }
17738
17739 let albums t = t.albums
17740 let avatar t = t.avatar
17741 let cast t = t.cast
17742 let download t = t.download
17743 let email_notifications t = t.email_notifications
17744 let folders t = t.folders
17745 let memories t = t.memories
17746 let people t = t.people
17747 let purchase t = t.purchase
17748 let ratings t = t.ratings
17749 let shared_links t = t.shared_links
17750 let tags t = t.tags
17751
17752 let jsont : t Jsont.t =
17753 Jsont.Object.map ~kind:"UserPreferencesUpdateDto"
17754 (fun albums avatar cast download email_notifications folders memories people purchase ratings shared_links tags -> { albums; avatar; cast; download; email_notifications; folders; memories; people; purchase; ratings; shared_links; tags })
17755 |> Jsont.Object.opt_mem "albums" Albums.Update.jsont ~enc:(fun r -> r.albums)
17756 |> Jsont.Object.opt_mem "avatar" Avatar.Update.jsont ~enc:(fun r -> r.avatar)
17757 |> Jsont.Object.opt_mem "cast" Cast.Update.jsont ~enc:(fun r -> r.cast)
17758 |> Jsont.Object.opt_mem "download" Download.Update.jsont ~enc:(fun r -> r.download)
17759 |> Jsont.Object.opt_mem "emailNotifications" EmailNotifications.Update.jsont ~enc:(fun r -> r.email_notifications)
17760 |> Jsont.Object.opt_mem "folders" Folders.Update.jsont ~enc:(fun r -> r.folders)
17761 |> Jsont.Object.opt_mem "memories" Memories.Update.jsont ~enc:(fun r -> r.memories)
17762 |> Jsont.Object.opt_mem "people" Jsont.json ~enc:(fun r -> r.people)
17763 |> Jsont.Object.opt_mem "purchase" Purchase.Update.jsont ~enc:(fun r -> r.purchase)
17764 |> Jsont.Object.opt_mem "ratings" Ratings.Update.jsont ~enc:(fun r -> r.ratings)
17765 |> Jsont.Object.opt_mem "sharedLinks" SharedLinks.Update.jsont ~enc:(fun r -> r.shared_links)
17766 |> Jsont.Object.opt_mem "tags" Tags.Update.jsont ~enc:(fun r -> r.tags)
17767 |> Jsont.Object.skip_unknown
17768 |> Jsont.Object.finish
17769 end
17770
17771 module ResponseDto = struct
17772 include Types.ResponseDto
17773
17774 let v ~albums ~cast ~download ~email_notifications ~folders ~memories ~people ~purchase ~ratings ~shared_links ~tags () = { albums; cast; download; email_notifications; folders; memories; people; purchase; ratings; shared_links; tags }
17775
17776 let albums t = t.albums
17777 let cast t = t.cast
17778 let download t = t.download
17779 let email_notifications t = t.email_notifications
17780 let folders t = t.folders
17781 let memories t = t.memories
17782 let people t = t.people
17783 let purchase t = t.purchase
17784 let ratings t = t.ratings
17785 let shared_links t = t.shared_links
17786 let tags t = t.tags
17787
17788 let jsont : t Jsont.t =
17789 Jsont.Object.map ~kind:"UserPreferencesResponseDto"
17790 (fun albums cast download email_notifications folders memories people purchase ratings shared_links tags -> { albums; cast; download; email_notifications; folders; memories; people; purchase; ratings; shared_links; tags })
17791 |> Jsont.Object.mem "albums" Albums.Response.jsont ~enc:(fun r -> r.albums)
17792 |> Jsont.Object.mem "cast" Cast.Response.jsont ~enc:(fun r -> r.cast)
17793 |> Jsont.Object.mem "download" Download.Response.jsont ~enc:(fun r -> r.download)
17794 |> Jsont.Object.mem "emailNotifications" EmailNotifications.Response.jsont ~enc:(fun r -> r.email_notifications)
17795 |> Jsont.Object.mem "folders" Folders.Response.jsont ~enc:(fun r -> r.folders)
17796 |> Jsont.Object.mem "memories" Memories.Response.jsont ~enc:(fun r -> r.memories)
17797 |> Jsont.Object.mem "people" Jsont.json ~enc:(fun r -> r.people)
17798 |> Jsont.Object.mem "purchase" Purchase.Response.jsont ~enc:(fun r -> r.purchase)
17799 |> Jsont.Object.mem "ratings" Ratings.Response.jsont ~enc:(fun r -> r.ratings)
17800 |> Jsont.Object.mem "sharedLinks" SharedLinks.Response.jsont ~enc:(fun r -> r.shared_links)
17801 |> Jsont.Object.mem "tags" Tags.Response.jsont ~enc:(fun r -> r.tags)
17802 |> Jsont.Object.skip_unknown
17803 |> Jsont.Object.finish
17804 end
17805
17806 (** Retrieve user preferences
17807
17808 Retrieve the preferences of a specific user. *)
17809 let get_user_preferences_admin ~id client () =
17810 let op_name = "get_user_preferences_admin" in
17811 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}/preferences" in
17812 let query = "" in
17813 let url = client.base_url ^ url_path ^ query in
17814 let response =
17815 try Requests.get client.session url
17816 with Eio.Io _ as ex ->
17817 let bt = Printexc.get_raw_backtrace () in
17818 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17819 in
17820 if Requests.Response.ok response then
17821 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17822 else
17823 let body = Requests.Response.text response in
17824 let parsed_body =
17825 match Jsont_bytesrw.decode_string Jsont.json body with
17826 | Ok json -> Some (Openapi.Runtime.Json json)
17827 | Error _ -> Some (Openapi.Runtime.Raw body)
17828 in
17829 raise (Openapi.Runtime.Api_error {
17830 operation = op_name;
17831 method_ = "GET";
17832 url;
17833 status = Requests.Response.status_code response;
17834 body;
17835 parsed_body;
17836 })
17837
17838 (** Update user preferences
17839
17840 Update the preferences of a specific user. *)
17841 let update_user_preferences_admin ~id ~body client () =
17842 let op_name = "update_user_preferences_admin" in
17843 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/admin/users/{id}/preferences" in
17844 let query = "" in
17845 let url = client.base_url ^ url_path ^ query in
17846 let response =
17847 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
17848 with Eio.Io _ as ex ->
17849 let bt = Printexc.get_raw_backtrace () in
17850 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
17851 in
17852 if Requests.Response.ok response then
17853 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17854 else
17855 let body = Requests.Response.text response in
17856 let parsed_body =
17857 match Jsont_bytesrw.decode_string Jsont.json body with
17858 | Ok json -> Some (Openapi.Runtime.Json json)
17859 | Error _ -> Some (Openapi.Runtime.Raw body)
17860 in
17861 raise (Openapi.Runtime.Api_error {
17862 operation = op_name;
17863 method_ = "PUT";
17864 url;
17865 status = Requests.Response.status_code response;
17866 body;
17867 parsed_body;
17868 })
17869
17870 (** Get my preferences
17871
17872 Retrieve the preferences for the current user. *)
17873 let get_my_preferences client () =
17874 let op_name = "get_my_preferences" in
17875 let url_path = "/users/me/preferences" in
17876 let query = "" in
17877 let url = client.base_url ^ url_path ^ query in
17878 let response =
17879 try Requests.get client.session url
17880 with Eio.Io _ as ex ->
17881 let bt = Printexc.get_raw_backtrace () in
17882 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
17883 in
17884 if Requests.Response.ok response then
17885 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17886 else
17887 let body = Requests.Response.text response in
17888 let parsed_body =
17889 match Jsont_bytesrw.decode_string Jsont.json body with
17890 | Ok json -> Some (Openapi.Runtime.Json json)
17891 | Error _ -> Some (Openapi.Runtime.Raw body)
17892 in
17893 raise (Openapi.Runtime.Api_error {
17894 operation = op_name;
17895 method_ = "GET";
17896 url;
17897 status = Requests.Response.status_code response;
17898 body;
17899 parsed_body;
17900 })
17901
17902 (** Update my preferences
17903
17904 Update the preferences of the current user. *)
17905 let update_my_preferences ~body client () =
17906 let op_name = "update_my_preferences" in
17907 let url_path = "/users/me/preferences" in
17908 let query = "" in
17909 let url = client.base_url ^ url_path ^ query in
17910 let response =
17911 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
17912 with Eio.Io _ as ex ->
17913 let bt = Printexc.get_raw_backtrace () in
17914 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
17915 in
17916 if Requests.Response.ok response then
17917 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
17918 else
17919 let body = Requests.Response.text response in
17920 let parsed_body =
17921 match Jsont_bytesrw.decode_string Jsont.json body with
17922 | Ok json -> Some (Openapi.Runtime.Json json)
17923 | Error _ -> Some (Openapi.Runtime.Raw body)
17924 in
17925 raise (Openapi.Runtime.Api_error {
17926 operation = op_name;
17927 method_ = "PUT";
17928 url;
17929 status = Requests.Response.status_code response;
17930 body;
17931 parsed_body;
17932 })
17933end
17934
17935module Person = struct
17936 module Types = struct
17937 module UpdateDto = struct
17938 type t = {
17939 birth_date : string option; (** Person date of birth.
17940 Note: the mobile app cannot currently set the birth date to null. *)
17941 color : string option;
17942 feature_face_asset_id : string option; (** Asset is used to get the feature face thumbnail. *)
17943 is_favorite : bool option;
17944 is_hidden : bool option; (** Person visibility *)
17945 name : string option; (** Person name. *)
17946 }
17947 end
17948
17949 module ResponseDto = struct
17950 type t = {
17951 birth_date : string option;
17952 color : string option;
17953 id : string;
17954 is_favorite : bool option;
17955 is_hidden : bool;
17956 name : string;
17957 thumbnail_path : string;
17958 updated_at : Ptime.t option;
17959 }
17960 end
17961
17962 module CreateDto = struct
17963 type t = {
17964 birth_date : string option; (** Person date of birth.
17965 Note: the mobile app cannot currently set the birth date to null. *)
17966 color : string option;
17967 is_favorite : bool option;
17968 is_hidden : bool option; (** Person visibility *)
17969 name : string option; (** Person name. *)
17970 }
17971 end
17972 end
17973
17974 module UpdateDto = struct
17975 include Types.UpdateDto
17976
17977 let v ?birth_date ?color ?feature_face_asset_id ?is_favorite ?is_hidden ?name () = { birth_date; color; feature_face_asset_id; is_favorite; is_hidden; name }
17978
17979 let birth_date t = t.birth_date
17980 let color t = t.color
17981 let feature_face_asset_id t = t.feature_face_asset_id
17982 let is_favorite t = t.is_favorite
17983 let is_hidden t = t.is_hidden
17984 let name t = t.name
17985
17986 let jsont : t Jsont.t =
17987 Jsont.Object.map ~kind:"PersonUpdateDto"
17988 (fun birth_date color feature_face_asset_id is_favorite is_hidden name -> { birth_date; color; feature_face_asset_id; is_favorite; is_hidden; name })
17989 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_string
17990 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
17991 |> Jsont.Object.mem "color" Openapi.Runtime.nullable_string
17992 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.color)
17993 |> Jsont.Object.opt_mem "featureFaceAssetId" Jsont.string ~enc:(fun r -> r.feature_face_asset_id)
17994 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
17995 |> Jsont.Object.opt_mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
17996 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
17997 |> Jsont.Object.skip_unknown
17998 |> Jsont.Object.finish
17999 end
18000
18001 module ResponseDto = struct
18002 include Types.ResponseDto
18003
18004 let v ~id ~is_hidden ~name ~thumbnail_path ?birth_date ?color ?is_favorite ?updated_at () = { birth_date; color; id; is_favorite; is_hidden; name; thumbnail_path; updated_at }
18005
18006 let birth_date t = t.birth_date
18007 let color t = t.color
18008 let id t = t.id
18009 let is_favorite t = t.is_favorite
18010 let is_hidden t = t.is_hidden
18011 let name t = t.name
18012 let thumbnail_path t = t.thumbnail_path
18013 let updated_at t = t.updated_at
18014
18015 let jsont : t Jsont.t =
18016 Jsont.Object.map ~kind:"PersonResponseDto"
18017 (fun birth_date color id is_favorite is_hidden name thumbnail_path updated_at -> { birth_date; color; id; is_favorite; is_hidden; name; thumbnail_path; updated_at })
18018 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_string
18019 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
18020 |> Jsont.Object.opt_mem "color" Jsont.string ~enc:(fun r -> r.color)
18021 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
18022 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
18023 |> Jsont.Object.mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
18024 |> Jsont.Object.mem "name" Jsont.string ~enc:(fun r -> r.name)
18025 |> Jsont.Object.mem "thumbnailPath" Jsont.string ~enc:(fun r -> r.thumbnail_path)
18026 |> Jsont.Object.opt_mem "updatedAt" Openapi.Runtime.ptime_jsont ~enc:(fun r -> r.updated_at)
18027 |> Jsont.Object.skip_unknown
18028 |> Jsont.Object.finish
18029 end
18030
18031 module CreateDto = struct
18032 include Types.CreateDto
18033
18034 let v ?birth_date ?color ?is_favorite ?is_hidden ?name () = { birth_date; color; is_favorite; is_hidden; name }
18035
18036 let birth_date t = t.birth_date
18037 let color t = t.color
18038 let is_favorite t = t.is_favorite
18039 let is_hidden t = t.is_hidden
18040 let name t = t.name
18041
18042 let jsont : t Jsont.t =
18043 Jsont.Object.map ~kind:"PersonCreateDto"
18044 (fun birth_date color is_favorite is_hidden name -> { birth_date; color; is_favorite; is_hidden; name })
18045 |> Jsont.Object.mem "birthDate" Openapi.Runtime.nullable_string
18046 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.birth_date)
18047 |> Jsont.Object.mem "color" Openapi.Runtime.nullable_string
18048 ~dec_absent:None ~enc_omit:Option.is_none ~enc:(fun r -> r.color)
18049 |> Jsont.Object.opt_mem "isFavorite" Jsont.bool ~enc:(fun r -> r.is_favorite)
18050 |> Jsont.Object.opt_mem "isHidden" Jsont.bool ~enc:(fun r -> r.is_hidden)
18051 |> Jsont.Object.opt_mem "name" Jsont.string ~enc:(fun r -> r.name)
18052 |> Jsont.Object.skip_unknown
18053 |> Jsont.Object.finish
18054 end
18055
18056 (** Re-assign a face to another person
18057
18058 Re-assign the face provided in the body to the person identified by the id in the path parameter. *)
18059 let reassign_faces_by_id ~id ~body client () =
18060 let op_name = "reassign_faces_by_id" in
18061 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/faces/{id}" in
18062 let query = "" in
18063 let url = client.base_url ^ url_path ^ query in
18064 let response =
18065 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Face.Dto.jsont body)) url
18066 with Eio.Io _ as ex ->
18067 let bt = Printexc.get_raw_backtrace () in
18068 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18069 in
18070 if Requests.Response.ok response then
18071 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18072 else
18073 let body = Requests.Response.text response in
18074 let parsed_body =
18075 match Jsont_bytesrw.decode_string Jsont.json body with
18076 | Ok json -> Some (Openapi.Runtime.Json json)
18077 | Error _ -> Some (Openapi.Runtime.Raw body)
18078 in
18079 raise (Openapi.Runtime.Api_error {
18080 operation = op_name;
18081 method_ = "PUT";
18082 url;
18083 status = Requests.Response.status_code response;
18084 body;
18085 parsed_body;
18086 })
18087
18088 (** Create a person
18089
18090 Create a new person that can have multiple faces assigned to them. *)
18091 let create_person ~body client () =
18092 let op_name = "create_person" in
18093 let url_path = "/people" in
18094 let query = "" in
18095 let url = client.base_url ^ url_path ^ query in
18096 let response =
18097 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json CreateDto.jsont body)) url
18098 with Eio.Io _ as ex ->
18099 let bt = Printexc.get_raw_backtrace () in
18100 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
18101 in
18102 if Requests.Response.ok response then
18103 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18104 else
18105 let body = Requests.Response.text response in
18106 let parsed_body =
18107 match Jsont_bytesrw.decode_string Jsont.json body with
18108 | Ok json -> Some (Openapi.Runtime.Json json)
18109 | Error _ -> Some (Openapi.Runtime.Raw body)
18110 in
18111 raise (Openapi.Runtime.Api_error {
18112 operation = op_name;
18113 method_ = "POST";
18114 url;
18115 status = Requests.Response.status_code response;
18116 body;
18117 parsed_body;
18118 })
18119
18120 (** Get a person
18121
18122 Retrieve a person by id. *)
18123 let get_person ~id client () =
18124 let op_name = "get_person" in
18125 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}" in
18126 let query = "" in
18127 let url = client.base_url ^ url_path ^ query in
18128 let response =
18129 try Requests.get client.session url
18130 with Eio.Io _ as ex ->
18131 let bt = Printexc.get_raw_backtrace () in
18132 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
18133 in
18134 if Requests.Response.ok response then
18135 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18136 else
18137 let body = Requests.Response.text response in
18138 let parsed_body =
18139 match Jsont_bytesrw.decode_string Jsont.json body with
18140 | Ok json -> Some (Openapi.Runtime.Json json)
18141 | Error _ -> Some (Openapi.Runtime.Raw body)
18142 in
18143 raise (Openapi.Runtime.Api_error {
18144 operation = op_name;
18145 method_ = "GET";
18146 url;
18147 status = Requests.Response.status_code response;
18148 body;
18149 parsed_body;
18150 })
18151
18152 (** Update person
18153
18154 Update an individual person. *)
18155 let update_person ~id ~body client () =
18156 let op_name = "update_person" in
18157 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}" in
18158 let query = "" in
18159 let url = client.base_url ^ url_path ^ query in
18160 let response =
18161 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateDto.jsont body)) url
18162 with Eio.Io _ as ex ->
18163 let bt = Printexc.get_raw_backtrace () in
18164 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18165 in
18166 if Requests.Response.ok response then
18167 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18168 else
18169 let body = Requests.Response.text response in
18170 let parsed_body =
18171 match Jsont_bytesrw.decode_string Jsont.json body with
18172 | Ok json -> Some (Openapi.Runtime.Json json)
18173 | Error _ -> Some (Openapi.Runtime.Raw body)
18174 in
18175 raise (Openapi.Runtime.Api_error {
18176 operation = op_name;
18177 method_ = "PUT";
18178 url;
18179 status = Requests.Response.status_code response;
18180 body;
18181 parsed_body;
18182 })
18183
18184 (** Reassign faces
18185
18186 Bulk reassign a list of faces to a different person. *)
18187 let reassign_faces ~id ~body client () =
18188 let op_name = "reassign_faces" in
18189 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}/reassign" in
18190 let query = "" in
18191 let url = client.base_url ^ url_path ^ query in
18192 let response =
18193 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Jsont.json body)) url
18194 with Eio.Io _ as ex ->
18195 let bt = Printexc.get_raw_backtrace () in
18196 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18197 in
18198 if Requests.Response.ok response then
18199 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18200 else
18201 let body = Requests.Response.text response in
18202 let parsed_body =
18203 match Jsont_bytesrw.decode_string Jsont.json body with
18204 | Ok json -> Some (Openapi.Runtime.Json json)
18205 | Error _ -> Some (Openapi.Runtime.Raw body)
18206 in
18207 raise (Openapi.Runtime.Api_error {
18208 operation = op_name;
18209 method_ = "PUT";
18210 url;
18211 status = Requests.Response.status_code response;
18212 body;
18213 parsed_body;
18214 })
18215
18216 (** Search people
18217
18218 Search for people by name. *)
18219 let search_person ~name ?with_hidden client () =
18220 let op_name = "search_person" in
18221 let url_path = "/search/person" in
18222 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"name" ~value:name; Openapi.Runtime.Query.optional ~key:"withHidden" ~value:with_hidden]) in
18223 let url = client.base_url ^ url_path ^ query in
18224 let response =
18225 try Requests.get client.session url
18226 with Eio.Io _ as ex ->
18227 let bt = Printexc.get_raw_backtrace () in
18228 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
18229 in
18230 if Requests.Response.ok response then
18231 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18232 else
18233 let body = Requests.Response.text response in
18234 let parsed_body =
18235 match Jsont_bytesrw.decode_string Jsont.json body with
18236 | Ok json -> Some (Openapi.Runtime.Json json)
18237 | Error _ -> Some (Openapi.Runtime.Raw body)
18238 in
18239 raise (Openapi.Runtime.Api_error {
18240 operation = op_name;
18241 method_ = "GET";
18242 url;
18243 status = Requests.Response.status_code response;
18244 body;
18245 parsed_body;
18246 })
18247end
18248
18249module People = struct
18250 module Types = struct
18251 module UpdateDto = struct
18252 type t = {
18253 people : PeopleUpdate.Item.t list;
18254 }
18255 end
18256
18257 module Update = struct
18258 type t = {
18259 enabled : bool option;
18260 sidebar_web : bool option;
18261 }
18262 end
18263
18264 module ResponseDto = struct
18265 type t = {
18266 has_next_page : bool option;
18267 hidden : int;
18268 people : Person.ResponseDto.t list;
18269 total : int;
18270 }
18271 end
18272
18273 module Response = struct
18274 type t = {
18275 enabled : bool;
18276 sidebar_web : bool;
18277 }
18278 end
18279 end
18280
18281 module UpdateDto = struct
18282 include Types.UpdateDto
18283
18284 let v ~people () = { people }
18285
18286 let people t = t.people
18287
18288 let jsont : t Jsont.t =
18289 Jsont.Object.map ~kind:"PeopleUpdateDto"
18290 (fun people -> { people })
18291 |> Jsont.Object.mem "people" (Jsont.list PeopleUpdate.Item.jsont) ~enc:(fun r -> r.people)
18292 |> Jsont.Object.skip_unknown
18293 |> Jsont.Object.finish
18294 end
18295
18296 module Update = struct
18297 include Types.Update
18298
18299 let v ?enabled ?sidebar_web () = { enabled; sidebar_web }
18300
18301 let enabled t = t.enabled
18302 let sidebar_web t = t.sidebar_web
18303
18304 let jsont : t Jsont.t =
18305 Jsont.Object.map ~kind:"PeopleUpdate"
18306 (fun enabled sidebar_web -> { enabled; sidebar_web })
18307 |> Jsont.Object.opt_mem "enabled" Jsont.bool ~enc:(fun r -> r.enabled)
18308 |> Jsont.Object.opt_mem "sidebarWeb" Jsont.bool ~enc:(fun r -> r.sidebar_web)
18309 |> Jsont.Object.skip_unknown
18310 |> Jsont.Object.finish
18311 end
18312
18313 module ResponseDto = struct
18314 include Types.ResponseDto
18315
18316 let v ~hidden ~people ~total ?has_next_page () = { has_next_page; hidden; people; total }
18317
18318 let has_next_page t = t.has_next_page
18319 let hidden t = t.hidden
18320 let people t = t.people
18321 let total t = t.total
18322
18323 let jsont : t Jsont.t =
18324 Jsont.Object.map ~kind:"PeopleResponseDto"
18325 (fun has_next_page hidden people total -> { has_next_page; hidden; people; total })
18326 |> Jsont.Object.opt_mem "hasNextPage" Jsont.bool ~enc:(fun r -> r.has_next_page)
18327 |> Jsont.Object.mem "hidden" Jsont.int ~enc:(fun r -> r.hidden)
18328 |> Jsont.Object.mem "people" (Jsont.list Person.ResponseDto.jsont) ~enc:(fun r -> r.people)
18329 |> Jsont.Object.mem "total" Jsont.int ~enc:(fun r -> r.total)
18330 |> Jsont.Object.skip_unknown
18331 |> Jsont.Object.finish
18332 end
18333
18334 module Response = struct
18335 include Types.Response
18336
18337 let v ?(enabled=true) ?(sidebar_web=false) () = { enabled; sidebar_web }
18338
18339 let enabled t = t.enabled
18340 let sidebar_web t = t.sidebar_web
18341
18342 let jsont : t Jsont.t =
18343 Jsont.Object.map ~kind:"PeopleResponse"
18344 (fun enabled sidebar_web -> { enabled; sidebar_web })
18345 |> Jsont.Object.mem "enabled" Jsont.bool ~dec_absent:true ~enc:(fun r -> r.enabled)
18346 |> Jsont.Object.mem "sidebarWeb" Jsont.bool ~dec_absent:false ~enc:(fun r -> r.sidebar_web)
18347 |> Jsont.Object.skip_unknown
18348 |> Jsont.Object.finish
18349 end
18350
18351 (** Get all people
18352
18353 Retrieve a list of all people.
18354 @param page Page number for pagination
18355 @param size Number of items per page
18356 *)
18357 let get_all_people ?closest_asset_id ?closest_person_id ?page ?size ?with_hidden client () =
18358 let op_name = "get_all_people" in
18359 let url_path = "/people" in
18360 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"closestAssetId" ~value:closest_asset_id; Openapi.Runtime.Query.optional ~key:"closestPersonId" ~value:closest_person_id; Openapi.Runtime.Query.optional ~key:"page" ~value:page; Openapi.Runtime.Query.optional ~key:"size" ~value:size; Openapi.Runtime.Query.optional ~key:"withHidden" ~value:with_hidden]) in
18361 let url = client.base_url ^ url_path ^ query in
18362 let response =
18363 try Requests.get client.session url
18364 with Eio.Io _ as ex ->
18365 let bt = Printexc.get_raw_backtrace () in
18366 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
18367 in
18368 if Requests.Response.ok response then
18369 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18370 else
18371 let body = Requests.Response.text response in
18372 let parsed_body =
18373 match Jsont_bytesrw.decode_string Jsont.json body with
18374 | Ok json -> Some (Openapi.Runtime.Json json)
18375 | Error _ -> Some (Openapi.Runtime.Raw body)
18376 in
18377 raise (Openapi.Runtime.Api_error {
18378 operation = op_name;
18379 method_ = "GET";
18380 url;
18381 status = Requests.Response.status_code response;
18382 body;
18383 parsed_body;
18384 })
18385end
18386
18387module BulkId = struct
18388 module Types = struct
18389 module ResponseDto = struct
18390 type t = {
18391 error : string option;
18392 id : string;
18393 success : bool;
18394 }
18395 end
18396 end
18397
18398 module ResponseDto = struct
18399 include Types.ResponseDto
18400
18401 let v ~id ~success ?error () = { error; id; success }
18402
18403 let error t = t.error
18404 let id t = t.id
18405 let success t = t.success
18406
18407 let jsont : t Jsont.t =
18408 Jsont.Object.map ~kind:"BulkIdResponseDto"
18409 (fun error id success -> { error; id; success })
18410 |> Jsont.Object.opt_mem "error" Jsont.string ~enc:(fun r -> r.error)
18411 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
18412 |> Jsont.Object.mem "success" Jsont.bool ~enc:(fun r -> r.success)
18413 |> Jsont.Object.skip_unknown
18414 |> Jsont.Object.finish
18415 end
18416
18417 (** Add assets to an album
18418
18419 Add multiple assets to a specific album by its ID. *)
18420 let add_assets_to_album ~id ?key ?slug ~body client () =
18421 let op_name = "add_assets_to_album" in
18422 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}/assets" in
18423 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
18424 let url = client.base_url ^ url_path ^ query in
18425 let response =
18426 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json BulkIds.Dto.jsont body)) url
18427 with Eio.Io _ as ex ->
18428 let bt = Printexc.get_raw_backtrace () in
18429 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18430 in
18431 if Requests.Response.ok response then
18432 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18433 else
18434 let body = Requests.Response.text response in
18435 let parsed_body =
18436 match Jsont_bytesrw.decode_string Jsont.json body with
18437 | Ok json -> Some (Openapi.Runtime.Json json)
18438 | Error _ -> Some (Openapi.Runtime.Raw body)
18439 in
18440 raise (Openapi.Runtime.Api_error {
18441 operation = op_name;
18442 method_ = "PUT";
18443 url;
18444 status = Requests.Response.status_code response;
18445 body;
18446 parsed_body;
18447 })
18448
18449 (** Remove assets from an album
18450
18451 Remove multiple assets from a specific album by its ID. *)
18452 let remove_asset_from_album ~id client () =
18453 let op_name = "remove_asset_from_album" in
18454 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}/assets" in
18455 let query = "" in
18456 let url = client.base_url ^ url_path ^ query in
18457 let response =
18458 try Requests.delete client.session url
18459 with Eio.Io _ as ex ->
18460 let bt = Printexc.get_raw_backtrace () in
18461 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
18462 in
18463 if Requests.Response.ok response then
18464 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18465 else
18466 let body = Requests.Response.text response in
18467 let parsed_body =
18468 match Jsont_bytesrw.decode_string Jsont.json body with
18469 | Ok json -> Some (Openapi.Runtime.Json json)
18470 | Error _ -> Some (Openapi.Runtime.Raw body)
18471 in
18472 raise (Openapi.Runtime.Api_error {
18473 operation = op_name;
18474 method_ = "DELETE";
18475 url;
18476 status = Requests.Response.status_code response;
18477 body;
18478 parsed_body;
18479 })
18480
18481 (** Add assets to a memory
18482
18483 Add a list of asset IDs to a specific memory. *)
18484 let add_memory_assets ~id ~body client () =
18485 let op_name = "add_memory_assets" in
18486 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/memories/{id}/assets" in
18487 let query = "" in
18488 let url = client.base_url ^ url_path ^ query in
18489 let response =
18490 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json BulkIds.Dto.jsont body)) url
18491 with Eio.Io _ as ex ->
18492 let bt = Printexc.get_raw_backtrace () in
18493 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18494 in
18495 if Requests.Response.ok response then
18496 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18497 else
18498 let body = Requests.Response.text response in
18499 let parsed_body =
18500 match Jsont_bytesrw.decode_string Jsont.json body with
18501 | Ok json -> Some (Openapi.Runtime.Json json)
18502 | Error _ -> Some (Openapi.Runtime.Raw body)
18503 in
18504 raise (Openapi.Runtime.Api_error {
18505 operation = op_name;
18506 method_ = "PUT";
18507 url;
18508 status = Requests.Response.status_code response;
18509 body;
18510 parsed_body;
18511 })
18512
18513 (** Remove assets from a memory
18514
18515 Remove a list of asset IDs from a specific memory. *)
18516 let remove_memory_assets ~id client () =
18517 let op_name = "remove_memory_assets" in
18518 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/memories/{id}/assets" in
18519 let query = "" in
18520 let url = client.base_url ^ url_path ^ query in
18521 let response =
18522 try Requests.delete client.session url
18523 with Eio.Io _ as ex ->
18524 let bt = Printexc.get_raw_backtrace () in
18525 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
18526 in
18527 if Requests.Response.ok response then
18528 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18529 else
18530 let body = Requests.Response.text response in
18531 let parsed_body =
18532 match Jsont_bytesrw.decode_string Jsont.json body with
18533 | Ok json -> Some (Openapi.Runtime.Json json)
18534 | Error _ -> Some (Openapi.Runtime.Raw body)
18535 in
18536 raise (Openapi.Runtime.Api_error {
18537 operation = op_name;
18538 method_ = "DELETE";
18539 url;
18540 status = Requests.Response.status_code response;
18541 body;
18542 parsed_body;
18543 })
18544
18545 (** Update people
18546
18547 Bulk update multiple people at once. *)
18548 let update_people ~body client () =
18549 let op_name = "update_people" in
18550 let url_path = "/people" in
18551 let query = "" in
18552 let url = client.base_url ^ url_path ^ query in
18553 let response =
18554 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json People.UpdateDto.jsont body)) url
18555 with Eio.Io _ as ex ->
18556 let bt = Printexc.get_raw_backtrace () in
18557 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18558 in
18559 if Requests.Response.ok response then
18560 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18561 else
18562 let body = Requests.Response.text response in
18563 let parsed_body =
18564 match Jsont_bytesrw.decode_string Jsont.json body with
18565 | Ok json -> Some (Openapi.Runtime.Json json)
18566 | Error _ -> Some (Openapi.Runtime.Raw body)
18567 in
18568 raise (Openapi.Runtime.Api_error {
18569 operation = op_name;
18570 method_ = "PUT";
18571 url;
18572 status = Requests.Response.status_code response;
18573 body;
18574 parsed_body;
18575 })
18576
18577 (** Merge people
18578
18579 Merge a list of people into the person specified in the path parameter. *)
18580 let merge_person ~id ~body client () =
18581 let op_name = "merge_person" in
18582 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}/merge" in
18583 let query = "" in
18584 let url = client.base_url ^ url_path ^ query in
18585 let response =
18586 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json MergePerson.Dto.jsont body)) url
18587 with Eio.Io _ as ex ->
18588 let bt = Printexc.get_raw_backtrace () in
18589 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
18590 in
18591 if Requests.Response.ok response then
18592 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18593 else
18594 let body = Requests.Response.text response in
18595 let parsed_body =
18596 match Jsont_bytesrw.decode_string Jsont.json body with
18597 | Ok json -> Some (Openapi.Runtime.Json json)
18598 | Error _ -> Some (Openapi.Runtime.Raw body)
18599 in
18600 raise (Openapi.Runtime.Api_error {
18601 operation = op_name;
18602 method_ = "POST";
18603 url;
18604 status = Requests.Response.status_code response;
18605 body;
18606 parsed_body;
18607 })
18608
18609 (** Tag assets
18610
18611 Add a tag to all the specified assets. *)
18612 let tag_assets ~id ~body client () =
18613 let op_name = "tag_assets" in
18614 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/tags/{id}/assets" in
18615 let query = "" in
18616 let url = client.base_url ^ url_path ^ query in
18617 let response =
18618 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json BulkIds.Dto.jsont body)) url
18619 with Eio.Io _ as ex ->
18620 let bt = Printexc.get_raw_backtrace () in
18621 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
18622 in
18623 if Requests.Response.ok response then
18624 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18625 else
18626 let body = Requests.Response.text response in
18627 let parsed_body =
18628 match Jsont_bytesrw.decode_string Jsont.json body with
18629 | Ok json -> Some (Openapi.Runtime.Json json)
18630 | Error _ -> Some (Openapi.Runtime.Raw body)
18631 in
18632 raise (Openapi.Runtime.Api_error {
18633 operation = op_name;
18634 method_ = "PUT";
18635 url;
18636 status = Requests.Response.status_code response;
18637 body;
18638 parsed_body;
18639 })
18640
18641 (** Untag assets
18642
18643 Remove a tag from all the specified assets. *)
18644 let untag_assets ~id client () =
18645 let op_name = "untag_assets" in
18646 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/tags/{id}/assets" in
18647 let query = "" in
18648 let url = client.base_url ^ url_path ^ query in
18649 let response =
18650 try Requests.delete client.session url
18651 with Eio.Io _ as ex ->
18652 let bt = Printexc.get_raw_backtrace () in
18653 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
18654 in
18655 if Requests.Response.ok response then
18656 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18657 else
18658 let body = Requests.Response.text response in
18659 let parsed_body =
18660 match Jsont_bytesrw.decode_string Jsont.json body with
18661 | Ok json -> Some (Openapi.Runtime.Json json)
18662 | Error _ -> Some (Openapi.Runtime.Raw body)
18663 in
18664 raise (Openapi.Runtime.Api_error {
18665 operation = op_name;
18666 method_ = "DELETE";
18667 url;
18668 status = Requests.Response.status_code response;
18669 body;
18670 parsed_body;
18671 })
18672end
18673
18674module AssetFace = struct
18675 module Types = struct
18676 module UpdateDto = struct
18677 type t = {
18678 data : AssetFaceUpdate.Item.t list;
18679 }
18680 end
18681
18682 module ResponseDto = struct
18683 type t = {
18684 bounding_box_x1 : int;
18685 bounding_box_x2 : int;
18686 bounding_box_y1 : int;
18687 bounding_box_y2 : int;
18688 id : string;
18689 image_height : int;
18690 image_width : int;
18691 person : Person.ResponseDto.t;
18692 source_type : Source.Type.t option;
18693 }
18694 end
18695
18696 module CreateDto = struct
18697 type t = {
18698 asset_id : string;
18699 height : int;
18700 image_height : int;
18701 image_width : int;
18702 person_id : string;
18703 width : int;
18704 x : int;
18705 y : int;
18706 }
18707 end
18708 end
18709
18710 module UpdateDto = struct
18711 include Types.UpdateDto
18712
18713 let v ~data () = { data }
18714
18715 let data t = t.data
18716
18717 let jsont : t Jsont.t =
18718 Jsont.Object.map ~kind:"AssetFaceUpdateDto"
18719 (fun data -> { data })
18720 |> Jsont.Object.mem "data" (Jsont.list AssetFaceUpdate.Item.jsont) ~enc:(fun r -> r.data)
18721 |> Jsont.Object.skip_unknown
18722 |> Jsont.Object.finish
18723 end
18724
18725 module ResponseDto = struct
18726 include Types.ResponseDto
18727
18728 let v ~bounding_box_x1 ~bounding_box_x2 ~bounding_box_y1 ~bounding_box_y2 ~id ~image_height ~image_width ~person ?source_type () = { bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; person; source_type }
18729
18730 let bounding_box_x1 t = t.bounding_box_x1
18731 let bounding_box_x2 t = t.bounding_box_x2
18732 let bounding_box_y1 t = t.bounding_box_y1
18733 let bounding_box_y2 t = t.bounding_box_y2
18734 let id t = t.id
18735 let image_height t = t.image_height
18736 let image_width t = t.image_width
18737 let person t = t.person
18738 let source_type t = t.source_type
18739
18740 let jsont : t Jsont.t =
18741 Jsont.Object.map ~kind:"AssetFaceResponseDto"
18742 (fun bounding_box_x1 bounding_box_x2 bounding_box_y1 bounding_box_y2 id image_height image_width person source_type -> { bounding_box_x1; bounding_box_x2; bounding_box_y1; bounding_box_y2; id; image_height; image_width; person; source_type })
18743 |> Jsont.Object.mem "boundingBoxX1" Jsont.int ~enc:(fun r -> r.bounding_box_x1)
18744 |> Jsont.Object.mem "boundingBoxX2" Jsont.int ~enc:(fun r -> r.bounding_box_x2)
18745 |> Jsont.Object.mem "boundingBoxY1" Jsont.int ~enc:(fun r -> r.bounding_box_y1)
18746 |> Jsont.Object.mem "boundingBoxY2" Jsont.int ~enc:(fun r -> r.bounding_box_y2)
18747 |> Jsont.Object.mem "id" Jsont.string ~enc:(fun r -> r.id)
18748 |> Jsont.Object.mem "imageHeight" Jsont.int ~enc:(fun r -> r.image_height)
18749 |> Jsont.Object.mem "imageWidth" Jsont.int ~enc:(fun r -> r.image_width)
18750 |> Jsont.Object.mem "person" Person.ResponseDto.jsont ~enc:(fun r -> r.person)
18751 |> Jsont.Object.opt_mem "sourceType" Source.Type.jsont ~enc:(fun r -> r.source_type)
18752 |> Jsont.Object.skip_unknown
18753 |> Jsont.Object.finish
18754 end
18755
18756 module CreateDto = struct
18757 include Types.CreateDto
18758
18759 let v ~asset_id ~height ~image_height ~image_width ~person_id ~width ~x ~y () = { asset_id; height; image_height; image_width; person_id; width; x; y }
18760
18761 let asset_id t = t.asset_id
18762 let height t = t.height
18763 let image_height t = t.image_height
18764 let image_width t = t.image_width
18765 let person_id t = t.person_id
18766 let width t = t.width
18767 let x t = t.x
18768 let y t = t.y
18769
18770 let jsont : t Jsont.t =
18771 Jsont.Object.map ~kind:"AssetFaceCreateDto"
18772 (fun asset_id height image_height image_width person_id width x y -> { asset_id; height; image_height; image_width; person_id; width; x; y })
18773 |> Jsont.Object.mem "assetId" Jsont.string ~enc:(fun r -> r.asset_id)
18774 |> Jsont.Object.mem "height" Jsont.int ~enc:(fun r -> r.height)
18775 |> Jsont.Object.mem "imageHeight" Jsont.int ~enc:(fun r -> r.image_height)
18776 |> Jsont.Object.mem "imageWidth" Jsont.int ~enc:(fun r -> r.image_width)
18777 |> Jsont.Object.mem "personId" Jsont.string ~enc:(fun r -> r.person_id)
18778 |> Jsont.Object.mem "width" Jsont.int ~enc:(fun r -> r.width)
18779 |> Jsont.Object.mem "x" Jsont.int ~enc:(fun r -> r.x)
18780 |> Jsont.Object.mem "y" Jsont.int ~enc:(fun r -> r.y)
18781 |> Jsont.Object.skip_unknown
18782 |> Jsont.Object.finish
18783 end
18784
18785 (** Retrieve faces for asset
18786
18787 Retrieve all faces belonging to an asset. *)
18788 let get_faces ~id client () =
18789 let op_name = "get_faces" in
18790 let url_path = "/faces" in
18791 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.singleton ~key:"id" ~value:id]) in
18792 let url = client.base_url ^ url_path ^ query in
18793 let response =
18794 try Requests.get client.session url
18795 with Eio.Io _ as ex ->
18796 let bt = Printexc.get_raw_backtrace () in
18797 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
18798 in
18799 if Requests.Response.ok response then
18800 Openapi.Runtime.Json.decode_json_exn ResponseDto.jsont (Requests.Response.json response)
18801 else
18802 let body = Requests.Response.text response in
18803 let parsed_body =
18804 match Jsont_bytesrw.decode_string Jsont.json body with
18805 | Ok json -> Some (Openapi.Runtime.Json json)
18806 | Error _ -> Some (Openapi.Runtime.Raw body)
18807 in
18808 raise (Openapi.Runtime.Api_error {
18809 operation = op_name;
18810 method_ = "GET";
18811 url;
18812 status = Requests.Response.status_code response;
18813 body;
18814 parsed_body;
18815 })
18816end
18817
18818module Client = struct
18819 (** Delete an activity
18820
18821 Removes a like or comment from a given album or asset in an album. *)
18822 let delete_activity ~id client () =
18823 let op_name = "delete_activity" in
18824 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/activities/{id}" in
18825 let query = "" in
18826 let url = client.base_url ^ url_path ^ query in
18827 let response =
18828 try Requests.delete client.session url
18829 with Eio.Io _ as ex ->
18830 let bt = Printexc.get_raw_backtrace () in
18831 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
18832 in
18833 if Requests.Response.ok response then
18834 Requests.Response.json response
18835 else
18836 let body = Requests.Response.text response in
18837 let parsed_body =
18838 match Jsont_bytesrw.decode_string Jsont.json body with
18839 | Ok json -> Some (Openapi.Runtime.Json json)
18840 | Error _ -> Some (Openapi.Runtime.Raw body)
18841 in
18842 raise (Openapi.Runtime.Api_error {
18843 operation = op_name;
18844 method_ = "DELETE";
18845 url;
18846 status = Requests.Response.status_code response;
18847 body;
18848 parsed_body;
18849 })
18850
18851 (** Unlink all OAuth accounts
18852
18853 Unlinks all OAuth accounts associated with user accounts in the system. *)
18854 let unlink_all_oauth_accounts_admin client () =
18855 let op_name = "unlink_all_oauth_accounts_admin" in
18856 let url_path = "/admin/auth/unlink-all" in
18857 let query = "" in
18858 let url = client.base_url ^ url_path ^ query in
18859 let response =
18860 try Requests.post client.session url
18861 with Eio.Io _ as ex ->
18862 let bt = Printexc.get_raw_backtrace () in
18863 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
18864 in
18865 if Requests.Response.ok response then
18866 Requests.Response.json response
18867 else
18868 let body = Requests.Response.text response in
18869 let parsed_body =
18870 match Jsont_bytesrw.decode_string Jsont.json body with
18871 | Ok json -> Some (Openapi.Runtime.Json json)
18872 | Error _ -> Some (Openapi.Runtime.Raw body)
18873 in
18874 raise (Openapi.Runtime.Api_error {
18875 operation = op_name;
18876 method_ = "POST";
18877 url;
18878 status = Requests.Response.status_code response;
18879 body;
18880 parsed_body;
18881 })
18882
18883 (** Delete database backup
18884
18885 Delete a backup by its filename *)
18886 let delete_database_backup client () =
18887 let op_name = "delete_database_backup" in
18888 let url_path = "/admin/database-backups" in
18889 let query = "" in
18890 let url = client.base_url ^ url_path ^ query in
18891 let response =
18892 try Requests.delete client.session url
18893 with Eio.Io _ as ex ->
18894 let bt = Printexc.get_raw_backtrace () in
18895 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
18896 in
18897 if Requests.Response.ok response then
18898 Requests.Response.json response
18899 else
18900 let body = Requests.Response.text response in
18901 let parsed_body =
18902 match Jsont_bytesrw.decode_string Jsont.json body with
18903 | Ok json -> Some (Openapi.Runtime.Json json)
18904 | Error _ -> Some (Openapi.Runtime.Raw body)
18905 in
18906 raise (Openapi.Runtime.Api_error {
18907 operation = op_name;
18908 method_ = "DELETE";
18909 url;
18910 status = Requests.Response.status_code response;
18911 body;
18912 parsed_body;
18913 })
18914
18915 (** Start database backup restore flow
18916
18917 Put Immich into maintenance mode to restore a backup (Immich must not be configured) *)
18918 let start_database_restore_flow client () =
18919 let op_name = "start_database_restore_flow" in
18920 let url_path = "/admin/database-backups/start-restore" in
18921 let query = "" in
18922 let url = client.base_url ^ url_path ^ query in
18923 let response =
18924 try Requests.post client.session url
18925 with Eio.Io _ as ex ->
18926 let bt = Printexc.get_raw_backtrace () in
18927 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
18928 in
18929 if Requests.Response.ok response then
18930 Requests.Response.json response
18931 else
18932 let body = Requests.Response.text response in
18933 let parsed_body =
18934 match Jsont_bytesrw.decode_string Jsont.json body with
18935 | Ok json -> Some (Openapi.Runtime.Json json)
18936 | Error _ -> Some (Openapi.Runtime.Raw body)
18937 in
18938 raise (Openapi.Runtime.Api_error {
18939 operation = op_name;
18940 method_ = "POST";
18941 url;
18942 status = Requests.Response.status_code response;
18943 body;
18944 parsed_body;
18945 })
18946
18947 (** Upload database backup
18948
18949 Uploads .sql/.sql.gz file to restore backup from *)
18950 let upload_database_backup client () =
18951 let op_name = "upload_database_backup" in
18952 let url_path = "/admin/database-backups/upload" in
18953 let query = "" in
18954 let url = client.base_url ^ url_path ^ query in
18955 let response =
18956 try Requests.post client.session url
18957 with Eio.Io _ as ex ->
18958 let bt = Printexc.get_raw_backtrace () in
18959 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
18960 in
18961 if Requests.Response.ok response then
18962 Requests.Response.json response
18963 else
18964 let body = Requests.Response.text response in
18965 let parsed_body =
18966 match Jsont_bytesrw.decode_string Jsont.json body with
18967 | Ok json -> Some (Openapi.Runtime.Json json)
18968 | Error _ -> Some (Openapi.Runtime.Raw body)
18969 in
18970 raise (Openapi.Runtime.Api_error {
18971 operation = op_name;
18972 method_ = "POST";
18973 url;
18974 status = Requests.Response.status_code response;
18975 body;
18976 parsed_body;
18977 })
18978
18979 (** Download database backup
18980
18981 Downloads the database backup file *)
18982 let download_database_backup ~filename client () =
18983 let op_name = "download_database_backup" in
18984 let url_path = Openapi.Runtime.Path.render ~params:[("filename", filename)] "/admin/database-backups/{filename}" in
18985 let query = "" in
18986 let url = client.base_url ^ url_path ^ query in
18987 let response =
18988 try Requests.get client.session url
18989 with Eio.Io _ as ex ->
18990 let bt = Printexc.get_raw_backtrace () in
18991 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
18992 in
18993 if Requests.Response.ok response then
18994 Requests.Response.json response
18995 else
18996 let body = Requests.Response.text response in
18997 let parsed_body =
18998 match Jsont_bytesrw.decode_string Jsont.json body with
18999 | Ok json -> Some (Openapi.Runtime.Json json)
19000 | Error _ -> Some (Openapi.Runtime.Raw body)
19001 in
19002 raise (Openapi.Runtime.Api_error {
19003 operation = op_name;
19004 method_ = "GET";
19005 url;
19006 status = Requests.Response.status_code response;
19007 body;
19008 parsed_body;
19009 })
19010
19011 (** Set maintenance mode
19012
19013 Put Immich into or take it out of maintenance mode *)
19014 let set_maintenance_mode ~body client () =
19015 let op_name = "set_maintenance_mode" in
19016 let url_path = "/admin/maintenance" in
19017 let query = "" in
19018 let url = client.base_url ^ url_path ^ query in
19019 let response =
19020 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SetMaintenanceMode.Dto.jsont body)) url
19021 with Eio.Io _ as ex ->
19022 let bt = Printexc.get_raw_backtrace () in
19023 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19024 in
19025 if Requests.Response.ok response then
19026 Requests.Response.json response
19027 else
19028 let body = Requests.Response.text response in
19029 let parsed_body =
19030 match Jsont_bytesrw.decode_string Jsont.json body with
19031 | Ok json -> Some (Openapi.Runtime.Json json)
19032 | Error _ -> Some (Openapi.Runtime.Raw body)
19033 in
19034 raise (Openapi.Runtime.Api_error {
19035 operation = op_name;
19036 method_ = "POST";
19037 url;
19038 status = Requests.Response.status_code response;
19039 body;
19040 parsed_body;
19041 })
19042
19043 (** Delete an album
19044
19045 Delete a specific album by its ID. Note the album is initially trashed and then immediately scheduled for deletion, but relies on a background job to complete the process. *)
19046 let delete_album ~id client () =
19047 let op_name = "delete_album" in
19048 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/albums/{id}" in
19049 let query = "" in
19050 let url = client.base_url ^ url_path ^ query in
19051 let response =
19052 try Requests.delete client.session url
19053 with Eio.Io _ as ex ->
19054 let bt = Printexc.get_raw_backtrace () in
19055 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19056 in
19057 if Requests.Response.ok response then
19058 Requests.Response.json response
19059 else
19060 let body = Requests.Response.text response in
19061 let parsed_body =
19062 match Jsont_bytesrw.decode_string Jsont.json body with
19063 | Ok json -> Some (Openapi.Runtime.Json json)
19064 | Error _ -> Some (Openapi.Runtime.Raw body)
19065 in
19066 raise (Openapi.Runtime.Api_error {
19067 operation = op_name;
19068 method_ = "DELETE";
19069 url;
19070 status = Requests.Response.status_code response;
19071 body;
19072 parsed_body;
19073 })
19074
19075 (** Update user role
19076
19077 Change the role for a specific user in a specific album. *)
19078 let update_album_user ~id ~user_id ~body client () =
19079 let op_name = "update_album_user" in
19080 let url_path = Openapi.Runtime.Path.render ~params:[("id", id); ("userId", user_id)] "/albums/{id}/user/{userId}" in
19081 let query = "" in
19082 let url = client.base_url ^ url_path ^ query in
19083 let response =
19084 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json UpdateAlbumUser.Dto.jsont body)) url
19085 with Eio.Io _ as ex ->
19086 let bt = Printexc.get_raw_backtrace () in
19087 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
19088 in
19089 if Requests.Response.ok response then
19090 Requests.Response.json response
19091 else
19092 let body = Requests.Response.text response in
19093 let parsed_body =
19094 match Jsont_bytesrw.decode_string Jsont.json body with
19095 | Ok json -> Some (Openapi.Runtime.Json json)
19096 | Error _ -> Some (Openapi.Runtime.Raw body)
19097 in
19098 raise (Openapi.Runtime.Api_error {
19099 operation = op_name;
19100 method_ = "PUT";
19101 url;
19102 status = Requests.Response.status_code response;
19103 body;
19104 parsed_body;
19105 })
19106
19107 (** Remove user from album
19108
19109 Remove a user from an album. Use an ID of "me" to leave a shared album. *)
19110 let remove_user_from_album ~id ~user_id client () =
19111 let op_name = "remove_user_from_album" in
19112 let url_path = Openapi.Runtime.Path.render ~params:[("id", id); ("userId", user_id)] "/albums/{id}/user/{userId}" in
19113 let query = "" in
19114 let url = client.base_url ^ url_path ^ query in
19115 let response =
19116 try Requests.delete client.session url
19117 with Eio.Io _ as ex ->
19118 let bt = Printexc.get_raw_backtrace () in
19119 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19120 in
19121 if Requests.Response.ok response then
19122 Requests.Response.json response
19123 else
19124 let body = Requests.Response.text response in
19125 let parsed_body =
19126 match Jsont_bytesrw.decode_string Jsont.json body with
19127 | Ok json -> Some (Openapi.Runtime.Json json)
19128 | Error _ -> Some (Openapi.Runtime.Raw body)
19129 in
19130 raise (Openapi.Runtime.Api_error {
19131 operation = op_name;
19132 method_ = "DELETE";
19133 url;
19134 status = Requests.Response.status_code response;
19135 body;
19136 parsed_body;
19137 })
19138
19139 (** Delete an API key
19140
19141 Deletes an API key identified by its ID. The current user must own this API key. *)
19142 let delete_api_key ~id client () =
19143 let op_name = "delete_api_key" in
19144 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/api-keys/{id}" in
19145 let query = "" in
19146 let url = client.base_url ^ url_path ^ query in
19147 let response =
19148 try Requests.delete client.session url
19149 with Eio.Io _ as ex ->
19150 let bt = Printexc.get_raw_backtrace () in
19151 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19152 in
19153 if Requests.Response.ok response then
19154 Requests.Response.json response
19155 else
19156 let body = Requests.Response.text response in
19157 let parsed_body =
19158 match Jsont_bytesrw.decode_string Jsont.json body with
19159 | Ok json -> Some (Openapi.Runtime.Json json)
19160 | Error _ -> Some (Openapi.Runtime.Raw body)
19161 in
19162 raise (Openapi.Runtime.Api_error {
19163 operation = op_name;
19164 method_ = "DELETE";
19165 url;
19166 status = Requests.Response.status_code response;
19167 body;
19168 parsed_body;
19169 })
19170
19171 (** Update assets
19172
19173 Updates multiple assets at the same time. *)
19174 let update_assets ~body client () =
19175 let op_name = "update_assets" in
19176 let url_path = "/assets" in
19177 let query = "" in
19178 let url = client.base_url ^ url_path ^ query in
19179 let response =
19180 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetBulk.UpdateDto.jsont body)) url
19181 with Eio.Io _ as ex ->
19182 let bt = Printexc.get_raw_backtrace () in
19183 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
19184 in
19185 if Requests.Response.ok response then
19186 Requests.Response.json response
19187 else
19188 let body = Requests.Response.text response in
19189 let parsed_body =
19190 match Jsont_bytesrw.decode_string Jsont.json body with
19191 | Ok json -> Some (Openapi.Runtime.Json json)
19192 | Error _ -> Some (Openapi.Runtime.Raw body)
19193 in
19194 raise (Openapi.Runtime.Api_error {
19195 operation = op_name;
19196 method_ = "PUT";
19197 url;
19198 status = Requests.Response.status_code response;
19199 body;
19200 parsed_body;
19201 })
19202
19203 (** Delete assets
19204
19205 Deletes multiple assets at the same time. *)
19206 let delete_assets client () =
19207 let op_name = "delete_assets" in
19208 let url_path = "/assets" in
19209 let query = "" in
19210 let url = client.base_url ^ url_path ^ query in
19211 let response =
19212 try Requests.delete client.session url
19213 with Eio.Io _ as ex ->
19214 let bt = Printexc.get_raw_backtrace () in
19215 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19216 in
19217 if Requests.Response.ok response then
19218 Requests.Response.json response
19219 else
19220 let body = Requests.Response.text response in
19221 let parsed_body =
19222 match Jsont_bytesrw.decode_string Jsont.json body with
19223 | Ok json -> Some (Openapi.Runtime.Json json)
19224 | Error _ -> Some (Openapi.Runtime.Raw body)
19225 in
19226 raise (Openapi.Runtime.Api_error {
19227 operation = op_name;
19228 method_ = "DELETE";
19229 url;
19230 status = Requests.Response.status_code response;
19231 body;
19232 parsed_body;
19233 })
19234
19235 (** Copy asset
19236
19237 Copy asset information like albums, tags, etc. from one asset to another. *)
19238 let copy_asset ~body client () =
19239 let op_name = "copy_asset" in
19240 let url_path = "/assets/copy" in
19241 let query = "" in
19242 let url = client.base_url ^ url_path ^ query in
19243 let response =
19244 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetCopy.Dto.jsont body)) url
19245 with Eio.Io _ as ex ->
19246 let bt = Printexc.get_raw_backtrace () in
19247 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
19248 in
19249 if Requests.Response.ok response then
19250 Requests.Response.json response
19251 else
19252 let body = Requests.Response.text response in
19253 let parsed_body =
19254 match Jsont_bytesrw.decode_string Jsont.json body with
19255 | Ok json -> Some (Openapi.Runtime.Json json)
19256 | Error _ -> Some (Openapi.Runtime.Raw body)
19257 in
19258 raise (Openapi.Runtime.Api_error {
19259 operation = op_name;
19260 method_ = "PUT";
19261 url;
19262 status = Requests.Response.status_code response;
19263 body;
19264 parsed_body;
19265 })
19266
19267 (** Retrieve assets by device ID
19268
19269 Get all asset of a device that are in the database, ID only. *)
19270 let get_all_user_assets_by_device_id ~device_id client () =
19271 let op_name = "get_all_user_assets_by_device_id" in
19272 let url_path = Openapi.Runtime.Path.render ~params:[("deviceId", device_id)] "/assets/device/{deviceId}" in
19273 let query = "" in
19274 let url = client.base_url ^ url_path ^ query in
19275 let response =
19276 try Requests.get client.session url
19277 with Eio.Io _ as ex ->
19278 let bt = Printexc.get_raw_backtrace () in
19279 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
19280 in
19281 if Requests.Response.ok response then
19282 Requests.Response.json response
19283 else
19284 let body = Requests.Response.text response in
19285 let parsed_body =
19286 match Jsont_bytesrw.decode_string Jsont.json body with
19287 | Ok json -> Some (Openapi.Runtime.Json json)
19288 | Error _ -> Some (Openapi.Runtime.Raw body)
19289 in
19290 raise (Openapi.Runtime.Api_error {
19291 operation = op_name;
19292 method_ = "GET";
19293 url;
19294 status = Requests.Response.status_code response;
19295 body;
19296 parsed_body;
19297 })
19298
19299 (** Run an asset job
19300
19301 Run a specific job on a set of assets. *)
19302 let run_asset_jobs ~body client () =
19303 let op_name = "run_asset_jobs" in
19304 let url_path = "/assets/jobs" in
19305 let query = "" in
19306 let url = client.base_url ^ url_path ^ query in
19307 let response =
19308 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetJobs.Dto.jsont body)) url
19309 with Eio.Io _ as ex ->
19310 let bt = Printexc.get_raw_backtrace () in
19311 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19312 in
19313 if Requests.Response.ok response then
19314 Requests.Response.json response
19315 else
19316 let body = Requests.Response.text response in
19317 let parsed_body =
19318 match Jsont_bytesrw.decode_string Jsont.json body with
19319 | Ok json -> Some (Openapi.Runtime.Json json)
19320 | Error _ -> Some (Openapi.Runtime.Raw body)
19321 in
19322 raise (Openapi.Runtime.Api_error {
19323 operation = op_name;
19324 method_ = "POST";
19325 url;
19326 status = Requests.Response.status_code response;
19327 body;
19328 parsed_body;
19329 })
19330
19331 (** Delete asset metadata
19332
19333 Delete metadata key-value pairs for multiple assets. *)
19334 let delete_bulk_asset_metadata client () =
19335 let op_name = "delete_bulk_asset_metadata" in
19336 let url_path = "/assets/metadata" in
19337 let query = "" in
19338 let url = client.base_url ^ url_path ^ query in
19339 let response =
19340 try Requests.delete client.session url
19341 with Eio.Io _ as ex ->
19342 let bt = Printexc.get_raw_backtrace () in
19343 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19344 in
19345 if Requests.Response.ok response then
19346 Requests.Response.json response
19347 else
19348 let body = Requests.Response.text response in
19349 let parsed_body =
19350 match Jsont_bytesrw.decode_string Jsont.json body with
19351 | Ok json -> Some (Openapi.Runtime.Json json)
19352 | Error _ -> Some (Openapi.Runtime.Raw body)
19353 in
19354 raise (Openapi.Runtime.Api_error {
19355 operation = op_name;
19356 method_ = "DELETE";
19357 url;
19358 status = Requests.Response.status_code response;
19359 body;
19360 parsed_body;
19361 })
19362
19363 (** Remove edits from an existing asset
19364
19365 Removes all edit actions (crop, rotate, mirror) associated with the specified asset. *)
19366 let remove_asset_edits ~id client () =
19367 let op_name = "remove_asset_edits" in
19368 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/edits" in
19369 let query = "" in
19370 let url = client.base_url ^ url_path ^ query in
19371 let response =
19372 try Requests.delete client.session url
19373 with Eio.Io _ as ex ->
19374 let bt = Printexc.get_raw_backtrace () in
19375 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19376 in
19377 if Requests.Response.ok response then
19378 Requests.Response.json response
19379 else
19380 let body = Requests.Response.text response in
19381 let parsed_body =
19382 match Jsont_bytesrw.decode_string Jsont.json body with
19383 | Ok json -> Some (Openapi.Runtime.Json json)
19384 | Error _ -> Some (Openapi.Runtime.Raw body)
19385 in
19386 raise (Openapi.Runtime.Api_error {
19387 operation = op_name;
19388 method_ = "DELETE";
19389 url;
19390 status = Requests.Response.status_code response;
19391 body;
19392 parsed_body;
19393 })
19394
19395 (** Delete asset metadata by key
19396
19397 Delete a specific metadata key-value pair associated with the specified asset. *)
19398 let delete_asset_metadata ~id ~key client () =
19399 let op_name = "delete_asset_metadata" in
19400 let url_path = Openapi.Runtime.Path.render ~params:[("id", id); ("key", key)] "/assets/{id}/metadata/{key}" in
19401 let query = "" in
19402 let url = client.base_url ^ url_path ^ query in
19403 let response =
19404 try Requests.delete client.session url
19405 with Eio.Io _ as ex ->
19406 let bt = Printexc.get_raw_backtrace () in
19407 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19408 in
19409 if Requests.Response.ok response then
19410 Requests.Response.json response
19411 else
19412 let body = Requests.Response.text response in
19413 let parsed_body =
19414 match Jsont_bytesrw.decode_string Jsont.json body with
19415 | Ok json -> Some (Openapi.Runtime.Json json)
19416 | Error _ -> Some (Openapi.Runtime.Raw body)
19417 in
19418 raise (Openapi.Runtime.Api_error {
19419 operation = op_name;
19420 method_ = "DELETE";
19421 url;
19422 status = Requests.Response.status_code response;
19423 body;
19424 parsed_body;
19425 })
19426
19427 (** Download original asset
19428
19429 Downloads the original file of the specified asset. *)
19430 let download_asset ~id ?edited ?key ?slug client () =
19431 let op_name = "download_asset" in
19432 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/original" in
19433 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"edited" ~value:edited; Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
19434 let url = client.base_url ^ url_path ^ query in
19435 let response =
19436 try Requests.get client.session url
19437 with Eio.Io _ as ex ->
19438 let bt = Printexc.get_raw_backtrace () in
19439 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
19440 in
19441 if Requests.Response.ok response then
19442 Requests.Response.json response
19443 else
19444 let body = Requests.Response.text response in
19445 let parsed_body =
19446 match Jsont_bytesrw.decode_string Jsont.json body with
19447 | Ok json -> Some (Openapi.Runtime.Json json)
19448 | Error _ -> Some (Openapi.Runtime.Raw body)
19449 in
19450 raise (Openapi.Runtime.Api_error {
19451 operation = op_name;
19452 method_ = "GET";
19453 url;
19454 status = Requests.Response.status_code response;
19455 body;
19456 parsed_body;
19457 })
19458
19459 (** View asset thumbnail
19460
19461 Retrieve the thumbnail image for the specified asset. Viewing the fullsize thumbnail might redirect to downloadAsset, which requires a different permission. *)
19462 let view_asset ~id ?edited ?key ?size ?slug client () =
19463 let op_name = "view_asset" in
19464 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/thumbnail" in
19465 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"edited" ~value:edited; Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"size" ~value:size; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
19466 let url = client.base_url ^ url_path ^ query in
19467 let response =
19468 try Requests.get client.session url
19469 with Eio.Io _ as ex ->
19470 let bt = Printexc.get_raw_backtrace () in
19471 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
19472 in
19473 if Requests.Response.ok response then
19474 Requests.Response.json response
19475 else
19476 let body = Requests.Response.text response in
19477 let parsed_body =
19478 match Jsont_bytesrw.decode_string Jsont.json body with
19479 | Ok json -> Some (Openapi.Runtime.Json json)
19480 | Error _ -> Some (Openapi.Runtime.Raw body)
19481 in
19482 raise (Openapi.Runtime.Api_error {
19483 operation = op_name;
19484 method_ = "GET";
19485 url;
19486 status = Requests.Response.status_code response;
19487 body;
19488 parsed_body;
19489 })
19490
19491 (** Play asset video
19492
19493 Streams the video file for the specified asset. This endpoint also supports byte range requests. *)
19494 let play_asset_video ~id ?key ?slug client () =
19495 let op_name = "play_asset_video" in
19496 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/assets/{id}/video/playback" in
19497 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
19498 let url = client.base_url ^ url_path ^ query in
19499 let response =
19500 try Requests.get client.session url
19501 with Eio.Io _ as ex ->
19502 let bt = Printexc.get_raw_backtrace () in
19503 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
19504 in
19505 if Requests.Response.ok response then
19506 Requests.Response.json response
19507 else
19508 let body = Requests.Response.text response in
19509 let parsed_body =
19510 match Jsont_bytesrw.decode_string Jsont.json body with
19511 | Ok json -> Some (Openapi.Runtime.Json json)
19512 | Error _ -> Some (Openapi.Runtime.Raw body)
19513 in
19514 raise (Openapi.Runtime.Api_error {
19515 operation = op_name;
19516 method_ = "GET";
19517 url;
19518 status = Requests.Response.status_code response;
19519 body;
19520 parsed_body;
19521 })
19522
19523 (** Setup pin code
19524
19525 Setup a new pin code for the current user. *)
19526 let setup_pin_code ~body client () =
19527 let op_name = "setup_pin_code" in
19528 let url_path = "/auth/pin-code" in
19529 let query = "" in
19530 let url = client.base_url ^ url_path ^ query in
19531 let response =
19532 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json PinCodeSetup.Dto.jsont body)) url
19533 with Eio.Io _ as ex ->
19534 let bt = Printexc.get_raw_backtrace () in
19535 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19536 in
19537 if Requests.Response.ok response then
19538 Requests.Response.json response
19539 else
19540 let body = Requests.Response.text response in
19541 let parsed_body =
19542 match Jsont_bytesrw.decode_string Jsont.json body with
19543 | Ok json -> Some (Openapi.Runtime.Json json)
19544 | Error _ -> Some (Openapi.Runtime.Raw body)
19545 in
19546 raise (Openapi.Runtime.Api_error {
19547 operation = op_name;
19548 method_ = "POST";
19549 url;
19550 status = Requests.Response.status_code response;
19551 body;
19552 parsed_body;
19553 })
19554
19555 (** Change pin code
19556
19557 Change the pin code for the current user. *)
19558 let change_pin_code ~body client () =
19559 let op_name = "change_pin_code" in
19560 let url_path = "/auth/pin-code" in
19561 let query = "" in
19562 let url = client.base_url ^ url_path ^ query in
19563 let response =
19564 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json PinCodeChange.Dto.jsont body)) url
19565 with Eio.Io _ as ex ->
19566 let bt = Printexc.get_raw_backtrace () in
19567 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
19568 in
19569 if Requests.Response.ok response then
19570 Requests.Response.json response
19571 else
19572 let body = Requests.Response.text response in
19573 let parsed_body =
19574 match Jsont_bytesrw.decode_string Jsont.json body with
19575 | Ok json -> Some (Openapi.Runtime.Json json)
19576 | Error _ -> Some (Openapi.Runtime.Raw body)
19577 in
19578 raise (Openapi.Runtime.Api_error {
19579 operation = op_name;
19580 method_ = "PUT";
19581 url;
19582 status = Requests.Response.status_code response;
19583 body;
19584 parsed_body;
19585 })
19586
19587 (** Reset pin code
19588
19589 Reset the pin code for the current user by providing the account password *)
19590 let reset_pin_code client () =
19591 let op_name = "reset_pin_code" in
19592 let url_path = "/auth/pin-code" in
19593 let query = "" in
19594 let url = client.base_url ^ url_path ^ query in
19595 let response =
19596 try Requests.delete client.session url
19597 with Eio.Io _ as ex ->
19598 let bt = Printexc.get_raw_backtrace () in
19599 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19600 in
19601 if Requests.Response.ok response then
19602 Requests.Response.json response
19603 else
19604 let body = Requests.Response.text response in
19605 let parsed_body =
19606 match Jsont_bytesrw.decode_string Jsont.json body with
19607 | Ok json -> Some (Openapi.Runtime.Json json)
19608 | Error _ -> Some (Openapi.Runtime.Raw body)
19609 in
19610 raise (Openapi.Runtime.Api_error {
19611 operation = op_name;
19612 method_ = "DELETE";
19613 url;
19614 status = Requests.Response.status_code response;
19615 body;
19616 parsed_body;
19617 })
19618
19619 (** Lock auth session
19620
19621 Remove elevated access to locked assets from the current session. *)
19622 let lock_auth_session client () =
19623 let op_name = "lock_auth_session" in
19624 let url_path = "/auth/session/lock" in
19625 let query = "" in
19626 let url = client.base_url ^ url_path ^ query in
19627 let response =
19628 try Requests.post client.session url
19629 with Eio.Io _ as ex ->
19630 let bt = Printexc.get_raw_backtrace () in
19631 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19632 in
19633 if Requests.Response.ok response then
19634 Requests.Response.json response
19635 else
19636 let body = Requests.Response.text response in
19637 let parsed_body =
19638 match Jsont_bytesrw.decode_string Jsont.json body with
19639 | Ok json -> Some (Openapi.Runtime.Json json)
19640 | Error _ -> Some (Openapi.Runtime.Raw body)
19641 in
19642 raise (Openapi.Runtime.Api_error {
19643 operation = op_name;
19644 method_ = "POST";
19645 url;
19646 status = Requests.Response.status_code response;
19647 body;
19648 parsed_body;
19649 })
19650
19651 (** Unlock auth session
19652
19653 Temporarily grant the session elevated access to locked assets by providing the correct PIN code. *)
19654 let unlock_auth_session ~body client () =
19655 let op_name = "unlock_auth_session" in
19656 let url_path = "/auth/session/unlock" in
19657 let query = "" in
19658 let url = client.base_url ^ url_path ^ query in
19659 let response =
19660 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SessionUnlock.Dto.jsont body)) url
19661 with Eio.Io _ as ex ->
19662 let bt = Printexc.get_raw_backtrace () in
19663 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19664 in
19665 if Requests.Response.ok response then
19666 Requests.Response.json response
19667 else
19668 let body = Requests.Response.text response in
19669 let parsed_body =
19670 match Jsont_bytesrw.decode_string Jsont.json body with
19671 | Ok json -> Some (Openapi.Runtime.Json json)
19672 | Error _ -> Some (Openapi.Runtime.Raw body)
19673 in
19674 raise (Openapi.Runtime.Api_error {
19675 operation = op_name;
19676 method_ = "POST";
19677 url;
19678 status = Requests.Response.status_code response;
19679 body;
19680 parsed_body;
19681 })
19682
19683 (** Download asset archive
19684
19685 Download a ZIP archive containing the specified assets. The assets must have been previously requested via the "getDownloadInfo" endpoint. *)
19686 let download_archive ?key ?slug ~body client () =
19687 let op_name = "download_archive" in
19688 let url_path = "/download/archive" in
19689 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"key" ~value:key; Openapi.Runtime.Query.optional ~key:"slug" ~value:slug]) in
19690 let url = client.base_url ^ url_path ^ query in
19691 let response =
19692 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetIds.Dto.jsont body)) url
19693 with Eio.Io _ as ex ->
19694 let bt = Printexc.get_raw_backtrace () in
19695 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19696 in
19697 if Requests.Response.ok response then
19698 Requests.Response.json response
19699 else
19700 let body = Requests.Response.text response in
19701 let parsed_body =
19702 match Jsont_bytesrw.decode_string Jsont.json body with
19703 | Ok json -> Some (Openapi.Runtime.Json json)
19704 | Error _ -> Some (Openapi.Runtime.Raw body)
19705 in
19706 raise (Openapi.Runtime.Api_error {
19707 operation = op_name;
19708 method_ = "POST";
19709 url;
19710 status = Requests.Response.status_code response;
19711 body;
19712 parsed_body;
19713 })
19714
19715 (** Delete duplicates
19716
19717 Delete multiple duplicate assets specified by their IDs. *)
19718 let delete_duplicates client () =
19719 let op_name = "delete_duplicates" in
19720 let url_path = "/duplicates" in
19721 let query = "" in
19722 let url = client.base_url ^ url_path ^ query in
19723 let response =
19724 try Requests.delete client.session url
19725 with Eio.Io _ as ex ->
19726 let bt = Printexc.get_raw_backtrace () in
19727 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19728 in
19729 if Requests.Response.ok response then
19730 Requests.Response.json response
19731 else
19732 let body = Requests.Response.text response in
19733 let parsed_body =
19734 match Jsont_bytesrw.decode_string Jsont.json body with
19735 | Ok json -> Some (Openapi.Runtime.Json json)
19736 | Error _ -> Some (Openapi.Runtime.Raw body)
19737 in
19738 raise (Openapi.Runtime.Api_error {
19739 operation = op_name;
19740 method_ = "DELETE";
19741 url;
19742 status = Requests.Response.status_code response;
19743 body;
19744 parsed_body;
19745 })
19746
19747 (** Delete a duplicate
19748
19749 Delete a single duplicate asset specified by its ID. *)
19750 let delete_duplicate ~id client () =
19751 let op_name = "delete_duplicate" in
19752 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/duplicates/{id}" in
19753 let query = "" in
19754 let url = client.base_url ^ url_path ^ query in
19755 let response =
19756 try Requests.delete client.session url
19757 with Eio.Io _ as ex ->
19758 let bt = Printexc.get_raw_backtrace () in
19759 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19760 in
19761 if Requests.Response.ok response then
19762 Requests.Response.json response
19763 else
19764 let body = Requests.Response.text response in
19765 let parsed_body =
19766 match Jsont_bytesrw.decode_string Jsont.json body with
19767 | Ok json -> Some (Openapi.Runtime.Json json)
19768 | Error _ -> Some (Openapi.Runtime.Raw body)
19769 in
19770 raise (Openapi.Runtime.Api_error {
19771 operation = op_name;
19772 method_ = "DELETE";
19773 url;
19774 status = Requests.Response.status_code response;
19775 body;
19776 parsed_body;
19777 })
19778
19779 (** Create a face
19780
19781 Create a new face that has not been discovered by facial recognition. The content of the bounding box is considered a face. *)
19782 let create_face ~body client () =
19783 let op_name = "create_face" in
19784 let url_path = "/faces" in
19785 let query = "" in
19786 let url = client.base_url ^ url_path ^ query in
19787 let response =
19788 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AssetFace.CreateDto.jsont body)) url
19789 with Eio.Io _ as ex ->
19790 let bt = Printexc.get_raw_backtrace () in
19791 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19792 in
19793 if Requests.Response.ok response then
19794 Requests.Response.json response
19795 else
19796 let body = Requests.Response.text response in
19797 let parsed_body =
19798 match Jsont_bytesrw.decode_string Jsont.json body with
19799 | Ok json -> Some (Openapi.Runtime.Json json)
19800 | Error _ -> Some (Openapi.Runtime.Raw body)
19801 in
19802 raise (Openapi.Runtime.Api_error {
19803 operation = op_name;
19804 method_ = "POST";
19805 url;
19806 status = Requests.Response.status_code response;
19807 body;
19808 parsed_body;
19809 })
19810
19811 (** Delete a face
19812
19813 Delete a face identified by the id. Optionally can be force deleted. *)
19814 let delete_face ~id client () =
19815 let op_name = "delete_face" in
19816 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/faces/{id}" in
19817 let query = "" in
19818 let url = client.base_url ^ url_path ^ query in
19819 let response =
19820 try Requests.delete client.session url
19821 with Eio.Io _ as ex ->
19822 let bt = Printexc.get_raw_backtrace () in
19823 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19824 in
19825 if Requests.Response.ok response then
19826 Requests.Response.json response
19827 else
19828 let body = Requests.Response.text response in
19829 let parsed_body =
19830 match Jsont_bytesrw.decode_string Jsont.json body with
19831 | Ok json -> Some (Openapi.Runtime.Json json)
19832 | Error _ -> Some (Openapi.Runtime.Raw body)
19833 in
19834 raise (Openapi.Runtime.Api_error {
19835 operation = op_name;
19836 method_ = "DELETE";
19837 url;
19838 status = Requests.Response.status_code response;
19839 body;
19840 parsed_body;
19841 })
19842
19843 (** Create a manual job
19844
19845 Run a specific job. Most jobs are queued automatically, but this endpoint allows for manual creation of a handful of jobs, including various cleanup tasks, as well as creating a new database backup. *)
19846 let create_job ~body client () =
19847 let op_name = "create_job" in
19848 let url_path = "/jobs" in
19849 let query = "" in
19850 let url = client.base_url ^ url_path ^ query in
19851 let response =
19852 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json Job.CreateDto.jsont body)) url
19853 with Eio.Io _ as ex ->
19854 let bt = Printexc.get_raw_backtrace () in
19855 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19856 in
19857 if Requests.Response.ok response then
19858 Requests.Response.json response
19859 else
19860 let body = Requests.Response.text response in
19861 let parsed_body =
19862 match Jsont_bytesrw.decode_string Jsont.json body with
19863 | Ok json -> Some (Openapi.Runtime.Json json)
19864 | Error _ -> Some (Openapi.Runtime.Raw body)
19865 in
19866 raise (Openapi.Runtime.Api_error {
19867 operation = op_name;
19868 method_ = "POST";
19869 url;
19870 status = Requests.Response.status_code response;
19871 body;
19872 parsed_body;
19873 })
19874
19875 (** Delete a library
19876
19877 Delete an external library by its ID. *)
19878 let delete_library ~id client () =
19879 let op_name = "delete_library" in
19880 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}" in
19881 let query = "" in
19882 let url = client.base_url ^ url_path ^ query in
19883 let response =
19884 try Requests.delete client.session url
19885 with Eio.Io _ as ex ->
19886 let bt = Printexc.get_raw_backtrace () in
19887 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19888 in
19889 if Requests.Response.ok response then
19890 Requests.Response.json response
19891 else
19892 let body = Requests.Response.text response in
19893 let parsed_body =
19894 match Jsont_bytesrw.decode_string Jsont.json body with
19895 | Ok json -> Some (Openapi.Runtime.Json json)
19896 | Error _ -> Some (Openapi.Runtime.Raw body)
19897 in
19898 raise (Openapi.Runtime.Api_error {
19899 operation = op_name;
19900 method_ = "DELETE";
19901 url;
19902 status = Requests.Response.status_code response;
19903 body;
19904 parsed_body;
19905 })
19906
19907 (** Scan a library
19908
19909 Queue a scan for the external library to find and import new assets. *)
19910 let scan_library ~id client () =
19911 let op_name = "scan_library" in
19912 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/libraries/{id}/scan" in
19913 let query = "" in
19914 let url = client.base_url ^ url_path ^ query in
19915 let response =
19916 try Requests.post client.session url
19917 with Eio.Io _ as ex ->
19918 let bt = Printexc.get_raw_backtrace () in
19919 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
19920 in
19921 if Requests.Response.ok response then
19922 Requests.Response.json response
19923 else
19924 let body = Requests.Response.text response in
19925 let parsed_body =
19926 match Jsont_bytesrw.decode_string Jsont.json body with
19927 | Ok json -> Some (Openapi.Runtime.Json json)
19928 | Error _ -> Some (Openapi.Runtime.Raw body)
19929 in
19930 raise (Openapi.Runtime.Api_error {
19931 operation = op_name;
19932 method_ = "POST";
19933 url;
19934 status = Requests.Response.status_code response;
19935 body;
19936 parsed_body;
19937 })
19938
19939 (** Delete a memory
19940
19941 Delete a specific memory by its ID. *)
19942 let delete_memory ~id client () =
19943 let op_name = "delete_memory" in
19944 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/memories/{id}" in
19945 let query = "" in
19946 let url = client.base_url ^ url_path ^ query in
19947 let response =
19948 try Requests.delete client.session url
19949 with Eio.Io _ as ex ->
19950 let bt = Printexc.get_raw_backtrace () in
19951 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
19952 in
19953 if Requests.Response.ok response then
19954 Requests.Response.json response
19955 else
19956 let body = Requests.Response.text response in
19957 let parsed_body =
19958 match Jsont_bytesrw.decode_string Jsont.json body with
19959 | Ok json -> Some (Openapi.Runtime.Json json)
19960 | Error _ -> Some (Openapi.Runtime.Raw body)
19961 in
19962 raise (Openapi.Runtime.Api_error {
19963 operation = op_name;
19964 method_ = "DELETE";
19965 url;
19966 status = Requests.Response.status_code response;
19967 body;
19968 parsed_body;
19969 })
19970
19971 (** Update notifications
19972
19973 Update a list of notifications. Allows to bulk-set the read status of notifications. *)
19974 let update_notifications ~body client () =
19975 let op_name = "update_notifications" in
19976 let url_path = "/notifications" in
19977 let query = "" in
19978 let url = client.base_url ^ url_path ^ query in
19979 let response =
19980 try Requests.put client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json NotificationUpdateAll.Dto.jsont body)) url
19981 with Eio.Io _ as ex ->
19982 let bt = Printexc.get_raw_backtrace () in
19983 Eio.Exn.reraise_with_context ex bt "calling %s %s" "PUT" url
19984 in
19985 if Requests.Response.ok response then
19986 Requests.Response.json response
19987 else
19988 let body = Requests.Response.text response in
19989 let parsed_body =
19990 match Jsont_bytesrw.decode_string Jsont.json body with
19991 | Ok json -> Some (Openapi.Runtime.Json json)
19992 | Error _ -> Some (Openapi.Runtime.Raw body)
19993 in
19994 raise (Openapi.Runtime.Api_error {
19995 operation = op_name;
19996 method_ = "PUT";
19997 url;
19998 status = Requests.Response.status_code response;
19999 body;
20000 parsed_body;
20001 })
20002
20003 (** Delete notifications
20004
20005 Delete a list of notifications at once. *)
20006 let delete_notifications client () =
20007 let op_name = "delete_notifications" in
20008 let url_path = "/notifications" in
20009 let query = "" in
20010 let url = client.base_url ^ url_path ^ query in
20011 let response =
20012 try Requests.delete client.session url
20013 with Eio.Io _ as ex ->
20014 let bt = Printexc.get_raw_backtrace () in
20015 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20016 in
20017 if Requests.Response.ok response then
20018 Requests.Response.json response
20019 else
20020 let body = Requests.Response.text response in
20021 let parsed_body =
20022 match Jsont_bytesrw.decode_string Jsont.json body with
20023 | Ok json -> Some (Openapi.Runtime.Json json)
20024 | Error _ -> Some (Openapi.Runtime.Raw body)
20025 in
20026 raise (Openapi.Runtime.Api_error {
20027 operation = op_name;
20028 method_ = "DELETE";
20029 url;
20030 status = Requests.Response.status_code response;
20031 body;
20032 parsed_body;
20033 })
20034
20035 (** Delete a notification
20036
20037 Delete a specific notification. *)
20038 let delete_notification ~id client () =
20039 let op_name = "delete_notification" in
20040 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/notifications/{id}" in
20041 let query = "" in
20042 let url = client.base_url ^ url_path ^ query in
20043 let response =
20044 try Requests.delete client.session url
20045 with Eio.Io _ as ex ->
20046 let bt = Printexc.get_raw_backtrace () in
20047 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20048 in
20049 if Requests.Response.ok response then
20050 Requests.Response.json response
20051 else
20052 let body = Requests.Response.text response in
20053 let parsed_body =
20054 match Jsont_bytesrw.decode_string Jsont.json body with
20055 | Ok json -> Some (Openapi.Runtime.Json json)
20056 | Error _ -> Some (Openapi.Runtime.Raw body)
20057 in
20058 raise (Openapi.Runtime.Api_error {
20059 operation = op_name;
20060 method_ = "DELETE";
20061 url;
20062 status = Requests.Response.status_code response;
20063 body;
20064 parsed_body;
20065 })
20066
20067 (** Redirect OAuth to mobile
20068
20069 Requests to this URL are automatically forwarded to the mobile app, and is used in some cases for OAuth redirecting. *)
20070 let redirect_oauth_to_mobile client () =
20071 let op_name = "redirect_oauth_to_mobile" in
20072 let url_path = "/oauth/mobile-redirect" in
20073 let query = "" in
20074 let url = client.base_url ^ url_path ^ query in
20075 let response =
20076 try Requests.get client.session url
20077 with Eio.Io _ as ex ->
20078 let bt = Printexc.get_raw_backtrace () in
20079 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
20080 in
20081 if Requests.Response.ok response then
20082 Requests.Response.json response
20083 else
20084 let body = Requests.Response.text response in
20085 let parsed_body =
20086 match Jsont_bytesrw.decode_string Jsont.json body with
20087 | Ok json -> Some (Openapi.Runtime.Json json)
20088 | Error _ -> Some (Openapi.Runtime.Raw body)
20089 in
20090 raise (Openapi.Runtime.Api_error {
20091 operation = op_name;
20092 method_ = "GET";
20093 url;
20094 status = Requests.Response.status_code response;
20095 body;
20096 parsed_body;
20097 })
20098
20099 (** Remove a partner
20100
20101 Stop sharing assets with a partner. *)
20102 let remove_partner ~id client () =
20103 let op_name = "remove_partner" in
20104 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/partners/{id}" in
20105 let query = "" in
20106 let url = client.base_url ^ url_path ^ query in
20107 let response =
20108 try Requests.delete client.session url
20109 with Eio.Io _ as ex ->
20110 let bt = Printexc.get_raw_backtrace () in
20111 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20112 in
20113 if Requests.Response.ok response then
20114 Requests.Response.json response
20115 else
20116 let body = Requests.Response.text response in
20117 let parsed_body =
20118 match Jsont_bytesrw.decode_string Jsont.json body with
20119 | Ok json -> Some (Openapi.Runtime.Json json)
20120 | Error _ -> Some (Openapi.Runtime.Raw body)
20121 in
20122 raise (Openapi.Runtime.Api_error {
20123 operation = op_name;
20124 method_ = "DELETE";
20125 url;
20126 status = Requests.Response.status_code response;
20127 body;
20128 parsed_body;
20129 })
20130
20131 (** Delete people
20132
20133 Bulk delete a list of people at once. *)
20134 let delete_people client () =
20135 let op_name = "delete_people" in
20136 let url_path = "/people" in
20137 let query = "" in
20138 let url = client.base_url ^ url_path ^ query in
20139 let response =
20140 try Requests.delete client.session url
20141 with Eio.Io _ as ex ->
20142 let bt = Printexc.get_raw_backtrace () in
20143 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20144 in
20145 if Requests.Response.ok response then
20146 Requests.Response.json response
20147 else
20148 let body = Requests.Response.text response in
20149 let parsed_body =
20150 match Jsont_bytesrw.decode_string Jsont.json body with
20151 | Ok json -> Some (Openapi.Runtime.Json json)
20152 | Error _ -> Some (Openapi.Runtime.Raw body)
20153 in
20154 raise (Openapi.Runtime.Api_error {
20155 operation = op_name;
20156 method_ = "DELETE";
20157 url;
20158 status = Requests.Response.status_code response;
20159 body;
20160 parsed_body;
20161 })
20162
20163 (** Delete person
20164
20165 Delete an individual person. *)
20166 let delete_person ~id client () =
20167 let op_name = "delete_person" in
20168 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}" in
20169 let query = "" in
20170 let url = client.base_url ^ url_path ^ query in
20171 let response =
20172 try Requests.delete client.session url
20173 with Eio.Io _ as ex ->
20174 let bt = Printexc.get_raw_backtrace () in
20175 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20176 in
20177 if Requests.Response.ok response then
20178 Requests.Response.json response
20179 else
20180 let body = Requests.Response.text response in
20181 let parsed_body =
20182 match Jsont_bytesrw.decode_string Jsont.json body with
20183 | Ok json -> Some (Openapi.Runtime.Json json)
20184 | Error _ -> Some (Openapi.Runtime.Raw body)
20185 in
20186 raise (Openapi.Runtime.Api_error {
20187 operation = op_name;
20188 method_ = "DELETE";
20189 url;
20190 status = Requests.Response.status_code response;
20191 body;
20192 parsed_body;
20193 })
20194
20195 (** Get person thumbnail
20196
20197 Retrieve the thumbnail file for a person. *)
20198 let get_person_thumbnail ~id client () =
20199 let op_name = "get_person_thumbnail" in
20200 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/people/{id}/thumbnail" in
20201 let query = "" in
20202 let url = client.base_url ^ url_path ^ query in
20203 let response =
20204 try Requests.get client.session url
20205 with Eio.Io _ as ex ->
20206 let bt = Printexc.get_raw_backtrace () in
20207 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
20208 in
20209 if Requests.Response.ok response then
20210 Requests.Response.json response
20211 else
20212 let body = Requests.Response.text response in
20213 let parsed_body =
20214 match Jsont_bytesrw.decode_string Jsont.json body with
20215 | Ok json -> Some (Openapi.Runtime.Json json)
20216 | Error _ -> Some (Openapi.Runtime.Raw body)
20217 in
20218 raise (Openapi.Runtime.Api_error {
20219 operation = op_name;
20220 method_ = "GET";
20221 url;
20222 status = Requests.Response.status_code response;
20223 body;
20224 parsed_body;
20225 })
20226
20227 (** Empty a queue
20228
20229 Removes all jobs from the specified queue. *)
20230 let empty_queue ~name client () =
20231 let op_name = "empty_queue" in
20232 let url_path = Openapi.Runtime.Path.render ~params:[("name", name)] "/queues/{name}/jobs" in
20233 let query = "" in
20234 let url = client.base_url ^ url_path ^ query in
20235 let response =
20236 try Requests.delete client.session url
20237 with Eio.Io _ as ex ->
20238 let bt = Printexc.get_raw_backtrace () in
20239 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20240 in
20241 if Requests.Response.ok response then
20242 Requests.Response.json response
20243 else
20244 let body = Requests.Response.text response in
20245 let parsed_body =
20246 match Jsont_bytesrw.decode_string Jsont.json body with
20247 | Ok json -> Some (Openapi.Runtime.Json json)
20248 | Error _ -> Some (Openapi.Runtime.Raw body)
20249 in
20250 raise (Openapi.Runtime.Api_error {
20251 operation = op_name;
20252 method_ = "DELETE";
20253 url;
20254 status = Requests.Response.status_code response;
20255 body;
20256 parsed_body;
20257 })
20258
20259 (** Retrieve search suggestions
20260
20261 Retrieve search suggestions based on partial input. This endpoint is used for typeahead search features. *)
20262 let get_search_suggestions ?country ?include_null ?lens_model ?make ?model ?state ~type_ client () =
20263 let op_name = "get_search_suggestions" in
20264 let url_path = "/search/suggestions" in
20265 let query = Openapi.Runtime.Query.encode (List.concat [Openapi.Runtime.Query.optional ~key:"country" ~value:country; Openapi.Runtime.Query.optional ~key:"includeNull" ~value:include_null; Openapi.Runtime.Query.optional ~key:"lensModel" ~value:lens_model; Openapi.Runtime.Query.optional ~key:"make" ~value:make; Openapi.Runtime.Query.optional ~key:"model" ~value:model; Openapi.Runtime.Query.optional ~key:"state" ~value:state; Openapi.Runtime.Query.singleton ~key:"type" ~value:type_]) in
20266 let url = client.base_url ^ url_path ^ query in
20267 let response =
20268 try Requests.get client.session url
20269 with Eio.Io _ as ex ->
20270 let bt = Printexc.get_raw_backtrace () in
20271 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
20272 in
20273 if Requests.Response.ok response then
20274 Requests.Response.json response
20275 else
20276 let body = Requests.Response.text response in
20277 let parsed_body =
20278 match Jsont_bytesrw.decode_string Jsont.json body with
20279 | Ok json -> Some (Openapi.Runtime.Json json)
20280 | Error _ -> Some (Openapi.Runtime.Raw body)
20281 in
20282 raise (Openapi.Runtime.Api_error {
20283 operation = op_name;
20284 method_ = "GET";
20285 url;
20286 status = Requests.Response.status_code response;
20287 body;
20288 parsed_body;
20289 })
20290
20291 (** Delete server product key
20292
20293 Delete the currently set server product key. *)
20294 let delete_server_license client () =
20295 let op_name = "delete_server_license" in
20296 let url_path = "/server/license" in
20297 let query = "" in
20298 let url = client.base_url ^ url_path ^ query in
20299 let response =
20300 try Requests.delete client.session url
20301 with Eio.Io _ as ex ->
20302 let bt = Printexc.get_raw_backtrace () in
20303 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20304 in
20305 if Requests.Response.ok response then
20306 Requests.Response.json response
20307 else
20308 let body = Requests.Response.text response in
20309 let parsed_body =
20310 match Jsont_bytesrw.decode_string Jsont.json body with
20311 | Ok json -> Some (Openapi.Runtime.Json json)
20312 | Error _ -> Some (Openapi.Runtime.Raw body)
20313 in
20314 raise (Openapi.Runtime.Api_error {
20315 operation = op_name;
20316 method_ = "DELETE";
20317 url;
20318 status = Requests.Response.status_code response;
20319 body;
20320 parsed_body;
20321 })
20322
20323 (** Delete all sessions
20324
20325 Delete all sessions for the user. This will not delete the current session. *)
20326 let delete_all_sessions client () =
20327 let op_name = "delete_all_sessions" in
20328 let url_path = "/sessions" in
20329 let query = "" in
20330 let url = client.base_url ^ url_path ^ query in
20331 let response =
20332 try Requests.delete client.session url
20333 with Eio.Io _ as ex ->
20334 let bt = Printexc.get_raw_backtrace () in
20335 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20336 in
20337 if Requests.Response.ok response then
20338 Requests.Response.json response
20339 else
20340 let body = Requests.Response.text response in
20341 let parsed_body =
20342 match Jsont_bytesrw.decode_string Jsont.json body with
20343 | Ok json -> Some (Openapi.Runtime.Json json)
20344 | Error _ -> Some (Openapi.Runtime.Raw body)
20345 in
20346 raise (Openapi.Runtime.Api_error {
20347 operation = op_name;
20348 method_ = "DELETE";
20349 url;
20350 status = Requests.Response.status_code response;
20351 body;
20352 parsed_body;
20353 })
20354
20355 (** Delete a session
20356
20357 Delete a specific session by id. *)
20358 let delete_session ~id client () =
20359 let op_name = "delete_session" in
20360 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/sessions/{id}" in
20361 let query = "" in
20362 let url = client.base_url ^ url_path ^ query in
20363 let response =
20364 try Requests.delete client.session url
20365 with Eio.Io _ as ex ->
20366 let bt = Printexc.get_raw_backtrace () in
20367 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20368 in
20369 if Requests.Response.ok response then
20370 Requests.Response.json response
20371 else
20372 let body = Requests.Response.text response in
20373 let parsed_body =
20374 match Jsont_bytesrw.decode_string Jsont.json body with
20375 | Ok json -> Some (Openapi.Runtime.Json json)
20376 | Error _ -> Some (Openapi.Runtime.Raw body)
20377 in
20378 raise (Openapi.Runtime.Api_error {
20379 operation = op_name;
20380 method_ = "DELETE";
20381 url;
20382 status = Requests.Response.status_code response;
20383 body;
20384 parsed_body;
20385 })
20386
20387 (** Lock a session
20388
20389 Lock a specific session by id. *)
20390 let lock_session ~id client () =
20391 let op_name = "lock_session" in
20392 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/sessions/{id}/lock" in
20393 let query = "" in
20394 let url = client.base_url ^ url_path ^ query in
20395 let response =
20396 try Requests.post client.session url
20397 with Eio.Io _ as ex ->
20398 let bt = Printexc.get_raw_backtrace () in
20399 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
20400 in
20401 if Requests.Response.ok response then
20402 Requests.Response.json response
20403 else
20404 let body = Requests.Response.text response in
20405 let parsed_body =
20406 match Jsont_bytesrw.decode_string Jsont.json body with
20407 | Ok json -> Some (Openapi.Runtime.Json json)
20408 | Error _ -> Some (Openapi.Runtime.Raw body)
20409 in
20410 raise (Openapi.Runtime.Api_error {
20411 operation = op_name;
20412 method_ = "POST";
20413 url;
20414 status = Requests.Response.status_code response;
20415 body;
20416 parsed_body;
20417 })
20418
20419 (** Delete a shared link
20420
20421 Delete a specific shared link by its ID. *)
20422 let remove_shared_link ~id client () =
20423 let op_name = "remove_shared_link" in
20424 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/shared-links/{id}" in
20425 let query = "" in
20426 let url = client.base_url ^ url_path ^ query in
20427 let response =
20428 try Requests.delete client.session url
20429 with Eio.Io _ as ex ->
20430 let bt = Printexc.get_raw_backtrace () in
20431 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20432 in
20433 if Requests.Response.ok response then
20434 Requests.Response.json response
20435 else
20436 let body = Requests.Response.text response in
20437 let parsed_body =
20438 match Jsont_bytesrw.decode_string Jsont.json body with
20439 | Ok json -> Some (Openapi.Runtime.Json json)
20440 | Error _ -> Some (Openapi.Runtime.Raw body)
20441 in
20442 raise (Openapi.Runtime.Api_error {
20443 operation = op_name;
20444 method_ = "DELETE";
20445 url;
20446 status = Requests.Response.status_code response;
20447 body;
20448 parsed_body;
20449 })
20450
20451 (** Delete stacks
20452
20453 Delete multiple stacks by providing a list of stack IDs. *)
20454 let delete_stacks client () =
20455 let op_name = "delete_stacks" in
20456 let url_path = "/stacks" in
20457 let query = "" in
20458 let url = client.base_url ^ url_path ^ query in
20459 let response =
20460 try Requests.delete client.session url
20461 with Eio.Io _ as ex ->
20462 let bt = Printexc.get_raw_backtrace () in
20463 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20464 in
20465 if Requests.Response.ok response then
20466 Requests.Response.json response
20467 else
20468 let body = Requests.Response.text response in
20469 let parsed_body =
20470 match Jsont_bytesrw.decode_string Jsont.json body with
20471 | Ok json -> Some (Openapi.Runtime.Json json)
20472 | Error _ -> Some (Openapi.Runtime.Raw body)
20473 in
20474 raise (Openapi.Runtime.Api_error {
20475 operation = op_name;
20476 method_ = "DELETE";
20477 url;
20478 status = Requests.Response.status_code response;
20479 body;
20480 parsed_body;
20481 })
20482
20483 (** Delete a stack
20484
20485 Delete a specific stack by its ID. *)
20486 let delete_stack ~id client () =
20487 let op_name = "delete_stack" in
20488 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/stacks/{id}" in
20489 let query = "" in
20490 let url = client.base_url ^ url_path ^ query in
20491 let response =
20492 try Requests.delete client.session url
20493 with Eio.Io _ as ex ->
20494 let bt = Printexc.get_raw_backtrace () in
20495 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20496 in
20497 if Requests.Response.ok response then
20498 Requests.Response.json response
20499 else
20500 let body = Requests.Response.text response in
20501 let parsed_body =
20502 match Jsont_bytesrw.decode_string Jsont.json body with
20503 | Ok json -> Some (Openapi.Runtime.Json json)
20504 | Error _ -> Some (Openapi.Runtime.Raw body)
20505 in
20506 raise (Openapi.Runtime.Api_error {
20507 operation = op_name;
20508 method_ = "DELETE";
20509 url;
20510 status = Requests.Response.status_code response;
20511 body;
20512 parsed_body;
20513 })
20514
20515 (** Remove an asset from a stack
20516
20517 Remove a specific asset from a stack by providing the stack ID and asset ID. *)
20518 let remove_asset_from_stack ~asset_id ~id client () =
20519 let op_name = "remove_asset_from_stack" in
20520 let url_path = Openapi.Runtime.Path.render ~params:[("assetId", asset_id); ("id", id)] "/stacks/{id}/assets/{assetId}" in
20521 let query = "" in
20522 let url = client.base_url ^ url_path ^ query in
20523 let response =
20524 try Requests.delete client.session url
20525 with Eio.Io _ as ex ->
20526 let bt = Printexc.get_raw_backtrace () in
20527 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20528 in
20529 if Requests.Response.ok response then
20530 Requests.Response.json response
20531 else
20532 let body = Requests.Response.text response in
20533 let parsed_body =
20534 match Jsont_bytesrw.decode_string Jsont.json body with
20535 | Ok json -> Some (Openapi.Runtime.Json json)
20536 | Error _ -> Some (Openapi.Runtime.Raw body)
20537 in
20538 raise (Openapi.Runtime.Api_error {
20539 operation = op_name;
20540 method_ = "DELETE";
20541 url;
20542 status = Requests.Response.status_code response;
20543 body;
20544 parsed_body;
20545 })
20546
20547 (** Acknowledge changes
20548
20549 Send a list of synchronization acknowledgements to confirm that the latest changes have been received. *)
20550 let send_sync_ack ~body client () =
20551 let op_name = "send_sync_ack" in
20552 let url_path = "/sync/ack" in
20553 let query = "" in
20554 let url = client.base_url ^ url_path ^ query in
20555 let response =
20556 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SyncAckSet.Dto.jsont body)) url
20557 with Eio.Io _ as ex ->
20558 let bt = Printexc.get_raw_backtrace () in
20559 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
20560 in
20561 if Requests.Response.ok response then
20562 Requests.Response.json response
20563 else
20564 let body = Requests.Response.text response in
20565 let parsed_body =
20566 match Jsont_bytesrw.decode_string Jsont.json body with
20567 | Ok json -> Some (Openapi.Runtime.Json json)
20568 | Error _ -> Some (Openapi.Runtime.Raw body)
20569 in
20570 raise (Openapi.Runtime.Api_error {
20571 operation = op_name;
20572 method_ = "POST";
20573 url;
20574 status = Requests.Response.status_code response;
20575 body;
20576 parsed_body;
20577 })
20578
20579 (** Delete acknowledgements
20580
20581 Delete specific synchronization acknowledgments. *)
20582 let delete_sync_ack client () =
20583 let op_name = "delete_sync_ack" in
20584 let url_path = "/sync/ack" in
20585 let query = "" in
20586 let url = client.base_url ^ url_path ^ query in
20587 let response =
20588 try Requests.delete client.session url
20589 with Eio.Io _ as ex ->
20590 let bt = Printexc.get_raw_backtrace () in
20591 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20592 in
20593 if Requests.Response.ok response then
20594 Requests.Response.json response
20595 else
20596 let body = Requests.Response.text response in
20597 let parsed_body =
20598 match Jsont_bytesrw.decode_string Jsont.json body with
20599 | Ok json -> Some (Openapi.Runtime.Json json)
20600 | Error _ -> Some (Openapi.Runtime.Raw body)
20601 in
20602 raise (Openapi.Runtime.Api_error {
20603 operation = op_name;
20604 method_ = "DELETE";
20605 url;
20606 status = Requests.Response.status_code response;
20607 body;
20608 parsed_body;
20609 })
20610
20611 (** Stream sync changes
20612
20613 Retrieve a JSON lines streamed response of changes for synchronization. This endpoint is used by the mobile app to efficiently stay up to date with changes. *)
20614 let get_sync_stream ~body client () =
20615 let op_name = "get_sync_stream" in
20616 let url_path = "/sync/stream" in
20617 let query = "" in
20618 let url = client.base_url ^ url_path ^ query in
20619 let response =
20620 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json SyncStream.Dto.jsont body)) url
20621 with Eio.Io _ as ex ->
20622 let bt = Printexc.get_raw_backtrace () in
20623 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
20624 in
20625 if Requests.Response.ok response then
20626 Requests.Response.json response
20627 else
20628 let body = Requests.Response.text response in
20629 let parsed_body =
20630 match Jsont_bytesrw.decode_string Jsont.json body with
20631 | Ok json -> Some (Openapi.Runtime.Json json)
20632 | Error _ -> Some (Openapi.Runtime.Raw body)
20633 in
20634 raise (Openapi.Runtime.Api_error {
20635 operation = op_name;
20636 method_ = "POST";
20637 url;
20638 status = Requests.Response.status_code response;
20639 body;
20640 parsed_body;
20641 })
20642
20643 (** Update admin onboarding
20644
20645 Update the admin onboarding status. *)
20646 let update_admin_onboarding ~body client () =
20647 let op_name = "update_admin_onboarding" in
20648 let url_path = "/system-metadata/admin-onboarding" in
20649 let query = "" in
20650 let url = client.base_url ^ url_path ^ query in
20651 let response =
20652 try Requests.post client.session ~body:(Requests.Body.json (Openapi.Runtime.Json.encode_json AdminOnboarding.UpdateDto.jsont body)) url
20653 with Eio.Io _ as ex ->
20654 let bt = Printexc.get_raw_backtrace () in
20655 Eio.Exn.reraise_with_context ex bt "calling %s %s" "POST" url
20656 in
20657 if Requests.Response.ok response then
20658 Requests.Response.json response
20659 else
20660 let body = Requests.Response.text response in
20661 let parsed_body =
20662 match Jsont_bytesrw.decode_string Jsont.json body with
20663 | Ok json -> Some (Openapi.Runtime.Json json)
20664 | Error _ -> Some (Openapi.Runtime.Raw body)
20665 in
20666 raise (Openapi.Runtime.Api_error {
20667 operation = op_name;
20668 method_ = "POST";
20669 url;
20670 status = Requests.Response.status_code response;
20671 body;
20672 parsed_body;
20673 })
20674
20675 (** Delete a tag
20676
20677 Delete a specific tag by its ID. *)
20678 let delete_tag ~id client () =
20679 let op_name = "delete_tag" in
20680 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/tags/{id}" in
20681 let query = "" in
20682 let url = client.base_url ^ url_path ^ query in
20683 let response =
20684 try Requests.delete client.session url
20685 with Eio.Io _ as ex ->
20686 let bt = Printexc.get_raw_backtrace () in
20687 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20688 in
20689 if Requests.Response.ok response then
20690 Requests.Response.json response
20691 else
20692 let body = Requests.Response.text response in
20693 let parsed_body =
20694 match Jsont_bytesrw.decode_string Jsont.json body with
20695 | Ok json -> Some (Openapi.Runtime.Json json)
20696 | Error _ -> Some (Openapi.Runtime.Raw body)
20697 in
20698 raise (Openapi.Runtime.Api_error {
20699 operation = op_name;
20700 method_ = "DELETE";
20701 url;
20702 status = Requests.Response.status_code response;
20703 body;
20704 parsed_body;
20705 })
20706
20707 (** Delete user product key
20708
20709 Delete the registered product key for the current user. *)
20710 let delete_user_license client () =
20711 let op_name = "delete_user_license" in
20712 let url_path = "/users/me/license" in
20713 let query = "" in
20714 let url = client.base_url ^ url_path ^ query in
20715 let response =
20716 try Requests.delete client.session url
20717 with Eio.Io _ as ex ->
20718 let bt = Printexc.get_raw_backtrace () in
20719 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20720 in
20721 if Requests.Response.ok response then
20722 Requests.Response.json response
20723 else
20724 let body = Requests.Response.text response in
20725 let parsed_body =
20726 match Jsont_bytesrw.decode_string Jsont.json body with
20727 | Ok json -> Some (Openapi.Runtime.Json json)
20728 | Error _ -> Some (Openapi.Runtime.Raw body)
20729 in
20730 raise (Openapi.Runtime.Api_error {
20731 operation = op_name;
20732 method_ = "DELETE";
20733 url;
20734 status = Requests.Response.status_code response;
20735 body;
20736 parsed_body;
20737 })
20738
20739 (** Delete user onboarding
20740
20741 Delete the onboarding status of the current user. *)
20742 let delete_user_onboarding client () =
20743 let op_name = "delete_user_onboarding" in
20744 let url_path = "/users/me/onboarding" in
20745 let query = "" in
20746 let url = client.base_url ^ url_path ^ query in
20747 let response =
20748 try Requests.delete client.session url
20749 with Eio.Io _ as ex ->
20750 let bt = Printexc.get_raw_backtrace () in
20751 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20752 in
20753 if Requests.Response.ok response then
20754 Requests.Response.json response
20755 else
20756 let body = Requests.Response.text response in
20757 let parsed_body =
20758 match Jsont_bytesrw.decode_string Jsont.json body with
20759 | Ok json -> Some (Openapi.Runtime.Json json)
20760 | Error _ -> Some (Openapi.Runtime.Raw body)
20761 in
20762 raise (Openapi.Runtime.Api_error {
20763 operation = op_name;
20764 method_ = "DELETE";
20765 url;
20766 status = Requests.Response.status_code response;
20767 body;
20768 parsed_body;
20769 })
20770
20771 (** Delete user profile image
20772
20773 Delete the profile image of the current user. *)
20774 let delete_profile_image client () =
20775 let op_name = "delete_profile_image" in
20776 let url_path = "/users/profile-image" in
20777 let query = "" in
20778 let url = client.base_url ^ url_path ^ query in
20779 let response =
20780 try Requests.delete client.session url
20781 with Eio.Io _ as ex ->
20782 let bt = Printexc.get_raw_backtrace () in
20783 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20784 in
20785 if Requests.Response.ok response then
20786 Requests.Response.json response
20787 else
20788 let body = Requests.Response.text response in
20789 let parsed_body =
20790 match Jsont_bytesrw.decode_string Jsont.json body with
20791 | Ok json -> Some (Openapi.Runtime.Json json)
20792 | Error _ -> Some (Openapi.Runtime.Raw body)
20793 in
20794 raise (Openapi.Runtime.Api_error {
20795 operation = op_name;
20796 method_ = "DELETE";
20797 url;
20798 status = Requests.Response.status_code response;
20799 body;
20800 parsed_body;
20801 })
20802
20803 (** Retrieve user profile image
20804
20805 Retrieve the profile image file for a user. *)
20806 let get_profile_image ~id client () =
20807 let op_name = "get_profile_image" in
20808 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/users/{id}/profile-image" in
20809 let query = "" in
20810 let url = client.base_url ^ url_path ^ query in
20811 let response =
20812 try Requests.get client.session url
20813 with Eio.Io _ as ex ->
20814 let bt = Printexc.get_raw_backtrace () in
20815 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
20816 in
20817 if Requests.Response.ok response then
20818 Requests.Response.json response
20819 else
20820 let body = Requests.Response.text response in
20821 let parsed_body =
20822 match Jsont_bytesrw.decode_string Jsont.json body with
20823 | Ok json -> Some (Openapi.Runtime.Json json)
20824 | Error _ -> Some (Openapi.Runtime.Raw body)
20825 in
20826 raise (Openapi.Runtime.Api_error {
20827 operation = op_name;
20828 method_ = "GET";
20829 url;
20830 status = Requests.Response.status_code response;
20831 body;
20832 parsed_body;
20833 })
20834
20835 (** Retrieve unique paths
20836
20837 Retrieve a list of unique folder paths from asset original paths. *)
20838 let get_unique_original_paths client () =
20839 let op_name = "get_unique_original_paths" in
20840 let url_path = "/view/folder/unique-paths" in
20841 let query = "" in
20842 let url = client.base_url ^ url_path ^ query in
20843 let response =
20844 try Requests.get client.session url
20845 with Eio.Io _ as ex ->
20846 let bt = Printexc.get_raw_backtrace () in
20847 Eio.Exn.reraise_with_context ex bt "calling %s %s" "GET" url
20848 in
20849 if Requests.Response.ok response then
20850 Requests.Response.json response
20851 else
20852 let body = Requests.Response.text response in
20853 let parsed_body =
20854 match Jsont_bytesrw.decode_string Jsont.json body with
20855 | Ok json -> Some (Openapi.Runtime.Json json)
20856 | Error _ -> Some (Openapi.Runtime.Raw body)
20857 in
20858 raise (Openapi.Runtime.Api_error {
20859 operation = op_name;
20860 method_ = "GET";
20861 url;
20862 status = Requests.Response.status_code response;
20863 body;
20864 parsed_body;
20865 })
20866
20867 (** Delete a workflow
20868
20869 Delete a workflow by its ID. *)
20870 let delete_workflow ~id client () =
20871 let op_name = "delete_workflow" in
20872 let url_path = Openapi.Runtime.Path.render ~params:[("id", id)] "/workflows/{id}" in
20873 let query = "" in
20874 let url = client.base_url ^ url_path ^ query in
20875 let response =
20876 try Requests.delete client.session url
20877 with Eio.Io _ as ex ->
20878 let bt = Printexc.get_raw_backtrace () in
20879 Eio.Exn.reraise_with_context ex bt "calling %s %s" "DELETE" url
20880 in
20881 if Requests.Response.ok response then
20882 Requests.Response.json response
20883 else
20884 let body = Requests.Response.text response in
20885 let parsed_body =
20886 match Jsont_bytesrw.decode_string Jsont.json body with
20887 | Ok json -> Some (Openapi.Runtime.Json json)
20888 | Error _ -> Some (Openapi.Runtime.Raw body)
20889 in
20890 raise (Openapi.Runtime.Api_error {
20891 operation = op_name;
20892 method_ = "DELETE";
20893 url;
20894 status = Requests.Response.status_code response;
20895 body;
20896 parsed_body;
20897 })
20898end