photoprism/internal/api/swagger.json
2025-01-21 16:50:24 +01:00

7443 lines
No EOL
242 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"swagger": "2.0",
"info": {
"description": "API request bodies and responses are usually JSON-encoded, except for binary data and some of the OAuth2 endpoints. Note that the `Content-Type` header must be set to `application/json` for this, as the request may otherwise fail with error 400.\nWhen clients have a valid access token, e.g. obtained through the `POST /api/v1/session` or `POST /api/v1/oauth/token` endpoint, they can use a standard Bearer Authorization header to authenticate their requests. Submitting the access token with a custom `X-Auth-Token` header is supported as well.",
"title": "PhotoPrism API",
"contact": {},
"version": "v1"
},
"host": "demo.photoprism.app",
"paths": {
"/api/v1/albums": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "finds albums and returns them as JSON",
"operationId": "SearchAlbums",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "search result offset",
"name": "offset",
"in": "query"
},
{
"enum": [
"favorites",
"name",
"title",
"added",
"edited"
],
"type": "string",
"description": "sort order",
"name": "order",
"in": "query"
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/search.Album"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "creates a new album",
"operationId": "CreateAlbum",
"parameters": [
{
"description": "properties of the album to be created (currently supports Title and Favorite)",
"name": "album",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Album"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Album"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "returns album details as JSON",
"operationId": "GetAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Album"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "updates album metadata like title and description",
"operationId": "UpdateAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
},
{
"description": "properties to be updated",
"name": "album",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Album"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Album"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "deletes an existing album",
"operationId": "DeleteAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/clone": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "creates a new album containing pictures from other albums",
"operationId": "CloneAlbums",
"parameters": [
{
"description": "Album Selection",
"name": "albums",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
},
{
"type": "string",
"description": "UID of the album to which the pictures are to be added",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/dl": {
"get": {
"produces": [
"application/zip"
],
"tags": [
"Images",
"Albums"
],
"summary": "streams the album contents as zip archiv",
"operationId": "DownloadAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/like": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "sets the favorite flag for an album",
"operationId": "LikeAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "removes the favorite flag from an album",
"operationId": "DislikeAlbum",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/links": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Links",
"Albums"
],
"summary": "returns all share links for the given UID as JSON",
"operationId": "GetAlbumLinks",
"parameters": [
{
"type": "string",
"description": "album uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Link"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Links",
"Albums"
],
"summary": "adds a new album share link and return it as JSON",
"operationId": "CreateAlbumLink",
"parameters": [
{
"type": "string",
"description": "album uid",
"name": "uid",
"in": "path",
"required": true
},
{
"description": "link properties (currently supported: slug, expires)",
"name": "link",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Link"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Link"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"409": {
"description": "Conflict",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/links/{linkuid}": {
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Links",
"Albums"
],
"summary": "updates an album share link and return it as JSON",
"operationId": "UpdateAlbumLink",
"parameters": [
{
"type": "string",
"description": "album uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "link uid",
"name": "linkuid",
"in": "path",
"required": true
},
{
"description": "properties to be updated (currently supported: slug, expires, token)",
"name": "link",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Link"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Link"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"409": {
"description": "Conflict",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Links",
"Albums"
],
"summary": "deletes an album share link",
"operationId": "DeleteAlbumLink",
"parameters": [
{
"type": "string",
"description": "album",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "link uid",
"name": "linkuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Link"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"409": {
"description": "Conflict",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/photos": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "adds photos to an album",
"operationId": "AddPhotosToAlbum",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
},
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "removes photos from an album",
"operationId": "RemovePhotosFromAlbum",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
},
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/albums/{uid}/t/{token}/{size}": {
"get": {
"produces": [
"image/jpeg",
"image/svg+xml"
],
"tags": [
"Images",
"Albums"
],
"summary": "returns an album cover image",
"operationId": "AlbumCover",
"parameters": [
{
"type": "string",
"description": "Album UID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "user-specific security token provided with session or 'public' when running PhotoPrism in public mode",
"name": "token",
"in": "path",
"required": true
},
{
"enum": [
"tile_50",
"tile_100",
"left_224",
"right_224",
"tile_224",
"tile_500",
"fit_720",
"tile_1080",
"fit_1280",
"fit_1600",
"fit_1920",
"fit_2048",
"fit_2560",
"fit_3840",
"fit_4096",
"fit_7680"
],
"type": "string",
"description": "thumbnail size",
"name": "size",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/batch/albums/delete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "permanently removes multiple albums",
"operationId": "BatchAlbumsDelete",
"parameters": [
{
"description": "Album Selection",
"name": "albums",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/labels/delete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels"
],
"summary": "deletes multiple labels",
"operationId": "BatchLabelsDelete",
"parameters": [
{
"description": "Label Selection",
"name": "labels",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/photos/approve": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "approves multiple photos that are currently under review",
"operationId": "BatchPhotosApprove",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/photos/archive": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "moves multiple photos to the archive",
"operationId": "BatchPhotosArchive",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/photos/delete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "permanently removes multiple or all photos from the archive",
"operationId": "BatchPhotosDelete",
"parameters": [
{
"description": "All or Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/photos/private": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "toggles private state of multiple photos",
"operationId": "BatchPhotosPrivate",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/batch/photos/restore": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "restores multiple photos from the archive",
"operationId": "BatchPhotosRestore",
"parameters": [
{
"description": "Photo Selection",
"name": "photos",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Selection"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/config/options": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Config",
"Settings"
],
"summary": "returns backend config options",
"operationId": "GetConfigOptions",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/config.Options"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Config",
"Settings"
],
"summary": "updates backend config options",
"operationId": "SaveConfigOptions",
"parameters": [
{
"description": "properties to be updated (only submit values that should be changed)",
"name": "options",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/config.Options"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/config.Options"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/dl/{hash}": {
"get": {
"produces": [
"application/octet-stream"
],
"tags": [
"Images",
"Files"
],
"summary": "returns the raw file data",
"operationId": "GetDownload",
"parameters": [
{
"type": "string",
"description": "File Hash",
"name": "hash",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/errors": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Errors"
],
"summary": "searches the error logs and returns the results as JSON",
"operationId": "GetErrors",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "search result offset",
"name": "offset",
"in": "query"
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Error"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Errors"
],
"summary": "removes all entries from the error logs",
"operationId": "DeleteErrors",
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/faces": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Faces"
],
"summary": "finds and returns faces as JSON",
"operationId": "SearchFaces",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "search result offset",
"name": "offset",
"in": "query"
},
{
"enum": [
"subject",
"added",
"samples"
],
"type": "string",
"description": "sort order",
"name": "order",
"in": "query"
},
{
"enum": [
"yes",
"no"
],
"type": "string",
"description": "show hidden",
"name": "hidden",
"in": "query"
},
{
"enum": [
"yes",
"no"
],
"type": "string",
"description": "show unknown",
"name": "unknown",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/search.Face"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/faces/{id}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Faces"
],
"summary": "returns a face as JSON",
"operationId": "GetFace",
"parameters": [
{
"type": "string",
"description": "face id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Face"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Faces"
],
"summary": "updates face properties",
"operationId": "UpdateFace",
"parameters": [
{
"type": "string",
"description": "face id",
"name": "id",
"in": "path",
"required": true
},
{
"description": "properties to be updated",
"name": "face",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Face"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Face"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/files/{hash}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Files"
],
"summary": "returns file details as JSON",
"operationId": "GetFile",
"parameters": [
{
"type": "string",
"description": "hash (string) SHA-1 hash of the file",
"name": "hash",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.File"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/folders/t/{uid}/{token}/{size}": {
"get": {
"produces": [
"image/jpeg",
"image/svg+xml"
],
"tags": [
"Images",
"Folders"
],
"summary": "returns a folder cover image",
"operationId": "FolderCover",
"parameters": [
{
"type": "string",
"description": "folder uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "user-specific security token provided with session or 'public' when running PhotoPrism in public mode",
"name": "token",
"in": "path",
"required": true
},
{
"enum": [
"tile_50",
"tile_100",
"left_224",
"right_224",
"tile_224",
"tile_500",
"fit_720",
"tile_1080",
"fit_1280",
"fit_1600",
"fit_1920",
"fit_2048",
"fit_2560",
"fit_3840",
"fit_4096",
"fit_7680"
],
"type": "string",
"description": "thumbnail size",
"name": "size",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/geo": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "finds photos and returns results as JSON, so they can be displayed on a map or in a viewer",
"operationId": "SearchGeo",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of files",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "file offset",
"name": "offset",
"in": "query"
},
{
"type": "boolean",
"description": "excludes private pictures",
"name": "public",
"in": "query"
},
{
"enum": [
0,
1,
2,
3,
4,
5,
6,
7
],
"type": "integer",
"description": "minimum quality score (1-7)",
"name": "quality",
"in": "query",
"required": true
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
},
{
"type": "string",
"description": "album uid",
"name": "s",
"in": "query"
},
{
"type": "string",
"description": "photo path",
"name": "path",
"in": "query"
},
{
"type": "boolean",
"description": "is type video",
"name": "video",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/search.GeoResult"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/import/": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Library"
],
"summary": "start import",
"operationId": "StartImport",
"parameters": [
{
"description": "import options",
"name": "options",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.ImportOptions"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/index": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Library"
],
"summary": "start indexing",
"operationId": "StartIndexing",
"parameters": [
{
"description": "index options",
"name": "options",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.IndexOptions"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/labels": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Labels"
],
"summary": "finds and returns labels as JSON",
"operationId": "SearchLabels",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "search result offset",
"name": "offset",
"in": "query"
},
{
"type": "boolean",
"description": "show all",
"name": "all",
"in": "query"
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/search.Label"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/labels/{uid}": {
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels"
],
"summary": "updates label name",
"operationId": "UpdateLabel",
"parameters": [
{
"type": "string",
"description": "Label UID",
"name": "uid",
"in": "path",
"required": true
},
{
"description": "Label Name",
"name": "label",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Label"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Label"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/labels/{uid}/like": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels"
],
"summary": "sets favorite flag for a label",
"operationId": "LikeLabel",
"parameters": [
{
"type": "string",
"description": "Label UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels"
],
"summary": "removes favorite flag from a label",
"operationId": "DislikeLabel",
"parameters": [
{
"type": "string",
"description": "Label UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/labels/{uid}/t/{token}/{size}": {
"get": {
"produces": [
"image/jpeg",
"image/svg+xml"
],
"tags": [
"Images",
"Labels"
],
"summary": "returns a label cover image",
"operationId": "LabelCover",
"parameters": [
{
"type": "string",
"description": "Label UID",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "user-specific security token provided with session or 'public' when running PhotoPrism in public mode",
"name": "token",
"in": "path",
"required": true
},
{
"enum": [
"tile_50",
"tile_100",
"left_224",
"right_224",
"tile_224",
"tile_500",
"fit_720",
"tile_1080",
"fit_1280",
"fit_1600",
"fit_1920",
"fit_2048",
"fit_2560",
"fit_3840",
"fit_4096",
"fit_7680"
],
"type": "string",
"description": "thumbnail size",
"name": "size",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/markers": {
"post": {
"tags": [
"Files"
],
"responses": {}
}
},
"/api/v1/moments/time": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Albums"
],
"summary": "returns monthly albums as JSON",
"operationId": "GetMomentsTime",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Album"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/oauth/revoke": {
"post": {
"tags": [
"Authentication"
],
"responses": {}
}
},
"/api/v1/oauth/token": {
"post": {
"tags": [
"Authentication"
],
"responses": {}
}
},
"/api/v1/photos": {
"get": {
"description": "Fore more information see:\n- https://docs.photoprism.app/developer-guide/api/search/#get-apiv1photos",
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "finds pictures and returns them as JSON",
"operationId": "SearchPhotos",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of files",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "file offset",
"name": "offset",
"in": "query"
},
{
"enum": [
"favorites",
"name",
"title",
"added",
"edited"
],
"type": "string",
"description": "sort order",
"name": "order",
"in": "query"
},
{
"type": "boolean",
"description": "groups consecutive files that belong to the same photo",
"name": "merged",
"in": "query"
},
{
"type": "boolean",
"description": "excludes private pictures",
"name": "public",
"in": "query"
},
{
"enum": [
0,
1,
2,
3,
4,
5,
6,
7
],
"type": "integer",
"description": "minimum quality score (1-7)",
"name": "quality",
"in": "query",
"required": true
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
},
{
"type": "string",
"description": "album uid",
"name": "s",
"in": "query"
},
{
"type": "string",
"description": "photo path",
"name": "path",
"in": "query"
},
{
"type": "boolean",
"description": "is type video",
"name": "video",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/search.Photo"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "returns picture details as JSON",
"operationId": "GetPhoto",
"parameters": [
{
"type": "string",
"description": "Photo UID",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "updates picture details and returns them as JSON",
"operationId": "UpdatePhoto",
"parameters": [
{
"type": "string",
"description": "Photo UID",
"name": "uid",
"in": "path",
"required": true
},
{
"description": "properties to be updated (only submit values that should be changed)",
"name": "photo",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Photo"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/approve": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "marks a photo in review as approved",
"operationId": "ApprovePhoto",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/dl": {
"get": {
"produces": [
"application/octet-stream"
],
"tags": [
"Images",
"Files"
],
"summary": "returns the primary file matching that belongs to the photo",
"operationId": "GetPhotoDownload",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
},
"404": {
"description": "Not Found",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/photos/{uid}/files/{fileuid}": {
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Files"
],
"summary": "removes a file from storage",
"operationId": "DeleteFile",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "file uid",
"name": "fileuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/files/{fileuid}/orientation": {
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Files"
],
"summary": "changes the orientation of a file",
"operationId": "ChangeFileOrientation",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "file uid",
"name": "fileuid",
"in": "path",
"required": true
},
{
"description": "file orientation",
"name": "file",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.File"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/files/{fileuid}/primary": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos",
"Stacks"
],
"summary": "sets the primary file for a photo",
"operationId": "PhotoPrimary",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "file uid",
"name": "fileuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/files/{fileuid}/unstack": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos",
"Stacks"
],
"summary": "removes a file from an existing photo stack",
"operationId": "PhotoUnstack",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "file uid",
"name": "fileuid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/label": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels",
"Photos"
],
"summary": "adds a label to a photo",
"operationId": "AddPhotoLabel",
"parameters": [
{
"description": "label properties",
"name": "label",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Label"
}
},
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/label/{id}": {
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels",
"Photos"
],
"summary": "changes a photo label",
"operationId": "UpdatePhotoLabel",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "label id",
"name": "id",
"in": "path",
"required": true
},
{
"description": "properties to be updated (currently supports: uncertainty)",
"name": "label",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Label"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Labels",
"Photos"
],
"summary": "removes a label from a photo",
"operationId": "RemovePhotoLabel",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
},
{
"type": "string",
"description": "label id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Photo"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/like": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "flags a photo as favorite",
"operationId": "LikePhoto",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Photos"
],
"summary": "removes the favorite flags from a photo",
"operationId": "DislikePhoto",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/photos/{uid}/yaml": {
"get": {
"produces": [
"text/x-yaml"
],
"tags": [
"Photos"
],
"summary": "returns picture details as YAML",
"operationId": "GetPhotoYaml",
"parameters": [
{
"type": "string",
"description": "photo uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/services": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "finds services and returns them as JSON",
"operationId": "SearchServices",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.Service"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "creates a new remote service account configuration",
"operationId": "AddService",
"parameters": [
{
"description": "properties of the service to be created",
"name": "service",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Service"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Service"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/services/{id}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "returns the specified remote service account configuration as JSON",
"operationId": "GetService",
"parameters": [
{
"type": "string",
"description": "service id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Service"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "updates a remote account configuration",
"operationId": "UpdateService",
"parameters": [
{
"type": "string",
"description": "service id",
"name": "id",
"in": "path",
"required": true
},
{
"description": "properties to be updated (only submit values that should be changed)",
"name": "service",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Service"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Service"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "removes a remote service account configuration",
"operationId": "DeleteService",
"parameters": [
{
"type": "string",
"description": "service id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Service"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/services/{id}/folders": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "returns folders that belong to a remote service account",
"operationId": "GetServiceFolders",
"parameters": [
{
"type": "string",
"description": "service id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"type": "object"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/services/{id}/upload": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Services"
],
"summary": "uploads files to the selected service account",
"operationId": "UploadToService",
"parameters": [
{
"type": "string",
"description": "service id",
"name": "id",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.File"
}
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/session": {
"post": {
"tags": [
"Authentication"
],
"responses": {}
}
},
"/api/v1/sessions": {
"post": {
"tags": [
"Authentication"
],
"responses": {}
}
},
"/api/v1/settings": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Settings"
],
"summary": "returns the user app settings as JSON",
"operationId": "GetSettings",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/customize.Settings"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Settings"
],
"summary": "saves the user app settings",
"operationId": "SaveSettings",
"parameters": [
{
"description": "user settings",
"name": "settings",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/customize.Settings"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/customize.Settings"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/status": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Server"
],
"summary": "reports if the server is operational",
"operationId": "GetStatus",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/gin.H"
}
}
}
}
},
"/api/v1/subjects": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Subjects"
],
"summary": "finds and returns subjects as JSON",
"operationId": "SearchSubjects",
"parameters": [
{
"maximum": 100000,
"minimum": 1,
"type": "integer",
"description": "maximum number of results",
"name": "count",
"in": "query",
"required": true
},
{
"maximum": 100000,
"minimum": 0,
"type": "integer",
"description": "search result offset",
"name": "offset",
"in": "query"
},
{
"enum": [
"name",
"count",
"added",
"relevance"
],
"type": "string",
"description": "sort order",
"name": "order",
"in": "query"
},
{
"enum": [
"yes",
"no"
],
"type": "string",
"description": "show hidden",
"name": "hidden",
"in": "query"
},
{
"type": "integer",
"description": "minimum number of files",
"name": "files",
"in": "query"
},
{
"type": "string",
"description": "search query",
"name": "q",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/search.Subject"
}
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/subjects/{uid}": {
"get": {
"produces": [
"application/json"
],
"tags": [
"Subjects"
],
"summary": "returns a subject as JSON",
"operationId": "GetSubject",
"parameters": [
{
"type": "string",
"description": "subject uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Subject"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Subjects"
],
"summary": "updates subject properties",
"operationId": "UpdateSubject",
"parameters": [
{
"type": "string",
"description": "subject uid",
"name": "uid",
"in": "path",
"required": true
},
{
"description": "properties to be updated (only submit values that should be changed)",
"name": "subject",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/form.Subject"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/entity.Subject"
}
},
"400": {
"description": "Bad Request",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/subjects/{uid}/like": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Subjects"
],
"summary": "flags a subject as favorite",
"operationId": "LikeSubject",
"parameters": [
{
"type": "string",
"description": "subject uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Subjects"
],
"summary": "removes the favorite flag from a subject",
"operationId": "DislikeSubject",
"parameters": [
{
"type": "string",
"description": "subject uid",
"name": "uid",
"in": "path",
"required": true
}
],
"responses": {
"401": {
"description": "Unauthorized",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"404": {
"description": "Not Found",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"429": {
"description": "Too Many Requests",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/t/{thumb}/{token}/{size}": {
"get": {
"description": "Fore more information see:\n- https://docs.photoprism.app/developer-guide/api/thumbnails/#image-endpoint-uri",
"produces": [
"image/jpeg"
],
"tags": [
"Images",
"Files"
],
"summary": "returns a thumbnail image with the requested size",
"operationId": "GetThumb",
"parameters": [
{
"type": "string",
"description": "SHA1 file hash, optionally with a crop area suffixed, e.g. '-016014058037'",
"name": "thumb",
"in": "path",
"required": true
},
{
"type": "string",
"description": "user-specific security token provided with session or 'public' when running PhotoPrism in public mode",
"name": "token",
"in": "path",
"required": true
},
{
"enum": [
"tile_50",
"tile_100",
"left_224",
"right_224",
"tile_224",
"tile_500",
"fit_720",
"tile_1080",
"fit_1280",
"fit_1600",
"fit_1920",
"fit_2048",
"fit_2560",
"fit_3840",
"fit_4096",
"fit_7680"
],
"type": "string",
"description": "thumbnail size",
"name": "size",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "file"
}
},
"403": {
"description": "Forbidden",
"schema": {
"type": "file"
}
}
}
}
},
"/api/v1/users/{uid}": {
"put": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/avatar": {
"post": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/passcode": {
"post": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/passcode/activate": {
"post": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/passcode/confirm": {
"post": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/passcode/deactivate": {
"post": {
"tags": [
"Users"
],
"responses": {}
}
},
"/api/v1/users/{uid}/password": {
"put": {
"tags": [
"Users",
"Authentication"
],
"responses": {}
}
},
"/api/v1/users/{uid}/sessions": {
"get": {
"tags": [
"Users",
"Authentication"
],
"responses": {}
}
},
"/api/v1/videos/{hash}/{token}/{format}": {
"get": {
"description": "Fore more information see:\n- https://docs.photoprism.app/developer-guide/api/thumbnails/#video-endpoint-uri",
"produces": [
"video/mp4"
],
"tags": [
"Files",
"Videos"
],
"summary": "returns a video, optionally limited to a byte range for streaming",
"operationId": "GetVideo",
"parameters": [
{
"type": "string",
"description": "SHA1 video file hash",
"name": "thumb",
"in": "path",
"required": true
},
{
"type": "string",
"description": "user-specific security token provided with session",
"name": "token",
"in": "path",
"required": true
},
{
"type": "string",
"description": "video format, e.g. mp4",
"name": "format",
"in": "path",
"required": true
}
],
"responses": {
"403": {
"description": "Forbidden",
"schema": {
"$ref": "#/definitions/i18n.Response"
}
}
}
}
},
"/api/v1/zip": {
"post": {
"tags": [
"Download"
],
"responses": {}
}
},
"/api/v1/{entity}/{uid}/links": {
"post": {
"tags": [
"Links"
],
"responses": {}
}
},
"/users/{uid}/upload/{token}": {
"post": {
"tags": [
"Users",
"Files"
],
"responses": {}
}
}
},
"definitions": {
"config.Options": {
"type": "object",
"properties": {
"AppColor": {
"type": "string"
},
"AppIcon": {
"type": "string"
},
"AppMode": {
"type": "string"
},
"AppName": {
"type": "string"
},
"AutoImport": {
"type": "integer"
},
"AutoIndex": {
"type": "integer"
},
"BackupAlbums": {
"type": "boolean",
"default": true
},
"BackupDatabase": {
"type": "boolean",
"default": true
},
"BackupRetain": {
"type": "integer"
},
"BackupSchedule": {
"type": "string"
},
"CdnUrl": {
"type": "string"
},
"CdnVideo": {
"type": "boolean"
},
"Debug": {
"type": "boolean"
},
"DefaultLocale": {
"type": "string"
},
"DefaultTLS": {
"type": "boolean"
},
"DefaultTheme": {
"type": "string"
},
"DefaultTimezone": {
"type": "string"
},
"DetectNSFW": {
"type": "boolean"
},
"DisableBackups": {
"type": "boolean"
},
"DisableClassification": {
"type": "boolean"
},
"DisableDarktable": {
"type": "boolean"
},
"DisableExifTool": {
"type": "boolean"
},
"DisableFFmpeg": {
"type": "boolean"
},
"DisableFaces": {
"type": "boolean"
},
"DisableHeifConvert": {
"type": "boolean"
},
"DisableImageMagick": {
"type": "boolean"
},
"DisableJpegXL": {
"type": "boolean"
},
"DisableOIDC": {
"type": "boolean"
},
"DisablePlaces": {
"type": "boolean"
},
"DisableRaw": {
"type": "boolean"
},
"DisableRawTherapee": {
"type": "boolean"
},
"DisableSips": {
"type": "boolean"
},
"DisableTLS": {
"type": "boolean"
},
"DisableTensorFlow": {
"type": "boolean"
},
"DisableVectors": {
"type": "boolean"
},
"DisableVips": {
"type": "boolean"
},
"DisableWebDAV": {
"type": "boolean"
},
"ExifBruteForce": {
"type": "boolean"
},
"Experimental": {
"type": "boolean"
},
"FFmpegBitrate": {
"type": "integer"
},
"FFmpegEncoder": {
"type": "string"
},
"FFmpegMapAudio": {
"type": "string"
},
"FFmpegMapVideo": {
"type": "string"
},
"FFmpegSize": {
"type": "integer"
},
"HttpCacheMaxAge": {
"type": "integer"
},
"HttpCachePublic": {
"type": "boolean"
},
"HttpVideoMaxAge": {
"type": "integer"
},
"HttpsProxy": {
"type": "string"
},
"HttpsProxyInsecure": {
"type": "boolean"
},
"IndexSchedule": {
"type": "string"
},
"IndexWorkers": {
"type": "integer"
},
"JpegQuality": {
"type": "integer"
},
"JpegSize": {
"type": "integer"
},
"LegalInfo": {
"type": "string"
},
"LegalUrl": {
"type": "string"
},
"OIDCIcon": {
"type": "string"
},
"OIDCProvider": {
"type": "string"
},
"OIDCRedirect": {
"type": "boolean"
},
"OIDCRegister": {
"type": "boolean"
},
"OriginalsLimit": {
"type": "integer"
},
"PngSize": {
"type": "integer"
},
"Prod": {
"type": "boolean"
},
"RawPresets": {
"type": "boolean"
},
"ReadOnly": {
"type": "boolean"
},
"ResolutionLimit": {
"type": "integer"
},
"SidecarYaml": {
"type": "boolean",
"default": true
},
"SiteAuthor": {
"type": "string"
},
"SiteCaption": {
"type": "string"
},
"SiteDescription": {
"type": "string"
},
"SitePreview": {
"type": "string"
},
"SiteTitle": {
"type": "string"
},
"SiteUrl": {
"type": "string"
},
"TLSCert": {
"type": "string"
},
"TLSEmail": {
"type": "string"
},
"TLSKey": {
"type": "string"
},
"Test": {
"type": "boolean"
},
"ThumbColor": {
"type": "string"
},
"ThumbFilter": {
"type": "string"
},
"ThumbLibrary": {
"type": "string"
},
"ThumbSize": {
"type": "integer"
},
"ThumbSizeUncached": {
"type": "integer"
},
"ThumbUncached": {
"type": "boolean"
},
"Trace": {
"type": "boolean"
},
"WakeupInterval": {
"$ref": "#/definitions/time.Duration"
},
"WallpaperUri": {
"type": "string"
}
}
},
"customize.DownloadName": {
"type": "string",
"enum": [
"file",
"original",
"share"
],
"x-enum-varnames": [
"DownloadNameFile",
"DownloadNameOriginal",
"DownloadNameShare"
]
},
"customize.DownloadSettings": {
"type": "object",
"properties": {
"disabled": {
"type": "boolean"
},
"mediaRaw": {
"type": "boolean"
},
"mediaSidecar": {
"type": "boolean"
},
"name": {
"$ref": "#/definitions/customize.DownloadName"
},
"originals": {
"type": "boolean"
}
}
},
"customize.FeatureSettings": {
"type": "object",
"properties": {
"account": {
"type": "boolean"
},
"albums": {
"type": "boolean"
},
"archive": {
"type": "boolean"
},
"delete": {
"type": "boolean"
},
"download": {
"type": "boolean"
},
"edit": {
"type": "boolean"
},
"estimates": {
"type": "boolean"
},
"favorites": {
"type": "boolean"
},
"files": {
"type": "boolean"
},
"folders": {
"type": "boolean"
},
"import": {
"type": "boolean"
},
"labels": {
"type": "boolean"
},
"library": {
"type": "boolean"
},
"logs": {
"type": "boolean"
},
"moments": {
"type": "boolean"
},
"people": {
"type": "boolean"
},
"places": {
"type": "boolean"
},
"private": {
"type": "boolean"
},
"ratings": {
"type": "boolean"
},
"reactions": {
"type": "boolean"
},
"review": {
"type": "boolean"
},
"search": {
"type": "boolean"
},
"services": {
"type": "boolean"
},
"settings": {
"type": "boolean"
},
"share": {
"type": "boolean"
},
"upload": {
"type": "boolean"
},
"videos": {
"type": "boolean"
}
}
},
"customize.ImportSettings": {
"type": "object",
"properties": {
"dest": {
"type": "string"
},
"move": {
"type": "boolean"
},
"path": {
"type": "string"
}
}
},
"customize.IndexSettings": {
"type": "object",
"properties": {
"convert": {
"type": "boolean"
},
"path": {
"type": "string"
},
"rescan": {
"type": "boolean"
},
"skipArchived": {
"type": "boolean"
}
}
},
"customize.MapsSettings": {
"type": "object",
"properties": {
"animate": {
"type": "integer"
},
"style": {
"type": "string"
}
}
},
"customize.SearchSettings": {
"type": "object",
"properties": {
"batchSize": {
"type": "integer"
},
"listView": {
"type": "boolean"
}
}
},
"customize.Settings": {
"type": "object",
"properties": {
"download": {
"$ref": "#/definitions/customize.DownloadSettings"
},
"features": {
"$ref": "#/definitions/customize.FeatureSettings"
},
"import": {
"$ref": "#/definitions/customize.ImportSettings"
},
"index": {
"$ref": "#/definitions/customize.IndexSettings"
},
"maps": {
"$ref": "#/definitions/customize.MapsSettings"
},
"search": {
"$ref": "#/definitions/customize.SearchSettings"
},
"share": {
"$ref": "#/definitions/customize.ShareSettings"
},
"stack": {
"$ref": "#/definitions/customize.StackSettings"
},
"templates": {
"$ref": "#/definitions/customize.TemplateSettings"
},
"ui": {
"$ref": "#/definitions/customize.UISettings"
}
}
},
"customize.ShareSettings": {
"type": "object",
"properties": {
"title": {
"type": "string"
}
}
},
"customize.StackSettings": {
"type": "object",
"properties": {
"meta": {
"type": "boolean"
},
"name": {
"type": "boolean"
},
"uuid": {
"type": "boolean"
}
}
},
"customize.TemplateSettings": {
"type": "object",
"properties": {
"default": {
"type": "string"
}
}
},
"customize.UISettings": {
"type": "object",
"properties": {
"language": {
"type": "string"
},
"scrollbar": {
"type": "boolean"
},
"theme": {
"type": "string"
},
"timeZone": {
"type": "string"
},
"zoom": {
"type": "boolean"
}
}
},
"entity.Album": {
"type": "object",
"properties": {
"Caption": {
"type": "string"
},
"Category": {
"type": "string"
},
"Country": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"CreatedBy": {
"type": "string"
},
"Day": {
"type": "integer"
},
"DeletedAt": {
"type": "string"
},
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"Filter": {
"type": "string"
},
"ID": {
"type": "integer"
},
"Location": {
"type": "string"
},
"Month": {
"type": "integer"
},
"Notes": {
"type": "string"
},
"Order": {
"type": "string"
},
"ParentUID": {
"type": "string"
},
"Path": {
"type": "string"
},
"Private": {
"type": "boolean"
},
"PublishedAt": {
"type": "string"
},
"Slug": {
"type": "string"
},
"State": {
"type": "string"
},
"Template": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Title": {
"type": "string"
},
"Type": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
},
"Year": {
"type": "integer"
}
}
},
"entity.Camera": {
"type": "object",
"properties": {
"Description": {
"type": "string"
},
"ID": {
"type": "integer"
},
"Make": {
"type": "string"
},
"Model": {
"type": "string"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Slug": {
"type": "string"
},
"Type": {
"type": "string"
}
}
},
"entity.Cell": {
"type": "object",
"properties": {
"Category": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"ID": {
"type": "string"
},
"Name": {
"type": "string"
},
"Place": {
"$ref": "#/definitions/entity.Place"
},
"Postcode": {
"type": "string"
},
"Street": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"entity.Details": {
"type": "object",
"properties": {
"Artist": {
"type": "string"
},
"ArtistSrc": {
"type": "string"
},
"Copyright": {
"type": "string"
},
"CopyrightSrc": {
"type": "string"
},
"Keywords": {
"type": "string"
},
"KeywordsSrc": {
"type": "string"
},
"License": {
"type": "string"
},
"LicenseSrc": {
"type": "string"
},
"Notes": {
"type": "string"
},
"NotesSrc": {
"type": "string"
},
"Software": {
"type": "string"
},
"SoftwareSrc": {
"type": "string"
},
"Subject": {
"type": "string"
},
"SubjectSrc": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"photoID": {
"type": "integer"
},
"updatedAt": {
"type": "string"
}
}
},
"entity.Error": {
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"Level": {
"type": "string"
},
"Message": {
"type": "string"
},
"Time": {
"type": "string"
}
}
},
"entity.Face": {
"type": "object",
"properties": {
"CollisionRadius": {
"type": "number"
},
"Collisions": {
"type": "integer"
},
"CreatedAt": {
"type": "string"
},
"Hidden": {
"type": "boolean"
},
"ID": {
"type": "string"
},
"Kind": {
"type": "integer"
},
"MatchedAt": {
"type": "string"
},
"SampleRadius": {
"type": "number"
},
"Samples": {
"type": "integer"
},
"Src": {
"type": "string"
},
"SubjUID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"entity.File": {
"type": "object",
"properties": {
"AspectRatio": {
"type": "number"
},
"Chroma": {
"type": "integer"
},
"Codec": {
"type": "string"
},
"ColorProfile": {
"type": "string"
},
"Colors": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"CreatedIn": {
"type": "integer"
},
"DeletedAt": {
"type": "string"
},
"Diff": {
"type": "integer"
},
"Duration": {
"$ref": "#/definitions/time.Duration"
},
"Error": {
"type": "string"
},
"FPS": {
"type": "number"
},
"FileType": {
"type": "string"
},
"Frames": {
"type": "integer"
},
"HDR": {
"type": "boolean"
},
"Hash": {
"type": "string"
},
"Height": {
"type": "integer"
},
"InstanceID": {
"type": "string"
},
"Luminance": {
"type": "string"
},
"MainColor": {
"type": "string"
},
"MediaID": {
"type": "string"
},
"MediaType": {
"type": "string"
},
"MediaUTC": {
"type": "integer"
},
"Mime": {
"type": "string"
},
"Missing": {
"type": "boolean"
},
"ModTime": {
"type": "integer"
},
"Name": {
"type": "string"
},
"Orientation": {
"type": "integer"
},
"OrientationSrc": {
"type": "string"
},
"OriginalName": {
"type": "string"
},
"PhotoUID": {
"type": "string"
},
"Portrait": {
"type": "boolean"
},
"Primary": {
"type": "boolean"
},
"Projection": {
"type": "string"
},
"PublishedAt": {
"type": "string"
},
"Root": {
"type": "string"
},
"Sidecar": {
"type": "boolean"
},
"Size": {
"type": "integer"
},
"Software": {
"type": "string"
},
"TakenAt": {
"type": "string"
},
"TimeIndex": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
},
"UpdatedIn": {
"type": "integer"
},
"Video": {
"type": "boolean"
},
"Watermark": {
"type": "boolean"
},
"Width": {
"type": "integer"
}
}
},
"entity.Label": {
"type": "object",
"properties": {
"CreatedAt": {
"type": "string"
},
"CustomSlug": {
"type": "string"
},
"DeletedAt": {
"type": "string"
},
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"ID": {
"type": "integer"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"Priority": {
"type": "integer"
},
"PublishedAt": {
"type": "string"
},
"Slug": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"entity.Lens": {
"type": "object",
"properties": {
"Description": {
"type": "string"
},
"ID": {
"type": "integer"
},
"Make": {
"type": "string"
},
"Model": {
"type": "string"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Slug": {
"type": "string"
},
"Type": {
"type": "string"
}
}
},
"entity.Link": {
"type": "object",
"properties": {
"Comment": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"CreatedBy": {
"type": "string"
},
"Expires": {
"type": "integer"
},
"MaxViews": {
"type": "integer"
},
"ModifiedAt": {
"type": "string"
},
"Perm": {
"type": "integer"
},
"ShareUID": {
"type": "string"
},
"Slug": {
"type": "string"
},
"Token": {
"type": "string"
},
"UID": {
"type": "string"
},
"VerifyPassword": {
"type": "boolean"
},
"Views": {
"type": "integer"
}
}
},
"entity.Photo": {
"type": "object",
"properties": {
"Albums": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.Album"
}
},
"Altitude": {
"type": "integer"
},
"Camera": {
"$ref": "#/definitions/entity.Camera"
},
"CameraID": {
"type": "integer"
},
"CameraSerial": {
"type": "string"
},
"CameraSrc": {
"type": "string"
},
"Caption": {
"type": "string"
},
"CaptionSrc": {
"type": "string"
},
"Cell": {
"$ref": "#/definitions/entity.Cell"
},
"CellAccuracy": {
"type": "integer"
},
"CellID": {
"type": "string"
},
"Color": {
"type": "integer"
},
"Country": {
"type": "string"
},
"CreatedBy": {
"type": "string"
},
"Day": {
"type": "integer"
},
"Description": {
"type": "string"
},
"DescriptionSrc": {
"type": "string"
},
"Details": {
"$ref": "#/definitions/entity.Details"
},
"DocumentID": {
"type": "string"
},
"Duration": {
"$ref": "#/definitions/time.Duration"
},
"EstimatedAt": {
"type": "string"
},
"Exposure": {
"type": "string"
},
"FNumber": {
"type": "number"
},
"Faces": {
"type": "integer"
},
"Favorite": {
"type": "boolean"
},
"FocalLength": {
"type": "integer"
},
"Iso": {
"type": "integer"
},
"Lat": {
"type": "number"
},
"Lens": {
"$ref": "#/definitions/entity.Lens"
},
"LensID": {
"type": "integer"
},
"Lng": {
"type": "number"
},
"Month": {
"type": "integer"
},
"Name": {
"type": "string"
},
"OriginalName": {
"type": "string"
},
"Panorama": {
"type": "boolean"
},
"Path": {
"type": "string"
},
"Place": {
"$ref": "#/definitions/entity.Place"
},
"PlaceID": {
"type": "string"
},
"PlaceSrc": {
"type": "string"
},
"Private": {
"type": "boolean"
},
"PublishedAt": {
"type": "string"
},
"Quality": {
"type": "integer"
},
"Resolution": {
"type": "integer"
},
"Scan": {
"type": "boolean"
},
"Stack": {
"type": "integer"
},
"TakenAt": {
"type": "string"
},
"TakenAtLocal": {
"type": "string"
},
"TakenSrc": {
"type": "string"
},
"TimeZone": {
"type": "string"
},
"Title": {
"type": "string"
},
"TitleSrc": {
"type": "string"
},
"Type": {
"type": "string"
},
"TypeSrc": {
"type": "string"
},
"UID": {
"type": "string"
},
"Year": {
"type": "integer"
},
"checkedAt": {
"type": "string"
},
"createdAt": {
"type": "string"
},
"deletedAt": {
"type": "string"
},
"editedAt": {
"type": "string"
},
"files": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.File"
}
},
"id": {
"type": "integer"
},
"labels": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.PhotoLabel"
}
},
"updatedAt": {
"type": "string"
}
}
},
"entity.PhotoLabel": {
"type": "object",
"properties": {
"label": {
"$ref": "#/definitions/entity.Label"
},
"labelID": {
"type": "integer"
},
"labelSrc": {
"type": "string"
},
"photo": {
"$ref": "#/definitions/entity.Photo"
},
"photoID": {
"type": "integer"
},
"uncertainty": {
"type": "integer"
}
}
},
"entity.Place": {
"type": "object",
"properties": {
"City": {
"type": "string"
},
"Country": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"District": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"Keywords": {
"type": "string"
},
"Label": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"PlaceID": {
"type": "string"
},
"State": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"entity.Service": {
"type": "object",
"properties": {
"AccError": {
"type": "string"
},
"AccErrors": {
"type": "integer"
},
"AccName": {
"type": "string"
},
"AccOwner": {
"type": "string"
},
"AccShare": {
"type": "boolean"
},
"AccSync": {
"type": "boolean"
},
"AccTimeout": {
"type": "string"
},
"AccType": {
"type": "string"
},
"AccURL": {
"type": "string"
},
"AccUser": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"DeletedAt": {
"type": "string"
},
"ID": {
"type": "integer"
},
"RetryLimit": {
"type": "integer"
},
"ShareExpires": {
"type": "integer"
},
"SharePath": {
"type": "string"
},
"ShareSize": {
"type": "string"
},
"SyncDate": {
"$ref": "#/definitions/sql.NullTime"
},
"SyncDownload": {
"type": "boolean"
},
"SyncFilenames": {
"type": "boolean"
},
"SyncInterval": {
"type": "integer"
},
"SyncPath": {
"type": "string"
},
"SyncRaw": {
"type": "boolean"
},
"SyncStatus": {
"type": "string"
},
"SyncUpload": {
"type": "boolean"
},
"UpdatedAt": {
"type": "string"
}
}
},
"entity.Subject": {
"type": "object",
"properties": {
"About": {
"type": "string"
},
"Alias": {
"type": "string"
},
"Bio": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"DeletedAt": {
"type": "string"
},
"Excluded": {
"type": "boolean"
},
"Favorite": {
"type": "boolean"
},
"FileCount": {
"type": "integer"
},
"Hidden": {
"type": "boolean"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"Private": {
"type": "boolean"
},
"Slug": {
"type": "string"
},
"Src": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Type": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"form.Album": {
"type": "object",
"properties": {
"Caption": {
"type": "string"
},
"Category": {
"type": "string"
},
"Country": {
"type": "string"
},
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"Filter": {
"type": "string"
},
"Location": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Order": {
"type": "string"
},
"Private": {
"type": "boolean"
},
"Template": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Title": {
"type": "string"
},
"Type": {
"type": "string"
}
}
},
"form.Details": {
"type": "object",
"properties": {
"Artist": {
"type": "string"
},
"ArtistSrc": {
"type": "string"
},
"Copyright": {
"type": "string"
},
"CopyrightSrc": {
"type": "string"
},
"Keywords": {
"type": "string"
},
"KeywordsSrc": {
"type": "string"
},
"License": {
"type": "string"
},
"LicenseSrc": {
"type": "string"
},
"Notes": {
"type": "string"
},
"NotesSrc": {
"type": "string"
},
"PhotoID": {
"type": "integer"
},
"Subject": {
"type": "string"
},
"SubjectSrc": {
"type": "string"
}
}
},
"form.Face": {
"type": "object",
"properties": {
"Hidden": {
"type": "boolean"
},
"SubjUID": {
"type": "string"
}
}
},
"form.File": {
"type": "object",
"properties": {
"Orientation": {
"type": "integer"
}
}
},
"form.ImportOptions": {
"type": "object",
"properties": {
"albums": {
"type": "array",
"items": {
"type": "string"
}
},
"move": {
"type": "boolean"
},
"path": {
"type": "string"
}
}
},
"form.IndexOptions": {
"type": "object",
"properties": {
"cleanup": {
"type": "boolean"
},
"path": {
"type": "string"
},
"rescan": {
"type": "boolean"
}
}
},
"form.Label": {
"type": "object",
"properties": {
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Priority": {
"type": "integer"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Uncertainty": {
"type": "integer"
}
}
},
"form.Link": {
"type": "object",
"properties": {
"CanComment": {
"type": "boolean"
},
"CanEdit": {
"type": "boolean"
},
"Expires": {
"type": "integer"
},
"MaxViews": {
"type": "integer"
},
"Password": {
"type": "string"
},
"Slug": {
"type": "string"
},
"Token": {
"type": "string"
}
}
},
"form.Photo": {
"type": "object",
"properties": {
"Altitude": {
"type": "integer"
},
"CameraID": {
"type": "integer"
},
"CameraSrc": {
"type": "string"
},
"Caption": {
"type": "string"
},
"CaptionSrc": {
"type": "string"
},
"CellAccuracy": {
"type": "integer"
},
"CellID": {
"type": "string"
},
"Country": {
"type": "string"
},
"Day": {
"type": "integer"
},
"Description": {
"type": "string"
},
"DescriptionSrc": {
"type": "string"
},
"Details": {
"$ref": "#/definitions/form.Details"
},
"Exposure": {
"type": "string"
},
"FNumber": {
"type": "number"
},
"Favorite": {
"type": "boolean"
},
"FocalLength": {
"type": "integer"
},
"Iso": {
"type": "integer"
},
"Lat": {
"type": "number"
},
"LensID": {
"type": "integer"
},
"Lng": {
"type": "number"
},
"Month": {
"type": "integer"
},
"OriginalName": {
"type": "string"
},
"Panorama": {
"type": "boolean"
},
"PlaceID": {
"type": "string"
},
"PlaceSrc": {
"type": "string"
},
"Private": {
"type": "boolean"
},
"Scan": {
"type": "boolean"
},
"Stack": {
"type": "integer"
},
"TakenAt": {
"type": "string"
},
"TakenAtLocal": {
"type": "string"
},
"TakenSrc": {
"type": "string"
},
"TimeZone": {
"type": "string"
},
"Title": {
"type": "string"
},
"TitleSrc": {
"type": "string"
},
"Type": {
"type": "string"
},
"TypeSrc": {
"type": "string"
},
"Year": {
"type": "integer"
}
}
},
"form.Selection": {
"type": "object",
"properties": {
"albums": {
"type": "array",
"items": {
"type": "string"
}
},
"all": {
"type": "boolean"
},
"files": {
"type": "array",
"items": {
"type": "string"
}
},
"labels": {
"type": "array",
"items": {
"type": "string"
}
},
"photos": {
"type": "array",
"items": {
"type": "string"
}
},
"places": {
"type": "array",
"items": {
"type": "string"
}
},
"subjects": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"form.Service": {
"type": "object",
"properties": {
"AccError": {
"type": "string"
},
"AccKey": {
"type": "string"
},
"AccName": {
"type": "string"
},
"AccOwner": {
"type": "string"
},
"AccPass": {
"type": "string"
},
"AccShare": {
"description": "Manual upload enabled, see SharePath, ShareSize, and ShareExpires.",
"type": "boolean"
},
"AccSync": {
"description": "Background sync enabled, see SyncDownload and SyncUpload.",
"type": "boolean"
},
"AccTimeout": {
"description": "Request timeout: default, high, medium, low, none",
"type": "string"
},
"AccType": {
"type": "string"
},
"AccURL": {
"type": "string"
},
"AccUser": {
"type": "string"
},
"RetryLimit": {
"description": "Maximum number of failed requests.",
"type": "integer"
},
"ShareExpires": {
"type": "integer"
},
"SharePath": {
"type": "string"
},
"ShareSize": {
"type": "string"
},
"SyncDownload": {
"type": "boolean"
},
"SyncFilenames": {
"type": "boolean"
},
"SyncInterval": {
"type": "integer"
},
"SyncPath": {
"type": "string"
},
"SyncRaw": {
"type": "boolean"
},
"SyncUpload": {
"type": "boolean"
}
}
},
"form.Subject": {
"type": "object",
"properties": {
"About": {
"type": "string"
},
"Alias": {
"type": "string"
},
"Bio": {
"type": "string"
},
"Excluded": {
"type": "boolean"
},
"Favorite": {
"type": "boolean"
},
"Hidden": {
"type": "boolean"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"Private": {
"type": "boolean"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
}
}
},
"gin.H": {
"type": "object",
"additionalProperties": {}
},
"i18n.Response": {
"type": "object",
"properties": {
"code": {
"type": "integer"
},
"details": {
"type": "string"
},
"error": {
"type": "string"
},
"message": {
"type": "string"
}
}
},
"search.Album": {
"type": "object",
"properties": {
"Caption": {
"type": "string"
},
"Category": {
"type": "string"
},
"Country": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"Day": {
"type": "integer"
},
"DeletedAt": {
"type": "string"
},
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"Filter": {
"type": "string"
},
"LinkCount": {
"type": "integer"
},
"Location": {
"type": "string"
},
"Month": {
"type": "integer"
},
"Notes": {
"type": "string"
},
"Order": {
"type": "string"
},
"ParentUID": {
"type": "string"
},
"Path": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"Private": {
"type": "boolean"
},
"Slug": {
"type": "string"
},
"State": {
"type": "string"
},
"Template": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Title": {
"type": "string"
},
"Type": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
},
"Year": {
"type": "integer"
}
}
},
"search.Face": {
"type": "object",
"properties": {
"CollisionRadius": {
"type": "number"
},
"Collisions": {
"type": "integer"
},
"CreatedAt": {
"type": "string"
},
"FaceDist": {
"type": "number"
},
"FileUID": {
"type": "string"
},
"Hidden": {
"type": "boolean"
},
"ID": {
"type": "string"
},
"Invalid": {
"type": "boolean"
},
"MarkerUID": {
"type": "string"
},
"MatchedAt": {
"type": "string"
},
"Name": {
"type": "string"
},
"Review": {
"type": "boolean"
},
"SampleRadius": {
"type": "number"
},
"Samples": {
"type": "integer"
},
"Score": {
"type": "integer"
},
"Size": {
"type": "integer"
},
"Src": {
"type": "string"
},
"SubjSrc": {
"type": "string"
},
"SubjUID": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"search.GeoResult": {
"type": "object",
"properties": {
"Caption": {
"type": "string"
},
"Duration": {
"$ref": "#/definitions/time.Duration"
},
"Favorite": {
"type": "boolean"
},
"Hash": {
"type": "string"
},
"Height": {
"type": "integer"
},
"Lat": {
"type": "number"
},
"Lng": {
"type": "number"
},
"TakenAt": {
"type": "string"
},
"TakenAtLocal": {
"type": "string"
},
"Title": {
"type": "string"
},
"Type": {
"type": "string"
},
"UID": {
"type": "string"
},
"Width": {
"type": "integer"
}
}
},
"search.Label": {
"type": "object",
"properties": {
"CreatedAt": {
"type": "string"
},
"CustomSlug": {
"type": "string"
},
"DeletedAt": {
"type": "string"
},
"Description": {
"type": "string"
},
"Favorite": {
"type": "boolean"
},
"ID": {
"type": "integer"
},
"Name": {
"type": "string"
},
"Notes": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"Priority": {
"type": "integer"
},
"Slug": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
}
}
},
"search.Photo": {
"type": "object",
"properties": {
"Altitude": {
"type": "integer"
},
"CameraID": {
"description": "Camera",
"type": "integer"
},
"CameraMake": {
"type": "string"
},
"CameraModel": {
"type": "string"
},
"CameraSerial": {
"type": "string"
},
"CameraSrc": {
"type": "string"
},
"CameraType": {
"type": "string"
},
"Caption": {
"type": "string"
},
"CellAccuracy": {
"type": "integer"
},
"CellID": {
"description": "Cell",
"type": "string"
},
"CheckedAt": {
"type": "string"
},
"Color": {
"type": "integer"
},
"Country": {
"type": "string"
},
"CreatedAt": {
"type": "string"
},
"Day": {
"type": "integer"
},
"DeletedAt": {
"type": "string"
},
"DocumentID": {
"type": "string"
},
"Duration": {
"$ref": "#/definitions/time.Duration"
},
"EditedAt": {
"type": "string"
},
"Exposure": {
"type": "string"
},
"FNumber": {
"type": "number"
},
"Faces": {
"type": "integer"
},
"Favorite": {
"type": "boolean"
},
"FileName": {
"type": "string"
},
"FileRoot": {
"type": "string"
},
"FileUID": {
"type": "string"
},
"Files": {
"type": "array",
"items": {
"$ref": "#/definitions/entity.File"
}
},
"FocalLength": {
"type": "integer"
},
"Hash": {
"type": "string"
},
"Height": {
"type": "integer"
},
"ID": {
"type": "string"
},
"InstanceID": {
"type": "string"
},
"Iso": {
"type": "integer"
},
"Lat": {
"type": "number"
},
"LensID": {
"description": "Lens",
"type": "integer"
},
"LensMake": {
"type": "string"
},
"LensModel": {
"type": "string"
},
"Lng": {
"type": "number"
},
"Merged": {
"type": "boolean"
},
"Month": {
"type": "integer"
},
"Name": {
"type": "string"
},
"OriginalName": {
"type": "string"
},
"Panorama": {
"type": "boolean"
},
"Path": {
"type": "string"
},
"PlaceCity": {
"type": "string"
},
"PlaceCountry": {
"type": "string"
},
"PlaceID": {
"type": "string"
},
"PlaceLabel": {
"type": "string"
},
"PlaceSrc": {
"type": "string"
},
"PlaceState": {
"type": "string"
},
"Portrait": {
"type": "boolean"
},
"Private": {
"type": "boolean"
},
"Quality": {
"type": "integer"
},
"Resolution": {
"type": "integer"
},
"Scan": {
"type": "boolean"
},
"Stack": {
"type": "integer"
},
"TakenAt": {
"type": "string"
},
"TakenAtLocal": {
"type": "string"
},
"TakenSrc": {
"type": "string"
},
"TimeZone": {
"type": "string"
},
"Title": {
"type": "string"
},
"Type": {
"type": "string"
},
"TypeSrc": {
"type": "string"
},
"UID": {
"type": "string"
},
"UpdatedAt": {
"type": "string"
},
"Width": {
"type": "integer"
},
"Year": {
"type": "integer"
}
}
},
"search.Subject": {
"type": "object",
"properties": {
"Alias": {
"type": "string"
},
"Excluded": {
"type": "boolean"
},
"Favorite": {
"type": "boolean"
},
"FileCount": {
"type": "integer"
},
"Hidden": {
"type": "boolean"
},
"MarkerSrc": {
"type": "string"
},
"MarkerUID": {
"type": "string"
},
"Name": {
"type": "string"
},
"PhotoCount": {
"type": "integer"
},
"Private": {
"type": "boolean"
},
"Slug": {
"type": "string"
},
"Thumb": {
"type": "string"
},
"ThumbSrc": {
"type": "string"
},
"Type": {
"type": "string"
},
"UID": {
"type": "string"
}
}
},
"sql.NullTime": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"valid": {
"description": "Valid is true if Time is not NULL",
"type": "boolean"
}
}
},
"time.Duration": {
"type": "integer",
"enum": [
-9223372036854775808,
9223372036854775807,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000,
-9223372036854775808,
9223372036854775807,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000,
1,
1000,
1000000,
1000000000,
60000000000,
3600000000000
],
"x-enum-varnames": [
"minDuration",
"maxDuration",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour",
"minDuration",
"maxDuration",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour",
"Nanosecond",
"Microsecond",
"Millisecond",
"Second",
"Minute",
"Hour"
]
}
},
"externalDocs": {
"description": "Learn more ",
"url": "https://docs.photoprism.app/developer-guide/api/"
}
}