1
0
mirror of https://github.com/immich-app/immich.git synced 2024-12-22 01:47:08 +02:00
immich/open-api/immich-openapi-specs.json

10754 lines
232 KiB
JSON
Raw Normal View History

2022-12-05 19:56:44 +02:00
{
"openapi": "3.0.0",
"paths": {
"/activity": {
"get": {
"operationId": "getActivities",
"parameters": [
{
"name": "albumId",
"required": true,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "assetId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "level",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ReactionLevel"
}
},
{
"name": "type",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ReactionType"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/ActivityResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Activity"
]
},
"post": {
"operationId": "createActivity",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActivityCreateDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActivityResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Activity"
]
}
},
"/activity/statistics": {
"get": {
"operationId": "getActivityStatistics",
"parameters": [
{
"name": "albumId",
"required": true,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "assetId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ActivityStatisticsResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Activity"
]
}
},
"/activity/{id}": {
"delete": {
"operationId": "deleteActivity",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Activity"
]
}
},
"/album": {
"get": {
"operationId": "getAllAlbums",
"parameters": [
{
"name": "assetId",
"required": false,
"in": "query",
"description": "Only returns albums that contain the asset\nIgnores the shared parameter\nundefined: get all albums",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "shared",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AlbumResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
},
"post": {
"operationId": "createAlbum",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateAlbumDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
}
},
"/album/count": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getAlbumCount",
2023-06-10 06:14:18 +02:00
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumCountResponseDto"
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
2023-06-10 06:14:18 +02:00
]
}
},
"/album/{id}": {
"delete": {
"operationId": "deleteAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
},
"get": {
"operationId": "getAlbumInfo",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "withoutAssets",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
2023-05-26 15:04:09 +02:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
},
"patch": {
"operationId": "updateAlbumInfo",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateAlbumDto"
}
}
},
"required": true
},
"responses": {
"200": {
2023-05-26 15:04:09 +02:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
}
},
2023-06-10 06:14:18 +02:00
"/album/{id}/assets": {
"delete": {
"operationId": "removeAssetFromAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkIdsDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/BulkIdResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "addAssetsToAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkIdsDto"
}
}
},
"required": true
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/BulkIdResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 06:14:18 +02:00
}
},
"/album/{id}/user/{userId}": {
"delete": {
"operationId": "removeUserFromAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 06:14:18 +02:00
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 06:14:18 +02:00
}
},
"/album/{id}/users": {
"put": {
2023-06-10 06:14:18 +02:00
"operationId": "addUsersToAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AddUsersDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 06:14:18 +02:00
}
},
"/api-key": {
"get": {
"operationId": "getApiKeys",
2023-06-10 06:14:18 +02:00
"parameters": [],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/APIKeyResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
2023-06-10 06:14:18 +02:00
},
"post": {
"operationId": "createApiKey",
2023-06-10 06:14:18 +02:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyCreateDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyCreateResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
}
},
2023-06-10 06:14:18 +02:00
"/api-key/{id}": {
"delete": {
"operationId": "deleteApiKey",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": ""
}
},
2023-06-10 06:14:18 +02:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
2023-06-10 06:14:18 +02:00
},
"get": {
"operationId": "getApiKey",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
},
"put": {
"operationId": "updateApiKey",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyUpdateDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset": {
"delete": {
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"operationId": "deleteAssets",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"$ref": "#/components/schemas/AssetBulkDeleteDto"
}
}
},
"required": true
},
"responses": {
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
},
2023-06-10 06:14:18 +02:00
"get": {
"description": "Get all AssetEntity belong to the user",
"operationId": "getAllAssets",
"parameters": [
{
"name": "if-none-match",
"in": "header",
"description": "ETag of data already cached on the client",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
2023-06-10 06:14:18 +02:00
},
{
"name": "skip",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
"schema": {
"type": "integer"
2023-06-10 06:14:18 +02:00
}
},
{
"name": "take",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
"schema": {
"type": "integer"
2023-06-10 06:14:18 +02:00
}
},
{
"name": "updatedAfter",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
2023-06-10 06:14:18 +02:00
}
},
{
"name": "updatedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
2023-06-10 06:14:18 +02:00
{
"name": "userId",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
2023-06-10 06:14:18 +02:00
"schema": {
"format": "uuid",
2023-06-10 06:14:18 +02:00
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
]
},
"put": {
"operationId": "updateAssets",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetBulkUpdateDto"
}
}
},
"required": true
},
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/bulk-upload-check": {
"post": {
2023-06-10 06:14:18 +02:00
"description": "Checks if assets exist by checksums",
"operationId": "checkBulkUpload",
"parameters": [],
2023-06-10 06:14:18 +02:00
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetBulkUploadCheckDto"
}
2022-12-05 19:56:44 +02:00
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetBulkUploadCheckResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/curated-locations": {
"get": {
"operationId": "getCuratedLocations",
2022-12-05 19:56:44 +02:00
"parameters": [],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/CuratedLocationsResponseDto"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/curated-objects": {
"get": {
"operationId": "getCuratedObjects",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/CuratedObjectsResponseDto"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
2022-12-05 19:56:44 +02:00
]
}
},
"/asset/device/{deviceId}": {
"get": {
"description": "Get all asset of a device that are in the database, ID only.",
"operationId": "getAllUserAssetsByDeviceId",
"parameters": [
{
"name": "deviceId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"type": "string"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/exist": {
"post": {
"description": "Checks if multiple assets exist on the server and returns all existing - used by background backup",
"operationId": "checkExistingAssets",
2023-06-10 06:14:18 +02:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsResponseDto"
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"security": [
{
2023-06-10 06:14:18 +02:00
"bearer": []
},
{
2023-06-10 06:14:18 +02:00
"cookie": []
},
{
2023-06-10 06:14:18 +02:00
"api_key": []
}
],
"tags": [
"Asset"
2023-06-10 06:14:18 +02:00
]
}
},
"/asset/file/{id}": {
"get": {
"operationId": "serveFile",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "isThumb",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"title": "Is serve thumbnail (resize) file",
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "isWeb",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"title": "Is request made from web",
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
2023-06-10 06:14:18 +02:00
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"security": [
{
2023-06-10 06:14:18 +02:00
"bearer": []
},
{
2023-06-10 06:14:18 +02:00
"cookie": []
},
{
2023-06-10 06:14:18 +02:00
"api_key": []
}
],
"tags": [
"Asset"
2023-06-10 06:14:18 +02:00
]
}
},
"/asset/jobs": {
"post": {
"operationId": "runAssetJobs",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetJobsDto"
}
}
},
"required": true
},
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/map-marker": {
"get": {
"operationId": "getMapMarkers",
"parameters": [
{
"name": "fileCreatedAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "fileCreatedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withPartners",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/MapMarkerResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/asset/memory-lane": {
"get": {
"operationId": "getMemoryLane",
"parameters": [
{
"name": "day",
"required": true,
"in": "query",
"schema": {
"type": "integer"
}
},
{
"name": "month",
"required": true,
"in": "query",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/MemoryLaneResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/asset/random": {
"get": {
"operationId": "getRandom",
"parameters": [
{
"name": "count",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/search-terms": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAssetSearchTerms",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-10-22 04:38:07 +02:00
"/asset/stack/parent": {
"put": {
"operationId": "updateStackParent",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateStackParentDto"
}
}
},
"required": true
},
"responses": {
"200": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/asset/statistics": {
"get": {
"operationId": "getAssetStatistics",
"parameters": [
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetStatsResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/thumbnail/{id}": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAssetThumbnail",
"parameters": [
{
"name": "format",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ThumbnailFormat"
}
},
2023-06-10 06:14:18 +02:00
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/time-bucket": {
"get": {
"operationId": "getTimeBucket",
"parameters": [
{
"name": "albumId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "order",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
{
"name": "size",
"required": true,
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimeBucketSize"
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
}
},
{
"name": "timeBucket",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "withPartners",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
},
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/asset/time-buckets": {
"get": {
"operationId": "getTimeBuckets",
"parameters": [
{
"name": "albumId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isTrashed",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "order",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "personId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
{
"name": "size",
"required": true,
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimeBucketSize"
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "withPartners",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TimeBucketResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
},
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
2023-06-10 06:14:18 +02:00
}
},
"/asset/upload": {
"post": {
"operationId": "uploadFile",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
2023-06-10 06:14:18 +02:00
"multipart/form-data": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateAssetDto"
}
}
},
"description": "Asset Upload Information",
"required": true
},
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetFileUploadResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
2023-06-10 06:14:18 +02:00
}
},
"/asset/{id}": {
"get": {
"operationId": "getAssetInfo",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
},
2023-06-10 06:14:18 +02:00
"put": {
"operationId": "updateAsset",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateAssetDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Asset"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
}
},
"/assets": {
"get": {
"deprecated": true,
"operationId": "searchAssets",
"parameters": [
{
"name": "checksum",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "city",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "country",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "createdAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "createdBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "deviceAssetId",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "deviceId",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "encodedVideoPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "id",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isEncoded",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isExternal",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isMotion",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isNotInAlbum",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isOffline",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isReadOnly",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isVisible",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "lensModel",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "libraryId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "make",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "model",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "order",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "originalFileName",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "originalPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "page",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"name": "personIds",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "resizePath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "size",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"name": "state",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "takenAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "takenBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "trashedAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "trashedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "type",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "updatedAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "updatedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "webpPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "withArchived",
"required": false,
"in": "query",
"schema": {
"default": false,
"type": "boolean"
}
},
{
"name": "withDeleted",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withExif",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withPeople",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/audit/deletes": {
"get": {
"operationId": "getAuditDeletes",
"parameters": [
{
"name": "after",
"required": true,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "entityType",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/EntityType"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditDeletesResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Audit"
]
}
},
"/audit/file-report": {
"get": {
"operationId": "getAuditFiles",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileReportDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Audit"
]
}
},
"/audit/file-report/checksum": {
"post": {
"operationId": "getFileChecksums",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileChecksumDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/FileChecksumResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Audit"
]
}
},
"/audit/file-report/fix": {
"post": {
"operationId": "fixAuditFiles",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FileReportFixDto"
}
}
},
"required": true
},
"responses": {
"201": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Audit"
]
}
},
2023-06-10 06:14:18 +02:00
"/auth/admin-sign-up": {
"post": {
"operationId": "signUpAdmin",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SignUpDto"
}
}
},
"required": true
},
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
2023-06-10 06:14:18 +02:00
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"tags": [
"Authentication"
]
}
},
"/auth/change-password": {
"post": {
"operationId": "changePassword",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangePasswordDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
2022-12-05 19:56:44 +02:00
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
}
},
2023-06-10 06:14:18 +02:00
"/auth/devices": {
"delete": {
"operationId": "logoutAuthDevices",
"parameters": [],
"responses": {
"204": {
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
2023-06-10 06:14:18 +02:00
},
"get": {
"operationId": "getAuthDevices",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AuthDeviceResponseDto"
},
"type": "array"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
2023-06-10 06:14:18 +02:00
]
}
},
"/auth/devices/{id}": {
"delete": {
"operationId": "logoutAuthDevice",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
"204": {
2023-06-10 06:14:18 +02:00
"description": ""
}
2022-12-05 19:56:44 +02:00
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Authentication"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/auth/login": {
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "login",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/LoginCredentialDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/LoginResponseDto"
}
}
},
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
]
}
},
"/auth/logout": {
"post": {
"operationId": "logout",
"parameters": [],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LogoutResponseDto"
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
2023-06-10 06:14:18 +02:00
}
},
"/auth/validateToken": {
"post": {
"operationId": "validateAccessToken",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ValidateAccessTokenResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
}
},
"/download/archive": {
"post": {
"operationId": "downloadArchive",
"parameters": [
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Download"
]
}
},
"/download/asset/{id}": {
"post": {
"operationId": "downloadFile",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Download"
]
}
},
"/download/info": {
"post": {
"operationId": "getDownloadInfo",
"parameters": [
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DownloadInfoDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DownloadResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Download"
]
}
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"/face": {
"get": {
"operationId": "getFaces",
"parameters": [
{
"name": "id",
"required": true,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetFaceResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Face"
]
}
},
"/face/{id}": {
"put": {
"operationId": "reassignFacesById",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FaceDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PersonResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Face"
]
}
},
2023-06-10 06:14:18 +02:00
"/jobs": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAllJobsStatus",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AllJobStatusResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Job"
]
2023-06-10 06:14:18 +02:00
}
},
"/jobs/{id}": {
2023-06-10 06:14:18 +02:00
"put": {
"operationId": "sendJobCommand",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobName"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobCommandDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Job"
]
2023-06-10 06:14:18 +02:00
}
},
"/library": {
"get": {
"operationId": "getAllLibraries",
"parameters": [
{
"name": "type",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/LibraryType"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/LibraryResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
},
"post": {
"operationId": "createLibrary",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateLibraryDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LibraryResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/library/{id}": {
"delete": {
"operationId": "deleteLibrary",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
},
"get": {
"operationId": "getLibrary",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LibraryResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
},
"put": {
"operationId": "updateLibrary",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateLibraryDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LibraryResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/library/{id}/removeOffline": {
"post": {
"operationId": "removeOfflineFiles",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/library/{id}/scan": {
"post": {
"operationId": "scanLibrary",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ScanLibraryDto"
}
}
},
"required": true
},
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/library/{id}/statistics": {
"get": {
"operationId": "getLibraryStatistics",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LibraryStatsResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/library/{id}/validate": {
"post": {
"operationId": "validate",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidateLibraryDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValidateLibraryResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
}
},
"/oauth/authorize": {
"post": {
"operationId": "startOAuth",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthConfigDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthAuthorizeResponseDto"
}
}
},
"description": ""
}
},
"tags": [
"OAuth"
]
}
},
2023-06-10 06:14:18 +02:00
"/oauth/callback": {
"post": {
"operationId": "finishOAuth",
2023-06-10 06:14:18 +02:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginResponseDto"
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"tags": [
"OAuth"
]
}
},
"/oauth/link": {
"post": {
"operationId": "linkOAuthAccount",
2023-06-10 06:14:18 +02:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
2023-06-10 06:14:18 +02:00
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"OAuth"
2023-06-10 06:14:18 +02:00
]
}
},
"/oauth/mobile-redirect": {
"get": {
"operationId": "redirectOAuthToMobile",
2023-06-10 06:14:18 +02:00
"parameters": [],
"responses": {
"200": {
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"OAuth"
]
}
},
"/oauth/unlink": {
"post": {
"operationId": "unlinkOAuthAccount",
2023-06-10 06:14:18 +02:00
"parameters": [],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
2023-06-10 06:14:18 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"OAuth"
]
}
},
2023-06-10 06:14:18 +02:00
"/partner": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getPartners",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "direction",
"required": true,
2023-06-10 06:14:18 +02:00
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"enum": [
"shared-by",
"shared-with"
],
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/PartnerResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Partner"
]
2023-06-10 06:14:18 +02:00
}
},
"/partner/{id}": {
"delete": {
"operationId": "removePartner",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Partner"
]
},
"post": {
"operationId": "createPartner",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2023-06-10 06:14:18 +02:00
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PartnerResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Partner"
]
},
"put": {
"operationId": "updatePartner",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdatePartnerDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PartnerResponseDto"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
2023-06-10 06:14:18 +02:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Partner"
2023-06-10 06:14:18 +02:00
]
}
},
"/person": {
"get": {
"operationId": "getAllPeople",
"parameters": [
{
"name": "withHidden",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PeopleResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"post": {
"operationId": "createPerson",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PersonCreateDto"
}
}
},
"required": true
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PersonResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
},
"put": {
"operationId": "updatePeople",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PeopleUpdateDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/BulkIdResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
}
},
2023-06-10 06:14:18 +02:00
"/person/{id}": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getPerson",
2022-12-05 19:56:44 +02:00
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
2022-12-05 19:56:44 +02:00
"required": true,
2023-06-10 06:14:18 +02:00
"in": "path",
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
],
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Person"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"put": {
"operationId": "updatePerson",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"requestBody": {
"content": {
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonUpdateDto"
2022-12-05 19:56:44 +02:00
}
}
},
"required": true
2022-12-05 19:56:44 +02:00
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Person"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
}
},
"/person/{id}/assets": {
"get": {
"operationId": "getPersonAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Person"
2022-12-05 19:56:44 +02:00
]
}
},
"/person/{id}/merge": {
"post": {
"operationId": "mergePerson",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MergePersonDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/BulkIdResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
}
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"/person/{id}/reassign": {
"put": {
"operationId": "reassignFaces",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetFaceUpdateDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/PersonResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
}
},
"/person/{id}/statistics": {
"get": {
"operationId": "getPersonStatistics",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PersonStatisticsResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
}
},
"/person/{id}/thumbnail": {
"get": {
"operationId": "getPersonThumbnail",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
]
}
},
"/search": {
"get": {
"deprecated": true,
"operationId": "search",
"parameters": [
{
"name": "clip",
"required": false,
"in": "query",
"deprecated": true,
"schema": {
"type": "boolean"
}
},
{
"name": "motion",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "page",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"name": "q",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "query",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "recent",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "size",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"name": "smart",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "type",
"required": false,
"in": "query",
"schema": {
"enum": [
"IMAGE",
"VIDEO",
"AUDIO",
"OTHER"
],
"type": "string"
}
},
{
"name": "withArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/cities": {
"get": {
"operationId": "getAssetsByCity",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/explore": {
"get": {
"operationId": "getExploreData",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/SearchExploreResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/metadata": {
"post": {
"operationId": "searchMetadata",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MetadataSearchDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/person": {
"get": {
"operationId": "searchPerson",
"parameters": [
{
"name": "name",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "withHidden",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/PersonResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/places": {
"get": {
"operationId": "searchPlaces",
"parameters": [
{
"name": "name",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/PlacesResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
"/search/smart": {
"post": {
"operationId": "searchSmart",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SmartSearchDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Search"
2022-12-05 19:56:44 +02:00
]
}
},
"/search/suggestions": {
"get": {
"operationId": "getSearchSuggestions",
"parameters": [
{
"name": "country",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "make",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "model",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "state",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "type",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/SearchSuggestionType"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"type": "string"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Search"
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info": {
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getServerInfo",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerInfoResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Server Info"
2022-12-05 19:56:44 +02:00
]
}
},
"/server-info/admin-onboarding": {
"post": {
"operationId": "setAdminOnboarding",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Server Info"
]
}
},
"/server-info/config": {
"get": {
"operationId": "getServerConfig",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerConfigDto"
}
}
},
"description": ""
}
},
"tags": [
"Server Info"
]
}
},
"/server-info/features": {
"get": {
"operationId": "getServerFeatures",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerFeaturesDto"
}
}
},
"description": ""
}
},
"tags": [
"Server Info"
]
}
},
"/server-info/media-types": {
"get": {
"operationId": "getSupportedMediaTypes",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerMediaTypesResponseDto"
}
}
},
"description": ""
}
},
"tags": [
"Server Info"
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info/ping": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "pingServer",
2023-05-17 19:07:17 +02:00
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerPingResponse"
2023-05-17 19:07:17 +02:00
}
}
},
"description": ""
2023-05-17 19:07:17 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Server Info"
2023-05-17 19:07:17 +02:00
]
}
},
"/server-info/statistics": {
2023-05-17 19:07:17 +02:00
"get": {
"operationId": "getServerStatistics",
2023-06-10 06:14:18 +02:00
"parameters": [],
2023-05-17 19:07:17 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerStatsResponseDto"
2023-05-17 19:07:17 +02:00
}
}
},
"description": ""
2023-05-17 19:07:17 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Server Info"
2023-05-17 19:07:17 +02:00
]
2023-06-10 06:14:18 +02:00
}
},
"/server-info/theme": {
"get": {
"operationId": "getTheme",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerThemeDto"
}
}
},
"description": ""
}
},
"tags": [
"Server Info"
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info/version": {
"get": {
"operationId": "getServerVersion",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerVersionResponseDto"
2023-06-10 06:14:18 +02:00
}
2023-05-17 19:07:17 +02:00
}
},
"description": ""
2023-05-17 19:07:17 +02:00
}
},
2023-06-10 06:14:18 +02:00
"tags": [
"Server Info"
]
}
},
"/shared-link": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getAllSharedLinks",
"parameters": [],
2023-05-17 19:07:17 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
},
"type": "array"
2023-05-17 19:07:17 +02:00
}
}
},
"description": ""
2023-05-17 19:07:17 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
]
},
"post": {
"operationId": "createSharedLink",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkCreateDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
}
}
},
"description": ""
}
},
2023-05-17 19:07:17 +02:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
]
}
},
"/shared-link/me": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getMySharedLink",
2023-05-17 19:07:17 +02:00
"parameters": [
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "password",
"required": false,
"in": "query",
"example": "password",
"schema": {
"type": "string"
}
},
2023-05-17 19:07:17 +02:00
{
"name": "token",
2023-06-10 06:14:18 +02:00
"required": false,
"in": "query",
2023-05-17 19:07:17 +02:00
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2023-05-17 19:07:17 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2023-05-17 19:07:17 +02:00
}
}
},
"description": ""
2023-05-17 19:07:17 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
]
}
},
"/shared-link/{id}": {
"delete": {
"operationId": "removeSharedLink",
2023-05-17 19:07:17 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
2023-05-17 19:07:17 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
]
2023-06-10 06:14:18 +02:00
},
"get": {
"operationId": "getSharedLinkById",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Shared Link"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"patch": {
"operationId": "updateSharedLink",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkEditDto"
}
}
},
"required": true
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
]
}
},
"/shared-link/{id}/assets": {
"delete": {
"operationId": "removeSharedLinkAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
]
},
"put": {
"operationId": "addSharedLinkAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
2022-12-05 19:56:44 +02:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Shared Link"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config": {
"get": {
"operationId": "getConfig",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"System Config"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "updateConfig",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"System Config"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config/defaults": {
2022-12-05 19:56:44 +02:00
"get": {
"operationId": "getConfigDefaults",
2023-06-10 06:14:18 +02:00
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"System Config"
2022-12-05 19:56:44 +02:00
]
}
},
"/system-config/map/style.json": {
"get": {
"operationId": "getMapStyle",
"parameters": [
{
"name": "theme",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/MapTheme"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"System Config"
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config/storage-template-options": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getStorageTemplateOptions",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigTemplateStorageOptionDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"System Config"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/tag": {
"get": {
"operationId": "getAllTags",
2022-12-05 19:56:44 +02:00
"parameters": [],
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TagResponseDto"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"post": {
"operationId": "createTag",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTagDto"
}
}
},
"required": true
},
2022-12-05 19:56:44 +02:00
"responses": {
"201": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/tag/{id}": {
"delete": {
"operationId": "deleteTag",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"get": {
"operationId": "getTagById",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"patch": {
"operationId": "updateTag",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTagDto"
}
}
},
"required": true
},
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagResponseDto"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/tag/{id}/assets": {
"delete": {
"operationId": "untagAssets",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
],
"tags": [
"Tag"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"get": {
"operationId": "getTagAssets",
2023-06-10 06:14:18 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Tag"
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "tagAssets",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2023-06-10 06:14:18 +02:00
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Tag"
]
2023-06-10 06:14:18 +02:00
}
},
"/trash/empty": {
"post": {
"operationId": "emptyTrash",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Trash"
]
}
},
"/trash/restore": {
"post": {
"operationId": "restoreTrash",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Trash"
]
}
},
"/trash/restore/assets": {
"post": {
"operationId": "restoreAssets",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkIdsDto"
}
}
},
"required": true
},
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Trash"
]
}
},
2023-06-10 06:14:18 +02:00
"/user": {
"get": {
"operationId": "getAllUsers",
"parameters": [
{
"name": "isAll",
"required": true,
"in": "query",
"schema": {
"type": "boolean"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
2023-06-10 06:14:18 +02:00
},
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "createUser",
2022-12-05 19:56:44 +02:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateUserDto"
2022-12-05 19:56:44 +02:00
}
}
},
"required": true
2022-12-05 19:56:44 +02:00
},
"responses": {
"201": {
2022-12-05 19:56:44 +02:00
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "updateUser",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserDto"
}
2022-12-05 19:56:44 +02:00
}
},
"required": true
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
},
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
2022-12-05 19:56:44 +02:00
]
}
},
"/user/info/{id}": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getUserById",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
2023-06-10 06:14:18 +02:00
"/user/me": {
"get": {
"operationId": "getMyUserInfo",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
2023-06-10 06:14:18 +02:00
"/user/profile-image": {
"delete": {
"operationId": "deleteProfileImage",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
},
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "createProfileImage",
"parameters": [],
"requestBody": {
"content": {
2023-06-10 06:14:18 +02:00
"multipart/form-data": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateProfileImageDto"
}
}
},
"description": "A new avatar for the user",
"required": true
},
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateProfileImageResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/profile-image/{id}": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getProfileImage",
"parameters": [
{
"name": "id",
2023-06-10 06:14:18 +02:00
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/{id}": {
2023-06-10 06:14:18 +02:00
"delete": {
"operationId": "deleteUser",
"parameters": [
{
"name": "id",
2023-06-10 06:14:18 +02:00
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteUserDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/{id}/restore": {
2023-06-10 06:14:18 +02:00
"post": {
"operationId": "restoreUser",
"parameters": [
{
"name": "id",
2023-06-10 06:14:18 +02:00
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
2023-06-10 06:14:18 +02:00
}
},
"info": {
"title": "Immich",
"description": "Immich API",
2024-03-20 16:50:57 +02:00
"version": "1.99.0",
2023-06-10 06:14:18 +02:00
"contact": {}
},
"tags": [],
"servers": [
{
"url": "/api"
}
],
"components": {
"securitySchemes": {
"bearer": {
"scheme": "Bearer",
"bearerFormat": "JWT",
"type": "http",
"in": "header"
},
"cookie": {
"type": "apiKey",
"in": "cookie",
"name": "immich_access_token"
},
"api_key": {
"type": "apiKey",
"in": "header",
"name": "x-api-key"
}
},
2023-06-10 06:14:18 +02:00
"schemas": {
"APIKeyCreateDto": {
2023-05-25 04:10:45 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
2023-05-25 04:10:45 +02:00
"type": "string"
}
},
"type": "object"
2023-05-25 04:10:45 +02:00
},
2023-06-10 06:14:18 +02:00
"APIKeyCreateResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"apiKey": {
"$ref": "#/components/schemas/APIKeyResponseDto"
},
"secret": {
"type": "string"
}
},
"required": [
"apiKey",
"secret"
],
"type": "object"
},
"APIKeyResponseDto": {
"properties": {
"createdAt": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"createdAt",
"id",
"name",
"updatedAt"
],
"type": "object"
},
"APIKeyUpdateDto": {
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"ActivityCreateDto": {
"properties": {
"albumId": {
"format": "uuid",
"type": "string"
},
"assetId": {
"format": "uuid",
"type": "string"
},
"comment": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/ReactionType"
}
},
"required": [
"albumId",
"type"
],
"type": "object"
},
"ActivityResponseDto": {
"properties": {
"assetId": {
"nullable": true,
"type": "string"
},
"comment": {
"nullable": true,
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"type": {
"enum": [
"comment",
"like"
],
"type": "string"
},
"user": {
"$ref": "#/components/schemas/UserDto"
}
},
"required": [
"assetId",
"createdAt",
"id",
"type",
"user"
],
"type": "object"
},
"ActivityStatisticsResponseDto": {
"properties": {
"comments": {
"type": "integer"
}
},
"required": [
"comments"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AddUsersDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"sharedUserIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"sharedUserIds"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AlbumCountResponseDto": {
"properties": {
"notShared": {
2023-06-10 06:14:18 +02:00
"type": "integer"
},
"owned": {
2023-06-10 06:14:18 +02:00
"type": "integer"
},
"shared": {
2023-06-10 06:14:18 +02:00
"type": "integer"
}
},
"required": [
"notShared",
2023-06-10 06:14:18 +02:00
"owned",
"shared"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"AlbumResponseDto": {
"properties": {
"albumName": {
"type": "string"
},
"albumThumbnailAssetId": {
"nullable": true,
2023-06-10 06:14:18 +02:00
"type": "string"
},
"assetCount": {
"type": "integer"
},
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"createdAt": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
},
"description": {
"type": "string"
},
"endDate": {
"format": "date-time",
"type": "string"
},
"hasSharedLink": {
"type": "boolean"
},
"id": {
"type": "string"
},
"isActivityEnabled": {
"type": "boolean"
},
"lastModifiedAssetTimestamp": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
},
"order": {
"$ref": "#/components/schemas/AssetOrder"
},
"owner": {
"$ref": "#/components/schemas/UserResponseDto"
},
"ownerId": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"shared": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"sharedUsers": {
"items": {
"$ref": "#/components/schemas/UserResponseDto"
},
"type": "array"
},
"startDate": {
"format": "date-time",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"albumName",
"albumThumbnailAssetId",
2023-06-10 06:14:18 +02:00
"assetCount",
"assets",
"createdAt",
"description",
"hasSharedLink",
"id",
"isActivityEnabled",
"owner",
2023-06-10 06:14:18 +02:00
"ownerId",
"shared",
"sharedUsers",
"updatedAt"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AllJobStatusResponseDto": {
"properties": {
"backgroundTask": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"faceDetection": {
"$ref": "#/components/schemas/JobStatusDto"
},
"facialRecognition": {
"$ref": "#/components/schemas/JobStatusDto"
},
"library": {
"$ref": "#/components/schemas/JobStatusDto"
},
"metadataExtraction": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
"migration": {
"$ref": "#/components/schemas/JobStatusDto"
},
"search": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
"sidecar": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
"smartSearch": {
"$ref": "#/components/schemas/JobStatusDto"
},
"storageTemplateMigration": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
"thumbnailGeneration": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
},
"videoConversion": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
}
},
"required": [
"backgroundTask",
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"faceDetection",
"facialRecognition",
"library",
"metadataExtraction",
"migration",
"search",
"sidecar",
"smartSearch",
"storageTemplateMigration",
"thumbnailGeneration",
"videoConversion"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"AssetBulkDeleteDto": {
"properties": {
"force": {
"type": "boolean"
},
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"AssetBulkUpdateDto": {
"properties": {
"dateTimeOriginal": {
"type": "string"
},
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"isArchived": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
2023-10-22 04:38:07 +02:00
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
},
2023-10-22 04:38:07 +02:00
"removeParent": {
"type": "boolean"
},
"stackParentId": {
"format": "uuid",
"type": "string"
}
},
"required": [
"ids"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AssetBulkUploadCheckDto": {
"properties": {
"assets": {
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckItem"
},
"type": "array"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"assets"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"AssetBulkUploadCheckItem": {
"properties": {
"checksum": {
"description": "base64 or hex encoded sha1 hash",
2023-06-10 06:14:18 +02:00
"type": "string"
},
"id": {
"type": "string"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"checksum",
"id"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"AssetBulkUploadCheckResponseDto": {
"properties": {
"results": {
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckResult"
},
"type": "array"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"results"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"AssetBulkUploadCheckResult": {
"properties": {
"action": {
"enum": [
"accept",
"reject"
],
"type": "string"
},
"assetId": {
"type": "string"
},
"id": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"reason": {
"enum": [
"duplicate",
"unsupported-format"
],
2023-06-10 06:14:18 +02:00
"type": "string"
}
},
"required": [
"action",
"id"
],
"type": "object"
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"AssetFaceResponseDto": {
"properties": {
"boundingBoxX1": {
"type": "integer"
},
"boundingBoxX2": {
"type": "integer"
},
"boundingBoxY1": {
"type": "integer"
},
"boundingBoxY2": {
"type": "integer"
},
"id": {
"format": "uuid",
"type": "string"
},
"imageHeight": {
"type": "integer"
},
"imageWidth": {
"type": "integer"
},
"person": {
"allOf": [
{
"$ref": "#/components/schemas/PersonResponseDto"
}
],
"nullable": true
}
},
"required": [
"boundingBoxX1",
"boundingBoxX2",
"boundingBoxY1",
"boundingBoxY2",
"id",
"imageHeight",
"imageWidth",
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"person"
],
"type": "object"
},
"AssetFaceUpdateDto": {
"properties": {
"data": {
"items": {
"$ref": "#/components/schemas/AssetFaceUpdateItem"
},
"type": "array"
}
},
"required": [
"data"
],
"type": "object"
},
"AssetFaceUpdateItem": {
"properties": {
"assetId": {
"format": "uuid",
"type": "string"
},
"personId": {
"format": "uuid",
"type": "string"
}
},
"required": [
"assetId",
"personId"
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
],
"type": "object"
},
"AssetFaceWithoutPersonResponseDto": {
"properties": {
"boundingBoxX1": {
"type": "integer"
},
"boundingBoxX2": {
"type": "integer"
},
"boundingBoxY1": {
"type": "integer"
},
"boundingBoxY2": {
"type": "integer"
},
"id": {
"format": "uuid",
"type": "string"
},
"imageHeight": {
"type": "integer"
},
"imageWidth": {
"type": "integer"
}
},
"required": [
"boundingBoxX1",
"boundingBoxX2",
"boundingBoxY1",
"boundingBoxY2",
"id",
"imageHeight",
"imageWidth"
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AssetFileUploadResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"duplicate": {
"type": "boolean"
},
"id": {
"type": "string"
}
},
"required": [
"duplicate",
"id"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AssetIdsDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"assetIds"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"AssetIdsResponseDto": {
"properties": {
"assetId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"error": {
"enum": [
"duplicate",
"no_permission",
"not_found"
],
"type": "string"
},
"success": {
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"assetId",
"success"
],
"type": "object"
},
"AssetJobName": {
"enum": [
"regenerate-thumbnail",
"refresh-metadata",
"transcode-video"
],
"type": "string"
},
"AssetJobsDto": {
"properties": {
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"name": {
"$ref": "#/components/schemas/AssetJobName"
}
},
"required": [
"assetIds",
"name"
],
"type": "object"
},
"AssetOrder": {
"enum": [
"asc",
"desc"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"AssetResponseDto": {
"properties": {
"checksum": {
"description": "base64 encoded sha1 hash",
2023-06-10 06:14:18 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
},
"duration": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"exifInfo": {
"$ref": "#/components/schemas/ExifResponseDto"
},
2023-06-10 06:14:18 +02:00
"fileCreatedAt": {
"format": "date-time",
"type": "string"
feat(server): xmp sidecar metadata (#2466) * initial commit for XMP sidecar support * Added support for 'missing' metadata files to include those without sidecar files, now detects sidecar files in the filesystem for media already ingested but the sidecar was created afterwards * didn't mean to commit default log level during testing * new sidecar logic for video metadata as well * Added xml mimetype for sidecars only * don't need capture group for this regex * wrong default value reverted * simplified the move here - keep it in the same try catch since the outcome is to move the media back anyway * simplified setter logic Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * simplified logic per suggestions * sidecar is now its own queue with a discover and sync, updated UI for the new job queueing * queue a sidecar job for every asset based on discovery or sync, though the logic is almost identical aside from linking the sidecar * now queue sidecar jobs for each assset, though logic is mostly the same between discovery and sync * simplified logic of filename extraction and asset instantiation * not sure how that got deleted.. * updated code per suggestions and comments in the PR * stat was not being used, removed the variable set * better type checking, using in-scope variables for exif getter instead of passing in every time * removed commented out test * ran and resolved all lints, formats, checks, and tests * resolved suggested change in PR * made getExifProperty more dynamic with multiple possible args for fallbacks, fixed typo, used generic in function for better type checking * better error handling and moving files back to positions on move or save failure * regenerated api * format fixes * Added XMP documentation * documentation typo * Merged in main * missed merge conflict * more changes due to a merge * Resolving conflicts * added icon for sidecar jobs --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-05-25 03:59:30 +02:00
},
2023-06-10 06:14:18 +02:00
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"hasMetadata": {
"type": "boolean"
},
"id": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"isArchived": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
"isFavorite": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
"type": "boolean"
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"isTrashed": {
"type": "boolean"
},
"libraryId": {
"type": "string"
},
"livePhotoVideoId": {
"nullable": true,
2023-06-10 06:14:18 +02:00
"type": "string"
},
"localDateTime": {
"format": "date-time",
"type": "string"
},
"originalFileName": {
"type": "string"
},
"originalPath": {
"type": "string"
},
"owner": {
"$ref": "#/components/schemas/UserResponseDto"
},
"ownerId": {
"type": "string"
},
"people": {
"items": {
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"$ref": "#/components/schemas/PersonWithFacesResponseDto"
},
"type": "array"
},
"resized": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"smartInfo": {
"$ref": "#/components/schemas/SmartInfoResponseDto"
},
2023-10-22 04:38:07 +02:00
"stack": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"stackCount": {
"nullable": true,
2023-10-22 04:38:07 +02:00
"type": "integer"
},
"stackParentId": {
"nullable": true,
"type": "string"
},
2023-06-10 06:14:18 +02:00
"tags": {
"items": {
"$ref": "#/components/schemas/TagResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"thumbhash": {
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"type": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"checksum",
2023-06-10 06:14:18 +02:00
"deviceAssetId",
"deviceId",
"duration",
2023-06-10 06:14:18 +02:00
"fileCreatedAt",
"fileModifiedAt",
"hasMetadata",
"id",
2023-06-10 06:14:18 +02:00
"isArchived",
"isExternal",
"isFavorite",
"isOffline",
"isReadOnly",
"isTrashed",
"libraryId",
"localDateTime",
"originalFileName",
"originalPath",
"ownerId",
"resized",
"stackCount",
"thumbhash",
"type",
"updatedAt"
],
"type": "object"
},
"AssetStatsResponseDto": {
"properties": {
"images": {
"type": "integer"
},
2023-08-02 23:10:55 +02:00
"total": {
"type": "integer"
},
2023-08-02 23:10:55 +02:00
"videos": {
"type": "integer"
}
},
"required": [
"images",
"total",
"videos"
2023-08-02 23:10:55 +02:00
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AssetTypeEnum": {
"enum": [
2023-06-10 06:14:18 +02:00
"IMAGE",
"VIDEO",
"AUDIO",
"OTHER"
],
"type": "string"
},
"AudioCodec": {
"enum": [
"mp3",
"aac",
"libopus"
],
"type": "string"
},
"AuditDeletesResponseDto": {
"properties": {
"ids": {
"items": {
"type": "string"
},
"type": "array"
},
"needsFullSync": {
"type": "boolean"
}
},
"required": [
"ids",
"needsFullSync"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"AuthDeviceResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"createdAt": {
"type": "string"
},
"current": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"deviceOS": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceType": {
"type": "string"
},
"id": {
"type": "string"
},
"updatedAt": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"createdAt",
"current",
"deviceOS",
2023-06-10 06:14:18 +02:00
"deviceType",
"id",
"updatedAt"
],
"type": "object"
},
"BulkIdResponseDto": {
"properties": {
"error": {
"enum": [
"duplicate",
"no_permission",
"not_found",
"unknown"
],
"type": "string"
},
"id": {
"type": "string"
},
"success": {
"type": "boolean"
}
},
"required": [
"id",
"success"
],
"type": "object"
},
"BulkIdsDto": {
"properties": {
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"CLIPConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"mode": {
"$ref": "#/components/schemas/CLIPMode"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"enabled",
"modelName"
],
"type": "object"
},
"CLIPMode": {
"enum": [
"vision",
"text"
],
"type": "string"
},
"CQMode": {
"enum": [
"auto",
"cqp",
"icq"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"ChangePasswordDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"newPassword": {
"example": "password",
"type": "string"
},
"password": {
"example": "password",
"type": "string"
}
},
"required": [
"newPassword",
"password"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CheckExistingAssetsDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"deviceAssetIds": {
"items": {
"type": "string"
},
"type": "array"
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"deviceAssetIds",
"deviceId"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CheckExistingAssetsResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"existingIds": {
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"type": "array"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"existingIds"
],
"type": "object"
},
"Colorspace": {
"enum": [
"srgb",
"p3"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"CreateAlbumDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"albumName": {
"type": "string"
},
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"description": {
"type": "string"
},
"sharedWithUserIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"albumName"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CreateAssetDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"assetData": {
"format": "binary",
"type": "string"
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
},
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"duration": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"fileCreatedAt": {
"format": "date-time",
"type": "string"
},
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"isArchived": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"isFavorite": {
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"libraryId": {
"format": "uuid",
"type": "string"
},
"livePhotoData": {
"format": "binary",
"type": "string"
},
"sidecarData": {
"format": "binary",
2023-06-10 06:14:18 +02:00
"type": "string"
}
},
"required": [
"assetData",
"deviceAssetId",
"deviceId",
"fileCreatedAt",
"fileModifiedAt"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"CreateLibraryDto": {
"properties": {
"exclusionPatterns": {
"items": {
"type": "string"
},
"type": "array"
},
"importPaths": {
"items": {
"type": "string"
},
"type": "array"
},
"isVisible": {
"type": "boolean"
},
feat(server): Automatic watching of library folders (#6192) * feat: initial watch support * allow offline files * chore: ignore query errors when resetting e2e db * revert db query * add savepoint * guard the user query * chore: openapi and db migration * wip * support multiple libraries * fix tests * wip * can now cleanup chokidar watchers * fix unit tests * add library watch queue * add missing init from merge * wip * can now filter file extensions * remove watch api from non job client * Fix e2e test * watch library with updated import path and exclusion pattern * add library watch frontend ui * case sensitive watching extensions * can auto watch libraries * move watcher e2e tests to separate file * don't watch libraries from a queue * use event emitters * shorten e2e test timeout * refactor chokidar code to filesystem provider * expose chokidar parameters to config file * fix storage mock * set default config for library watching * add fs provider mocks * cleanup * add more unit tests for watcher * chore: fix format + sql * add more tests * move unwatch feature back to library service * add file event unit tests * chore: formatting * add documentation * fix e2e tests * chore: fix e2e tests * fix library updating * test cleanup * fix typo * cleanup * fixing as per pr comments * reduce library watch config file * update storage config and mocks * move negative event tests to unit tests * fix library watcher e2e * make watch configuration global * remove the feature flag * refactor watcher teardown * fix microservices init * centralize asset scan job queue * improve docs * add more tests * chore: open api * initialize app service * fix docs * fix library watch feature flag * Update docs/docs/features/libraries.md Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * fix: import right app service * don't be truthy * fix test speling * stricter library update tests * move fs watcher mock to external file * subscribe to config changes * docker does not need polling * make library watch() private * feat: add configuration ui --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 10:15:54 +02:00
"isWatched": {
"type": "boolean"
},
"name": {
"type": "string"
},
"ownerId": {
"format": "uuid",
"type": "string"
},
"type": {
"$ref": "#/components/schemas/LibraryType"
}
},
"required": [
"ownerId",
"type"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CreateProfileImageDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"file": {
"format": "binary",
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"file"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CreateProfileImageResponseDto": {
"properties": {
"profileImagePath": {
"type": "string"
},
"userId": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
},
"required": [
"profileImagePath",
"userId"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CreateTagDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
}
},
"required": [
"name",
"type"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"CreateUserDto": {
2023-03-22 04:49:19 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"email": {
"type": "string"
2023-03-22 04:49:19 +02:00
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"password": {
"type": "string"
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
},
"quotaSizeInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
"shouldChangePassword": {
"type": "boolean"
},
"storageLabel": {
"nullable": true,
"type": "string"
2023-03-22 04:49:19 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"email",
"name",
"password"
],
"type": "object"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"CuratedLocationsResponseDto": {
2023-03-22 04:49:19 +02:00
"properties": {
"city": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
},
"deviceAssetId": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
},
"deviceId": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"id": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"resizePath": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"city",
"deviceAssetId",
"deviceId",
"id",
"resizePath"
],
"type": "object"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"CuratedObjectsResponseDto": {
2023-03-22 04:49:19 +02:00
"properties": {
"deviceAssetId": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
"deviceId": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
"id": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
"object": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
},
"resizePath": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
}
},
"required": [
"deviceAssetId",
"deviceId",
2023-06-10 06:14:18 +02:00
"id",
"object",
"resizePath"
],
"type": "object"
2023-03-22 04:49:19 +02:00
},
"DeleteUserDto": {
"properties": {
"force": {
"type": "boolean"
}
},
"type": "object"
},
"DownloadArchiveInfo": {
"properties": {
2023-06-10 06:14:18 +02:00
"assetIds": {
"items": {
"type": "string"
},
"type": "array"
},
"size": {
"type": "integer"
}
},
"required": [
"assetIds",
"size"
],
"type": "object"
},
"DownloadInfoDto": {
"properties": {
"albumId": {
"format": "uuid",
"type": "string"
},
"archiveSize": {
"type": "integer"
},
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"userId": {
"format": "uuid",
"type": "string"
}
},
"type": "object"
},
"DownloadResponseDto": {
"properties": {
"archives": {
"items": {
"$ref": "#/components/schemas/DownloadArchiveInfo"
},
"type": "array"
},
"totalSize": {
"type": "integer"
}
},
"required": [
"archives",
"totalSize"
],
"type": "object"
},
"EntityType": {
"enum": [
"ASSET",
"ALBUM"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"ExifResponseDto": {
"properties": {
"city": {
2023-06-10 06:14:18 +02:00
"default": null,
"nullable": true,
"type": "string"
},
"country": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
},
"dateTimeOriginal": {
"default": null,
"format": "date-time",
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
},
"description": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
},
"exifImageHeight": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
},
"exifImageWidth": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
},
"exposureTime": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"fNumber": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
2023-06-10 06:14:18 +02:00
},
"fileSizeInByte": {
"default": null,
"format": "int64",
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "integer"
2023-06-10 06:14:18 +02:00
},
"focalLength": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
2023-06-10 06:14:18 +02:00
},
"iso": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
2023-06-10 06:14:18 +02:00
},
"latitude": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
2023-06-10 06:14:18 +02:00
},
"lensModel": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"longitude": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "number"
2023-06-10 06:14:18 +02:00
},
"make": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"model": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"modifyDate": {
"default": null,
"format": "date-time",
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"orientation": {
"default": null,
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "string"
feat (web/server) 360 degrees Web panoramas [attempt 2] (#3412) * commit 1 (isPanorama: boolean) * working solution for projectiontypeenum * fix * format fix * fix * fix * fix * fix * enum projectiontype * working solution with exif * fix * reverted > * fix format * reverted auto-magic api.ts prettification * fix * reverted api.ts autogenerated * api ts regenerated * Update web/src/lib/components/assets/thumbnail/thumbnail.svelte Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * Update web/src/lib/components/asset-viewer/asset-viewer.svelte Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * exifProjectionType * Update server/src/microservices/processors/metadata-extraction.processor.ts Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * projectionType?: string = ProjectionType.NONE; * not null * projectionType!: ProjectionType; * opeapi generator fix * fixes * fix * fix * generate api * asset.exifInifo?.projectionType * Update server/src/domain/asset/response-dto/exif-response.dto.ts Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Update server/src/microservices/processors/metadata-extraction.processor.ts Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * enum -> varchar;projectiontypeenum->projectiontype * asset-viewer fixed prettiffier * @Column({}) single line * enum | string * make api * enum | string * enum | str fix * fix * chore: use string instead of enum * chore: open api * fix: checks --------- Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com> Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-07-28 06:29:09 +02:00
},
"projectionType": {
"default": null,
"nullable": true,
"type": "string"
},
"state": {
"default": null,
"nullable": true,
"type": "string"
},
"timeZone": {
"default": null,
feat (web/server) 360 degrees Web panoramas [attempt 2] (#3412) * commit 1 (isPanorama: boolean) * working solution for projectiontypeenum * fix * format fix * fix * fix * fix * fix * enum projectiontype * working solution with exif * fix * reverted > * fix format * reverted auto-magic api.ts prettification * fix * reverted api.ts autogenerated * api ts regenerated * Update web/src/lib/components/assets/thumbnail/thumbnail.svelte Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * Update web/src/lib/components/asset-viewer/asset-viewer.svelte Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * exifProjectionType * Update server/src/microservices/processors/metadata-extraction.processor.ts Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> * projectionType?: string = ProjectionType.NONE; * not null * projectionType!: ProjectionType; * opeapi generator fix * fixes * fix * fix * generate api * asset.exifInifo?.projectionType * Update server/src/domain/asset/response-dto/exif-response.dto.ts Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Update server/src/microservices/processors/metadata-extraction.processor.ts Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * enum -> varchar;projectiontypeenum->projectiontype * asset-viewer fixed prettiffier * @Column({}) single line * enum | string * make api * enum | string * enum | str fix * fix * chore: use string instead of enum * chore: open api * fix: checks --------- Co-authored-by: Sergey Kondrikov <sergey.kondrikov@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com> Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-07-28 06:29:09 +02:00
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
}
},
"type": "object"
2023-06-10 06:14:18 +02:00
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"FaceDto": {
"properties": {
"id": {
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"FileChecksumDto": {
"properties": {
"filenames": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"filenames"
],
"type": "object"
},
"FileChecksumResponseDto": {
"properties": {
"checksum": {
"type": "string"
},
"filename": {
"type": "string"
}
},
"required": [
"checksum",
"filename"
],
"type": "object"
},
"FileReportDto": {
"properties": {
"extras": {
"items": {
"type": "string"
},
"type": "array"
},
"orphans": {
"items": {
"$ref": "#/components/schemas/FileReportItemDto"
},
"type": "array"
}
},
"required": [
"extras",
"orphans"
],
"type": "object"
},
"FileReportFixDto": {
"properties": {
"items": {
"items": {
"$ref": "#/components/schemas/FileReportItemDto"
},
"type": "array"
}
},
"required": [
"items"
],
"type": "object"
},
"FileReportItemDto": {
"properties": {
"checksum": {
"type": "string"
},
"entityId": {
"format": "uuid",
"type": "string"
},
"entityType": {
"$ref": "#/components/schemas/PathEntityType"
},
"pathType": {
"$ref": "#/components/schemas/PathType"
},
"pathValue": {
"type": "string"
}
},
"required": [
"entityId",
"entityType",
"pathType",
"pathValue"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"JobCommand": {
"enum": [
"start",
"pause",
"resume",
"empty",
"clear-failed"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"JobCommandDto": {
"properties": {
"command": {
"$ref": "#/components/schemas/JobCommand"
},
2023-06-10 06:14:18 +02:00
"force": {
"type": "boolean"
}
},
"required": [
"command",
"force"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"JobCountsDto": {
"properties": {
"active": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"completed": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"delayed": {
"type": "integer"
},
"failed": {
2023-06-10 06:14:18 +02:00
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"paused": {
"type": "integer"
},
"waiting": {
"type": "integer"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"active",
"completed",
"delayed",
"failed",
"paused",
"waiting"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"JobName": {
"enum": [
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"faceDetection",
"facialRecognition",
"smartSearch",
2023-06-10 06:14:18 +02:00
"backgroundTask",
"storageTemplateMigration",
"migration",
2023-06-10 06:14:18 +02:00
"search",
"sidecar",
"library"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"JobSettingsDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"concurrency": {
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"concurrency"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"JobStatusDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"jobCounts": {
"$ref": "#/components/schemas/JobCountsDto"
},
"queueStatus": {
"$ref": "#/components/schemas/QueueStatusDto"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"jobCounts",
"queueStatus"
],
"type": "object"
},
"LibraryResponseDto": {
"properties": {
"assetCount": {
"type": "integer"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"exclusionPatterns": {
"items": {
"type": "string"
},
"type": "array"
},
"id": {
"type": "string"
},
"importPaths": {
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"ownerId": {
"type": "string"
},
"refreshedAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"type": {
"$ref": "#/components/schemas/LibraryType"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"assetCount",
"createdAt",
"exclusionPatterns",
"id",
"importPaths",
"name",
"ownerId",
"refreshedAt",
"type",
"updatedAt"
],
"type": "object"
},
"LibraryStatsResponseDto": {
"properties": {
"photos": {
"default": 0,
"type": "integer"
},
"total": {
"default": 0,
"type": "integer"
},
"usage": {
"default": 0,
"format": "int64",
"type": "integer"
},
"videos": {
"default": 0,
"type": "integer"
}
},
"required": [
"photos",
"total",
"usage",
"videos"
],
"type": "object"
},
"LibraryType": {
"enum": [
"UPLOAD",
"EXTERNAL"
],
"type": "string"
},
"LogLevel": {
"enum": [
"verbose",
"debug",
"log",
"warn",
"error",
"fatal"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"LoginCredentialDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"email": {
"example": "testuser@email.com",
"type": "string"
2023-06-10 06:14:18 +02:00
},
"password": {
"example": "password",
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"email",
"password"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"LoginResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"accessToken": {
"type": "string"
},
"isAdmin": {
"type": "boolean"
},
"name": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"profileImagePath": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"shouldChangePassword": {
"type": "boolean"
},
"userEmail": {
"type": "string"
},
"userId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"accessToken",
"isAdmin",
"name",
2023-06-10 06:14:18 +02:00
"profileImagePath",
"shouldChangePassword",
"userEmail",
"userId"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"LogoutResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"redirectUri": {
"type": "string"
},
"successful": {
"type": "boolean"
}
},
"required": [
"redirectUri",
"successful"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"MapMarkerResponseDto": {
"properties": {
"city": {
"nullable": true,
"type": "string"
},
"country": {
"nullable": true,
"type": "string"
},
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"lat": {
"format": "double",
"type": "number"
},
2023-06-10 06:14:18 +02:00
"lon": {
"format": "double",
"type": "number"
},
"state": {
"nullable": true,
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"city",
"country",
2023-06-10 06:14:18 +02:00
"id",
"lat",
"lon",
"state"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"MapTheme": {
"enum": [
"light",
"dark"
],
"type": "string"
},
"MemoryLaneResponseDto": {
"properties": {
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"assets",
"title"
],
"type": "object"
},
"MergePersonDto": {
"properties": {
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"MetadataSearchDto": {
"properties": {
"checksum": {
"type": "string"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"createdAfter": {
"format": "date-time",
"type": "string"
},
"createdBefore": {
"format": "date-time",
"type": "string"
},
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"encodedVideoPath": {
"type": "string"
},
"id": {
"format": "uuid",
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isEncoded": {
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
},
"isMotion": {
"type": "boolean"
},
"isNotInAlbum": {
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"lensModel": {
"type": "string"
},
"libraryId": {
"format": "uuid",
"type": "string"
},
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"order": {
"$ref": "#/components/schemas/AssetOrder"
},
"originalFileName": {
"type": "string"
},
"originalPath": {
"type": "string"
},
"page": {
"type": "number"
},
"personIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"resizePath": {
"type": "string"
},
"size": {
"type": "number"
},
"state": {
"type": "string"
},
"takenAfter": {
"format": "date-time",
"type": "string"
},
"takenBefore": {
"format": "date-time",
"type": "string"
},
"trashedAfter": {
"format": "date-time",
"type": "string"
},
"trashedBefore": {
"format": "date-time",
"type": "string"
},
"type": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"updatedAfter": {
"format": "date-time",
"type": "string"
},
"updatedBefore": {
"format": "date-time",
"type": "string"
},
"webpPath": {
"type": "string"
},
"withArchived": {
"default": false,
"type": "boolean"
},
"withDeleted": {
"type": "boolean"
},
"withExif": {
"type": "boolean"
},
"withPeople": {
"type": "boolean"
},
"withStacked": {
"type": "boolean"
}
},
"type": "object"
},
"ModelType": {
"enum": [
"facial-recognition",
"clip"
],
"type": "string"
},
"OAuthAuthorizeResponseDto": {
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"OAuthCallbackDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"url": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"url"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"OAuthConfigDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"redirectUri": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"redirectUri"
],
"type": "object"
},
"PartnerResponseDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"deletedAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"email": {
"type": "string"
},
"id": {
"type": "string"
},
"inTimeline": {
"type": "boolean"
},
"isAdmin": {
"type": "boolean"
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"oauthId": {
"type": "string"
},
"profileImagePath": {
"type": "string"
},
"quotaSizeInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
"quotaUsageInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
"shouldChangePassword": {
"type": "boolean"
},
"status": {
"$ref": "#/components/schemas/UserStatus"
},
"storageLabel": {
"nullable": true,
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"avatarColor",
"createdAt",
"deletedAt",
"email",
"id",
"isAdmin",
"name",
"oauthId",
"profileImagePath",
"quotaSizeInBytes",
"quotaUsageInBytes",
"shouldChangePassword",
"status",
"storageLabel",
"updatedAt"
],
"type": "object"
},
"PathEntityType": {
"enum": [
"asset",
"person",
"user"
],
"type": "string"
},
"PathType": {
"enum": [
"original",
"jpeg_thumbnail",
"webp_thumbnail",
"encoded_video",
"sidecar",
"face",
"profile"
],
"type": "string"
},
"PeopleResponseDto": {
"properties": {
"hidden": {
"type": "integer"
},
"people": {
"items": {
"$ref": "#/components/schemas/PersonResponseDto"
},
"type": "array"
},
"total": {
"type": "integer"
}
},
"required": [
"hidden",
"people",
"total"
],
"type": "object"
},
"PeopleUpdateDto": {
"properties": {
"people": {
"items": {
"$ref": "#/components/schemas/PeopleUpdateItem"
},
"type": "array"
}
},
"required": [
"people"
],
"type": "object"
},
"PeopleUpdateItem": {
"properties": {
"birthDate": {
"description": "Person date of birth.\nNote: the mobile app cannot currently set the birth date to null.",
"format": "date",
"nullable": true,
"type": "string"
},
"featureFaceAssetId": {
"description": "Asset is used to get the feature face thumbnail.",
"type": "string"
},
"id": {
"description": "Person id.",
"type": "string"
},
"isHidden": {
"description": "Person visibility",
"type": "boolean"
},
"name": {
"description": "Person name.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"PersonCreateDto": {
"properties": {
"birthDate": {
"description": "Person date of birth.\nNote: the mobile app cannot currently set the birth date to null.",
"format": "date",
"nullable": true,
"type": "string"
},
"isHidden": {
"description": "Person visibility",
"type": "boolean"
},
"name": {
"description": "Person name.",
"type": "string"
}
},
"type": "object"
},
2023-06-10 06:14:18 +02:00
"PersonResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"birthDate": {
"format": "date",
"nullable": true,
"type": "string"
},
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
"isHidden": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"thumbnailPath": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"birthDate",
2023-06-10 06:14:18 +02:00
"id",
"isHidden",
2023-06-10 06:14:18 +02:00
"name",
"thumbnailPath"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"PersonStatisticsResponseDto": {
"properties": {
"assets": {
"type": "integer"
}
},
"required": [
"assets"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"PersonUpdateDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"birthDate": {
"description": "Person date of birth.\nNote: the mobile app cannot currently set the birth date to null.",
"format": "date",
"nullable": true,
"type": "string"
},
"featureFaceAssetId": {
"description": "Asset is used to get the feature face thumbnail.",
"type": "string"
},
"isHidden": {
"description": "Person visibility",
"type": "boolean"
},
"name": {
"description": "Person name.",
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"type": "object"
2022-12-05 19:56:44 +02:00
},
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"PersonWithFacesResponseDto": {
"properties": {
"birthDate": {
"format": "date",
"nullable": true,
"type": "string"
},
"faces": {
"items": {
"$ref": "#/components/schemas/AssetFaceWithoutPersonResponseDto"
},
"type": "array"
},
"id": {
"type": "string"
},
"isHidden": {
"type": "boolean"
},
"name": {
"type": "string"
},
"thumbnailPath": {
"type": "string"
}
},
"required": [
"birthDate",
"faces",
"id",
"isHidden",
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
"name",
"thumbnailPath"
feat(web): re-assign person faces (2) (#4949) * feat: unassign person faces * multiple improvements * chore: regenerate api * feat: improve face interactions in photos * fix: tests * fix: tests * optimize * fix: wrong assignment on complex-multiple re-assignments * fix: thumbnails with large photos * fix: complex reassign * fix: don't send people with faces * fix: person thumbnail generation * chore: regenerate api * add tess * feat: face box even when zoomed * fix: change feature photo * feat: make the blue icon hoverable * chore: regenerate api * feat: use websocket * fix: loading spinner when clicking on the done button * fix: use the svelte way * fix: tests * simplify * fix: unused vars * fix: remove unused code * fix: add migration * chore: regenerate api * ci: add unit tests * chore: regenerate api * feat: if a new person is created for a face and the server takes more than 15 seconds to generate the person thumbnail, don't wait for it * reorganize * chore: regenerate api * feat: global edit * pr feedback * pr feedback * simplify * revert test * fix: face generation * fix: tests * fix: face generation * fix merge * feat: search names in unmerge face selector modal * fix: merge face selector * simplify feature photo generation * fix: change endpoint * pr feedback * chore: fix merge * chore: fix merge * fix: tests * fix: edit & hide buttons * fix: tests * feat: show if person is hidden * feat: rename face to person * feat: split in new panel * copy-paste-error * pr feedback * fix: feature photo * do not leak faces * fix: unmerge modal * fix: merge modal event * feat(server): remove duplicates * fix: title for image thumbnails * fix: disable side panel when there's no face until next PR --------- Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-12-05 17:43:15 +02:00
],
"type": "object"
},
"PlacesResponseDto": {
"properties": {
"admin1name": {
"type": "string"
},
"admin2name": {
"type": "string"
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
},
"name": {
"type": "string"
}
},
"required": [
"latitude",
"longitude",
"name"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"QueueStatusDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"isActive": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"isPaused": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"isActive",
"isPaused"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"ReactionLevel": {
"enum": [
"album",
"asset"
],
"type": "string"
},
"ReactionType": {
"enum": [
"comment",
"like"
],
"type": "string"
},
"RecognitionConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"maxDistance": {
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"format": "float",
"type": "number"
},
"minFaces": {
"type": "integer"
},
"minScore": {
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"format": "float",
"type": "number"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"enabled",
"maxDistance",
"minFaces",
"minScore",
"modelName"
],
"type": "object"
},
"ScanLibraryDto": {
"properties": {
"refreshAllFiles": {
"type": "boolean"
},
"refreshModifiedFiles": {
"type": "boolean"
}
},
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SearchAlbumResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
},
"facets": {
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
},
"type": "array"
},
2023-06-10 06:14:18 +02:00
"items": {
"items": {
"$ref": "#/components/schemas/AlbumResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"total": {
"type": "integer"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"count",
"facets",
2023-06-10 06:14:18 +02:00
"items",
"total"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SearchAssetResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
},
"facets": {
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
},
"type": "array"
},
2023-06-10 06:14:18 +02:00
"items": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"nextPage": {
"nullable": true,
"type": "string"
},
"total": {
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"count",
"facets",
2023-06-10 06:14:18 +02:00
"items",
"nextPage",
"total"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SearchExploreItem": {
"properties": {
2023-06-10 06:14:18 +02:00
"data": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"value": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"data",
"value"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SearchExploreResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"fieldName": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"items": {
"items": {
"$ref": "#/components/schemas/SearchExploreItem"
},
"type": "array"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"fieldName",
"items"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SearchFacetCountResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"value": {
2022-12-05 19:56:44 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"count",
"value"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SearchFacetResponseDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"counts": {
"items": {
"$ref": "#/components/schemas/SearchFacetCountResponseDto"
},
"type": "array"
},
"fieldName": {
"type": "string"
}
},
"required": [
"counts",
"fieldName"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SearchResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"albums": {
"$ref": "#/components/schemas/SearchAlbumResponseDto"
},
2023-06-10 06:14:18 +02:00
"assets": {
"$ref": "#/components/schemas/SearchAssetResponseDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"albums",
"assets"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"SearchSuggestionType": {
"enum": [
"country",
"state",
"city",
"camera-make",
"camera-model"
],
"type": "string"
},
"ServerConfigDto": {
"properties": {
"externalDomain": {
"type": "string"
},
"isInitialized": {
"type": "boolean"
},
"isOnboarded": {
"type": "boolean"
},
"loginPageMessage": {
"type": "string"
},
"oauthButtonText": {
"type": "string"
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
},
"trashDays": {
"type": "integer"
},
"userDeleteDelay": {
"type": "integer"
}
},
"required": [
"externalDomain",
"isInitialized",
"isOnboarded",
"loginPageMessage",
"oauthButtonText",
"trashDays",
"userDeleteDelay"
],
"type": "object"
},
"ServerFeaturesDto": {
"properties": {
"configFile": {
"type": "boolean"
},
"facialRecognition": {
"type": "boolean"
},
"map": {
"type": "boolean"
},
"oauth": {
"type": "boolean"
},
"oauthAutoLaunch": {
"type": "boolean"
},
"passwordLogin": {
"type": "boolean"
},
"reverseGeocoding": {
"type": "boolean"
},
"search": {
"type": "boolean"
},
"sidecar": {
"type": "boolean"
},
"smartSearch": {
"type": "boolean"
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"trash": {
"type": "boolean"
}
},
"required": [
"configFile",
"facialRecognition",
"map",
"oauth",
"oauthAutoLaunch",
"passwordLogin",
"reverseGeocoding",
"search",
"sidecar",
"smartSearch",
"trash"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"ServerInfoResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"diskAvailable": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"diskAvailableRaw": {
"format": "int64",
"type": "integer"
2023-06-10 06:14:18 +02:00
},
"diskSize": {
2022-12-05 19:56:44 +02:00
"type": "string"
},
"diskSizeRaw": {
"format": "int64",
"type": "integer"
},
"diskUsagePercentage": {
"format": "float",
"type": "number"
},
2023-06-10 06:14:18 +02:00
"diskUse": {
"type": "string"
},
"diskUseRaw": {
"format": "int64",
"type": "integer"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"diskAvailable",
2023-06-10 06:14:18 +02:00
"diskAvailableRaw",
"diskSize",
"diskSizeRaw",
"diskUsagePercentage",
2023-06-10 06:14:18 +02:00
"diskUse",
"diskUseRaw"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"ServerMediaTypesResponseDto": {
"properties": {
"image": {
"items": {
"type": "string"
},
"type": "array"
},
"sidecar": {
"items": {
"type": "string"
},
"type": "array"
},
"video": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"image",
"sidecar",
"video"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"ServerPingResponse": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"res": {
"example": "pong",
2023-06-10 06:14:18 +02:00
"readOnly": true,
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"res"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"ServerStatsResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"photos": {
"default": 0,
"type": "integer"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"usage": {
"default": 0,
"format": "int64",
"type": "integer"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"usageByUser": {
"default": [],
"example": [
{
"photos": 1,
"videos": 1,
"diskUsageRaw": 1
}
],
"items": {
"$ref": "#/components/schemas/UsageByUserDto"
},
"title": "Array of usage for each user",
"type": "array"
},
"videos": {
"default": 0,
"type": "integer"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"photos",
2023-06-10 06:14:18 +02:00
"usage",
"usageByUser",
"videos"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"ServerThemeDto": {
"properties": {
"customCss": {
"type": "string"
}
},
"required": [
"customCss"
],
"type": "object"
},
"ServerVersionResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"major": {
"type": "integer"
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
},
2023-06-10 06:14:18 +02:00
"minor": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"patch": {
"type": "integer"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"major",
"minor",
"patch"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"SharedLinkCreateDto": {
"properties": {
"albumId": {
"format": "uuid",
"type": "string"
},
"allowDownload": {
"default": true,
"type": "boolean"
},
"allowUpload": {
"type": "boolean"
},
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"description": {
"type": "string"
},
"expiresAt": {
"default": null,
"format": "date-time",
"nullable": true,
"type": "string"
},
"password": {
"type": "string"
},
"showMetadata": {
"default": true,
"type": "boolean"
},
"type": {
"$ref": "#/components/schemas/SharedLinkType"
}
},
"required": [
"type"
],
"type": "object"
},
"SharedLinkEditDto": {
"properties": {
"allowDownload": {
"type": "boolean"
},
"allowUpload": {
"type": "boolean"
},
"changeExpiryTime": {
"description": "Few clients cannot send null to set the expiryTime to never.\nSetting this flag and not sending expiryAt is considered as null instead.\nClients that can send null values can ignore this.",
"type": "boolean"
},
"description": {
"type": "string"
},
"expiresAt": {
"format": "date-time",
"nullable": true,
"type": "string"
},
"password": {
"type": "string"
},
"showMetadata": {
"type": "boolean"
}
},
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SharedLinkResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"album": {
"$ref": "#/components/schemas/AlbumResponseDto"
2023-06-10 06:14:18 +02:00
},
"allowDownload": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"allowUpload": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"description": {
"nullable": true,
"type": "string"
},
2023-06-10 06:14:18 +02:00
"expiresAt": {
"format": "date-time",
"nullable": true,
"type": "string"
2023-06-10 06:14:18 +02:00
},
"id": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
"key": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"password": {
"nullable": true,
"type": "string"
},
"showMetadata": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
},
"token": {
"nullable": true,
"type": "string"
},
"type": {
"$ref": "#/components/schemas/SharedLinkType"
},
"userId": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
2023-06-10 06:14:18 +02:00
},
"required": [
"allowDownload",
"allowUpload",
"assets",
2023-06-10 06:14:18 +02:00
"createdAt",
"description",
2023-06-10 06:14:18 +02:00
"expiresAt",
"id",
"key",
"password",
"showMetadata",
"type",
"userId"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"SharedLinkType": {
"enum": [
"ALBUM",
"INDIVIDUAL"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"SignUpDto": {
"properties": {
"email": {
"example": "testuser@email.com",
"type": "string"
2023-06-10 06:14:18 +02:00
},
"name": {
"example": "Admin",
"type": "string"
2023-06-10 06:14:18 +02:00
},
"password": {
"example": "password",
"type": "string"
2023-06-10 06:14:18 +02:00
}
},
"required": [
"email",
"name",
"password"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SmartInfoResponseDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"objects": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"nullable": true,
"type": "array"
},
"tags": {
2022-12-05 19:56:44 +02:00
"items": {
"type": "string"
},
"nullable": true,
"type": "array"
2022-12-05 19:56:44 +02:00
}
},
"type": "object"
2022-12-05 19:56:44 +02:00
},
"SmartSearchDto": {
"properties": {
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"createdAfter": {
"format": "date-time",
"type": "string"
},
"createdBefore": {
"format": "date-time",
"type": "string"
},
"deviceId": {
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isEncoded": {
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
},
"isMotion": {
"type": "boolean"
},
"isNotInAlbum": {
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"lensModel": {
"type": "string"
},
"libraryId": {
"format": "uuid",
"type": "string"
},
"make": {
"type": "string"
},
"model": {
"type": "string"
},
"page": {
"type": "number"
},
"personIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"query": {
"type": "string"
},
"size": {
"type": "number"
},
"state": {
"type": "string"
},
"takenAfter": {
"format": "date-time",
"type": "string"
},
"takenBefore": {
"format": "date-time",
"type": "string"
},
"trashedAfter": {
"format": "date-time",
"type": "string"
},
"trashedBefore": {
"format": "date-time",
"type": "string"
},
"type": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"updatedAfter": {
"format": "date-time",
"type": "string"
},
"updatedBefore": {
"format": "date-time",
"type": "string"
},
"withArchived": {
"default": false,
"type": "boolean"
},
"withDeleted": {
"type": "boolean"
},
"withExif": {
"type": "boolean"
}
},
"required": [
"query"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SystemConfigDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"ffmpeg": {
"$ref": "#/components/schemas/SystemConfigFFmpegDto"
2022-12-05 19:56:44 +02:00
},
"job": {
"$ref": "#/components/schemas/SystemConfigJobDto"
},
"library": {
"$ref": "#/components/schemas/SystemConfigLibraryDto"
},
"logging": {
"$ref": "#/components/schemas/SystemConfigLoggingDto"
},
"machineLearning": {
"$ref": "#/components/schemas/SystemConfigMachineLearningDto"
},
"map": {
"$ref": "#/components/schemas/SystemConfigMapDto"
},
"newVersionCheck": {
"$ref": "#/components/schemas/SystemConfigNewVersionCheckDto"
},
2023-06-10 06:14:18 +02:00
"oauth": {
"$ref": "#/components/schemas/SystemConfigOAuthDto"
},
"passwordLogin": {
"$ref": "#/components/schemas/SystemConfigPasswordLoginDto"
},
"reverseGeocoding": {
"$ref": "#/components/schemas/SystemConfigReverseGeocodingDto"
},
"server": {
"$ref": "#/components/schemas/SystemConfigServerDto"
},
2023-06-10 06:14:18 +02:00
"storageTemplate": {
"$ref": "#/components/schemas/SystemConfigStorageTemplateDto"
},
"theme": {
"$ref": "#/components/schemas/SystemConfigThemeDto"
},
"thumbnail": {
"$ref": "#/components/schemas/SystemConfigThumbnailDto"
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
},
"trash": {
"$ref": "#/components/schemas/SystemConfigTrashDto"
},
"user": {
"$ref": "#/components/schemas/SystemConfigUserDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"ffmpeg",
"job",
"library",
"logging",
"machineLearning",
"map",
"newVersionCheck",
2023-06-10 06:14:18 +02:00
"oauth",
"passwordLogin",
"reverseGeocoding",
"server",
2023-06-10 06:14:18 +02:00
"storageTemplate",
"theme",
"thumbnail",
"trash",
"user"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SystemConfigFFmpegDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"accel": {
"$ref": "#/components/schemas/TranscodeHWAccel"
},
"acceptedAudioCodecs": {
"items": {
"$ref": "#/components/schemas/AudioCodec"
},
"type": "array"
},
"acceptedVideoCodecs": {
"items": {
"$ref": "#/components/schemas/VideoCodec"
},
"type": "array"
},
"bframes": {
"type": "integer"
},
"cqMode": {
"$ref": "#/components/schemas/CQMode"
},
2023-06-10 06:14:18 +02:00
"crf": {
"type": "integer"
},
"gopSize": {
"type": "integer"
},
"maxBitrate": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"npl": {
"type": "integer"
},
"preferredHwDevice": {
"type": "string"
},
"preset": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"refs": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"targetAudioCodec": {
"$ref": "#/components/schemas/AudioCodec"
},
2023-06-10 06:14:18 +02:00
"targetResolution": {
"type": "string"
},
"targetVideoCodec": {
"$ref": "#/components/schemas/VideoCodec"
},
"temporalAQ": {
"type": "boolean"
},
"threads": {
"type": "integer"
},
"tonemap": {
"$ref": "#/components/schemas/ToneMapping"
},
"transcode": {
"$ref": "#/components/schemas/TranscodePolicy"
2023-06-10 06:14:18 +02:00
},
"twoPass": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"accel",
"acceptedAudioCodecs",
"acceptedVideoCodecs",
"bframes",
"cqMode",
"crf",
"gopSize",
"maxBitrate",
"npl",
"preferredHwDevice",
"preset",
"refs",
"targetAudioCodec",
2023-06-10 06:14:18 +02:00
"targetResolution",
"targetVideoCodec",
"temporalAQ",
"threads",
"tonemap",
"transcode",
"twoPass"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SystemConfigJobDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"backgroundTask": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 19:56:44 +02:00
},
feat(server): separate face clustering job (#5598) * separate facial clustering job * update api * fixed some tests * invert clustering * hdbscan * update api * remove commented code * wip dbscan * cleanup removed cluster endpoint remove commented code * fixes updated tests minor fixes and formatting fixed queuing refinements * scale search range based on library size * defer non-core faces * optimizations removed unused query option * assign faces individually for correctness fixed unit tests remove unused method * don't select face embedding update sql linting fixed ml typing * updated job mock * paginate people query * select face embeddings because typeorm * fix setting face detection concurrency * update sql formatting linting * simplify logic remove unused imports * more specific delete signature * more accurate typing for face stubs * add migration formatting * chore: better typing * don't select embedding by default remove unused import * updated sql * use normal try/catch * stricter concurrency typing and enforcement * update api * update job concurrency panel to show disabled queues formatting * check jobId in queueAll fix tests * remove outdated comment * better facial recognition icon * wording wording formatting * fixed tests * fix * formatting & sql * try to fix sql check * more detailed description * update sql * formatting * wording * update `minFaces` description --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-18 07:08:48 +02:00
"faceDetection": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"library": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"metadataExtraction": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"migration": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"search": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"sidecar": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"smartSearch": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"thumbnailGeneration": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"videoConversion": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"backgroundTask",
"faceDetection",
"library",
2023-06-10 06:14:18 +02:00
"metadataExtraction",
"migration",
2023-06-10 06:14:18 +02:00
"search",
"sidecar",
"smartSearch",
"thumbnailGeneration",
"videoConversion"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"SystemConfigLibraryDto": {
"properties": {
"scan": {
"$ref": "#/components/schemas/SystemConfigLibraryScanDto"
feat(server): Automatic watching of library folders (#6192) * feat: initial watch support * allow offline files * chore: ignore query errors when resetting e2e db * revert db query * add savepoint * guard the user query * chore: openapi and db migration * wip * support multiple libraries * fix tests * wip * can now cleanup chokidar watchers * fix unit tests * add library watch queue * add missing init from merge * wip * can now filter file extensions * remove watch api from non job client * Fix e2e test * watch library with updated import path and exclusion pattern * add library watch frontend ui * case sensitive watching extensions * can auto watch libraries * move watcher e2e tests to separate file * don't watch libraries from a queue * use event emitters * shorten e2e test timeout * refactor chokidar code to filesystem provider * expose chokidar parameters to config file * fix storage mock * set default config for library watching * add fs provider mocks * cleanup * add more unit tests for watcher * chore: fix format + sql * add more tests * move unwatch feature back to library service * add file event unit tests * chore: formatting * add documentation * fix e2e tests * chore: fix e2e tests * fix library updating * test cleanup * fix typo * cleanup * fixing as per pr comments * reduce library watch config file * update storage config and mocks * move negative event tests to unit tests * fix library watcher e2e * make watch configuration global * remove the feature flag * refactor watcher teardown * fix microservices init * centralize asset scan job queue * improve docs * add more tests * chore: open api * initialize app service * fix docs * fix library watch feature flag * Update docs/docs/features/libraries.md Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * fix: import right app service * don't be truthy * fix test speling * stricter library update tests * move fs watcher mock to external file * subscribe to config changes * docker does not need polling * make library watch() private * feat: add configuration ui --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 10:15:54 +02:00
},
"watch": {
"$ref": "#/components/schemas/SystemConfigLibraryWatchDto"
}
},
"required": [
feat(server): Automatic watching of library folders (#6192) * feat: initial watch support * allow offline files * chore: ignore query errors when resetting e2e db * revert db query * add savepoint * guard the user query * chore: openapi and db migration * wip * support multiple libraries * fix tests * wip * can now cleanup chokidar watchers * fix unit tests * add library watch queue * add missing init from merge * wip * can now filter file extensions * remove watch api from non job client * Fix e2e test * watch library with updated import path and exclusion pattern * add library watch frontend ui * case sensitive watching extensions * can auto watch libraries * move watcher e2e tests to separate file * don't watch libraries from a queue * use event emitters * shorten e2e test timeout * refactor chokidar code to filesystem provider * expose chokidar parameters to config file * fix storage mock * set default config for library watching * add fs provider mocks * cleanup * add more unit tests for watcher * chore: fix format + sql * add more tests * move unwatch feature back to library service * add file event unit tests * chore: formatting * add documentation * fix e2e tests * chore: fix e2e tests * fix library updating * test cleanup * fix typo * cleanup * fixing as per pr comments * reduce library watch config file * update storage config and mocks * move negative event tests to unit tests * fix library watcher e2e * make watch configuration global * remove the feature flag * refactor watcher teardown * fix microservices init * centralize asset scan job queue * improve docs * add more tests * chore: open api * initialize app service * fix docs * fix library watch feature flag * Update docs/docs/features/libraries.md Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * fix: import right app service * don't be truthy * fix test speling * stricter library update tests * move fs watcher mock to external file * subscribe to config changes * docker does not need polling * make library watch() private * feat: add configuration ui --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 10:15:54 +02:00
"scan",
"watch"
],
"type": "object"
},
"SystemConfigLibraryScanDto": {
"properties": {
"cronExpression": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"cronExpression",
"enabled"
],
"type": "object"
},
feat(server): Automatic watching of library folders (#6192) * feat: initial watch support * allow offline files * chore: ignore query errors when resetting e2e db * revert db query * add savepoint * guard the user query * chore: openapi and db migration * wip * support multiple libraries * fix tests * wip * can now cleanup chokidar watchers * fix unit tests * add library watch queue * add missing init from merge * wip * can now filter file extensions * remove watch api from non job client * Fix e2e test * watch library with updated import path and exclusion pattern * add library watch frontend ui * case sensitive watching extensions * can auto watch libraries * move watcher e2e tests to separate file * don't watch libraries from a queue * use event emitters * shorten e2e test timeout * refactor chokidar code to filesystem provider * expose chokidar parameters to config file * fix storage mock * set default config for library watching * add fs provider mocks * cleanup * add more unit tests for watcher * chore: fix format + sql * add more tests * move unwatch feature back to library service * add file event unit tests * chore: formatting * add documentation * fix e2e tests * chore: fix e2e tests * fix library updating * test cleanup * fix typo * cleanup * fixing as per pr comments * reduce library watch config file * update storage config and mocks * move negative event tests to unit tests * fix library watcher e2e * make watch configuration global * remove the feature flag * refactor watcher teardown * fix microservices init * centralize asset scan job queue * improve docs * add more tests * chore: open api * initialize app service * fix docs * fix library watch feature flag * Update docs/docs/features/libraries.md Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * fix: import right app service * don't be truthy * fix test speling * stricter library update tests * move fs watcher mock to external file * subscribe to config changes * docker does not need polling * make library watch() private * feat: add configuration ui --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 10:15:54 +02:00
"SystemConfigLibraryWatchDto": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
feat(server): Automatic watching of library folders (#6192) * feat: initial watch support * allow offline files * chore: ignore query errors when resetting e2e db * revert db query * add savepoint * guard the user query * chore: openapi and db migration * wip * support multiple libraries * fix tests * wip * can now cleanup chokidar watchers * fix unit tests * add library watch queue * add missing init from merge * wip * can now filter file extensions * remove watch api from non job client * Fix e2e test * watch library with updated import path and exclusion pattern * add library watch frontend ui * case sensitive watching extensions * can auto watch libraries * move watcher e2e tests to separate file * don't watch libraries from a queue * use event emitters * shorten e2e test timeout * refactor chokidar code to filesystem provider * expose chokidar parameters to config file * fix storage mock * set default config for library watching * add fs provider mocks * cleanup * add more unit tests for watcher * chore: fix format + sql * add more tests * move unwatch feature back to library service * add file event unit tests * chore: formatting * add documentation * fix e2e tests * chore: fix e2e tests * fix library updating * test cleanup * fix typo * cleanup * fixing as per pr comments * reduce library watch config file * update storage config and mocks * move negative event tests to unit tests * fix library watcher e2e * make watch configuration global * remove the feature flag * refactor watcher teardown * fix microservices init * centralize asset scan job queue * improve docs * add more tests * chore: open api * initialize app service * fix docs * fix library watch feature flag * Update docs/docs/features/libraries.md Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> * fix: import right app service * don't be truthy * fix test speling * stricter library update tests * move fs watcher mock to external file * subscribe to config changes * docker does not need polling * make library watch() private * feat: add configuration ui --------- Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2024-01-31 10:15:54 +02:00
],
"type": "object"
},
"SystemConfigLoggingDto": {
"properties": {
"enabled": {
"type": "boolean"
},
"level": {
"$ref": "#/components/schemas/LogLevel"
}
},
"required": [
"enabled",
"level"
],
"type": "object"
},
"SystemConfigMachineLearningDto": {
"properties": {
"clip": {
"$ref": "#/components/schemas/CLIPConfig"
},
"enabled": {
"type": "boolean"
},
"facialRecognition": {
"$ref": "#/components/schemas/RecognitionConfig"
},
"url": {
"type": "string"
}
},
"required": [
"clip",
"enabled",
"facialRecognition",
"url"
],
"type": "object"
},
"SystemConfigMapDto": {
"properties": {
"darkStyle": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"lightStyle": {
"type": "string"
}
},
"required": [
"darkStyle",
"enabled",
"lightStyle"
],
"type": "object"
},
"SystemConfigNewVersionCheckDto": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SystemConfigOAuthDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"autoLaunch": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
2022-12-05 19:56:44 +02:00
},
"autoRegister": {
"type": "boolean"
},
"buttonText": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"defaultStorageQuota": {
"type": "number"
},
"enabled": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
},
"issuerUrl": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"mobileOverrideEnabled": {
"type": "boolean"
},
"mobileRedirectUri": {
2022-12-05 19:56:44 +02:00
"type": "string"
},
"scope": {
"type": "string"
},
"signingAlgorithm": {
"type": "string"
},
"storageLabelClaim": {
"type": "string"
},
"storageQuotaClaim": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
"autoLaunch",
"autoRegister",
"buttonText",
2023-06-10 06:14:18 +02:00
"clientId",
"clientSecret",
"defaultStorageQuota",
"enabled",
"issuerUrl",
2023-06-10 06:14:18 +02:00
"mobileOverrideEnabled",
"mobileRedirectUri",
"scope",
"signingAlgorithm",
"storageLabelClaim",
"storageQuotaClaim"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SystemConfigPasswordLoginDto": {
2022-12-05 19:56:44 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"enabled": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"enabled"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"SystemConfigReverseGeocodingDto": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"type": "object"
},
"SystemConfigServerDto": {
"properties": {
"externalDomain": {
"type": "string"
},
"loginPageMessage": {
"type": "string"
}
},
"required": [
"externalDomain",
"loginPageMessage"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"SystemConfigStorageTemplateDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"properties": {
"enabled": {
"type": "boolean"
},
"hashVerificationEnabled": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"template": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "string"
}
},
"required": [
"enabled",
"hashVerificationEnabled",
2023-06-10 06:14:18 +02:00
"template"
],
"type": "object"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
2023-06-10 06:14:18 +02:00
"SystemConfigTemplateStorageOptionDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"properties": {
"dayOptions": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"hourOptions": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"minuteOptions": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"monthOptions": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"presetOptions": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"secondOptions": {
"items": {
"type": "string"
},
"type": "array"
2023-06-10 06:14:18 +02:00
},
"weekOptions": {
"items": {
"type": "string"
},
"type": "array"
},
"yearOptions": {
2023-06-10 06:14:18 +02:00
"items": {
"type": "string"
},
"type": "array"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"dayOptions",
"hourOptions",
"minuteOptions",
"monthOptions",
"presetOptions",
2023-06-10 06:14:18 +02:00
"secondOptions",
"weekOptions",
"yearOptions"
],
"type": "object"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
"SystemConfigThemeDto": {
"properties": {
"customCss": {
"type": "string"
}
},
"required": [
"customCss"
],
"type": "object"
},
"SystemConfigThumbnailDto": {
"properties": {
"colorspace": {
"$ref": "#/components/schemas/Colorspace"
},
"jpegSize": {
"type": "integer"
},
"quality": {
"type": "integer"
},
"webpSize": {
"type": "integer"
}
},
"required": [
"colorspace",
"jpegSize",
"quality",
"webpSize"
],
"type": "object"
},
feat(server): trash asset (#4015) * refactor(server): delete assets endpoint * fix: formatting * chore: cleanup * chore: open api * chore(mobile): replace DeleteAssetDTO with BulkIdsDTOs * feat: trash an asset * chore(server): formatting * chore: open api * chore: wording * chore: open-api * feat(server): add withDeleted to getAssets queries * WIP: mobile-recycle-bin * feat(server): recycle-bin to system config * feat(web): use recycle-bin system config * chore(server): domain assetcore removed * chore(server): rename recycle-bin to trash * chore(web): rename recycle-bin to trash * chore(server): always send soft deleted assets for getAllByUserId * chore(web): formatting * feat(server): permanent delete assets older than trashed period * feat(web): trash empty placeholder image * feat(server): empty trash * feat(web): empty trash * WIP: mobile-recycle-bin * refactor(server): empty / restore trash to separate endpoint * test(server): handle failures * test(server): fix e2e server-info test * test(server): deletion test refactor * feat(mobile): use map settings from server-config to enable / disable map * feat(mobile): trash asset * fix(server): operations on assets in trash * feat(web): show trash statistics * fix(web): handle trash enabled * fix(mobile): restore updates from trash * fix(server): ignore trashed assets for person * fix(server): add / remove search index when trashed / restored * chore(web): format * fix(server): asset service test * fix(server): include trashed assts for duplicates from uploads * feat(mobile): no dialog for trash, always dialog for permanent delete * refactor(mobile): use isar where instead of dart filter * refactor(mobile): asset provide - handle deletes in single db txn * chore(mobile): review changes * feat(web): confirmation before empty trash * server: review changes * fix(server): handle library changes * fix: filter external assets from getting trashed / deleted * fix(server): empty-bin * feat: broadcast config update events through ws * change order of trash button on mobile * styling * fix(mobile): do not show trashed toast for local only assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-10-06 09:01:14 +02:00
"SystemConfigTrashDto": {
"properties": {
"days": {
"type": "integer"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"days",
"enabled"
],
"type": "object"
},
"SystemConfigUserDto": {
"properties": {
"deleteDelay": {
"type": "integer"
}
},
"required": [
"deleteDelay"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"TagResponseDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"properties": {
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
},
2023-06-10 06:14:18 +02:00
"userId": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "string"
}
},
"required": [
"id",
2023-06-10 06:14:18 +02:00
"name",
"type",
2023-06-10 06:14:18 +02:00
"userId"
],
"type": "object"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
2023-06-10 06:14:18 +02:00
"TagTypeEnum": {
"enum": [
"OBJECT",
"FACE",
"CUSTOM"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"ThumbnailFormat": {
"enum": [
"JPEG",
"WEBP"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"TimeBucketResponseDto": {
"properties": {
"count": {
"type": "integer"
},
"timeBucket": {
"type": "string"
}
},
"required": [
"count",
"timeBucket"
],
"type": "object"
},
"TimeBucketSize": {
2023-06-10 06:14:18 +02:00
"enum": [
"DAY",
"MONTH"
],
"type": "string"
},
"ToneMapping": {
"enum": [
"hable",
"mobius",
"reinhard",
"disabled"
],
"type": "string"
2023-06-10 06:14:18 +02:00
},
"TranscodeHWAccel": {
"enum": [
"nvenc",
"qsv",
"vaapi",
"rkmpp",
"disabled"
],
"type": "string"
},
"TranscodePolicy": {
"enum": [
"all",
"optimal",
"bitrate",
"required",
"disabled"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"UpdateAlbumDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"properties": {
2023-06-10 06:14:18 +02:00
"albumName": {
"type": "string"
},
"albumThumbnailAssetId": {
"format": "uuid",
"type": "string"
},
"description": {
"type": "string"
},
"isActivityEnabled": {
"type": "boolean"
},
"order": {
"$ref": "#/components/schemas/AssetOrder"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
}
},
"type": "object"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
2023-06-10 06:14:18 +02:00
"UpdateAssetDto": {
"properties": {
"dateTimeOriginal": {
"type": "string"
},
"description": {
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
},
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"type": "object"
},
"UpdateLibraryDto": {
"properties": {
"exclusionPatterns": {
"items": {
"type": "string"
},
"type": "array"
},
"importPaths": {
"items": {
"type": "string"
},
"type": "array"
},
"isVisible": {
"type": "boolean"
},
"name": {
"type": "string"
}
},
"type": "object"
},
"UpdatePartnerDto": {
"properties": {
"inTimeline": {
"type": "boolean"
}
},
"required": [
"inTimeline"
],
"type": "object"
},
2023-10-22 04:38:07 +02:00
"UpdateStackParentDto": {
"properties": {
"newParentId": {
"format": "uuid",
"type": "string"
},
"oldParentId": {
"format": "uuid",
"type": "string"
}
},
"required": [
"newParentId",
"oldParentId"
2023-10-22 04:38:07 +02:00
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"UpdateTagDto": {
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
}
},
"type": "object"
},
2023-06-10 06:14:18 +02:00
"UpdateUserDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
2023-06-10 06:14:18 +02:00
"email": {
"type": "string"
},
"id": {
"format": "uuid",
2023-06-10 06:14:18 +02:00
"type": "string"
},
"isAdmin": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"password": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"quotaSizeInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"shouldChangePassword": {
"type": "boolean"
},
"storageLabel": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"UsageByUserDto": {
2022-12-05 19:56:44 +02:00
"properties": {
"photos": {
"type": "integer"
},
"quotaSizeInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
"usage": {
"format": "int64",
"type": "integer"
2022-12-05 19:56:44 +02:00
},
"userId": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"userName": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"videos": {
2022-12-05 19:56:44 +02:00
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"photos",
"quotaSizeInBytes",
"usage",
"userId",
"userName",
"videos"
],
"type": "object"
2022-12-05 19:56:44 +02:00
},
"UserAvatarColor": {
"enum": [
"primary",
"pink",
"red",
"yellow",
"blue",
"green",
"purple",
"orange",
"gray",
"amber"
],
"type": "string"
},
"UserDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
"email": {
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"profileImagePath": {
"type": "string"
}
},
"required": [
"avatarColor",
"email",
"id",
"name",
"profileImagePath"
],
"type": "object"
},
2023-06-10 06:14:18 +02:00
"UserResponseDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"deletedAt": {
"format": "date-time",
"nullable": true,
2023-06-10 06:14:18 +02:00
"type": "string"
},
"email": {
"type": "string"
},
"id": {
2023-06-10 06:14:18 +02:00
"type": "string"
},
"isAdmin": {
"type": "boolean"
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"oauthId": {
"type": "string"
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
},
2023-06-10 06:14:18 +02:00
"profileImagePath": {
"type": "string"
},
"quotaSizeInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
"quotaUsageInBytes": {
"format": "int64",
"nullable": true,
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"shouldChangePassword": {
"type": "boolean"
},
"status": {
"$ref": "#/components/schemas/UserStatus"
},
"storageLabel": {
"nullable": true,
2023-06-10 06:14:18 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"avatarColor",
2023-06-10 06:14:18 +02:00
"createdAt",
"deletedAt",
"email",
"id",
"isAdmin",
"name",
"oauthId",
"profileImagePath",
"quotaSizeInBytes",
"quotaUsageInBytes",
"shouldChangePassword",
"status",
"storageLabel",
"updatedAt"
],
"type": "object"
2023-06-10 06:14:18 +02:00
},
"UserStatus": {
"enum": [
"active",
"removing",
"deleted"
],
"type": "string"
},
2023-06-10 06:14:18 +02:00
"ValidateAccessTokenResponseDto": {
"properties": {
"authStatus": {
"type": "boolean"
}
},
"required": [
"authStatus"
],
"type": "object"
},
"ValidateLibraryDto": {
"properties": {
"exclusionPatterns": {
"items": {
"type": "string"
},
"type": "array"
},
"importPaths": {
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"ValidateLibraryImportPathResponseDto": {
"properties": {
"importPath": {
"type": "string"
},
"isValid": {
"default": false,
"type": "boolean"
},
"message": {
"type": "string"
}
},
"required": [
"importPath",
"isValid"
],
"type": "object"
},
"ValidateLibraryResponseDto": {
"properties": {
"importPaths": {
"items": {
"$ref": "#/components/schemas/ValidateLibraryImportPathResponseDto"
},
"type": "array"
}
},
"type": "object"
},
"VideoCodec": {
"enum": [
"h264",
"hevc",
"vp9"
],
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
}
}