{"swagger":"2.0","x-id":["reitit.swagger/default"],"info":{"title":"Sakura API","description":"with pedestal & reitit-http"},"paths":{"/ping":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"tags":["ping"]}},"/api/v1/devices/list":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"devices":{"type":"array","items":{}}},"required":["devices"],"title":"sakura.server.http.router.api.devices/devices-response"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"List all active devices","tags":["REST API","version 1.x.x","devices"]}},"/api/v1/devices/activate":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"integer","format":"int64","minimum":1},"seq":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":"sakura.common.constants/min-device-seq","maximum":["clojure.core/inc","sakura.common.constants/max-device-seq"]}]}},"required":["id","seq"],"title":"sakura.server.http.router.api.devices/activate-response"},"description":""},"302":{"schema":{},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"mac-address","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}],"x-anyOf":[{"type":"string","x-allOf":[{"type":"string"},{},{}]},{"type":"string","x-allOf":[{"type":"string"},{},{}]}]},{"in":"formData","name":"platform-arch","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"ip-address","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"client-version","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"id","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"client-arch","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"location","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"platform-version","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"kind","description":"","type":"integer","required":true,"format":"int64","minimum":1,"x-allOf":[{"type":"integer","format":"int64","minimum":1},{}]},{"in":"formData","name":"platform","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]}],"description":"Activate/link this device","tags":["REST API","version 1.x.x","devices"]}},"/api/v1/devices/deactivate":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"404":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"device-id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Deactivate/unlink this device","tags":["REST API","version 1.x.x","devices"]}},"/api/v1/events/push":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"device-id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"events","description":"","type":"string","required":true}],"description":"Save events to the configured event transport","tags":["REST API","version 1.x.x","events"]}},"/api/v1/events/pull":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"cursor":{"type":"integer","format":"int64","minimum":1,"x-nullable":true},"events":{"type":"array","items":{}}},"required":["cursor","events"],"title":"sakura.server.http.router.api.events/events-response"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"409":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"device-id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"cursor","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Get events by cursor, if cursor is null, return all events for required device,else return events which id start from cursor (excluded).","tags":["REST API","version 1.x.x","events"]}},"/api/v1/events/pull/get-latest-cursor":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"cursor":{"type":"integer","format":"int64","minimum":1}},"required":["cursor"],"title":"sakura.server.http.router.api.events/get-latest-cursor-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get the latest cursor for pulling","tags":["REST API","version 1.x.x","events"]}},"/api/v1/files/get":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Get the entry.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/process-file":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""},"400":{"schema":{"type":"object"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"ids","description":"","type":"array","required":true,"items":{"type":"integer","format":"int64","minimum":1}}],"description":"Process an existing file entry asynchronously.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-batch":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}}},"required":["entries"],"title":"sakura.server.http.router.api.files/entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"ids","description":"","type":"array","required":true,"items":{"type":"integer","format":"int64","minimum":1}}],"description":"Get multiple entries at once.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/delete":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Delete the entry. If it's a folder, all its contents will be deleted too.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/delete-batch":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}}},"required":["entries"],"title":"sakura.server.http.router.api.files/entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"ids","description":"","type":"array","required":true,"items":{"type":"integer","format":"int64","minimum":1}}],"description":"Delete multiple entries at once.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/async-delete":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Delete the entry asynchronously","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/async-delete-batch":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}}},"required":["entries"],"title":"sakura.server.http.router.api.files/entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"ids","description":"","type":"array","required":true,"items":{"type":"integer","format":"int64","minimum":1}}],"description":"Delete multiple entries asynchronously.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/move":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"to-parent-id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Move the entry to a different location.\n                            If the source path is a folder all its contents will be moved.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/move-batch":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}}},"required":["entries"],"title":"sakura.server.http.router.api.files/entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"ids","description":"","type":"array","required":true,"items":{"type":"integer","format":"int64","minimum":1}},{"in":"formData","name":"to-parent-id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Move multiple entries to different locations at once.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/create-entry":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"entry","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Create a new entry with the name and parent folder id provided in the request.\n                            If id is specified and corresponded parent folder exists, update exist one.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/update-entry":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"content-type","description":"","type":"string","required":false,"enum":["cc/folder-type"],"x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},{"in":"formData","name":"content-hash","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true},{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"revision","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"source-path","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"updated-at","description":"","type":"string","required":false,"format":"date-time"},{"in":"formData","name":"name","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"metadata","description":"","type":null,"required":false,"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},{"in":"formData","name":"kind","description":"","type":"string","required":false,"enum":["cc/folder-kind","cc/file-kind"]},{"in":"formData","name":"link","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"tag-ids","description":"","type":"array","required":false,"items":{"type":"integer","format":"int64","minimum":1},"allowEmptyValue":true},{"in":"formData","name":"size","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}]},{"in":"formData","name":"rating","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"allowEmptyValue":true},{"in":"formData","name":"description","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"parent-id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"x-anyOf":[{"type":"integer","format":"int64","minimum":1},{"enum":["cc/unset-id"],"type":"string"}]}],"description":"Update the exist entry.","tags":["REST API","version 1.x.x","files"]},"patch":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"body","name":"body","description":"","required":true,"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"integer","format":"int64","minimum":1},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","format":"date-time"},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"device-id":{"type":"integer","format":"int64","minimum":1},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"integer","format":"int64"},"tag-ids":{"type":"array","items":{"type":"integer","format":"int64","minimum":1},"x-nullable":true},"size":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}]},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"integer","format":"int64","minimum":1,"x-anyOf":[{"type":"integer","format":"int64","minimum":1},{"enum":["cc/unset-id"],"type":"string"}]}},"required":["id","revision"]}}],"description":"Update parts of the exist entry with nilable values.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-entries":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}}},"required":["entries"],"title":"sakura.server.http.router.api.files/entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of entries of current user in order which provided in the request.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/count-entries":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0}},"required":["count"],"title":"sakura.server.http.router.api.files/count-entries-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Return the total number of entries for current user.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-all-folder-entries":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"folders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"ranking":{"type":"string"},"parent-id":{"type":"string"},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","revision","parent-id","name","ranking","layout","sort-by","icon","icon-color"],"title":"sakura.server.http.router.api.files/folder-entry-response"}}},"required":["folders"],"title":"sakura.server.http.router.api.files/folder-entries-responses"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get current user folder entries","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-folder-entries":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"folders":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"ranking":{"type":"string"},"parent-id":{"type":"string"},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","revision","parent-id","name","ranking","layout","sort-by","icon","icon-color"],"title":"sakura.server.http.router.api.files/folder-entry-response"}}},"required":["folders"],"title":"sakura.server.http.router.api.files/folder-entries-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get current user folder entries by pagination","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/create-folder-entry":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"parent-id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"created-at","description":"","type":"string","required":false,"format":"date-time"},{"in":"formData","name":"updated-at","description":"","type":"string","required":false,"format":"date-time"},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Create a new folder entry with name and an optional parent folder id.\n                            If id is specified and corresponded parent folder exists, update exist one.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/list-folder-entry":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"entries":{"type":"array","items":{}},"has-more":{"type":"boolean"}},"required":["entries","has-more"],"title":"sakura.server.http.router.api.files/list-folder-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"x-anyOf":[{"type":"integer","format":"int64","minimum":1},{"enum":["cc/unset-id"],"type":"string"}]},{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Return the contents of a folder entry.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-folder":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"ranking":{"type":"string"},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","revision","ranking","layout","sort-by","icon","icon-color"],"title":"sakura.server.http.router.api.files/folder-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Get the folder","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/create-folder":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"ranking":{"type":"string"},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","revision","ranking","layout","sort-by","icon","icon-color"],"title":"sakura.server.http.router.api.files/folder-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"ranking","description":"","type":"integer","required":true,"format":"int64"},{"in":"formData","name":"revision","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"layout","description":"","type":"string","required":false,"enum":["list","grid","justified","waterfall"]},{"in":"formData","name":"icon","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"icon-color","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Create folder. If id is specified and corresponded parent folder exists, update exist one.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/update-folder":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"ranking":{"type":"string"},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","revision","ranking","layout","sort-by","icon","icon-color"],"title":"sakura.server.http.router.api.files/folder-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"revision","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"layout","description":"","type":"string","required":false,"enum":["list","grid","justified","waterfall"]},{"in":"formData","name":"icon","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"icon-color","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Update exists folder by specified id.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/delete-folder":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Delete the folder.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-folders":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"folders":{"type":"array","items":{}}},"required":["folders"],"title":"sakura.server.http.router.api.files/folders-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of folders of current user.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/list-exif-metadata":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"metadata":{"type":"array","items":{}}},"required":["metadata"],"title":"sakura.server.http.router.api.files/list-exif-metadata-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of exif metadata of current user.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/list-media-metadata":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"metadata":{"type":"array","items":{}}},"required":["metadata"],"title":"sakura.server.http.router.api.files/list-media-metadata-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of media metadata of current user.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/list-captions":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"captions":{"type":"array","items":{}}},"required":["captions"],"title":"sakura.server.http.router.api.files/list-captions-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of captions of current user.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/upload-blob":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"bucket":{"type":"string","x-allOf":[{"type":"string"},{}]},"hash":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"suffix":{"type":"string","x-allOf":[{"type":"string"},{}]},"secret":{"type":"string","x-allOf":[{"type":"string"},{}]},"chunker":{"type":"string"},"size":{"type":"integer","format":"int64","minimum":1}},"required":["bucket","hash","suffix","secret","chunker","size"],"title":"sakura.server.http.router.api.files/blob-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["multipart/form-data"],"parameters":[{"in":"formData","name":"file","description":"","type":"file","required":["filename","content-type","tempfile","size"],"properties":{"filename":{"type":"string"},"content-type":{"type":"string"},"tempfile":{},"size":{"type":"integer","format":"int64"}}},{"in":"formData","name":"raw-size","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}]},{"in":"formData","name":"hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}]},{"in":"formData","name":"suffix","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"secret","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"chunker","description":"","type":"string","required":true},{"in":"formData","name":"blob-size","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Upload a file blob with the data associated in the request.\n                            Do not use this to upload data larger than 4 MB.\n                            Instead, split whole file into chunks and upload respectively.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/upload-session":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"is-complete":{"type":"boolean"},"blob":{"type":"object","properties":{"bucket":{"type":"string","x-allOf":[{"type":"string"},{}]},"hash":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"suffix":{"type":"string","x-allOf":[{"type":"string"},{}]},"secret":{"type":"string","x-allOf":[{"type":"string"},{}]},"chunker":{"type":"string"},"size":{"type":"integer","format":"int64","minimum":1}},"required":["bucket","hash","suffix","secret","chunker","size"]}},"required":["is-complete","blob"],"title":"sakura.server.http.router.api.files/upload-session-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["multipart/form-data"],"parameters":[{"in":"formData","name":"file","description":"","type":"file","required":["filename","content-type","tempfile","size"],"properties":{"filename":{"type":"string"},"content-type":{"type":"string"},"tempfile":{},"size":{"type":"integer","format":"int64"}}},{"in":"formData","name":"size","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}]},{"in":"formData","name":"hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}]},{"in":"formData","name":"suffix","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"secret","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"chunker","description":"","type":"string","required":true},{"in":"formData","name":"total","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"index","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"description":"Append chunk data to an upload session.\n                            A single request should not upload more than 4 MB.\n                            When all chunks are uploaded, create and return an new blob.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/upload-file":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["multipart/form-data"],"parameters":[{"in":"formData","name":"file-name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"url","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true},{"in":"formData","name":"thumb-type","description":"","type":"string","required":false},{"in":"formData","name":"file-size","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}]},{"in":"formData","name":"thumb","description":"","type":"file","required":["filename","content-type","tempfile","size"],"properties":{"filename":{"type":"string"},"content-type":{"type":"string"},"tempfile":{},"size":{"type":"integer","format":"int64"}}},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"metadata","description":"","type":"string","required":false},{"in":"formData","name":"link","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64","allowEmptyValue":true},{"in":"formData","name":"file","description":"","type":"file","required":["filename","content-type","tempfile","size"],"properties":{"filename":{"type":"string"},"content-type":{"type":"string"},"tempfile":{},"size":{"type":"integer","format":"int64"}}},{"in":"formData","name":"description","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"parent-id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Upload a raw file and redirect to file state service","tags":["REST API","version 1.x.x","files"]},"put":{"responses":{"200":{"schema":{"type":"object","properties":{"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}]},"content-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"source-path":{"type":"string","x-nullable":true},"updated-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"is-private":{"type":"boolean"},"metadata":{"x-anyOf":[{},{"type":"object","properties":{"image-height":{"type":"integer","format":"int64","minimum":0},"image-width":{"type":"integer","format":"int64","minimum":0},"custom-thumb":{"type":"boolean"},"thumb-width":{"type":"integer","format":"int64","minimum":0},"where-from":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"color-palette":{"type":"string","x-allOf":[{"type":"string"},{}]},"has-thumb":{"type":"boolean"},"duration":{"type":"number","format":"double"},"has-alpha":{"type":"boolean"},"is-animated":{"type":"boolean"},"modification":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-hash":{"type":"string"},"creation":{"type":"string","x-allOf":[{"type":"string"},{}]},"thumb-height":{"type":"integer","format":"int64","minimum":0},"orientation":{"type":"integer","format":"int64","minimum":0},"is-motion-photo":{"type":"boolean"}},"title":"file/metadata"},{"type":"object","properties":{},"title":"folder/metadata"}]},"kind":{"enum":["cc/folder-kind","cc/file-kind"],"type":"string"},"link":{"type":"string","x-nullable":true},"ranking":{"type":"string"},"tag-ids":{"type":"array","items":{"type":"string"},"x-nullable":true},"size":{"type":"string"},"rating":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":6}],"x-nullable":true},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"}},"required":["id","description","source-path","parent-id","tag-ids","content-type","ranking","kind","revision","link","content-hash","is-private","metadata","created-at","rating","size","name","updated-at"],"title":"sakura.server.http.router.api.files/entry-response"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Upload a raw file with PUT request","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-block-index":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"file-hash":{"type":"string","x-allOf":[{"type":"string"},{},{}],"x-nullable":true},"blocks":{"type":"array","items":{"type":"object","properties":{"offset":{"type":"integer","format":"int64","minimum":0},"size":{"type":"integer","format":"int64","minimum":1},"weak-hash":{"type":"integer","format":"int64","minimum":0},"hash":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"bucket":{"type":"string","x-allOf":[{"type":"string"},{}]},"secret":{"type":"string","x-allOf":[{"type":"string"},{}]},"suffix":{"type":"string","x-allOf":[{"type":"string"},{}]},"chunker":{"type":"string"}},"required":["offset","size","weak-hash","hash","bucket","secret","suffix","chunker"],"title":"sakura.server.http.router.api.files/block"}},"size":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}],"x-nullable":true},"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}],"x-nullable":true}},"required":["file-hash","blocks"],"title":"sakura.server.http.router.api.files/get-block-index-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"file-hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true}],"description":"Get the corresponding block-index for file.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/create-block-index":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"file-hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true},{"in":"formData","name":"blocks","description":"","type":"string","required":true},{"in":"formData","name":"size","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-file-size"]}],"allowEmptyValue":true},{"in":"formData","name":"content-type","description":"","type":"string","required":true,"enum":["cc/folder-type"],"x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}],"allowEmptyValue":true}],"description":"Save the corresponding block-index for file.\n                            If corresponded block-index exists, update exist one.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/get-thumbnail":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"width":{"type":"integer","format":"int64","minimum":0},"height":{"type":"integer","format":"int64","minimum":0},"content-type":{"enum":["cc/folder-type"],"type":"string","x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}],"x-nullable":true},"hash":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"suffix":{"type":"string","x-allOf":[{"type":"string"},{}]},"bucket":{"type":"string","x-allOf":[{"type":"string"},{}]},"secret":{"type":"string","x-allOf":[{"type":"string"},{}]},"size":{"type":"integer","format":"int64","minimum":1,"x-nullable":true},"chunker":{"type":"string"}},"required":["bucket","hash","content-type","chunker","height","suffix","secret","size","width"],"title":"sakura.server.http.router.api.files/thumbnail-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"file-hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true}],"description":"Get the corresponding thumbnail for file.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/files/create-thumbnail":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"file-hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}],"allowEmptyValue":true},{"in":"formData","name":"blob-hash","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{},{}]},{"in":"formData","name":"size","description":"","type":"integer","required":true,"format":"int64","minimum":1,"allowEmptyValue":true},{"in":"formData","name":"content-type","description":"","type":"string","required":true,"enum":["cc/folder-type"],"x-anyOf":[{"enum":["cc/folder-type"],"type":"string"},{"type":"string","x-allOf":[{"type":"string"},{}]}],"allowEmptyValue":true},{"in":"formData","name":"width","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"formData","name":"height","description":"","type":"integer","required":true,"format":"int64","minimum":0}],"description":"Save the corresponding thumbnail for file.\n                            If corresponded thumbnail exists, update exist one.","tags":["REST API","version 1.x.x","files"]}},"/api/v1/boards/get-board":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"sort-order":{"enum":["desc","asc"],"type":"string","x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"filters":{"type":"string","x-allOf":[{"type":"string"},{}]},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"ranking":{"type":"string"},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","description","parent-id","ranking","revision","sort-order","layout","sort-by","icon-color","created-at","filters","name","icon"],"title":"sakura.server.http.router.api.boards/board-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Get the board with board id.","tags":["REST API","version 1.x.x","boards"]}},"/api/v1/boards/create-board":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"sort-order":{"enum":["desc","asc"],"type":"string","x-nullable":true},"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"filters":{"type":"string","x-allOf":[{"type":"string"},{}]},"icon-color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"sort-by":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"created-at":{"type":"string","x-allOf":[{"type":"string"},{}]},"layout":{"enum":["list","grid","justified","waterfall"],"type":"string","x-nullable":true},"ranking":{"type":"string"},"description":{"type":"string","x-nullable":true},"parent-id":{"type":"string"},"icon":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true}},"required":["id","description","parent-id","ranking","revision","sort-order","layout","sort-by","icon-color","created-at","filters","name","icon"],"title":"sakura.server.http.router.api.boards/board-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"revision","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"filters","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"icon-color","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}],"allowEmptyValue":true},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"created-at","description":"","type":"string","required":false,"format":"date-time"},{"in":"formData","name":"layout","description":"","type":"string","required":false,"enum":["list","grid","justified","waterfall"],"allowEmptyValue":true},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"description","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"parent-id","description":"","type":"integer","required":true,"format":"int64","minimum":1,"x-anyOf":[{"type":"integer","format":"int64","minimum":1},{"enum":["cc/unset-id"],"type":"string"}]},{"in":"formData","name":"icon","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}],"allowEmptyValue":true}],"description":"Create a board with board id.\n                           If id is specified and corresponded board exists, update exist one.","tags":["REST API","version 1.x.x","boards"]}},"/api/v1/boards/delete-board":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Delete the board","tags":["REST API","version 1.x.x","boards"]}},"/api/v1/boards/get-boards":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"boards":{"type":"array","items":{}}},"required":["boards"],"title":"sakura.server.http.router.api.boards/boards-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"page","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of boards of current user.","tags":["REST API","version 1.x.x","boards"]}},"/api/v1/boards/get-board-entries":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"board-entries":{"type":"array","items":{}}},"required":["board-entries"],"title":"sakura.server.http.router.api.boards/board-entries-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"since-board-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"since-entry-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of board entries of current user.","tags":["REST API","version 1.x.x","boards"]}},"/api/v1/hashtree/buckets":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"level":{"type":"integer","format":"int64","minimum":0},"buckets":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"}},"title":"hashtree/buckets"}},"required":["level","buckets"],"title":"sakura.server.hashtree.core/bucket-nodes"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"level","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"formData","name":"buckets","description":"","type":"integer","required":true,"format":"int64","minimum":0,"x-anyOf":[{"type":"integer","format":"int64","minimum":0},{"type":"array","items":{"type":"integer","format":"int64","minimum":0}}]},{"in":"formData","name":"version","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Get buckets by level and buckets for current user","tags":["REST API","version 1.x.x","hashtree"]}},"/api/v1/hashtree/segment":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"segment":{"type":"integer","format":"int64","minimum":0},"leaves":{"type":"array","items":{"type":"object","properties":{"leaf-id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"hash":{"type":"string"}},"required":["leaf-id","revision","hash"],"title":"sakura.server.hashtree.core/segment-leaf"}}},"required":["segment","leaves"],"title":"sakura.server.hashtree.core/segment-leaves"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"segment","description":"","type":"integer","required":true,"format":"int64","minimum":0},{"in":"formData","name":"version","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Get segment by segment id for current user","tags":["REST API","version 1.x.x","hashtree"]}},"/api/v1/hashtree/update":{"post":{"responses":{"default":{"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"version","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Update hashtree for current user","tags":["REST API","version 1.x.x","hashtree"]}},"/api/v1/hashtree/rebuild":{"post":{"responses":{"default":{"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"version","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Rebuild hashtree for current user","tags":["REST API","version 1.x.x","hashtree"]}},"/api/v1/heartbeat":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"account-changed":{"type":"boolean"},"new-event":{"type":"boolean"},"hashtree-changed":{"type":"boolean"}},"required":["account-changed","new-event","hashtree-changed"],"title":"sakura.server.http.router.api.heartbeat/heartbeat-response"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"device-id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"client-version","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"platform","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"ip-address","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"location","description":"","type":"string","required":false,"allowEmptyValue":true}],"description":"Send heartbeat message, fallback for unsupported WebSocket","tags":["REST API","version 1.x.x","heartbeat"]}},"/api/v1/auth/sms-code":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"challenge-id":{"type":"string"},"expires-in":{"type":"integer","format":"int64","minimum":1},"retry-after":{"type":"integer","format":"int64","minimum":1}},"required":["challenge-id","expires-in","retry-after"],"title":"sakura.server.http.router.api.auth/sms-code-response"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"401":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"429":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"phone","description":"","type":"string","required":true},{"in":"formData","name":"kind","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"scope","description":"","type":"string","required":false,"allowEmptyValue":true}],"description":"Send SMS code for first-party auth","tags":["REST API","version 1.x.x","auth"]}},"/api/v1/auth/sms-login":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"401":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"challenge-id","description":"","type":"string","required":true},{"in":"formData","name":"phone","description":"","type":"string","required":true},{"in":"formData","name":"sms-code","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"scope","description":"","type":"string","required":false,"allowEmptyValue":true}],"description":"Login with SMS challenge","tags":["REST API","version 1.x.x","auth"]}},"/api/v1/auth/signup":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"401":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"challenge-id","description":"","type":"string","required":true},{"in":"formData","name":"phone","description":"","type":"string","required":true},{"in":"formData","name":"sms-code","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"password","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"scope","description":"","type":"string","required":false,"allowEmptyValue":true}],"description":"Sign up with SMS challenge","tags":["REST API","version 1.x.x","auth"]}},"/api/v1/auth/session-token":{"post":{"responses":{"200":{"schema":{"type":"object"},"description":""},"400":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"401":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"scope","description":"","type":"string","required":false,"allowEmptyValue":true}],"description":"Issue OAuth token from current web session","tags":["REST API","version 1.x.x","auth"]}},"/api/v1/tags/get-group":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"ranking":{"type":"string"}},"required":["id","revision","name","color","ranking"],"title":"sakura.server.http.router.api.tags/tag-group-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Get the tag group with group id.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/create-group":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"ranking":{"type":"string"}},"required":["id","revision","name","color","ranking"],"title":"sakura.server.http.router.api.tags/tag-group-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"revision","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"color","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Create a tag group with group id.\n                           If id is specified and group exists, update exist one.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/update-group":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"color":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"ranking":{"type":"string"}},"required":["id","revision","name","color","ranking"],"title":"sakura.server.http.router.api.tags/tag-group-response"},"description":""},"400":{"schema":{"type":"object"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"revision","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"name","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"color","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}],"allowEmptyValue":true},{"in":"formData","name":"ranking","description":"","type":"integer","required":false,"format":"int64"},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Update a exist tag group with group id.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/delete-group":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Delete the tag group. After deletion, all tags in the group are moved out of the group.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/get-groups":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{}}},"required":["groups"],"title":"sakura.server.http.router.api.tags/tag-groups-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of tag groups of current user.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/get-all-groups":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"groups":{"type":"array","items":{}}},"required":["groups"],"title":"sakura.server.http.router.api.tags/tag-groups-responses"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get a list of all tag groups of current user.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/get-tag":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"group-id":{"type":"string","x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]}},"required":["id","revision","group-id","name"],"title":"sakura.server.http.router.api.tags/tag-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1}],"description":"Get the tag with tag id.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/create-tag":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"group-id":{"type":"string","x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]}},"required":["id","revision","group-id","name"],"title":"sakura.server.http.router.api.tags/tag-response"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"name","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"revision","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"group-id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"allowEmptyValue":true},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Create a tag with tag id.\n                           If id is specified and corresponded tag exists, update exist one.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/update-tag":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},"group-id":{"type":"string","x-nullable":true},"name":{"type":"string","x-allOf":[{"type":"string"},{}]}},"required":["id","revision","group-id","name"],"title":"sakura.server.http.router.api.tags/tag-response"},"description":""},"400":{"schema":{"type":"object"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"revision","description":"","type":"integer","required":true,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":0,"maximum":["clojure.core/inc","sakura.common.constants/max-revision"]}]},{"in":"formData","name":"group-id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"allowEmptyValue":true},{"in":"formData","name":"name","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Update a exist tag with tag id.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/delete-tag":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1}],"description":"Delete the tag. Files associated with the tag retain their tag information.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/get-tags":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{}}},"required":["tags"],"title":"sakura.server.http.router.api.tags/tags-responses"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"limit","description":"","type":"integer","required":false,"format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":1,"maximum":["clojure.core/inc","sakura.common.constants/max-find-limit"]}]},{"in":"formData","name":"since-id","description":"","type":"integer","required":false,"format":"int64","minimum":0},{"in":"formData","name":"reverse","description":"","type":"boolean","required":false}],"description":"Get a list of tags of current user.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tags/get-all-tags":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"tags":{"type":"array","items":{}}},"required":["tags"],"title":"sakura.server.http.router.api.tags/tags-responses"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get a list of all tags of current user.","tags":["REST API","version 1.x.x","tags"]}},"/api/v1/tombstones/get":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"integer","format":"int64","minimum":0,"x-allOf":[{"type":"integer","format":"int64","minimum":0},{}]}},"required":["id","kind"],"title":"sakura.server.http.router.api.tombstones/tombstone-response"},"description":""},"404":{"schema":{"type":"object"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"kind","description":"","type":"integer","required":true,"format":"int64","minimum":0,"x-allOf":[{"type":"integer","format":"int64","minimum":0},{}]}],"description":"Get the tombstone with id.","tags":["REST API","version 1.x.x","tombstones"]}},"/api/v1/users/get-current-account":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"user-id":{"type":"integer","format":"int64","minimum":1},"phone":{"type":"string","x-allOf":[{"type":"string"},{}]},"name":{"type":"string","x-allOf":[{"type":"string"},{}]},"avatar":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"membership":{"type":"object","properties":{"token":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"plan":{},"name":{},"expires-at":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"space-limit":{"type":"integer","format":"int64","minimum":0},"space-used":{"type":"integer","format":"int64","minimum":0},"devices":{"type":"object","additionalProperties":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0},"limit":{"type":"integer","format":"int64","minimum":0}},"required":["count","limit"],"title":"sakura.server.account.core/devices-limit"},"title":"account-membership/devices"}},"required":["token","plan","name","expires-at","space-limit","space-used","devices"]},"misc":{"type":"object","properties":{"web-app-guide-done":{"type":"boolean"}},"required":["web-app-guide-done"],"x-nullable":true}},"required":["user-id","phone","name","avatar","membership","misc"],"title":"sakura.server.http.router.api.users/account-response"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get current account information","tags":["REST API","version 1.x.x","users"]}},"/api/v1/users/get-space-usage":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"space-limit":{"type":"integer","format":"int64","minimum":0},"space-used":{"type":"integer","format":"int64","minimum":0}},"required":["space-limit","space-used"],"title":"sakura.server.http.router.api.users/space-usage-response"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get space usage information for current account","tags":["REST API","version 1.x.x","users"]}},"/api/v1/users/upgrade-membership":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"plan","description":"","type":null,"required":true},{"in":"formData","name":"count","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"formData","name":"billed-by","description":"","type":"string","required":true,"enum":["months","years"]}],"description":"Upgrade current account's membership plan","tags":["REST API","version 1.x.x","users"]}},"/api/v1/users/set-profile":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"name","description":"","type":"string","required":false,"x-allOf":[{"type":"string"},{}]}],"description":"Update current account's profile","tags":["REST API","version 1.x.x","users"]}},"/api/v1/users/reset-password":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"password","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]}],"description":"Reset current account's password","tags":["REST API","version 1.x.x","users"]}},"/api/v1/users/finish-web-app-guide":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"web-app-guide-done":{"type":"boolean"}},"required":["web-app-guide-done"],"title":"sakura.server.http.router.api.users/finish-web-app-guide-response"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Set web app guide task done","tags":["REST API","version 1.x.x","users"]}},"/api/v1/memberships/purchase":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"membership":{"type":"object","properties":{"token":{"type":"string","x-allOf":[{"type":"string"},{},{}]},"plan":{},"name":{},"expires-at":{"type":"string","x-allOf":[{"type":"string"},{}],"x-nullable":true},"space-limit":{"type":"integer","format":"int64","minimum":0},"space-used":{"type":"integer","format":"int64","minimum":0},"devices":{"type":"object","additionalProperties":{"type":"object","properties":{"count":{"type":"integer","format":"int64","minimum":0},"limit":{"type":"integer","format":"int64","minimum":0}},"required":["count","limit"],"title":"sakura.server.account.core/devices-limit"},"title":"account-membership/devices"}},"required":["token","plan","name","expires-at","space-limit","space-used","devices"]}},"required":["membership"],"title":"sakura.server.http.router.api.memberships/purchase-membership-response"},"description":""},"500":{"schema":{"type":"object","properties":{"type":{"type":"string"},"message":{"type":"string"},"code":{"type":"integer","format":"int64","x-allOf":[{"type":"integer","format":"int64"},{"minimum":400,"maximum":501}]},"user-message":{"type":"string"},"data":{"type":"object","x-nullable":true}},"required":["type","message"],"title":"error/error"},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"body","name":"body","description":"","required":true,"schema":{"type":"object","properties":{"provider":{"enum":["google","apple"],"type":"string"},"purchase":{"type":"object","properties":{"product-id":{"type":"string"},"transaction-date":{"type":"number","format":"double"},"transaction-receipt":{"type":"string"},"transaction-id":{"type":"string"},"purchase-token":{"type":"string"}},"required":["product-id","transaction-date","transaction-receipt"]}},"required":["provider","purchase"]}}],"description":"Make in-app purchase on iOS or Android, return new membership","tags":["REST API","version 1.x.x","memberships"]}},"/api/v1/ai/ping":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["ping"]}},"/api/v1/ai/chat/completions":{"post":{"responses":{"200":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"body","name":"body","description":"","required":true,"schema":{"type":"object","properties":{"messages":{"type":"array","items":{"type":"object","properties":{"role":{"enum":["user","assistant","tool","system"],"type":"string"},"content":{"type":"string","x-anyOf":[{"type":"string"},{"type":"array","items":{"x-anyOf":[{},{}]}}]}},"required":["role","content"]}},"stream":{"type":"boolean"},"temperature":{"type":"number","format":"double"},"response-format":{}},"required":["messages"]}}],"description":"Chat completions endpoint","tags":"ai"}},"/api/v1/ai/embeddings":{"post":{"responses":{"200":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"consumes":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"body","name":"body","description":"","required":true,"schema":{"type":"object","properties":{"input":{"type":"string","x-anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"dimensions":{"type":"integer","format":"int64","minimum":1},"encoding-format":{"type":"string"}},"required":["input"]}}],"description":"Embeddings endpoint","tags":"ai"}},"/api/v1/telemetry/events":{"post":{"responses":{"200":{"schema":{"type":"object","properties":{"success":{"enum":["ok"],"type":"string"}},"required":["success"],"title":"success-response/body"},"description":""}},"consumes":["application/x-www-form-urlencoded"],"parameters":[{"in":"formData","name":"platform-arch","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"client-channel","description":"","type":null,"required":true},{"in":"formData","name":"client-version","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]},{"in":"formData","name":"session-id","description":"","type":"string","required":true},{"in":"formData","name":"platform-name","description":"","type":"string","required":true},{"in":"formData","name":"client-arch","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"platform-version","description":"","type":"string","required":false,"allowEmptyValue":true},{"in":"formData","name":"device-id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"allowEmptyValue":true},{"in":"formData","name":"client-kind","description":"","type":null,"required":true},{"in":"formData","name":"user-id","description":"","type":"integer","required":false,"format":"int64","minimum":1,"allowEmptyValue":true},{"in":"formData","name":"events","description":"","type":"string","required":true},{"in":"formData","name":"installation-id","description":"","type":"string","required":true}],"description":"Report telemetry events","tags":"telemetry"}},"/oauth/login":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["oauth"]},"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["oauth"]}},"/oauth/authorize":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["oauth"]}},"/oauth/approve":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["oauth"]}},"/oauth/token":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"tags":["oauth"]}},"/release/releases":{"get":{"responses":{"200":{"schema":{"type":"object","properties":{"releases":{"type":"array","items":{}}},"required":["releases"],"x-anyOf":[{"type":"object","properties":{"releases":{"type":"array","items":{}}},"required":["releases"]},{"type":"array","items":{}}]},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"query","name":"channel","description":"","type":null,"required":true},{"in":"query","name":"platform","description":"","type":null,"required":true},{"in":"query","name":"arch","description":"","type":null,"required":true},{"in":"query","name":"since-version","description":"","type":"string","required":true,"x-allOf":[{"type":"string"},{}]}],"description":"Get new releases, the latest version comes first","tags":["Released packages endpoint"]}},"/release/changelog":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[],"description":"Get release changelog","tags":["Released packages endpoint"]}},"/release/desktop/latest":{"get":{"responses":{"302":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"query","name":"channel","description":"","type":null,"required":true},{"in":"query","name":"platform","description":"","type":null,"required":true},{"in":"query","name":"arch","description":"","type":null,"required":true}],"description":"Redirect to endpoint for latest desktop package","tags":["Released packages endpoint"]}},"/release/download/{key}":{"get":{"responses":{"302":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"path","name":"key","description":"","type":"string","required":true}],"description":"Redirect to endpoint for released packages, includes desktop, plugins, extensions, etc.","tags":["Released packages endpoint"]}},"/hosts":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"description":"Get hosts of service endpoints"}},"/pay/qrcode":{"get":{"responses":{"200":{"schema":{},"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"parameters":[{"in":"query","name":"order-id","description":"","type":"integer","required":true,"format":"int64","minimum":1},{"in":"query","name":"plan","description":"","type":null,"required":false},{"in":"query","name":"basis","description":"","type":null,"required":false},{"in":"query","name":"amount","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"query","name":"t","description":"","type":"integer","required":false,"format":"int64","minimum":1},{"in":"query","name":"code","description":"","type":"string","required":false}],"description":"Unified handle scanning QR code both for Alipay and WeChat","tags":["Payment notification"]}},"/pay/alipay/return":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"description":"Alipay pay order synchronous notify","tags":["Payment notification"]}},"/pay/alipay/notify":{"post":{"responses":{"default":{"description":""}},"description":"Alipay pay/refund order asynchronous notify","tags":["Payment notification"]}},"/pay/wechat/pay":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"description":"WeChat unified order asynchronous notify","tags":["Payment notification"]}},"/pay/wechat/refund":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"description":"WeChat refund asynchronous notify","tags":["Payment notification"]}},"/pay/apple/notify":{"post":{"responses":{"default":{"description":""}},"description":"Apple AppStore asynchronous notify, e.g. refund/renew","tags":["Payment notification"]}},"/eql":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"],"tags":["EQL endpoint"]}},"/logout":{"post":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/app":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/login":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/signup":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/password-reset":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/account{}":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/referral{}":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/membership/purchase":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}},"/membership/purchase-credits":{"get":{"responses":{"default":{"description":""}},"produces":["application/json","application/transit+msgpack","application/transit+json","application/edn"]}}}}