immich/server/immich-openapi-specs.json

9739 lines
209 KiB
JSON
Raw Normal View History

2022-12-05 17:56:44 +00: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": "type",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ReactionType"
}
},
{
"name": "level",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ReactionLevel"
}
},
{
"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": "shared",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"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"
}
}
],
"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 04:14:18 +00:00
"get": {
"operationId": "getAlbumCount",
2023-06-10 04:14:18 +00:00
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumCountResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
2023-06-10 04:14:18 +00: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": "withoutAssets",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
2023-05-26 13:04:09 +00: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 13:04:09 +00:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
}
},
2023-06-10 04:14:18 +00: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 04:14:18 +00: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 04:14:18 +00:00
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/BulkIdResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 04:14:18 +00:00
}
},
"/album/{id}/user/{userId}": {
"delete": {
"operationId": "removeUserFromAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 04:14:18 +00:00
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 04:14:18 +00:00
}
},
"/album/{id}/users": {
"put": {
2023-06-10 04:14:18 +00:00
"operationId": "addUsersToAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AddUsersDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Album"
]
2023-06-10 04:14:18 +00:00
}
},
"/api-key": {
"get": {
"operationId": "getApiKeys",
2023-06-10 04:14:18 +00:00
"parameters": [],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/APIKeyResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
2023-06-10 04:14:18 +00:00
},
"post": {
"operationId": "createApiKey",
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"/api-key/{id}": {
"delete": {
"operationId": "deleteApiKey",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 04:14:18 +00:00
],
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
"description": ""
}
},
2023-06-10 04:14:18 +00:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
2023-06-10 04:14:18 +00:00
},
"get": {
"operationId": "getApiKey",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"API Key"
]
},
"put": {
"operationId": "updateApiKey",
2023-06-10 04:14:18 +00: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 04:14:18 +00: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 07:01:14 +00: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 07:01:14 +00: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 07:01:14 +00:00
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
},
2023-06-10 04:14:18 +00:00
"get": {
"description": "Get all AssetEntity belong to the user",
"operationId": "getAllAssets",
"parameters": [
{
"name": "skip",
"required": false,
"in": "query",
"schema": {
"type": "integer"
}
},
{
"name": "take",
"required": false,
"in": "query",
"schema": {
"type": "integer"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 04:14:18 +00:00
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "updatedAfter",
2023-06-10 04:14:18 +00:00
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
2023-06-10 04:14:18 +00:00
}
},
{
"name": "updatedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
2023-06-10 04:14:18 +00:00
{
"name": "if-none-match",
"in": "header",
"description": "ETag of data already cached on the client",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"/asset/assetById/{id}": {
"get": {
"description": "Get a single asset's information",
"operationId": "getAssetById",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
2023-06-10 04:14:18 +00:00
],
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AssetResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/bulk-upload-check": {
"post": {
2023-06-10 04:14:18 +00:00
"description": "Checks if assets exist by checksums",
"operationId": "checkBulkUpload",
"parameters": [],
2023-06-10 04:14:18 +00:00
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetBulkUploadCheckDto"
}
2022-12-05 17:56:44 +00:00
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AssetBulkUploadCheckResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/curated-locations": {
"get": {
"operationId": "getCuratedLocations",
2022-12-05 17:56:44 +00:00
"parameters": [],
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/CuratedLocationsResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/curated-objects": {
"get": {
"operationId": "getCuratedObjects",
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/CuratedObjectsResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
2022-12-05 17:56:44 +00:00
]
}
},
"/asset/download/archive": {
"post": {
"operationId": "downloadArchive",
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 17:30:53 +00:00
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "key",
"required": false,
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 17:30:53 +00:00
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
},
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 17:30:53 +00:00
"responses": {
"200": {
"content": {
"application/octet-stream": {
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 17:30:53 +00:00
"schema": {
"format": "binary",
"type": "string"
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 17:30:53 +00:00
}
}
},
"description": ""
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 17:30:53 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
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 17:30:53 +00:00
]
}
},
"/asset/download/info": {
"post": {
"operationId": "getDownloadInfo",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "key",
"required": false,
"in": "query",
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 17:30:53 +00:00
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DownloadInfoDto"
}
}
},
"required": true
},
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 17:30:53 +00:00
"responses": {
"201": {
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 17:30:53 +00:00
"content": {
"application/json": {
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 17:30:53 +00:00
"schema": {
"$ref": "#/components/schemas/DownloadResponseDto"
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 17:30:53 +00:00
}
}
2023-06-10 04:14:18 +00:00
},
"description": ""
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 17:30:53 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
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 17:30:53 +00:00
]
2023-06-10 04:14:18 +00:00
}
},
"/asset/download/{id}": {
"post": {
2023-06-10 04:14:18 +00:00
"operationId": "downloadFile",
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 17:30:53 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 04:14:18 +00:00
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
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 17:30:53 +00:00
}
],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
2023-06-10 04:14:18 +00:00
}
}
},
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 17:30:53 +00:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
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 17:30:53 +00:00
]
}
},
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"security": [
{
2023-06-10 04:14:18 +00:00
"bearer": []
},
{
2023-06-10 04:14:18 +00:00
"cookie": []
},
{
2023-06-10 04:14:18 +00:00
"api_key": []
}
],
"tags": [
"Asset"
2023-06-10 04:14:18 +00:00
]
}
},
"/asset/file/{id}": {
"get": {
"operationId": "serveFile",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "isThumb",
"required": false,
"in": "query",
"schema": {
2023-06-10 04:14:18 +00:00
"title": "Is serve thumbnail (resize) file",
"type": "boolean"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "isWeb",
"required": false,
"in": "query",
"schema": {
2023-06-10 04:14:18 +00:00
"title": "Is request made from web",
"type": "boolean"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "uuid",
"type": "string"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
2023-06-10 04:14:18 +00:00
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
2023-06-10 04:14:18 +00:00
"description": ""
}
},
"security": [
{
2023-06-10 04:14:18 +00:00
"bearer": []
},
{
2023-06-10 04:14:18 +00:00
"cookie": []
},
{
2023-06-10 04:14:18 +00:00
"api_key": []
}
],
"tags": [
"Asset"
2023-06-10 04:14:18 +00:00
]
}
},
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 02:33:20 +00:00
"/asset/import": {
"post": {
"operationId": "importFile",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportAssetDto"
}
}
},
"required": true
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 02:33:20 +00:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetFileUploadResponseDto"
}
}
},
"description": ""
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 02:33:20 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
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 02:33:20 +00: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 04:14:18 +00:00
"/asset/map-marker": {
"get": {
"operationId": "getMapMarkers",
"parameters": [
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
2023-06-10 04:14:18 +00:00
"type": "boolean"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "fileCreatedAfter",
"required": false,
"in": "query",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "date-time",
"type": "string"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "fileCreatedBefore",
"required": false,
"in": "query",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "date-time",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00: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"
]
}
},
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 07:01:14 +00:00
"/asset/restore": {
"post": {
"operationId": "restoreAssets",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BulkIdsDto"
}
}
},
"required": true
},
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/search": {
"post": {
"operationId": "searchAsset",
"parameters": [],
2023-06-10 04:14:18 +00:00
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchAssetDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/search-terms": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getAssetSearchTerms",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-10-22 02:38:07 +00: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 07:01:14 +00: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 04:14:18 +00:00
"/asset/thumbnail/{id}": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getAssetThumbnail",
"parameters": [
2023-06-10 04:14:18 +00:00
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "format",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/ThumbnailFormat"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"image/jpeg": {
"schema": {
"format": "binary",
"type": "string"
}
},
"image/webp": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
2023-06-10 04:14:18 +00:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/time-bucket": {
"get": {
"operationId": "getTimeBucket",
"parameters": [
{
"name": "size",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimeBucketSize"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "albumId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "personId",
"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"
}
},
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 07:01:14 +00:00
{
"name": "isTrashed",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withPartners",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "timeBucket",
"required": true,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00: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": "size",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/TimeBucketSize"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "albumId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "personId",
"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"
}
},
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 07:01:14 +00:00
{
"name": "isTrashed",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withPartners",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"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 04:14:18 +00: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 07:01:14 +00:00
"/asset/trash/empty": {
"post": {
"operationId": "emptyTrash",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
"/asset/trash/restore": {
"post": {
"operationId": "restoreTrash",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/upload": {
"post": {
"operationId": "uploadFile",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
2023-06-10 04:14:18 +00:00
"multipart/form-data": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/CreateAssetDto"
}
}
},
"description": "Asset Upload Information",
"required": true
},
"responses": {
2023-06-10 04:14:18 +00:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AssetFileUploadResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
2023-06-10 04:14:18 +00:00
}
},
"/asset/{deviceId}": {
"get": {
"description": "Get all asset of a device that are in the database, ID only.",
"operationId": "getUserAssetsByDeviceId",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "deviceId",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Asset"
]
}
},
2023-06-10 04:14:18 +00:00
"/asset/{id}": {
"put": {
"operationId": "updateAsset",
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
},
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AssetResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Asset"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
}
},
"/assets": {
"get": {
"operationId": "searchAssets",
"parameters": [
{
"name": "id",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "libraryId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "type",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetTypeEnum"
}
},
{
"name": "order",
"required": false,
"in": "query",
"schema": {
"$ref": "#/components/schemas/AssetOrder"
}
},
{
"name": "deviceAssetId",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "deviceId",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "checksum",
"required": false,
"in": "query",
"schema": {
"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": "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": "withDeleted",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withStacked",
"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": "createdBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "createdAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "updatedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "updatedAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "trashedBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "trashedAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "takenBefore",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "takenAfter",
"required": false,
"in": "query",
"schema": {
"format": "date-time",
"type": "string"
}
},
{
"name": "originalFileName",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "originalPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "resizePath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "webpPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "encodedVideoPath",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "city",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "state",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"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": "lensModel",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "page",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"name": "size",
"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"
]
}
},
"/audit/deletes": {
"get": {
"operationId": "getAuditDeletes",
"parameters": [
{
"name": "entityType",
"required": true,
"in": "query",
"schema": {
"$ref": "#/components/schemas/EntityType"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "after",
"required": true,
"in": "query",
"schema": {
"format": "date-time",
"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 04:14:18 +00:00
"/auth/admin-sign-up": {
"post": {
"operationId": "signUpAdmin",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SignUpDto"
}
}
},
"required": true
},
2022-12-05 17:56:44 +00:00
"responses": {
2023-06-10 04:14:18 +00:00
"201": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
2023-06-10 04:14:18 +00:00
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"tags": [
"Authentication"
]
}
},
"/auth/change-password": {
"post": {
"operationId": "changePassword",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangePasswordDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
2022-12-05 17:56:44 +00:00
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
}
},
2023-06-10 04:14:18 +00:00
"/auth/devices": {
"delete": {
"operationId": "logoutAuthDevices",
"parameters": [],
"responses": {
"204": {
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
2023-06-10 04:14:18 +00:00
},
"get": {
"operationId": "getAuthDevices",
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/AuthDeviceResponseDto"
},
"type": "array"
}
}
},
2023-06-10 04:14:18 +00:00
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
2023-06-10 04:14:18 +00:00
]
}
},
"/auth/devices/{id}": {
"delete": {
"operationId": "logoutAuthDevice",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
2023-06-10 04:14:18 +00:00
],
"responses": {
"204": {
2023-06-10 04:14:18 +00:00
"description": ""
}
2022-12-05 17:56:44 +00:00
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Authentication"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/auth/login": {
"post": {
2023-06-10 04:14:18 +00:00
"operationId": "login",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/LoginCredentialDto"
}
}
},
"required": true
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/LoginResponseDto"
}
}
},
"description": ""
}
},
"tags": [
2023-06-10 04:14:18 +00:00
"Authentication"
]
}
},
"/auth/logout": {
"post": {
"operationId": "logout",
"parameters": [],
"responses": {
"200": {
2023-06-10 04:14:18 +00:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LogoutResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
2023-06-10 04:14:18 +00:00
}
},
"/auth/validateToken": {
"post": {
"operationId": "validateAccessToken",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/ValidateAccessTokenResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Authentication"
]
}
},
2023-06-10 04:14:18 +00:00
"/jobs": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getAllJobsStatus",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AllJobStatusResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Job"
]
2023-06-10 04:14:18 +00:00
}
},
"/jobs/{id}": {
2023-06-10 04:14:18 +00:00
"put": {
"operationId": "sendJobCommand",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobName"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobCommandDto"
}
}
},
"required": true
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Job"
]
2023-06-10 04:14:18 +00:00
}
},
"/library": {
"get": {
"operationId": "getLibraries",
"parameters": [],
"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": {
"200": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Library"
]
},
"get": {
"operationId": "getLibraryInfo",
"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": {
"201": {
"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": {
"201": {
"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"
]
}
},
"/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 04:14:18 +00:00
"/oauth/callback": {
"post": {
"operationId": "finishOAuth",
2023-06-10 04:14:18 +00:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"tags": [
"OAuth"
]
}
},
"/oauth/config": {
"post": {
"deprecated": true,
"description": "@deprecated use feature flags and /oauth/authorize",
"operationId": "generateOAuthConfig",
2023-06-10 04:14:18 +00:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthConfigDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthConfigResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"tags": [
"OAuth"
]
}
},
"/oauth/link": {
"post": {
"operationId": "linkOAuthAccount",
2023-06-10 04:14:18 +00:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
2023-06-10 04:14:18 +00:00
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"OAuth"
2023-06-10 04:14:18 +00:00
]
}
},
"/oauth/mobile-redirect": {
"get": {
"operationId": "redirectOAuthToMobile",
2023-06-10 04:14:18 +00:00
"parameters": [],
"responses": {
"200": {
"description": ""
}
},
"tags": [
2023-06-10 04:14:18 +00:00
"OAuth"
]
}
},
"/oauth/unlink": {
"post": {
"operationId": "unlinkOAuthAccount",
2023-06-10 04:14:18 +00:00
"parameters": [],
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
2023-06-10 04:14:18 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"OAuth"
]
}
},
2023-06-10 04:14:18 +00:00
"/partner": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getPartners",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "direction",
"required": true,
2023-06-10 04:14:18 +00:00
"in": "query",
"schema": {
2023-06-10 04:14:18 +00: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 04:14:18 +00: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 04:14:18 +00: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 04:14:18 +00:00
"description": ""
}
},
2023-06-10 04:14:18 +00:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Partner"
2023-06-10 04:14:18 +00:00
]
}
},
"/person": {
"get": {
"operationId": "getAllPeople",
"parameters": [
{
"name": "withHidden",
"required": false,
"in": "query",
"schema": {
"default": false,
"type": "boolean"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PeopleResponseDto"
}
}
},
"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 04:14:18 +00:00
"/person/{id}": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getPerson",
2022-12-05 17:56:44 +00:00
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "id",
2022-12-05 17:56:44 +00:00
"required": true,
2023-06-10 04:14:18 +00:00
"in": "path",
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"format": "uuid",
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
],
"responses": {
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Person"
2022-12-05 17:56:44 +00:00
]
},
2023-06-10 04:14:18 +00:00
"put": {
"operationId": "updatePerson",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 17:56:44 +00:00
"requestBody": {
"content": {
"application/json": {
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/PersonUpdateDto"
2022-12-05 17:56:44 +00:00
}
}
},
"required": true
2022-12-05 17:56:44 +00:00
},
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Person"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
}
},
"/person/{id}/assets": {
"get": {
"operationId": "getPersonAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
2023-06-10 04:14:18 +00:00
],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Person"
2022-12-05 17:56:44 +00: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"
]
}
},
"/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"
]
}
},
2023-06-10 04:14:18 +00:00
"/person/{id}/thumbnail": {
2022-12-05 17:56:44 +00:00
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getPersonThumbnail",
2022-12-05 17:56:44 +00:00
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "id",
2022-12-05 17:56:44 +00:00
"required": true,
"in": "path",
"schema": {
"format": "uuid",
2022-12-05 17:56:44 +00:00
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"image/jpeg": {
"schema": {
"format": "binary",
"type": "string"
}
}
},
2023-06-10 04:14:18 +00:00
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Person"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/search": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "search",
"parameters": [
{
"name": "q",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
2023-06-10 04:14:18 +00:00
},
{
2023-06-10 04:14:18 +00:00
"name": "query",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "clip",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
2023-06-10 04:14:18 +00:00
"name": "type",
"required": false,
"in": "query",
"schema": {
"enum": [
"IMAGE",
"VIDEO",
"AUDIO",
"OTHER"
],
"type": "string"
}
},
2022-12-05 17:56:44 +00:00
{
2023-06-10 04:14:18 +00:00
"name": "isFavorite",
2022-12-05 17:56:44 +00:00
"required": false,
"in": "query",
"schema": {
"type": "boolean"
2022-12-05 17:56:44 +00:00
}
2023-06-10 04:14:18 +00:00
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
2022-12-05 17:56:44 +00:00
}
2023-06-10 04:14:18 +00:00
},
2022-12-05 17:56:44 +00:00
{
2023-06-10 04:14:18 +00:00
"name": "exifInfo.city",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "exifInfo.state",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "exifInfo.country",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "exifInfo.make",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "exifInfo.model",
"required": false,
"in": "query",
2022-12-05 17:56:44 +00:00
"schema": {
"type": "string"
}
2023-06-10 04:14:18 +00:00
},
{
"name": "exifInfo.projectionType",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
2023-06-10 04:14:18 +00:00
{
"name": "smartInfo.objects",
"required": false,
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "smartInfo.tags",
"required": false,
"in": "query",
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "recent",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "motion",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
2022-12-05 17:56:44 +00:00
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SearchResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Search"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/search/explore": {
"get": {
"operationId": "getExploreData",
2022-12-05 17:56:44 +00:00
"parameters": [],
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/SearchExploreResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"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": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Search"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/server-info": {
2022-12-05 17:56:44 +00:00
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getServerInfo",
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/ServerInfoResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Server Info"
2022-12-05 17:56:44 +00:00
]
}
},
"/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 04:14:18 +00:00
"/server-info/ping": {
2023-05-17 17:07:17 +00:00
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "pingServer",
2023-05-17 17:07:17 +00:00
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/ServerPingResponse"
2023-05-17 17:07:17 +00:00
}
}
},
"description": ""
2023-05-17 17:07:17 +00:00
}
},
"tags": [
2023-06-10 04:14:18 +00:00
"Server Info"
2023-05-17 17:07:17 +00:00
]
}
},
"/server-info/statistics": {
2023-05-17 17:07:17 +00:00
"get": {
"operationId": "getServerStatistics",
2023-06-10 04:14:18 +00:00
"parameters": [],
2023-05-17 17:07:17 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/ServerStatsResponseDto"
2023-05-17 17:07:17 +00:00
}
}
},
"description": ""
2023-05-17 17:07:17 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Server Info"
2023-05-17 17:07:17 +00:00
]
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"/server-info/version": {
"get": {
"operationId": "getServerVersion",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerVersionResponseDto"
2023-06-10 04:14:18 +00:00
}
2023-05-17 17:07:17 +00:00
}
},
"description": ""
2023-05-17 17:07:17 +00:00
}
},
2023-06-10 04:14:18 +00:00
"tags": [
"Server Info"
]
}
},
"/shared-link": {
2023-06-10 04:14:18 +00:00
"get": {
"operationId": "getAllSharedLinks",
"parameters": [],
2023-05-17 17:07:17 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
},
"type": "array"
2023-05-17 17:07:17 +00:00
}
}
},
"description": ""
2023-05-17 17:07:17 +00: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 17:07:17 +00:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 17:07:17 +00:00
]
}
},
"/shared-link/me": {
2023-05-17 17:07:17 +00:00
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getMySharedLink",
2023-05-17 17:07:17 +00:00
"parameters": [
{
"name": "password",
"required": false,
"in": "query",
"example": "password",
"schema": {
"type": "string"
}
},
{
"name": "token",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
2023-05-17 17:07:17 +00:00
{
2023-06-10 04:14:18 +00:00
"name": "key",
"required": false,
"in": "query",
2023-05-17 17:07:17 +00:00
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
2023-06-10 04:14:18 +00:00
"application/json": {
2023-05-17 17:07:17 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2023-05-17 17:07:17 +00:00
}
}
},
"description": ""
2023-05-17 17:07:17 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 17:07:17 +00:00
]
}
},
"/shared-link/{id}": {
"delete": {
"operationId": "removeSharedLink",
2023-05-17 17:07:17 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
2023-05-17 17:07:17 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Shared Link"
2023-05-17 17:07:17 +00:00
]
2023-06-10 04:14:18 +00:00
},
"get": {
"operationId": "getSharedLinkById",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 17:56:44 +00:00
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Shared Link"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"patch": {
"operationId": "updateSharedLink",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkEditDto"
}
}
},
"required": true
},
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
}
}
},
"description": ""
2022-12-05 17:56:44 +00: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 17:56:44 +00:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Shared Link"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/system-config": {
"get": {
"operationId": "getConfig",
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
2022-12-05 17:56:44 +00:00
"content": {
2023-06-10 04:14:18 +00:00
"application/json": {
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"System Config"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"put": {
"operationId": "updateConfig",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
2023-06-10 04:14:18 +00:00
"application/json": {
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"System Config"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/system-config/defaults": {
2022-12-05 17:56:44 +00:00
"get": {
"operationId": "getConfigDefaults",
2023-06-10 04:14:18 +00:00
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
2023-06-10 04:14:18 +00:00
"application/json": {
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"System Config"
2022-12-05 17:56:44 +00: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 04:14:18 +00:00
"/system-config/storage-template-options": {
"get": {
2023-06-10 04:14:18 +00:00
"operationId": "getStorageTemplateOptions",
"parameters": [],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
2023-06-10 04:14:18 +00:00
"application/json": {
2022-12-05 17:56:44 +00:00
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/SystemConfigTemplateStorageOptionDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"System Config"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/tag": {
"get": {
"operationId": "getAllTags",
2022-12-05 17:56:44 +00:00
"parameters": [],
"responses": {
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
"items": {
"$ref": "#/components/schemas/TagResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"post": {
"operationId": "createTag",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTagDto"
}
}
},
"required": true
},
2022-12-05 17:56:44 +00:00
"responses": {
"201": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/tag/{id}": {
"delete": {
"operationId": "deleteTag",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"get": {
"operationId": "getTagById",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 17:56:44 +00:00
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"patch": {
"operationId": "updateTag",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
2023-06-10 04:14:18 +00:00
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateTagDto"
}
}
},
"required": true
},
2022-12-05 17:56:44 +00:00
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TagResponseDto"
}
}
},
2023-06-10 04:14:18 +00:00
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
}
},
2023-06-10 04:14:18 +00:00
"/tag/{id}/assets": {
"delete": {
"operationId": "untagAssets",
2023-06-10 04:14:18 +00: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 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 17:56:44 +00:00
}
],
"tags": [
"Tag"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"get": {
"operationId": "getTagAssets",
2023-06-10 04:14:18 +00:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Tag"
]
2023-06-10 04:14:18 +00:00
},
"put": {
"operationId": "tagAssets",
"parameters": [
{
2023-06-10 04:14:18 +00:00
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2023-06-10 04:14:18 +00:00
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/AssetIdsResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"Tag"
]
2023-06-10 04:14:18 +00:00
}
},
"/user": {
"get": {
"operationId": "getAllUsers",
"parameters": [
{
"name": "isAll",
"required": true,
"in": "query",
"schema": {
"type": "boolean"
}
}
2023-06-10 04:14:18 +00:00
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"items": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
},
"type": "array"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
2023-06-10 04:14:18 +00:00
},
"post": {
2023-06-10 04:14:18 +00:00
"operationId": "createUser",
2022-12-05 17:56:44 +00:00
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/CreateUserDto"
2022-12-05 17:56:44 +00:00
}
}
},
"required": true
2022-12-05 17:56:44 +00:00
},
"responses": {
"201": {
2022-12-05 17:56:44 +00:00
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
2022-12-05 17:56:44 +00:00
]
2023-06-10 04:14:18 +00:00
},
"put": {
"operationId": "updateUser",
"parameters": [],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserDto"
}
2022-12-05 17:56:44 +00:00
}
},
"required": true
2023-06-10 04:14:18 +00:00
},
2022-12-05 17:56:44 +00:00
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 17:56:44 +00:00
}
}
},
"description": ""
2022-12-05 17:56:44 +00:00
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
2022-12-05 17:56:44 +00:00
]
}
},
"/user/info/{id}": {
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
2023-06-10 04:14:18 +00:00
"/user/me": {
"get": {
"operationId": "getMyUserInfo",
"parameters": [],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
2023-06-10 04:14:18 +00:00
"/user/profile-image": {
"delete": {
"operationId": "deleteProfileImage",
"parameters": [],
"responses": {
"204": {
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
},
"post": {
2023-06-10 04:14:18 +00:00
"operationId": "createProfileImage",
"parameters": [],
"requestBody": {
"content": {
2023-06-10 04:14:18 +00:00
"multipart/form-data": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/CreateProfileImageDto"
}
}
},
"description": "A new avatar for the user",
"required": true
},
"responses": {
2023-06-10 04:14:18 +00:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/CreateProfileImageResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/profile-image/{id}": {
2023-06-10 04:14:18 +00:00
"get": {
"operationId": "getProfileImage",
"parameters": [
{
"name": "id",
2023-06-10 04:14:18 +00:00
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 04:14:18 +00:00
],
"responses": {
2023-06-10 04:14:18 +00:00
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"type": "object"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/{id}": {
2023-06-10 04:14:18 +00:00
"delete": {
"operationId": "deleteUser",
"parameters": [
{
"name": "id",
2023-06-10 04:14:18 +00:00
"required": true,
"in": "path",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
},
"/user/{id}/restore": {
2023-06-10 04:14:18 +00:00
"post": {
"operationId": "restoreUser",
"parameters": [
{
"name": "id",
2023-06-10 04:14:18 +00:00
"required": true,
"in": "path",
"schema": {
2023-06-10 04:14:18 +00:00
"format": "uuid",
"type": "string"
}
}
],
"responses": {
2023-06-10 04:14:18 +00:00
"201": {
"content": {
"application/json": {
"schema": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
},
"description": ""
}
},
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
],
"tags": [
"User"
]
}
2023-06-10 04:14:18 +00:00
}
},
"info": {
"title": "Immich",
"description": "Immich API",
2023-11-14 04:08:18 +00:00
"version": "1.86.0",
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"schemas": {
"APIKeyCreateDto": {
2023-05-25 02:10:45 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"name": {
2023-05-25 02:10:45 +00:00
"type": "string"
}
},
"type": "object"
2023-05-25 02:10:45 +00:00
},
2023-06-10 04:14:18 +00:00
"APIKeyCreateResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"apiKey": {
"$ref": "#/components/schemas/APIKeyResponseDto"
},
"secret": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"secret",
"apiKey"
],
"type": "object"
},
"APIKeyResponseDto": {
"properties": {
"createdAt": {
"format": "date-time",
"type": "string"
},
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"name",
"createdAt",
"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": [
"id",
"createdAt",
"type",
"user",
"assetId"
],
"type": "object"
},
"ActivityStatisticsResponseDto": {
"properties": {
"comments": {
"type": "integer"
}
},
"required": [
"comments"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AddUsersDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"sharedUserIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"sharedUserIds"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AlbumCountResponseDto": {
"properties": {
"notShared": {
2023-06-10 04:14:18 +00:00
"type": "integer"
},
"owned": {
2023-06-10 04:14:18 +00:00
"type": "integer"
},
"shared": {
2023-06-10 04:14:18 +00:00
"type": "integer"
}
},
"required": [
"owned",
"shared",
"notShared"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"AlbumResponseDto": {
"properties": {
"albumName": {
"type": "string"
},
"albumThumbnailAssetId": {
"nullable": true,
2023-06-10 04:14:18 +00:00
"type": "string"
},
"assetCount": {
"type": "integer"
},
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"createdAt": {
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"format": "date-time",
"type": "string"
},
"owner": {
"$ref": "#/components/schemas/UserResponseDto"
},
"ownerId": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"shared": {
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"sharedUsers": {
"items": {
"$ref": "#/components/schemas/UserResponseDto"
},
"type": "array"
},
"startDate": {
"format": "date-time",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"assetCount",
"id",
2023-06-10 04:14:18 +00:00
"ownerId",
"albumName",
"description",
"createdAt",
"updatedAt",
2023-06-10 04:14:18 +00:00
"albumThumbnailAssetId",
"shared",
"sharedUsers",
"hasSharedLink",
2023-06-10 04:14:18 +00:00
"assets",
"owner",
"isActivityEnabled"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AllJobStatusResponseDto": {
"properties": {
"backgroundTask": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"clipEncoding": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"library": {
"$ref": "#/components/schemas/JobStatusDto"
},
"metadataExtraction": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"migration": {
"$ref": "#/components/schemas/JobStatusDto"
},
2023-06-10 04:14:18 +00:00
"objectTagging": {
"$ref": "#/components/schemas/JobStatusDto"
},
"recognizeFaces": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"search": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"sidecar": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"storageTemplateMigration": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"thumbnailGeneration": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
},
"videoConversion": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobStatusDto"
}
},
"required": [
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"clipEncoding",
"storageTemplateMigration",
"migration",
2023-06-10 04:14:18 +00:00
"backgroundTask",
"search",
"recognizeFaces",
"sidecar",
"library"
],
"type": "object"
2023-06-10 04:14:18 +00: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 07:01:14 +00:00
"AssetBulkDeleteDto": {
"properties": {
"force": {
"type": "boolean"
},
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"AssetBulkUpdateDto": {
"properties": {
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
},
"isArchived": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
2023-10-22 02:38:07 +00:00
},
"removeParent": {
"type": "boolean"
},
"stackParentId": {
"format": "uuid",
"type": "string"
}
},
"required": [
"ids"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AssetBulkUploadCheckDto": {
"properties": {
"assets": {
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckItem"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"assets"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"AssetBulkUploadCheckItem": {
"properties": {
"checksum": {
"description": "base64 or hex encoded sha1 hash",
2023-06-10 04:14:18 +00:00
"type": "string"
},
"id": {
"type": "string"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"id",
"checksum"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"AssetBulkUploadCheckResponseDto": {
"properties": {
"results": {
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckResult"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"results"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"AssetBulkUploadCheckResult": {
"properties": {
"action": {
"enum": [
"accept",
"reject"
],
"type": "string"
},
"assetId": {
"type": "string"
},
"id": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"reason": {
"enum": [
"duplicate",
"unsupported-format"
],
2023-06-10 04:14:18 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"action"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AssetFileUploadResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"duplicate": {
"type": "boolean"
},
"id": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"duplicate"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AssetIdsDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"assetIds": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"assetIds"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"AssetIdsResponseDto": {
"properties": {
"assetId": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"error": {
"enum": [
"duplicate",
"no_permission",
"not_found"
],
"type": "string"
},
"success": {
"type": "boolean"
}
},
"required": [
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"AssetResponseDto": {
"properties": {
"checksum": {
"description": "base64 encoded sha1 hash",
2023-06-10 04:14:18 +00:00
"type": "string"
},
2023-06-10 04:14:18 +00:00
"deviceAssetId": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"deviceId": {
"type": "string"
},
"duration": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"exifInfo": {
"$ref": "#/components/schemas/ExifResponseDto"
},
2023-06-10 04:14:18 +00: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 01:59:30 +00:00
},
2023-06-10 04:14:18 +00:00
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"hasMetadata": {
"type": "boolean"
},
"id": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"isArchived": {
2023-06-10 04:14:18 +00:00
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
"isFavorite": {
2023-06-10 04:14:18 +00: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 07:01:14 +00:00
"isTrashed": {
"type": "boolean"
},
"libraryId": {
"type": "string"
},
"livePhotoVideoId": {
"nullable": true,
2023-06-10 04:14:18 +00: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": {
"$ref": "#/components/schemas/PersonResponseDto"
},
"type": "array"
},
"resized": {
"type": "boolean"
2023-06-10 04:14:18 +00:00
},
"smartInfo": {
"$ref": "#/components/schemas/SmartInfoResponseDto"
},
2023-10-22 02:38:07 +00:00
"stack": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"stackCount": {
"nullable": true,
2023-10-22 02:38:07 +00:00
"type": "integer"
},
"stackParentId": {
"nullable": true,
"type": "string"
},
2023-06-10 04:14:18 +00:00
"tags": {
"items": {
"$ref": "#/components/schemas/TagResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"thumbhash": {
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"type": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"type",
2023-10-22 02:38:07 +00:00
"stackCount",
2023-06-10 04:14:18 +00:00
"deviceAssetId",
"deviceId",
"ownerId",
"libraryId",
2023-06-10 04:14:18 +00:00
"originalPath",
"originalFileName",
"resized",
"fileCreatedAt",
"fileModifiedAt",
"updatedAt",
"isFavorite",
"isArchived",
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 07:01:14 +00:00
"isTrashed",
"isOffline",
"isExternal",
"isReadOnly",
"checksum",
"id",
"thumbhash",
"localDateTime",
2023-06-10 04:14:18 +00:00
"duration",
"hasMetadata"
],
"type": "object"
},
"AssetStatsResponseDto": {
"properties": {
"images": {
"type": "integer"
},
2023-08-02 21:10:55 +00:00
"total": {
"type": "integer"
},
2023-08-02 21:10:55 +00:00
"videos": {
"type": "integer"
}
},
"required": [
"images",
"videos",
"total"
2023-08-02 21:10:55 +00:00
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AssetTypeEnum": {
"enum": [
2023-06-10 04:14:18 +00: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": [
"needsFullSync",
"ids"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"AuthDeviceResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"createdAt": {
"type": "string"
},
"current": {
"type": "boolean"
2023-06-10 04:14:18 +00:00
},
"deviceOS": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"deviceType": {
"type": "string"
},
"id": {
"type": "string"
},
"updatedAt": {
2023-06-10 04:14:18 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"createdAt",
"updatedAt",
"current",
"deviceType",
"deviceOS"
],
"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 04:14:18 +00:00
"ChangePasswordDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"newPassword": {
"example": "password",
"type": "string"
},
"password": {
"example": "password",
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"password",
"newPassword"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CheckExistingAssetsDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"deviceAssetIds": {
"items": {
"type": "string"
},
"type": "array"
},
2023-06-10 04:14:18 +00:00
"deviceId": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"deviceAssetIds",
"deviceId"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CheckExistingAssetsResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"existingIds": {
"items": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"type": "array"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"existingIds"
],
"type": "object"
},
"CitiesFile": {
"enum": [
"cities15000",
"cities5000",
"cities1000",
"cities500"
],
"type": "string"
},
"ClassificationConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"minScore": {
"type": "integer"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"minScore",
"enabled",
"modelName"
],
"type": "object"
},
"Colorspace": {
"enum": [
"srgb",
"p3"
],
"type": "string"
},
2023-06-10 04:14:18 +00:00
"CreateAlbumDto": {
"properties": {
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
"albumName"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CreateAssetDto": {
"properties": {
2023-06-10 04:14:18 +00: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 02:33:20 +00:00
},
2023-06-10 04:14:18 +00:00
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"duration": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"fileCreatedAt": {
"format": "date-time",
"type": "string"
},
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"isFavorite": {
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
2023-06-10 04:14:18 +00:00
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"libraryId": {
"format": "uuid",
"type": "string"
},
"livePhotoData": {
"format": "binary",
"type": "string"
},
"sidecarData": {
"format": "binary",
2023-06-10 04:14:18 +00:00
"type": "string"
}
},
"required": [
"assetData",
"deviceAssetId",
"deviceId",
"fileCreatedAt",
"fileModifiedAt"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"CreateLibraryDto": {
"properties": {
"exclusionPatterns": {
"items": {
"type": "string"
},
"type": "array"
},
"importPaths": {
"items": {
"type": "string"
},
"type": "array"
},
"isVisible": {
"type": "boolean"
},
"name": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/LibraryType"
}
},
"required": [
"type"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CreateProfileImageDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"file": {
"format": "binary",
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"file"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CreateProfileImageResponseDto": {
"properties": {
"profileImagePath": {
"type": "string"
},
"userId": {
2023-06-10 04:14:18 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"userId",
"profileImagePath"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CreateTagDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"name": {
"type": "string"
},
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"type",
"name"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"CreateUserDto": {
2023-03-22 02:49:19 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"email": {
"type": "string"
2023-03-22 02:49:19 +00:00
},
"externalPath": {
"nullable": true,
2023-03-22 02:49:19 +00:00
"type": "string"
},
"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 02:33:20 +00:00
},
"storageLabel": {
"nullable": true,
"type": "string"
2023-03-22 02:49:19 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"email",
"password",
"name"
],
"type": "object"
2023-03-22 02:49:19 +00:00
},
2023-06-10 04:14:18 +00:00
"CuratedLocationsResponseDto": {
2023-03-22 02:49:19 +00:00
"properties": {
"city": {
2023-06-10 04:14:18 +00:00
"type": "string"
2023-03-22 02:49:19 +00:00
},
"deviceAssetId": {
2023-06-10 04:14:18 +00:00
"type": "string"
2023-03-22 02:49:19 +00:00
},
"deviceId": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"id": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"resizePath": {
2023-06-10 04:14:18 +00:00
"type": "string"
2023-03-22 02:49:19 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"city",
"resizePath",
"deviceAssetId",
"deviceId"
],
"type": "object"
2023-03-22 02:49:19 +00:00
},
2023-06-10 04:14:18 +00:00
"CuratedObjectsResponseDto": {
2023-03-22 02:49:19 +00:00
"properties": {
"deviceAssetId": {
2023-03-22 02:49:19 +00:00
"type": "string"
},
"deviceId": {
2023-03-22 02:49:19 +00:00
"type": "string"
},
"id": {
2023-03-22 02:49:19 +00:00
"type": "string"
},
"object": {
2023-06-10 04:14:18 +00:00
"type": "string"
2023-03-22 02:49:19 +00:00
},
"resizePath": {
2023-06-10 04:14:18 +00:00
"type": "string"
2023-03-22 02:49:19 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"object",
"resizePath",
"deviceAssetId",
"deviceId"
],
"type": "object"
2023-03-22 02:49:19 +00:00
},
"DownloadArchiveInfo": {
"properties": {
2023-06-10 04:14:18 +00:00
"assetIds": {
"items": {
"type": "string"
},
"type": "array"
},
"size": {
"type": "integer"
}
},
"required": [
"size",
2023-06-10 04:14:18 +00:00
"assetIds"
],
"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": [
"totalSize",
"archives"
],
"type": "object"
},
"EntityType": {
"enum": [
"ASSET",
"ALBUM"
],
"type": "string"
},
2023-06-10 04:14:18 +00:00
"ExifResponseDto": {
"properties": {
"city": {
2023-06-10 04:14:18 +00:00
"default": null,
"nullable": true,
"type": "string"
},
"country": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
},
"dateTimeOriginal": {
"default": null,
"format": "date-time",
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
},
"description": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
},
"exifImageHeight": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
},
"exifImageWidth": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
},
"exposureTime": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"fNumber": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
2023-06-10 04:14:18 +00:00
},
"fileSizeInByte": {
"default": null,
"format": "int64",
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "integer"
2023-06-10 04:14:18 +00:00
},
"focalLength": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
2023-06-10 04:14:18 +00:00
},
"iso": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
2023-06-10 04:14:18 +00:00
},
"latitude": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
2023-06-10 04:14:18 +00:00
},
"lensModel": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"longitude": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "number"
2023-06-10 04:14:18 +00:00
},
"make": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"model": {
"default": null,
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"modifyDate": {
"default": null,
"format": "date-time",
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"orientation": {
"default": null,
2023-06-10 04:14:18 +00: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 04:29:09 +00: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 04:29:09 +00:00
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
}
},
"type": "object"
2023-06-10 04:14:18 +00:00
},
"FileChecksumDto": {
"properties": {
"filenames": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"filenames"
],
"type": "object"
},
"FileChecksumResponseDto": {
"properties": {
"checksum": {
"type": "string"
},
"filename": {
"type": "string"
}
},
"required": [
"filename",
"checksum"
],
"type": "object"
},
"FileReportDto": {
"properties": {
"extras": {
"items": {
"type": "string"
},
"type": "array"
},
"orphans": {
"items": {
"$ref": "#/components/schemas/FileReportItemDto"
},
"type": "array"
}
},
"required": [
"orphans",
"extras"
],
"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"
},
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 02:33:20 +00:00
"ImportAssetDto": {
"properties": {
"assetPath": {
"type": "string"
},
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"duration": {
"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 02:33:20 +00:00
"fileCreatedAt": {
"format": "date-time",
"type": "string"
},
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isExternal": {
"type": "boolean"
},
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 02:33:20 +00:00
"isFavorite": {
"type": "boolean"
},
"isOffline": {
"type": "boolean"
},
"isReadOnly": {
"default": true,
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 02:33:20 +00:00
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"libraryId": {
"format": "uuid",
"type": "string"
},
"sidecarPath": {
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 02:33:20 +00:00
"type": "string"
}
},
"required": [
"assetPath",
"deviceAssetId",
"deviceId",
"fileCreatedAt",
"fileModifiedAt"
],
"type": "object"
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 02:33:20 +00:00
},
2023-06-10 04:14:18 +00:00
"JobCommand": {
"enum": [
"start",
"pause",
"resume",
"empty"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"JobCommandDto": {
"properties": {
"command": {
"$ref": "#/components/schemas/JobCommand"
},
2023-06-10 04:14:18 +00:00
"force": {
"type": "boolean"
}
},
"required": [
"command",
"force"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"JobCountsDto": {
"properties": {
"active": {
"type": "integer"
},
2023-06-10 04:14:18 +00:00
"completed": {
"type": "integer"
},
2023-06-10 04:14:18 +00:00
"delayed": {
"type": "integer"
},
"failed": {
2023-06-10 04:14:18 +00:00
"type": "integer"
},
2023-06-10 04:14:18 +00:00
"paused": {
"type": "integer"
},
"waiting": {
"type": "integer"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"active",
"completed",
"failed",
"delayed",
"waiting",
"paused"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"JobName": {
"enum": [
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"recognizeFaces",
"clipEncoding",
"backgroundTask",
"storageTemplateMigration",
"migration",
2023-06-10 04:14:18 +00:00
"search",
"sidecar",
"library"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"JobSettingsDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"concurrency": {
"type": "integer"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"concurrency"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"JobStatusDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"jobCounts": {
"$ref": "#/components/schemas/JobCountsDto"
},
"queueStatus": {
"$ref": "#/components/schemas/QueueStatusDto"
}
},
"required": [
2023-06-10 04:14:18 +00: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": [
"type",
"assetCount",
"id",
"ownerId",
"name",
"importPaths",
"exclusionPatterns",
"createdAt",
"updatedAt",
"refreshedAt"
],
"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",
"videos",
"total",
"usage"
],
"type": "object"
},
"LibraryType": {
"enum": [
"UPLOAD",
"EXTERNAL"
],
"type": "string"
},
2023-06-10 04:14:18 +00:00
"LoginCredentialDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"email": {
"example": "testuser@email.com",
"type": "string"
2023-06-10 04:14:18 +00:00
},
"password": {
"example": "password",
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"email",
"password"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"LoginResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"accessToken": {
"type": "string"
},
"isAdmin": {
"type": "boolean"
},
"name": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"profileImagePath": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"shouldChangePassword": {
"type": "boolean"
},
"userEmail": {
"type": "string"
},
"userId": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"accessToken",
"userId",
"userEmail",
"name",
2023-06-10 04:14:18 +00:00
"profileImagePath",
"isAdmin",
"shouldChangePassword"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"LogoutResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"redirectUri": {
"type": "string"
},
"successful": {
"type": "boolean"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"successful",
"redirectUri"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"MapMarkerResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"id": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"lat": {
"format": "double",
"type": "number"
},
2023-06-10 04:14:18 +00:00
"lon": {
"format": "double",
"type": "number"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id",
"lat",
"lon"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"MapTheme": {
"enum": [
"light",
"dark"
],
"type": "string"
},
"MemoryLaneResponseDto": {
"properties": {
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"title": {
"type": "string"
}
},
"required": [
"title",
"assets"
],
"type": "object"
},
"MergePersonDto": {
"properties": {
"ids": {
"items": {
"format": "uuid",
"type": "string"
},
"type": "array"
}
},
"required": [
"ids"
],
"type": "object"
},
"ModelType": {
"enum": [
"image-classification",
"facial-recognition",
"clip"
],
"type": "string"
},
"OAuthAuthorizeResponseDto": {
"properties": {
"url": {
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"OAuthCallbackDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"url": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"url"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"OAuthConfigDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"redirectUri": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"redirectUri"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"OAuthConfigResponseDto": {
"properties": {
"autoLaunch": {
"type": "boolean"
},
"buttonText": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"enabled": {
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"passwordLoginEnabled": {
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"url": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"enabled",
"passwordLoginEnabled"
],
"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"
},
"externalPath": {
"nullable": true,
"type": "string"
},
"id": {
"type": "string"
},
"inTimeline": {
"type": "boolean"
},
"isAdmin": {
"type": "boolean"
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"oauthId": {
"type": "string"
},
"profileImagePath": {
"type": "string"
},
"shouldChangePassword": {
"type": "boolean"
},
"storageLabel": {
"nullable": true,
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"avatarColor",
"id",
"name",
"email",
"profileImagePath",
"storageLabel",
"externalPath",
"shouldChangePassword",
"isAdmin",
"createdAt",
"deletedAt",
"updatedAt",
"oauthId"
],
"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": {
"people": {
"items": {
"$ref": "#/components/schemas/PersonResponseDto"
},
"type": "array"
},
"total": {
"type": "integer"
},
"visible": {
"type": "integer"
}
},
"required": [
"total",
"visible",
"people"
],
"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"
},
2023-06-10 04:14:18 +00:00
"PersonResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"birthDate": {
"format": "date",
"nullable": true,
"type": "string"
},
2023-06-10 04:14:18 +00:00
"id": {
"type": "string"
2022-12-05 17:56:44 +00:00
},
"isHidden": {
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"name": {
"type": "string"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"thumbnailPath": {
"type": "string"
2022-12-05 17:56:44 +00:00
}
},
"required": [
"birthDate",
2023-06-10 04:14:18 +00:00
"id",
"name",
"thumbnailPath",
"isHidden"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"PersonStatisticsResponseDto": {
"properties": {
"assets": {
"type": "integer"
}
},
"required": [
"assets"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"PersonUpdateDto": {
2022-12-05 17:56:44 +00: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 17:56:44 +00:00
}
},
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"QueueStatusDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"isActive": {
2022-12-05 17:56:44 +00:00
"type": "boolean"
},
2023-06-10 04:14:18 +00:00
"isPaused": {
2022-12-05 17:56:44 +00:00
"type": "boolean"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"isActive",
"isPaused"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"ReactionLevel": {
"enum": [
"album",
"asset"
],
"type": "string"
},
"ReactionType": {
"enum": [
"comment",
"like"
],
"type": "string"
},
"RecognitionConfig": {
"properties": {
"enabled": {
"type": "boolean"
},
"maxDistance": {
"type": "integer"
},
"minFaces": {
"type": "integer"
},
"minScore": {
"type": "integer"
},
"modelName": {
"type": "string"
},
"modelType": {
"$ref": "#/components/schemas/ModelType"
}
},
"required": [
"minScore",
"maxDistance",
"minFaces",
"enabled",
"modelName"
],
"type": "object"
},
"ScanLibraryDto": {
"properties": {
"refreshAllFiles": {
"default": false,
"type": "boolean"
},
"refreshModifiedFiles": {
"type": "boolean"
}
},
"type": "object"
},
2023-06-10 04:14:18 +00:00
"SearchAlbumResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"count": {
"type": "integer"
},
"facets": {
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
},
"type": "array"
},
2023-06-10 04:14:18 +00:00
"items": {
"items": {
"$ref": "#/components/schemas/AlbumResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"total": {
"type": "integer"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"total",
"count",
"items",
"facets"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchAssetDto": {
2023-05-17 17:07:17 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"searchTerm": {
2023-05-17 17:07:17 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"searchTerm"
],
"type": "object"
2023-05-17 17:07:17 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchAssetResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"count": {
"type": "integer"
},
"facets": {
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
},
"type": "array"
},
2023-06-10 04:14:18 +00:00
"items": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
},
"total": {
"type": "integer"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"total",
"count",
"items",
"facets"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchExploreItem": {
"properties": {
2023-06-10 04:14:18 +00:00
"data": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"value": {
"type": "string"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"value",
"data"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchExploreResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"fieldName": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"items": {
"items": {
"$ref": "#/components/schemas/SearchExploreItem"
},
"type": "array"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"fieldName",
"items"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchFacetCountResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"count": {
"type": "integer"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"value": {
2022-12-05 17:56:44 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"count",
"value"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"SearchFacetResponseDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"counts": {
"items": {
"$ref": "#/components/schemas/SearchFacetCountResponseDto"
},
"type": "array"
},
"fieldName": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"fieldName",
"counts"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SearchResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"albums": {
"$ref": "#/components/schemas/SearchAlbumResponseDto"
},
2023-06-10 04:14:18 +00:00
"assets": {
"$ref": "#/components/schemas/SearchAssetResponseDto"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"albums",
"assets"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"ServerConfigDto": {
"properties": {
"isInitialized": {
"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 07:01:14 +00:00
},
"trashDays": {
"type": "integer"
}
},
"required": [
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 07:01:14 +00:00
"trashDays",
"oauthButtonText",
"loginPageMessage",
"isInitialized"
],
"type": "object"
},
"ServerFeaturesDto": {
"properties": {
"clipEncode": {
"type": "boolean"
},
"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"
},
"tagImage": {
"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 07:01:14 +00:00
},
"trash": {
"type": "boolean"
}
},
"required": [
"clipEncode",
"configFile",
"facialRecognition",
"map",
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 07:01:14 +00:00
"trash",
"reverseGeocoding",
"oauth",
"oauthAutoLaunch",
"passwordLogin",
"sidecar",
"search",
"tagImage"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"ServerInfoResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"diskAvailable": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"diskAvailableRaw": {
"format": "int64",
"type": "integer"
2023-06-10 04:14:18 +00:00
},
"diskSize": {
2022-12-05 17:56:44 +00:00
"type": "string"
},
"diskSizeRaw": {
"format": "int64",
"type": "integer"
},
"diskUsagePercentage": {
"format": "float",
"type": "number"
},
2023-06-10 04:14:18 +00:00
"diskUse": {
"type": "string"
},
"diskUseRaw": {
"format": "int64",
"type": "integer"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"diskSizeRaw",
"diskUseRaw",
"diskAvailableRaw",
"diskUsagePercentage",
"diskSize",
"diskUse",
"diskAvailable"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"ServerMediaTypesResponseDto": {
"properties": {
"image": {
"items": {
"type": "string"
},
"type": "array"
},
"sidecar": {
"items": {
"type": "string"
},
"type": "array"
},
"video": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"video",
"image",
"sidecar"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"ServerPingResponse": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"res": {
"example": "pong",
2023-06-10 04:14:18 +00:00
"readOnly": true,
"type": "string"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"res"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"ServerStatsResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"photos": {
"default": 0,
"type": "integer"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"usage": {
"default": 0,
"format": "int64",
"type": "integer"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00: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 17:56:44 +00:00
}
},
"required": [
"photos",
"videos",
2023-06-10 04:14:18 +00:00
"usage",
"usageByUser"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"ServerThemeDto": {
"properties": {
"customCss": {
"type": "string"
}
},
"required": [
"customCss"
],
"type": "object"
},
"ServerVersionResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00: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 17:30:53 +00:00
},
2023-06-10 04:14:18 +00:00
"minor": {
"type": "integer"
},
2023-06-10 04:14:18 +00:00
"patch": {
"type": "integer"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"major",
"minor",
"patch"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"SharedLinkCreateDto": {
"properties": {
"albumId": {
"format": "uuid",
"type": "string"
},
"allowDownload": {
"default": true,
"type": "boolean"
},
"allowUpload": {
"default": false,
"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 04:14:18 +00:00
"SharedLinkResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"album": {
"$ref": "#/components/schemas/AlbumResponseDto"
2023-06-10 04:14:18 +00:00
},
"allowDownload": {
"type": "boolean"
2023-06-10 04:14:18 +00:00
},
"allowUpload": {
"type": "boolean"
2023-06-10 04:14:18 +00:00
},
"assets": {
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"description": {
"nullable": true,
"type": "string"
},
2023-06-10 04:14:18 +00:00
"expiresAt": {
"format": "date-time",
"nullable": true,
"type": "string"
2023-06-10 04:14:18 +00:00
},
"id": {
"type": "string"
2022-12-05 17:56:44 +00:00
},
"key": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"password": {
"nullable": true,
"type": "string"
},
"showMetadata": {
2022-12-05 17:56:44 +00:00
"type": "boolean"
},
"token": {
"nullable": true,
"type": "string"
},
"type": {
"$ref": "#/components/schemas/SharedLinkType"
},
"userId": {
"type": "string"
2022-12-05 17:56:44 +00:00
}
2023-06-10 04:14:18 +00:00
},
"required": [
"type",
"id",
"description",
"password",
2023-06-10 04:14:18 +00:00
"userId",
"key",
"createdAt",
"expiresAt",
"assets",
"allowUpload",
"allowDownload",
"showMetadata"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"SharedLinkType": {
"enum": [
"ALBUM",
"INDIVIDUAL"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"SignUpDto": {
"properties": {
"email": {
"example": "testuser@email.com",
"type": "string"
2023-06-10 04:14:18 +00:00
},
"name": {
"example": "Admin",
"type": "string"
2023-06-10 04:14:18 +00:00
},
"password": {
"example": "password",
"type": "string"
2023-06-10 04:14:18 +00:00
}
},
"required": [
"email",
"password",
"name"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SmartInfoResponseDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"objects": {
2023-06-10 04:14:18 +00:00
"items": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"nullable": true,
"type": "array"
},
"tags": {
2022-12-05 17:56:44 +00:00
"items": {
"type": "string"
},
"nullable": true,
"type": "array"
2022-12-05 17:56:44 +00:00
}
},
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SystemConfigDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"ffmpeg": {
"$ref": "#/components/schemas/SystemConfigFFmpegDto"
2022-12-05 17:56:44 +00:00
},
"job": {
"$ref": "#/components/schemas/SystemConfigJobDto"
},
"library": {
"$ref": "#/components/schemas/SystemConfigLibraryDto"
},
"machineLearning": {
"$ref": "#/components/schemas/SystemConfigMachineLearningDto"
},
"map": {
"$ref": "#/components/schemas/SystemConfigMapDto"
},
"newVersionCheck": {
"$ref": "#/components/schemas/SystemConfigNewVersionCheckDto"
},
2023-06-10 04:14:18 +00:00
"oauth": {
"$ref": "#/components/schemas/SystemConfigOAuthDto"
},
"passwordLogin": {
"$ref": "#/components/schemas/SystemConfigPasswordLoginDto"
},
"reverseGeocoding": {
"$ref": "#/components/schemas/SystemConfigReverseGeocodingDto"
},
2023-06-10 04:14:18 +00: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 07:01:14 +00:00
},
"trash": {
"$ref": "#/components/schemas/SystemConfigTrashDto"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"ffmpeg",
"machineLearning",
"map",
"newVersionCheck",
2023-06-10 04:14:18 +00:00
"oauth",
"passwordLogin",
"reverseGeocoding",
2023-06-10 04:14:18 +00:00
"storageTemplate",
"job",
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 07:01:14 +00:00
"thumbnail",
"trash",
"theme",
"library"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SystemConfigFFmpegDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"accel": {
"$ref": "#/components/schemas/TranscodeHWAccel"
},
"bframes": {
"type": "integer"
},
"cqMode": {
"$ref": "#/components/schemas/CQMode"
},
2023-06-10 04:14:18 +00:00
"crf": {
"type": "integer"
},
"gopSize": {
"type": "integer"
},
"maxBitrate": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"npl": {
"type": "integer"
},
"preset": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"refs": {
"type": "integer"
},
2023-06-10 04:14:18 +00:00
"targetAudioCodec": {
"$ref": "#/components/schemas/AudioCodec"
},
2023-06-10 04:14:18 +00: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 04:14:18 +00:00
},
"twoPass": {
"type": "boolean"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"crf",
"threads",
"targetVideoCodec",
"targetAudioCodec",
"bframes",
"refs",
"gopSize",
"npl",
"cqMode",
"transcode",
"accel",
"tonemap",
"preset",
2023-06-10 04:14:18 +00:00
"targetResolution",
"maxBitrate",
"temporalAQ",
"twoPass"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SystemConfigJobDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"backgroundTask": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 17:56:44 +00:00
},
"clipEncoding": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"library": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"metadataExtraction": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"migration": {
"$ref": "#/components/schemas/JobSettingsDto"
},
2023-06-10 04:14:18 +00:00
"objectTagging": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"recognizeFaces": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"search": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"sidecar": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"storageTemplateMigration": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"thumbnailGeneration": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
},
"videoConversion": {
2023-06-10 04:14:18 +00:00
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"clipEncoding",
"storageTemplateMigration",
"migration",
2023-06-10 04:14:18 +00:00
"backgroundTask",
"search",
"recognizeFaces",
"sidecar",
"library"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"SystemConfigLibraryDto": {
"properties": {
"scan": {
"$ref": "#/components/schemas/SystemConfigLibraryScanDto"
}
},
"required": [
"scan"
],
"type": "object"
},
"SystemConfigLibraryScanDto": {
"properties": {
"cronExpression": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled",
"cronExpression"
],
"type": "object"
},
"SystemConfigMachineLearningDto": {
"properties": {
"classification": {
"$ref": "#/components/schemas/ClassificationConfig"
},
"clip": {
"$ref": "#/components/schemas/CLIPConfig"
},
"enabled": {
"type": "boolean"
},
"facialRecognition": {
"$ref": "#/components/schemas/RecognitionConfig"
},
"url": {
"type": "string"
}
},
"required": [
"enabled",
"url",
"classification",
"clip",
"facialRecognition"
],
"type": "object"
},
"SystemConfigMapDto": {
"properties": {
"darkStyle": {
"type": "string"
},
"enabled": {
"type": "boolean"
},
"lightStyle": {
"type": "string"
}
},
"required": [
"enabled",
"lightStyle",
"darkStyle"
],
"type": "object"
},
"SystemConfigNewVersionCheckDto": {
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"SystemConfigOAuthDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"autoLaunch": {
2023-06-10 04:14:18 +00:00
"type": "boolean"
2022-12-05 17:56:44 +00:00
},
"autoRegister": {
"type": "boolean"
},
"buttonText": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"enabled": {
2023-06-10 04:14:18 +00:00
"type": "boolean"
},
"issuerUrl": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"mobileOverrideEnabled": {
"type": "boolean"
},
"mobileRedirectUri": {
2022-12-05 17:56:44 +00:00
"type": "string"
},
"scope": {
"type": "string"
},
"storageLabelClaim": {
"type": "string"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"enabled",
"issuerUrl",
"clientId",
"clientSecret",
"scope",
"storageLabelClaim",
2023-06-10 04:14:18 +00:00
"buttonText",
"autoRegister",
"autoLaunch",
"mobileOverrideEnabled",
"mobileRedirectUri"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"SystemConfigPasswordLoginDto": {
2022-12-05 17:56:44 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"enabled": {
"type": "boolean"
2022-12-05 17:56:44 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"enabled"
],
"type": "object"
2022-12-05 17:56:44 +00:00
},
"SystemConfigReverseGeocodingDto": {
"properties": {
"citiesFileOverride": {
"$ref": "#/components/schemas/CitiesFile"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"citiesFileOverride",
"enabled"
],
"type": "object"
},
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
"properties": {
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
},
2023-06-10 04:14:18 +00: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 21:08:21 +00: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 21:08:21 +00:00
"items": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"hourOptions": {
2023-06-10 04:14:18 +00:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"minuteOptions": {
2023-06-10 04:14:18 +00:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"monthOptions": {
2023-06-10 04:14:18 +00:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"presetOptions": {
2023-06-10 04:14:18 +00:00
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"secondOptions": {
"items": {
"type": "string"
},
"type": "array"
2023-06-10 04:14:18 +00:00
},
"weekOptions": {
"items": {
"type": "string"
},
"type": "array"
},
"yearOptions": {
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
}
},
"required": [
2023-06-10 04:14:18 +00:00
"yearOptions",
"monthOptions",
"weekOptions",
2023-06-10 04:14:18 +00:00
"dayOptions",
"hourOptions",
"minuteOptions",
"secondOptions",
"presetOptions"
],
"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 21:08:21 +00: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": [
"webpSize",
"jpegSize",
"quality",
"colorspace"
],
"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 07:01:14 +00:00
"SystemConfigTrashDto": {
"properties": {
"days": {
"type": "integer"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"days",
"enabled"
],
"type": "object"
},
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
"properties": {
"id": {
"type": "string"
},
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
},
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
},
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"type",
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 21:08:21 +00:00
"id",
2023-06-10 04:14:18 +00:00
"name",
"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 21:08:21 +00:00
},
2023-06-10 04:14:18 +00:00
"TagTypeEnum": {
"enum": [
"OBJECT",
"FACE",
"CUSTOM"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"ThumbnailFormat": {
"enum": [
"JPEG",
"WEBP"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"TimeBucketResponseDto": {
"properties": {
"count": {
"type": "integer"
},
"timeBucket": {
"type": "string"
}
},
"required": [
"timeBucket",
"count"
],
"type": "object"
},
"TimeBucketSize": {
2023-06-10 04:14:18 +00:00
"enum": [
"DAY",
"MONTH"
],
"type": "string"
},
"ToneMapping": {
"enum": [
"hable",
"mobius",
"reinhard",
"disabled"
],
"type": "string"
2023-06-10 04:14:18 +00:00
},
"TranscodeHWAccel": {
"enum": [
"nvenc",
"qsv",
"vaapi",
"rkmpp",
"disabled"
],
"type": "string"
},
"TranscodePolicy": {
"enum": [
"all",
"optimal",
"required",
"disabled"
],
"type": "string"
},
2023-06-10 04:14:18 +00: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 21:08:21 +00:00
"properties": {
2023-06-10 04:14:18 +00:00
"albumName": {
"type": "string"
},
"albumThumbnailAssetId": {
"format": "uuid",
"type": "string"
},
"description": {
"type": "string"
},
"isActivityEnabled": {
"type": "boolean"
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 21:08:21 +00: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 21:08:21 +00:00
},
2023-06-10 04:14:18 +00:00
"UpdateAssetDto": {
"properties": {
"description": {
"type": "string"
},
"isArchived": {
"type": "boolean"
},
"isFavorite": {
"type": "boolean"
}
},
"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 02:38:07 +00:00
"UpdateStackParentDto": {
"properties": {
"newParentId": {
"format": "uuid",
"type": "string"
},
"oldParentId": {
"format": "uuid",
"type": "string"
}
},
"required": [
"oldParentId",
"newParentId"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"UpdateTagDto": {
"properties": {
2023-06-10 04:14:18 +00:00
"name": {
"type": "string"
}
},
"type": "object"
},
2023-06-10 04:14:18 +00:00
"UpdateUserDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
2023-06-10 04:14:18 +00:00
"email": {
"type": "string"
},
"externalPath": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"id": {
"format": "uuid",
2023-06-10 04:14:18 +00:00
"type": "string"
},
"isAdmin": {
"type": "boolean"
2023-06-10 04:14:18 +00:00
},
"memoriesEnabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"password": {
"type": "string"
2023-06-10 04:14:18 +00:00
},
"shouldChangePassword": {
"type": "boolean"
},
"storageLabel": {
"type": "string"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"id"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"UsageByUserDto": {
2022-12-05 17:56:44 +00:00
"properties": {
"photos": {
"type": "integer"
},
"usage": {
"format": "int64",
"type": "integer"
2022-12-05 17:56:44 +00:00
},
"userId": {
2023-06-10 04:14:18 +00:00
"type": "string"
},
"userName": {
"type": "string"
2022-12-05 17:56:44 +00:00
},
2023-06-10 04:14:18 +00:00
"videos": {
2022-12-05 17:56:44 +00:00
"type": "integer"
}
},
"required": [
2023-06-10 04:14:18 +00:00
"userId",
"userName",
2023-06-10 04:14:18 +00:00
"photos",
"videos",
"usage"
],
"type": "object"
2022-12-05 17:56:44 +00: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",
"id",
"name",
"email",
"profileImagePath"
],
"type": "object"
},
2023-06-10 04:14:18 +00:00
"UserResponseDto": {
"properties": {
"avatarColor": {
"$ref": "#/components/schemas/UserAvatarColor"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"deletedAt": {
"format": "date-time",
"nullable": true,
2023-06-10 04:14:18 +00:00
"type": "string"
},
"email": {
"type": "string"
},
"externalPath": {
"nullable": true,
"type": "string"
},
"id": {
2023-06-10 04:14:18 +00: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 02:33:20 +00:00
},
2023-06-10 04:14:18 +00:00
"profileImagePath": {
"type": "string"
},
2023-06-10 04:14:18 +00:00
"shouldChangePassword": {
"type": "boolean"
},
"storageLabel": {
"nullable": true,
2023-06-10 04:14:18 +00:00
"type": "string"
},
2023-06-10 04:14:18 +00:00
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"avatarColor",
2023-06-10 04:14:18 +00:00
"id",
"name",
"email",
"profileImagePath",
2023-06-10 04:14:18 +00:00
"storageLabel",
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 02:33:20 +00:00
"externalPath",
2023-06-10 04:14:18 +00:00
"shouldChangePassword",
"isAdmin",
"createdAt",
"deletedAt",
"updatedAt",
"oauthId"
],
"type": "object"
2023-06-10 04:14:18 +00:00
},
"ValidateAccessTokenResponseDto": {
"properties": {
"authStatus": {
"type": "boolean"
}
},
"required": [
"authStatus"
],
"type": "object"
},
"VideoCodec": {
"enum": [
"h264",
"hevc",
"vp9"
],
"type": "string"
2022-12-05 17:56:44 +00:00
}
}
}
}