1
0
mirror of https://github.com/immich-app/immich.git synced 2024-12-04 10:34:56 +02:00
immich/server/immich-openapi-specs.json

6810 lines
146 KiB
JSON
Raw Normal View History

2022-12-05 19:56:44 +02:00
{
"openapi": "3.0.0",
"paths": {
"/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": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"post": {
"operationId": "createAlbum",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateAlbumDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/album/count": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getAlbumCount",
2023-06-10 06:14:18 +02:00
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumCountResponseDto"
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/album/{id}": {
"patch": {
"operationId": "updateAlbumInfo",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateAlbumDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
2023-05-26 15:04:09 +02:00
"delete": {
"operationId": "deleteAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
2023-05-26 15:04:09 +02:00
"description": ""
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
2023-05-26 15:04:09 +02:00
"get": {
"operationId": "getAlbumInfo",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-05-26 15:04:09 +02:00
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-05-26 15:04:09 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/album/{id}/assets": {
"put": {
2023-06-10 06:14:18 +02:00
"operationId": "addAssetsToAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 06:14:18 +02:00
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AddAssetsDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AddAssetsResponseDto"
}
}
}
}
},
"tags": [
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
2023-06-10 06:14:18 +02:00
"operationId": "removeAssetFromAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/RemoveAssetsDto"
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/album/{id}/user/{userId}": {
"delete": {
"operationId": "removeUserFromAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 06:14:18 +02:00
},
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/album/{id}/users": {
"put": {
2023-06-10 06:14:18 +02:00
"operationId": "addUsersToAlbum",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AddUsersDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AlbumResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Album"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/api-key": {
"post": {
"operationId": "createKey",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyCreateDto"
}
}
}
2023-06-10 06:14:18 +02:00
},
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/APIKeyCreateResponseDto"
}
}
}
}
},
"tags": [
"API Key"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getKeys",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"API Key"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/api-key/{id}": {
"get": {
"operationId": "getKey",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"API Key"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "updateKey",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/APIKeyUpdateDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/APIKeyResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"API Key"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"delete": {
2023-06-10 06:14:18 +02:00
"operationId": "deleteKey",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"API Key"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset": {
"get": {
"operationId": "getAllAssets",
"description": "Get all AssetEntity belong to the user",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 06:14:18 +02:00
},
{
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
"name": "withoutThumbs",
"required": false,
"in": "query",
"description": "Include assets without thumbnails",
"schema": {
"type": "boolean"
}
},
{
"name": "skip",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
{
"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 06:14:18 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
"operationId": "deleteAsset",
"parameters": [],
2023-06-10 06:14:18 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DeleteAssetDto"
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/DeleteAssetResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/assetById/{id}": {
"get": {
"operationId": "getAssetById",
"description": "Get a single asset's information",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/bulk-upload-check": {
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "bulkUploadCheck",
"description": "Checks if assets exist by checksums",
"parameters": [],
2023-06-10 06:14:18 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetBulkUploadCheckDto"
}
2022-12-05 19:56:44 +02:00
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetBulkUploadCheckResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/check": {
"post": {
"operationId": "checkDuplicateAsset",
"description": "Check duplicated asset before uploading - for Web upload used",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CheckDuplicateAssetDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CheckDuplicateAssetResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/count-by-time-bucket": {
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "getAssetCountByTimeBucket",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/GetAssetCountByTimeBucketDto"
}
}
}
},
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetCountByTimeBucketResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/count-by-user-id": {
"get": {
"operationId": "getAssetCountByUserId",
2022-12-05 19:56:44 +02:00
"parameters": [],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetCountByUserIdResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/curated-locations": {
"get": {
"operationId": "getCuratedLocations",
2022-12-05 19:56:44 +02:00
"parameters": [],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/CuratedLocationsResponseDto"
}
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/curated-objects": {
"get": {
"operationId": "getCuratedObjects",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/CuratedObjectsResponseDto"
}
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
"/asset/download": {
"get": {
"operationId": "getDownloadInfo",
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
"parameters": [
{
"name": "assetIds",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "array",
"items": {
"type": "string"
}
}
},
{
"name": "albumId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "userId",
"required": false,
"in": "query",
"schema": {
"format": "uuid",
"type": "string"
}
},
{
"name": "archiveSize",
"required": false,
"in": "query",
"schema": {
"type": "number"
}
},
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
{
2023-06-10 06:14:18 +02:00
"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 19:30:53 +02:00
"in": "query",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"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 19:30:53 +02: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 19:30:53 +02: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 19:30:53 +02: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 19:30:53 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"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 19:30:53 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"post": {
"operationId": "downloadArchive",
2023-06-10 06:14:18 +02: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 19:30:53 +02:00
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
}
},
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"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 19:30:53 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"type": "string",
"format": "binary"
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
}
}
2023-06-10 06:14:18 +02:00
},
"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 19:30:53 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"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 19:30:53 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/asset/download/{id}": {
"post": {
2023-06-10 06:14:18 +02: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 19:30:53 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
2023-06-10 06:14:18 +02: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 19:30:53 +02:00
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"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 19:30:53 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/exist": {
"post": {
"operationId": "checkExistingAssets",
"description": "Checks if multiple assets exist on the server and returns all existing - used by background backup",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsDto"
}
}
2023-06-10 06:14:18 +02:00
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CheckExistingAssetsResponseDto"
}
}
}
2023-06-10 06:14:18 +02:00
}
},
"tags": [
"Asset"
],
"security": [
{
2023-06-10 06:14:18 +02:00
"bearer": []
},
{
2023-06-10 06:14:18 +02:00
"cookie": []
},
{
2023-06-10 06:14:18 +02:00
"api_key": []
}
]
}
},
"/asset/file/{id}": {
"get": {
"operationId": "serveFile",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "isThumb",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"title": "Is serve thumbnail (resize) file",
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "isWeb",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"title": "Is request made from web",
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
2023-06-10 06:14:18 +02:00
}
],
"responses": {
"200": {
"content": {
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"tags": [
"Asset"
],
"security": [
{
2023-06-10 06:14:18 +02:00
"bearer": []
},
{
2023-06-10 06:14:18 +02:00
"cookie": []
},
{
2023-06-10 06:14:18 +02:00
"api_key": []
}
]
}
},
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"/asset/import": {
"post": {
"operationId": "importFile",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ImportAssetDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetFileUploadResponseDto"
}
}
}
}
},
"tags": [
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/map-marker": {
"get": {
"operationId": "getMapMarkers",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "isFavorite",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "fileCreatedAfter",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "fileCreatedBefore",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/MapMarkerResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/asset/memory-lane": {
"get": {
"operationId": "getMemoryLane",
"parameters": [
{
"name": "timestamp",
"required": true,
"in": "query",
"description": "Get pictures for +24 hours from this time going back x years",
"schema": {
"format": "date-time",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MemoryLaneResponseDto"
}
}
}
}
}
},
"tags": [
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/search": {
"post": {
"operationId": "searchAsset",
"parameters": [],
2023-06-10 06:14:18 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SearchAssetDto"
}
}
}
},
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/search-terms": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAssetSearchTerms",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/stat/archive": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getArchivedAssetCountByUserId",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetCountByUserIdResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/thumbnail/{id}": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAssetThumbnail",
"parameters": [
2023-06-10 06:14:18 +02: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": {
"type": "string",
"format": "binary"
}
},
"image/webp": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/time-bucket": {
"post": {
"operationId": "getAssetByTimeBucket",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAssetByTimeBucketDto"
}
}
}
2023-06-10 06:14:18 +02:00
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/asset/upload": {
"post": {
"operationId": "uploadFile",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
2023-06-10 06:14:18 +02:00
"description": "Asset Upload Information",
"content": {
2023-06-10 06:14:18 +02:00
"multipart/form-data": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateAssetDto"
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetFileUploadResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/asset/{deviceId}": {
"get": {
"operationId": "getUserAssetsByDeviceId",
"description": "Get all asset of a device that are in the database, ID only.",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "deviceId",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"tags": [
"Asset"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/asset/{id}": {
"put": {
"operationId": "updateAsset",
"description": "Update an asset",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateAssetDto"
}
}
}
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Asset"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
}
},
"/auth/admin-sign-up": {
"post": {
"operationId": "adminSignUp",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SignUpDto"
}
}
}
},
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AdminSignupResponseDto"
}
}
}
},
"400": {
"description": "The server already has an admin"
}
},
"tags": [
"Authentication"
]
}
},
"/auth/change-password": {
"post": {
"operationId": "changePassword",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangePasswordDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
],
"security": [
2022-12-05 19:56:44 +02:00
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/auth/devices": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAuthDevices",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/AuthDeviceResponseDto"
}
}
}
2022-12-05 19:56:44 +02:00
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
"operationId": "logoutAuthDevices",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": ""
}
},
"tags": [
"Authentication"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/auth/devices/{id}": {
"delete": {
"operationId": "logoutAuthDevice",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
"200": {
"description": ""
}
2022-12-05 19:56:44 +02:00
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/auth/login": {
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "login",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/LoginCredentialDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/LoginResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
]
}
},
"/auth/logout": {
"post": {
"operationId": "logout",
"parameters": [],
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LogoutResponseDto"
}
}
}
}
},
"tags": [
"Authentication"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/auth/validateToken": {
"post": {
"operationId": "validateAccessToken",
"parameters": [],
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ValidateAccessTokenResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Authentication"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/jobs": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAllJobsStatus",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AllJobStatusResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Job"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/jobs/{id}": {
2023-06-10 06:14:18 +02:00
"put": {
"operationId": "sendJobCommand",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobName"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobCommandDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/JobStatusDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Job"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/oauth/callback": {
"post": {
"operationId": "callback",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginResponseDto"
}
}
}
}
},
"tags": [
"OAuth"
]
}
},
"/oauth/config": {
"post": {
"operationId": "generateConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthConfigDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthConfigResponseDto"
}
}
}
}
},
"tags": [
"OAuth"
]
}
},
"/oauth/link": {
"post": {
"operationId": "link",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OAuthCallbackDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
2023-06-10 06:14:18 +02:00
},
"tags": [
"OAuth"
],
2023-06-10 06:14:18 +02:00
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/oauth/mobile-redirect": {
"get": {
"operationId": "mobileRedirect",
"parameters": [],
"responses": {
"200": {
"description": ""
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"OAuth"
]
}
},
"/oauth/unlink": {
"post": {
"operationId": "unlink",
"parameters": [],
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
"OAuth"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/partner": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getPartners",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "direction",
"required": true,
2023-06-10 06:14:18 +02:00
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"enum": [
"shared-by",
"shared-with"
],
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Partner"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/partner/{id}": {
"post": {
"operationId": "createPartner",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Partner"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"delete": {
2023-06-10 06:14:18 +02:00
"operationId": "removePartner",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2023-06-10 06:14:18 +02:00
"responses": {
"200": {
"description": ""
}
},
2023-06-10 06:14:18 +02:00
"tags": [
"Partner"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/person": {
"get": {
"operationId": "getAllPeople",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Person"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/person/{id}": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getPerson",
2022-12-05 19:56:44 +02:00
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
2022-12-05 19:56:44 +02:00
"required": true,
2023-06-10 06:14:18 +02:00
"in": "path",
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
],
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Person"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
},
2023-06-10 06:14:18 +02:00
"put": {
"operationId": "updatePerson",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonUpdateDto"
2022-12-05 19:56:44 +02:00
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/PersonResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Person"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
}
},
"/person/{id}/assets": {
"get": {
"operationId": "getPersonAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Person"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/person/{id}/thumbnail": {
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getPersonThumbnail",
2022-12-05 19:56:44 +02:00
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
2022-12-05 19:56:44 +02:00
"required": true,
"in": "path",
"schema": {
"format": "uuid",
2022-12-05 19:56:44 +02:00
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"image/jpeg": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
2023-06-10 06:14:18 +02:00
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Person"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/search": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "search",
"parameters": [
{
"name": "q",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
2023-06-10 06:14:18 +02:00
},
{
2023-06-10 06:14:18 +02:00
"name": "query",
"required": false,
"in": "query",
"schema": {
"type": "string"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "clip",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
}
},
{
2023-06-10 06:14:18 +02:00
"name": "type",
"required": false,
"in": "query",
"schema": {
"enum": [
"IMAGE",
"VIDEO",
"AUDIO",
"OTHER"
],
"type": "string"
}
},
2022-12-05 19:56:44 +02:00
{
2023-06-10 06:14:18 +02:00
"name": "isFavorite",
2022-12-05 19:56:44 +02:00
"required": false,
"in": "query",
"schema": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
2023-06-10 06:14:18 +02:00
},
{
"name": "isArchived",
"required": false,
"in": "query",
"schema": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
{
2023-06-10 06:14:18 +02: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 19:56:44 +02:00
"schema": {
"type": "string"
}
2023-06-10 06:14:18 +02: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 19:56:44 +02:00
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SearchResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Search"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/search/config": {
"get": {
"operationId": "getSearchConfig",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SearchConfigResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Search"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/search/explore": {
"get": {
"operationId": "getExploreData",
2022-12-05 19:56:44 +02:00
"parameters": [],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchExploreResponseDto"
}
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Search"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info": {
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getServerInfo",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerInfoResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Server Info"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info/ping": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "pingServer",
2023-05-17 19:07:17 +02:00
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerPingResponse"
2023-05-17 19:07:17 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Server Info"
2023-05-17 19:07:17 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/server-info/stats": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getStats",
"parameters": [],
2023-05-17 19:07:17 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/ServerStatsResponseDto"
2023-05-17 19:07:17 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Server Info"
2023-05-17 19:07:17 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/server-info/version": {
"get": {
"operationId": "getServerVersion",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ServerVersionReponseDto"
}
2023-05-17 19:07:17 +02:00
}
}
}
},
2023-06-10 06:14:18 +02:00
"tags": [
"Server Info"
]
}
},
"/shared-link": {
2023-06-10 06:14:18 +02:00
"get": {
"operationId": "getAllSharedLinks",
"parameters": [],
2023-05-17 19:07:17 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
}
2023-05-17 19:07:17 +02:00
}
}
}
}
},
"tags": [
"Shared Link"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"post": {
"operationId": "createSharedLink",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkCreateDto"
}
}
}
},
"responses": {
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkResponseDto"
}
}
}
}
},
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/shared-link/me": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getMySharedLink",
2023-05-17 19:07:17 +02:00
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "key",
"required": false,
"in": "query",
2023-05-17 19:07:17 +02:00
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
2023-05-17 19:07:17 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2023-05-17 19:07:17 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2023-05-17 19:07:17 +02:00
}
}
2023-06-10 06:14:18 +02:00
}
2023-05-17 19:07:17 +02:00
}
},
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/shared-link/{id}": {
2023-05-17 19:07:17 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getSharedLinkById",
2023-05-17 19:07:17 +02:00
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2023-05-17 19:07:17 +02:00
}
}
}
}
},
"tags": [
"Shared Link"
2023-05-17 19:07:17 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"patch": {
"operationId": "updateSharedLink",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
"schema": {
"$ref": "#/components/schemas/SharedLinkEditDto"
}
}
}
},
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SharedLinkResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
"Shared Link"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
"operationId": "removeSharedLink",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"tags": [
"Shared Link"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
"/shared-link/{id}/assets": {
"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": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
}
}
}
}
}
},
"tags": [
"Shared Link"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
},
"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": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
}
}
}
}
}
},
"tags": [
"Shared Link"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config": {
"get": {
"operationId": "getConfig",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
2022-12-05 19:56:44 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
}
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"System Config"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "updateConfig",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SystemConfigDto"
}
}
}
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
2022-12-05 19:56:44 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
}
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"System Config"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config/defaults": {
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getDefaults",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
2022-12-05 19:56:44 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigDto"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
}
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"System Config"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/system-config/storage-template-options": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getStorageTemplateOptions",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
2023-06-10 06:14:18 +02:00
"description": "",
2022-12-05 19:56:44 +02:00
"content": {
2023-06-10 06:14:18 +02:00
"application/json": {
2022-12-05 19:56:44 +02:00
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/SystemConfigTemplateStorageOptionDto"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
}
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"System Config"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/tag": {
"post": {
"operationId": "createTag",
2022-12-05 19:56:44 +02:00
"parameters": [],
2023-06-10 06:14:18 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateTagDto"
}
}
}
},
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getAllTags",
"parameters": [],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/tag/{id}": {
2022-12-05 19:56:44 +02:00
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getTagById",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
"patch": {
"operationId": "updateTag",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UpdateTagDto"
2022-12-05 19:56:44 +02:00
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/TagResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
"operationId": "deleteTag",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
],
2022-12-05 19:56:44 +02:00
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": ""
2022-12-05 19:56:44 +02:00
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
}
},
2023-06-10 06:14:18 +02:00
"/tag/{id}/assets": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getTagAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
2022-12-05 19:56:44 +02:00
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
2022-12-05 19:56:44 +02:00
}
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "tagAssets",
"parameters": [
{
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetIdsResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"delete": {
"operationId": "untagAssets",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "id",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
2023-06-10 06:14:18 +02:00
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetIdsDto"
}
}
}
},
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetIdsResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"Tag"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
}
},
"/user": {
"get": {
"operationId": "getAllUsers",
"parameters": [
{
"name": "isAll",
"required": true,
"in": "query",
"schema": {
"type": "boolean"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
2023-06-10 06:14:18 +02:00
},
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "createUser",
2022-12-05 19:56:44 +02:00
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateUserDto"
2022-12-05 19:56:44 +02:00
}
}
}
},
"responses": {
"201": {
2022-12-05 19:56:44 +02:00
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
2023-06-10 06:14:18 +02:00
},
"put": {
"operationId": "updateUser",
"parameters": [],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateUserDto"
}
2022-12-05 19:56:44 +02:00
}
}
2023-06-10 06:14:18 +02:00
},
2022-12-05 19:56:44 +02:00
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
2022-12-05 19:56:44 +02:00
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
2022-12-05 19:56:44 +02:00
]
}
},
2023-06-10 06:14:18 +02:00
"/user/count": {
"get": {
2023-06-10 06:14:18 +02:00
"operationId": "getUserCount",
2022-12-05 19:56:44 +02:00
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "admin",
"required": false,
"in": "query",
"schema": {
2023-06-10 06:14:18 +02:00
"default": false,
"type": "boolean"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserCountResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
]
}
},
2023-06-10 06:14:18 +02:00
"/user/info/{userId}": {
"get": {
"operationId": "getUserById",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "userId",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/user/me": {
"get": {
"operationId": "getMyUserInfo",
"parameters": [],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/user/profile-image": {
"post": {
2023-06-10 06:14:18 +02:00
"operationId": "createProfileImage",
"parameters": [],
"requestBody": {
"required": true,
2023-06-10 06:14:18 +02:00
"description": "A new avatar for the user",
"content": {
2023-06-10 06:14:18 +02:00
"multipart/form-data": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateProfileImageDto"
}
}
}
},
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/CreateProfileImageResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/user/profile-image/{userId}": {
"get": {
"operationId": "getProfileImage",
"parameters": [
{
"name": "userId",
"required": true,
"in": "path",
"schema": {
"format": "uuid",
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
],
"responses": {
2023-06-10 06:14:18 +02:00
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"type": "object"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/user/{userId}": {
"delete": {
"operationId": "deleteUser",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "userId",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
"responses": {
"200": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
},
2023-06-10 06:14:18 +02:00
"/user/{userId}/restore": {
"post": {
"operationId": "restoreUser",
"parameters": [
{
2023-06-10 06:14:18 +02:00
"name": "userId",
"required": true,
"in": "path",
"schema": {
2023-06-10 06:14:18 +02:00
"format": "uuid",
"type": "string"
}
}
],
"responses": {
2023-06-10 06:14:18 +02:00
"201": {
"description": "",
"content": {
"application/json": {
"schema": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/UserResponseDto"
}
}
}
}
},
"tags": [
2023-06-10 06:14:18 +02:00
"User"
],
"security": [
{
"bearer": []
},
{
"cookie": []
},
{
"api_key": []
}
]
}
2023-06-10 06:14:18 +02:00
}
},
"info": {
"title": "Immich",
"description": "Immich API",
2023-07-05 04:50:53 +02:00
"version": "1.66.1",
2023-06-10 06:14:18 +02:00
"contact": {}
},
"tags": [],
"servers": [
{
"url": "/api"
}
],
"components": {
"securitySchemes": {
"bearer": {
"scheme": "Bearer",
"bearerFormat": "JWT",
"type": "http",
"in": "header"
},
"cookie": {
"type": "apiKey",
"in": "cookie",
"name": "immich_access_token"
},
"api_key": {
"type": "apiKey",
"in": "header",
"name": "x-api-key"
}
},
2023-06-10 06:14:18 +02:00
"schemas": {
"APIKeyCreateDto": {
2023-05-25 04:10:45 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
2023-05-25 04:10:45 +02:00
"type": "string"
}
2023-06-10 06:14:18 +02:00
}
2023-05-25 04:10:45 +02:00
},
2023-06-10 06:14:18 +02:00
"APIKeyCreateResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"secret": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"apiKey": {
"$ref": "#/components/schemas/APIKeyResponseDto"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"secret",
"apiKey"
]
},
"APIKeyResponseDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"name",
"createdAt",
"updatedAt"
]
},
"APIKeyUpdateDto": {
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
},
2023-06-10 06:14:18 +02:00
"AddAssetsDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"assetIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"assetIds"
]
},
2023-06-10 06:14:18 +02:00
"AddAssetsResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"successfullyAdded": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"alreadyInAlbum": {
"type": "array",
"items": {
"type": "string"
}
},
2023-06-10 06:14:18 +02:00
"album": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"successfullyAdded",
"alreadyInAlbum"
]
},
2023-06-10 06:14:18 +02:00
"AddUsersDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"sharedUserIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"sharedUserIds"
]
},
"AdminSignupResponseDto": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"email",
"firstName",
"lastName",
"createdAt"
]
},
2023-06-10 06:14:18 +02:00
"AlbumCountResponseDto": {
"type": "object",
"properties": {
"owned": {
"type": "integer"
},
"shared": {
"type": "integer"
},
"notShared": {
2023-06-10 06:14:18 +02:00
"type": "integer"
}
},
"required": [
"owned",
"shared",
"notShared"
2023-06-10 06:14:18 +02:00
]
},
"AlbumResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"assetCount": {
"type": "integer"
},
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"ownerId": {
"type": "string"
},
"albumName": {
"type": "string"
},
"createdAt": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
},
"updatedAt": {
2023-06-10 06:14:18 +02:00
"format": "date-time",
"type": "string"
},
2023-06-10 06:14:18 +02:00
"albumThumbnailAssetId": {
"type": "string",
"nullable": true
},
"shared": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"sharedUsers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/UserResponseDto"
}
},
2023-06-10 06:14:18 +02:00
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
},
"owner": {
"$ref": "#/components/schemas/UserResponseDto"
},
"lastModifiedAssetTimestamp": {
"format": "date-time",
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"assetCount",
"id",
2023-06-10 06:14:18 +02:00
"ownerId",
"albumName",
"createdAt",
"updatedAt",
2023-06-10 06:14:18 +02:00
"albumThumbnailAssetId",
"shared",
"sharedUsers",
"assets",
"owner"
]
},
2023-06-10 06:14:18 +02:00
"AllJobStatusResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"thumbnailGeneration": {
"$ref": "#/components/schemas/JobStatusDto"
},
"metadataExtraction": {
"$ref": "#/components/schemas/JobStatusDto"
},
"videoConversion": {
"$ref": "#/components/schemas/JobStatusDto"
},
"objectTagging": {
"$ref": "#/components/schemas/JobStatusDto"
},
"clipEncoding": {
"$ref": "#/components/schemas/JobStatusDto"
},
"storageTemplateMigration": {
"$ref": "#/components/schemas/JobStatusDto"
},
"backgroundTask": {
"$ref": "#/components/schemas/JobStatusDto"
},
"search": {
"$ref": "#/components/schemas/JobStatusDto"
},
"recognizeFaces": {
"$ref": "#/components/schemas/JobStatusDto"
},
"sidecar": {
"$ref": "#/components/schemas/JobStatusDto"
}
},
"required": [
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"clipEncoding",
"storageTemplateMigration",
"backgroundTask",
"search",
"recognizeFaces",
"sidecar"
]
},
"AssetBulkUploadCheckDto": {
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckItem"
}
}
},
"required": [
"assets"
]
},
"AssetBulkUploadCheckItem": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"checksum": {
"type": "string",
"description": "base64 or hex encoded sha1 hash"
}
},
"required": [
"id",
"checksum"
]
},
"AssetBulkUploadCheckResponseDto": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetBulkUploadCheckResult"
}
}
},
"required": [
"results"
]
},
"AssetBulkUploadCheckResult": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"action": {
"type": "string",
"enum": [
"accept",
"reject"
]
},
"reason": {
"type": "string",
"enum": [
"duplicate",
"unsupported-format"
]
},
"assetId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"action"
]
},
2023-06-10 06:14:18 +02:00
"AssetCountByTimeBucket": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"timeBucket": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"timeBucket",
"count"
]
},
2023-06-10 06:14:18 +02:00
"AssetCountByTimeBucketResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"totalCount": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"buckets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetCountByTimeBucket"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"totalCount",
"buckets"
]
},
2023-06-10 06:14:18 +02:00
"AssetCountByUserIdResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"audio": {
"type": "integer",
"default": 0
},
2023-06-10 06:14:18 +02:00
"photos": {
"type": "integer",
"default": 0
},
2023-06-10 06:14:18 +02:00
"videos": {
"type": "integer",
"default": 0
},
2023-06-10 06:14:18 +02:00
"other": {
"type": "integer",
"default": 0
},
2023-06-10 06:14:18 +02:00
"total": {
"type": "integer",
"default": 0
}
},
"required": [
2023-06-10 06:14:18 +02:00
"audio",
"photos",
"videos",
"other",
"total"
]
},
2023-06-10 06:14:18 +02:00
"AssetFileUploadResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"duplicate": {
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"duplicate"
]
},
2023-06-10 06:14:18 +02:00
"AssetIdsDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"assetIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
},
"required": [
"assetIds"
]
},
"AssetIdsResponseDto": {
"type": "object",
"properties": {
"assetId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"success": {
"type": "boolean"
},
"error": {
"enum": [
"duplicate",
"no_permission",
"not_found"
],
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"assetId",
"success"
]
},
2023-06-10 06:14:18 +02:00
"AssetResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"type": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"ownerId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"originalPath": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"originalFileName": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"resized": {
"type": "boolean"
2023-05-17 19:07:17 +02:00
},
"thumbhash": {
"type": "string",
"nullable": true,
"description": "base64 encoded thumbhash"
},
2023-06-10 06:14:18 +02:00
"fileCreatedAt": {
"format": "date-time",
"type": "string"
feat(server): xmp sidecar metadata (#2466) * initial commit for XMP sidecar support * Added support for 'missing' metadata files to include those without sidecar files, now detects sidecar files in the filesystem for media already ingested but the sidecar was created afterwards * didn't mean to commit default log level during testing * new sidecar logic for video metadata as well * Added xml mimetype for sidecars only * don't need capture group for this regex * wrong default value reverted * simplified the move here - keep it in the same try catch since the outcome is to move the media back anyway * simplified setter logic Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * simplified logic per suggestions * sidecar is now its own queue with a discover and sync, updated UI for the new job queueing * queue a sidecar job for every asset based on discovery or sync, though the logic is almost identical aside from linking the sidecar * now queue sidecar jobs for each assset, though logic is mostly the same between discovery and sync * simplified logic of filename extraction and asset instantiation * not sure how that got deleted.. * updated code per suggestions and comments in the PR * stat was not being used, removed the variable set * better type checking, using in-scope variables for exif getter instead of passing in every time * removed commented out test * ran and resolved all lints, formats, checks, and tests * resolved suggested change in PR * made getExifProperty more dynamic with multiple possible args for fallbacks, fixed typo, used generic in function for better type checking * better error handling and moving files back to positions on move or save failure * regenerated api * format fixes * Added XMP documentation * documentation typo * Merged in main * missed merge conflict * more changes due to a merge * Resolving conflicts * added icon for sidecar jobs --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-05-25 03:59:30 +02:00
},
2023-06-10 06:14:18 +02:00
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"isFavorite": {
"type": "boolean"
},
"isArchived": {
"type": "boolean"
},
"mimeType": {
"type": "string",
"nullable": true
},
"duration": {
"type": "string"
},
"exifInfo": {
"$ref": "#/components/schemas/ExifResponseDto"
},
"smartInfo": {
"$ref": "#/components/schemas/SmartInfoResponseDto"
},
"livePhotoVideoId": {
"type": "string",
"nullable": true
},
"tags": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TagResponseDto"
}
},
"people": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PersonResponseDto"
}
},
"checksum": {
"type": "string",
"description": "base64 encoded sha1 hash"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"type",
"id",
"deviceAssetId",
"ownerId",
"deviceId",
"originalPath",
"originalFileName",
"resized",
"thumbhash",
2023-06-10 06:14:18 +02:00
"fileCreatedAt",
"fileModifiedAt",
"updatedAt",
"isFavorite",
"isArchived",
"mimeType",
"duration",
"checksum"
]
},
2023-06-10 06:14:18 +02:00
"AssetTypeEnum": {
"type": "string",
"enum": [
2023-06-10 06:14:18 +02:00
"IMAGE",
"VIDEO",
"AUDIO",
"OTHER"
]
},
2023-06-10 06:14:18 +02:00
"AuthDeviceResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"createdAt": {
"type": "string"
},
"updatedAt": {
"type": "string"
},
"current": {
"type": "boolean"
2023-06-10 06:14:18 +02:00
},
"deviceType": {
"type": "string"
},
"deviceOS": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"createdAt",
"updatedAt",
"current",
"deviceType",
"deviceOS"
]
},
2023-06-10 06:14:18 +02:00
"ChangePasswordDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"password": {
"type": "string",
"example": "password"
},
"newPassword": {
"type": "string",
"example": "password"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"password",
"newPassword"
]
},
2023-06-10 06:14:18 +02:00
"CheckDuplicateAssetDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"deviceAssetId",
"deviceId"
]
},
2023-06-10 06:14:18 +02:00
"CheckDuplicateAssetResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"isExist": {
"type": "boolean"
},
"id": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"isExist"
]
},
2023-06-10 06:14:18 +02:00
"CheckExistingAssetsDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"deviceAssetIds": {
"type": "array",
"items": {
"type": "string"
}
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"deviceAssetIds",
"deviceId"
]
},
2023-06-10 06:14:18 +02:00
"CheckExistingAssetsResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"existingIds": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"existingIds"
]
},
2023-06-10 06:14:18 +02:00
"CreateAlbumDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"albumName": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"sharedWithUserIds": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string",
"format": "uuid"
}
},
2023-06-10 06:14:18 +02:00
"assetIds": {
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string",
"format": "uuid"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"albumName"
]
},
2023-06-10 06:14:18 +02:00
"CreateAssetDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"assetType": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"assetData": {
"type": "string",
"format": "binary"
},
"livePhotoData": {
"type": "string",
"format": "binary"
},
"sidecarData": {
"type": "string",
"format": "binary"
},
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"isReadOnly": {
"type": "boolean",
"default": false
},
"fileExtension": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"fileCreatedAt": {
"format": "date-time",
"type": "string"
},
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"isFavorite": {
"type": "boolean"
},
"isArchived": {
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"duration": {
"type": "string"
}
},
"required": [
"assetType",
"assetData",
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"fileExtension",
2023-06-10 06:14:18 +02:00
"deviceAssetId",
"deviceId",
"fileCreatedAt",
"fileModifiedAt",
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"isFavorite"
2023-06-10 06:14:18 +02:00
]
},
"CreateProfileImageDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"file": {
"type": "string",
"format": "binary"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"file"
]
},
2023-06-10 06:14:18 +02:00
"CreateProfileImageResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"userId": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"profileImagePath": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"userId",
"profileImagePath"
]
},
2023-06-10 06:14:18 +02:00
"CreateTagDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
},
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"type",
"name"
]
},
2023-06-10 06:14:18 +02:00
"CreateUserDto": {
2023-03-22 04:49:19 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"email": {
"type": "string"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"password": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"firstName": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"lastName": {
2023-03-22 04:49:19 +02:00
"type": "string"
2023-06-10 06:14:18 +02:00
},
"storageLabel": {
2023-03-22 04:49:19 +02:00
"type": "string",
2023-06-10 06:14:18 +02:00
"nullable": 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 04:33:20 +02:00
},
"externalPath": {
"type": "string",
"nullable": true
2023-03-22 04:49:19 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"email",
"password",
"firstName",
"lastName"
2023-03-22 04:49:19 +02:00
]
},
2023-06-10 06:14:18 +02:00
"CuratedLocationsResponseDto": {
2023-03-22 04:49:19 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"city": {
"type": "string"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"resizePath": {
"type": "string"
},
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
2023-03-22 04:49:19 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"city",
"resizePath",
"deviceAssetId",
"deviceId"
2023-03-22 04:49:19 +02:00
]
},
2023-06-10 06:14:18 +02:00
"CuratedObjectsResponseDto": {
2023-03-22 04:49:19 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"object": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"resizePath": {
2023-03-22 04:49:19 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deviceAssetId": {
"type": "string"
2023-03-22 04:49:19 +02:00
},
2023-06-10 06:14:18 +02:00
"deviceId": {
"type": "string"
2023-03-22 04:49:19 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"object",
"resizePath",
"deviceAssetId",
"deviceId"
2023-03-22 04:49:19 +02:00
]
},
2023-06-10 06:14:18 +02:00
"DeleteAssetDto": {
2023-03-22 04:49:19 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"ids": {
"title": "Array of asset IDs to delete",
2023-03-22 04:49:19 +02:00
"example": [
2023-06-10 06:14:18 +02:00
"bf973405-3f2a-48d2-a687-2ed4167164be",
"dd41870b-5d00-46d2-924e-1d8489a0aa0f",
"fad77c3f-deef-4e7e-9608-14c1aa4e559a"
2023-03-22 04:49:19 +02:00
],
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
2023-03-22 04:49:19 +02:00
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"ids"
2023-03-22 04:49:19 +02:00
]
},
2023-06-10 06:14:18 +02:00
"DeleteAssetResponseDto": {
"type": "object",
"properties": {
"status": {
"$ref": "#/components/schemas/DeleteAssetStatus"
},
"id": {
"type": "string"
}
},
"required": [
"status",
"id"
]
},
"DeleteAssetStatus": {
"type": "string",
"enum": [
2023-06-10 06:14:18 +02:00
"SUCCESS",
"FAILED"
]
},
"DownloadArchiveInfo": {
"type": "object",
"properties": {
"size": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"assetIds": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"size",
2023-06-10 06:14:18 +02:00
"assetIds"
]
},
"DownloadResponseDto": {
"type": "object",
"properties": {
"totalSize": {
"type": "integer"
},
"archives": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DownloadArchiveInfo"
}
}
},
"required": [
"totalSize",
"archives"
]
},
2023-06-10 06:14:18 +02:00
"ExifResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"fileSizeInByte": {
"type": "integer",
"nullable": true,
"default": null,
"format": "int64"
},
2023-06-10 06:14:18 +02:00
"make": {
"type": "string",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"model": {
"type": "string",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"exifImageWidth": {
"type": "number",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"exifImageHeight": {
"type": "number",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"orientation": {
"type": "string",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"dateTimeOriginal": {
"format": "date-time",
"type": "string",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"modifyDate": {
"format": "date-time",
"type": "string",
"nullable": true,
"default": null
},
2023-06-10 06:14:18 +02:00
"timeZone": {
"type": "string",
2023-06-10 06:14:18 +02:00
"nullable": true,
"default": null
},
"lensModel": {
"type": "string",
"nullable": true,
"default": null
},
"fNumber": {
"type": "number",
"nullable": true,
"default": null
},
"focalLength": {
"type": "number",
"nullable": true,
"default": null
},
"iso": {
"type": "number",
"nullable": true,
"default": null
},
"exposureTime": {
"type": "string",
"nullable": true,
"default": null
},
"latitude": {
"type": "number",
"nullable": true,
"default": null
},
"longitude": {
"type": "number",
"nullable": true,
"default": null
},
"city": {
"type": "string",
"nullable": true,
"default": null
},
"state": {
"type": "string",
"nullable": true,
"default": null
},
"country": {
"type": "string",
"nullable": true,
"default": null
},
"description": {
"type": "string",
"nullable": true,
"default": null
}
}
},
"GetAssetByTimeBucketDto": {
"type": "object",
"properties": {
"timeBucket": {
"title": "Array of date time buckets",
"example": [
"2015-06-01T00:00:00.000Z",
"2016-02-01T00:00:00.000Z",
"2016-03-01T00:00:00.000Z"
],
"type": "array",
"items": {
"type": "string"
}
},
"userId": {
"type": "string",
"format": "uuid"
},
"withoutThumbs": {
"type": "boolean",
"description": "Include assets without thumbnails"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"timeBucket"
]
},
2023-06-10 06:14:18 +02:00
"GetAssetCountByTimeBucketDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"timeGroup": {
"$ref": "#/components/schemas/TimeGroupEnum"
},
2023-06-10 06:14:18 +02:00
"userId": {
"type": "string",
"format": "uuid"
},
2023-06-10 06:14:18 +02:00
"withoutThumbs": {
"type": "boolean",
"description": "Include assets without thumbnails"
}
},
"required": [
"timeGroup"
]
},
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"ImportAssetDto": {
"type": "object",
"properties": {
"assetType": {
"$ref": "#/components/schemas/AssetTypeEnum"
},
"isReadOnly": {
"type": "boolean",
"default": true
},
"assetPath": {
"type": "string"
},
"sidecarPath": {
"type": "string"
},
"deviceAssetId": {
"type": "string"
},
"deviceId": {
"type": "string"
},
"fileCreatedAt": {
"format": "date-time",
"type": "string"
},
"fileModifiedAt": {
"format": "date-time",
"type": "string"
},
"isFavorite": {
"type": "boolean"
},
"isArchived": {
"type": "boolean"
},
"isVisible": {
"type": "boolean"
},
"duration": {
"type": "string"
}
},
"required": [
"assetType",
"assetPath",
"deviceAssetId",
"deviceId",
"fileCreatedAt",
"fileModifiedAt",
"isFavorite"
]
},
2023-06-10 06:14:18 +02:00
"JobCommand": {
"type": "string",
"enum": [
"start",
"pause",
"resume",
"empty"
]
},
"JobCommandDto": {
"type": "object",
"properties": {
"command": {
"$ref": "#/components/schemas/JobCommand"
},
2023-06-10 06:14:18 +02:00
"force": {
"type": "boolean"
}
},
"required": [
"command",
"force"
]
},
"JobCountsDto": {
"type": "object",
"properties": {
"active": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"completed": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"failed": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"delayed": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"waiting": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"paused": {
"type": "integer"
}
},
"required": [
"active",
"completed",
"failed",
"delayed",
"waiting",
"paused"
]
},
2023-06-10 06:14:18 +02:00
"JobName": {
"type": "string",
"enum": [
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"recognizeFaces",
"clipEncoding",
"backgroundTask",
"storageTemplateMigration",
"search",
"sidecar"
]
},
"JobSettingsDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"concurrency": {
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"concurrency"
]
},
2023-06-10 06:14:18 +02:00
"JobStatusDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"jobCounts": {
"$ref": "#/components/schemas/JobCountsDto"
},
"queueStatus": {
"$ref": "#/components/schemas/QueueStatusDto"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"jobCounts",
"queueStatus"
]
},
2023-06-10 06:14:18 +02:00
"LoginCredentialDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"email": {
"type": "string",
"example": "testuser@email.com"
},
"password": {
"type": "string",
"example": "password"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"email",
"password"
]
},
2023-06-10 06:14:18 +02:00
"LoginResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"accessToken": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"userId": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"userEmail": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"firstName": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"lastName": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"profileImagePath": {
"type": "string",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"isAdmin": {
"type": "boolean",
"readOnly": true
},
2023-06-10 06:14:18 +02:00
"shouldChangePassword": {
"type": "boolean",
"readOnly": true
}
},
"required": [
2023-06-10 06:14:18 +02:00
"accessToken",
"userId",
"userEmail",
"firstName",
"lastName",
"profileImagePath",
"isAdmin",
"shouldChangePassword"
]
},
2023-06-10 06:14:18 +02:00
"LogoutResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"successful": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"redirectUri": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"successful",
"redirectUri"
]
},
2023-06-10 06:14:18 +02:00
"MapMarkerResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"lat": {
"type": "number",
"format": "double"
},
2023-06-10 06:14:18 +02:00
"lon": {
"type": "number",
"format": "double"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"lat",
"lon"
2022-12-05 19:56:44 +02:00
]
},
"MemoryLaneResponseDto": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
}
},
"required": [
"title",
"assets"
]
},
2023-06-10 06:14:18 +02:00
"OAuthCallbackDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"url": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"url"
]
},
2023-06-10 06:14:18 +02:00
"OAuthConfigDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"redirectUri": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"redirectUri"
]
},
2023-06-10 06:14:18 +02:00
"OAuthConfigResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"enabled": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"passwordLoginEnabled": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"url": {
"type": "string"
},
"buttonText": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"autoLaunch": {
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"enabled",
"passwordLoginEnabled"
]
},
2023-06-10 06:14:18 +02:00
"PersonResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"thumbnailPath": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"name",
"thumbnailPath"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"PersonUpdateDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
"type": "string",
"description": "Person name."
},
"featureFaceAssetId": {
"type": "string",
"description": "Asset is used to get the feature face thumbnail."
2022-12-05 19:56:44 +02:00
}
}
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"QueueStatusDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"isActive": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"isPaused": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"isActive",
"isPaused"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"RemoveAssetsDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"assetIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"assetIds"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchAlbumResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"total": {
"type": "integer"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AlbumResponseDto"
}
},
"facets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
}
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"total",
"count",
"items",
"facets"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchAssetDto": {
2023-05-17 19:07:17 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"searchTerm": {
2023-05-17 19:07:17 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"searchTerm"
2023-05-17 19:07:17 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchAssetResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"total": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetResponseDto"
}
},
2023-06-10 06:14:18 +02:00
"facets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchFacetResponseDto"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"total",
"count",
"items",
"facets"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchConfigResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"enabled": {
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"enabled"
]
},
2023-06-10 06:14:18 +02:00
"SearchExploreItem": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"value": {
"type": "string"
},
"data": {
"$ref": "#/components/schemas/AssetResponseDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"value",
"data"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchExploreResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"fieldName": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchExploreItem"
}
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"fieldName",
"items"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchFacetCountResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"count": {
"type": "integer"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"value": {
2022-12-05 19:56:44 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"count",
"value"
]
},
2023-06-10 06:14:18 +02:00
"SearchFacetResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"fieldName": {
"type": "string"
2023-06-10 06:14:18 +02:00
},
"counts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SearchFacetCountResponseDto"
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"fieldName",
"counts"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SearchResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"albums": {
"$ref": "#/components/schemas/SearchAlbumResponseDto"
},
2023-06-10 06:14:18 +02:00
"assets": {
"$ref": "#/components/schemas/SearchAssetResponseDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"albums",
"assets"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"ServerInfoResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"diskSizeRaw": {
"type": "integer",
"format": "int64"
},
"diskUseRaw": {
"type": "integer",
"format": "int64"
},
"diskAvailableRaw": {
"type": "integer",
"format": "int64"
},
"diskUsagePercentage": {
"type": "number",
"format": "float"
},
"diskSize": {
2022-12-05 19:56:44 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"diskUse": {
"type": "string"
},
"diskAvailable": {
"type": "string"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"diskSizeRaw",
"diskUseRaw",
"diskAvailableRaw",
"diskUsagePercentage",
"diskSize",
"diskUse",
"diskAvailable"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"ServerPingResponse": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"res": {
"type": "string",
"readOnly": true,
"example": "pong"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"res"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"ServerStatsResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
"photos": {
"type": "integer",
"default": 0
},
"videos": {
"type": "integer",
"default": 0
},
2023-06-10 06:14:18 +02:00
"usage": {
2022-12-05 19:56:44 +02:00
"type": "integer",
2023-06-10 06:14:18 +02:00
"default": 0,
"format": "int64"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"usageByUser": {
"default": [],
"title": "Array of usage for each user",
"example": [
{
"photos": 1,
"videos": 1,
"diskUsageRaw": 1
}
],
"type": "array",
"items": {
"$ref": "#/components/schemas/UsageByUserDto"
}
2022-12-05 19:56:44 +02:00
}
},
"required": [
"photos",
"videos",
2023-06-10 06:14:18 +02:00
"usage",
"usageByUser"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"ServerVersionReponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"major": {
"type": "integer"
feat (server, web): Share with partner (#2388) * feat(server, web): implement share with partner * chore: regenerate api * chore: regenerate api * Pass userId to getAssetCountByTimeBucket and getAssetByTimeBucket * chore: regenerate api * Use AssetGrid to view partner's assets * Remove disableNavBarActions flag * Check access to buckets * Apply suggestions from code review Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> * Remove exception rethrowing * Simplify partner access check * Create new PartnerController * chore api:generate * Use partnerApi * Remove id from PartnerResponseDto * Refactor PartnerEntity * Rename args * Remove duplicate code in getAll * Create composite primary keys for partners table * Move asset access check into PartnerCore * Remove redundant getUserAssets call * Remove unused getUserAssets method * chore: regenerate api * Simplify getAll * Replace ?? with || * Simplify PartnerRepository.create * Introduce PartnerIds interface * Replace two database migrations with one * Simplify getAll * Change PartnerResponseDto to include UserResponseDto * Move partner sharing endpoints to PartnerController * Rename ShareController to SharedLinkController * chore: regenerate api after rebase * refactor: shared link remove return type * refactor: return user response dto * chore: regenerate open api * refactor: partner getAll * refactor: partner settings event typing * chore: remove unused code * refactor: add partners modal trigger * refactor: update url for viewing partner photos * feat: update partner sharing title * refactor: rename service method names * refactor: http exception logic to service, PartnerIds interface * chore: regenerate open api * test: coverage for domain code * fix: addPartner => createPartner * fix: missed rename * refactor: more code cleanup * chore: alphabetize settings order * feat: stop sharing confirmation modal * Enhance contrast of the email in dark mode * Replace button with CircleIconButton * Fix linter warning * Fix date types for PartnerEntity * Fix PartnerEntity creation * Reset assetStore state * Change layout of the partner's assets page * Add bulk download action for partner's assets --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
2023-05-15 19:30:53 +02:00
},
2023-06-10 06:14:18 +02:00
"minor": {
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"patch": {
"type": "integer"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"major",
"minor",
"patch"
2022-12-05 19:56:44 +02:00
]
},
"SharedLinkCreateDto": {
"type": "object",
"properties": {
"type": {
"$ref": "#/components/schemas/SharedLinkType"
},
"assetIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
},
"albumId": {
"type": "string",
"format": "uuid"
},
"description": {
"type": "string"
},
"expiresAt": {
"format": "date-time",
"type": "string",
"nullable": true,
"default": null
},
"allowUpload": {
"type": "boolean",
"default": false
},
"allowDownload": {
"type": "boolean",
"default": true
},
"showExif": {
"type": "boolean",
"default": true
}
},
"required": [
"type"
]
},
"SharedLinkEditDto": {
"type": "object",
"properties": {
"description": {
"type": "string"
},
"expiresAt": {
"format": "date-time",
"type": "string",
"nullable": true
},
"allowUpload": {
"type": "boolean"
},
"allowDownload": {
"type": "boolean"
},
"showExif": {
"type": "boolean"
}
}
},
2023-06-10 06:14:18 +02:00
"SharedLinkResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"type": {
"$ref": "#/components/schemas/SharedLinkType"
},
"id": {
"type": "string"
},
"description": {
"type": "string",
"nullable": true
2023-06-10 06:14:18 +02:00
},
"userId": {
"type": "string"
},
"key": {
"type": "string"
},
"createdAt": {
"format": "date-time",
"type": "string"
},
"expiresAt": {
"format": "date-time",
"type": "string",
"nullable": true
},
"assets": {
2022-12-05 19:56:44 +02:00
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"$ref": "#/components/schemas/AssetResponseDto"
2022-12-05 19:56:44 +02:00
}
},
2023-06-10 06:14:18 +02:00
"album": {
"$ref": "#/components/schemas/AlbumResponseDto"
},
"allowUpload": {
2022-12-05 19:56:44 +02:00
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"allowDownload": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"showExif": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
2023-06-10 06:14:18 +02:00
},
"required": [
"type",
"id",
"description",
2023-06-10 06:14:18 +02:00
"userId",
"key",
"createdAt",
"expiresAt",
"assets",
"allowUpload",
"allowDownload",
"showExif"
]
},
"SharedLinkType": {
"type": "string",
"enum": [
"ALBUM",
"INDIVIDUAL"
]
},
"SignUpDto": {
"type": "object",
"properties": {
"email": {
"type": "string",
"example": "testuser@email.com"
},
"password": {
"type": "string",
"example": "password"
},
"firstName": {
"type": "string",
"example": "Admin"
},
"lastName": {
"type": "string",
"example": "Doe"
}
},
"required": [
"email",
"password",
"firstName",
"lastName"
]
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SmartInfoResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"tags": {
"nullable": true,
"type": "array",
"items": {
"type": "string"
}
},
"objects": {
"nullable": true,
2022-12-05 19:56:44 +02:00
"type": "array",
"items": {
"type": "string"
}
}
2023-06-10 06:14:18 +02:00
}
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"SystemConfigDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"ffmpeg": {
"$ref": "#/components/schemas/SystemConfigFFmpegDto"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"oauth": {
"$ref": "#/components/schemas/SystemConfigOAuthDto"
},
"passwordLogin": {
"$ref": "#/components/schemas/SystemConfigPasswordLoginDto"
},
"storageTemplate": {
"$ref": "#/components/schemas/SystemConfigStorageTemplateDto"
},
"job": {
"$ref": "#/components/schemas/SystemConfigJobDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"ffmpeg",
"oauth",
"passwordLogin",
"storageTemplate",
"job"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigFFmpegDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"crf": {
"type": "integer"
},
"threads": {
"type": "integer"
},
"preset": {
2022-12-05 19:56:44 +02:00
"type": "string"
},
2023-06-10 06:14:18 +02:00
"targetVideoCodec": {
"type": "string"
},
"targetAudioCodec": {
2022-12-05 19:56:44 +02:00
"type": "string"
2023-06-10 06:14:18 +02:00
},
"targetResolution": {
"type": "string"
},
"maxBitrate": {
"type": "string"
},
"twoPass": {
"type": "boolean"
},
"transcode": {
"type": "string",
"enum": [
"all",
"optimal",
"required",
"disabled"
]
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"crf",
"threads",
"preset",
"targetVideoCodec",
"targetAudioCodec",
"targetResolution",
"maxBitrate",
"twoPass",
"transcode"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigJobDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"thumbnailGeneration": {
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"metadataExtraction": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"videoConversion": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"objectTagging": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"clipEncoding": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"storageTemplateMigration": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"backgroundTask": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"search": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"recognizeFaces": {
"$ref": "#/components/schemas/JobSettingsDto"
},
"sidecar": {
"$ref": "#/components/schemas/JobSettingsDto"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"thumbnailGeneration",
"metadataExtraction",
"videoConversion",
"objectTagging",
"clipEncoding",
"storageTemplateMigration",
"backgroundTask",
"search",
"recognizeFaces",
"sidecar"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigOAuthDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"enabled": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"issuerUrl": {
"type": "string"
},
"clientId": {
"type": "string"
},
"clientSecret": {
"type": "string"
},
"scope": {
"type": "string"
},
"buttonText": {
"type": "string"
},
"autoRegister": {
"type": "boolean"
},
"autoLaunch": {
"type": "boolean"
},
"mobileOverrideEnabled": {
"type": "boolean"
},
"mobileRedirectUri": {
2022-12-05 19:56:44 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"enabled",
"issuerUrl",
"clientId",
"clientSecret",
"scope",
"buttonText",
"autoRegister",
"autoLaunch",
"mobileOverrideEnabled",
"mobileRedirectUri"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigPasswordLoginDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"enabled": {
"type": "boolean"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"enabled"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigStorageTemplateDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"template": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"template"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
]
},
2023-06-10 06:14:18 +02:00
"SystemConfigTemplateStorageOptionDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"yearOptions": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "array",
"items": {
2023-06-10 06:14:18 +02:00
"type": "string"
}
},
"monthOptions": {
"type": "array",
"items": {
"type": "string"
}
},
"dayOptions": {
"type": "array",
"items": {
"type": "string"
}
},
"hourOptions": {
"type": "array",
"items": {
"type": "string"
}
},
"minuteOptions": {
"type": "array",
"items": {
"type": "string"
}
},
"secondOptions": {
"type": "array",
"items": {
"type": "string"
}
},
"presetOptions": {
"type": "array",
"items": {
"type": "string"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
}
}
},
"required": [
2023-06-10 06:14:18 +02:00
"yearOptions",
"monthOptions",
"dayOptions",
"hourOptions",
"minuteOptions",
"secondOptions",
"presetOptions"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
]
},
2023-06-10 06:14:18 +02:00
"TagResponseDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"type": {
"$ref": "#/components/schemas/TagTypeEnum"
},
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"id": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
2023-06-10 06:14:18 +02:00
"userId": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02: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 23:08:21 +02:00
"id",
2023-06-10 06:14:18 +02:00
"name",
"userId"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
]
},
2023-06-10 06:14:18 +02:00
"TagTypeEnum": {
"type": "string",
"enum": [
"OBJECT",
"FACE",
"CUSTOM"
]
},
"ThumbnailFormat": {
"type": "string",
"enum": [
"JPEG",
"WEBP"
]
},
"TimeGroupEnum": {
"type": "string",
"enum": [
"day",
"month"
]
},
"UpdateAlbumDto": {
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"albumName": {
"type": "string"
},
"albumThumbnailAssetId": {
"type": "string",
"format": "uuid"
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
}
2023-06-10 06:14:18 +02:00
}
feat(server): Add support for client-side hashing (#2072) * Modify controller DTOs * Can check duplicates on server side * Remove deviceassetid and deviceid * Remove device ids from file uploader * Add db migration for removed device ids * Don't sanitize checksum * Convert asset checksum to string * Make checksum not optional for asset * Use enums when rejecting duplicates * Cleanup * Return of the device id, but optional * Don't use deviceId for upload folder * Use checksum in thumb path * Only use asset id in thumb path * Openapi generation * Put deviceAssetId back in asset response dto * Add missing checksum in test fixture * Add another missing checksum in test fixture * Cleanup asset repository * Add back previous /exists endpoint * Require checksum to not be null * Correctly set deviceId in db * Remove index * Fix compilation errors * Make device id nullabel in asset response dto * Reduce PR scope * Revert asset service * Reorder imports * Reorder imports * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Reduce PR scope * Update openapi * Reduce PR scope * refactor: asset bulk upload check * chore: regenreate open-api * chore: fix tests * chore: tests * update migrations and regenerate api * Feat: use checksum in web file uploader * Change to wasm-crypto * Use crypto api for checksumming in web uploader * Minor cleanup of file upload * feat(web): pause and resume jobs * Make device asset id not nullable again * Cleanup * Device id not nullable in response dto * Update API specs * Bump api specs * Remove old TODO comment * Remove NOT NULL constraint on checksum index * Fix requested pubspec changes * Remove unneeded import * Update server/apps/immich/src/api-v1/asset/asset.service.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove unneeded check * Update server/apps/immich/src/api-v1/asset/asset-repository.ts Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com> * Remove hashing in the web uploader * Cleanup file uploader * Remove varchar from asset entity fields * Return 200 from bulk upload check * Put device asset id back into asset repository * Merge migrations * Revert pubspec lock * Update openapi specs * Merge upstream changes * Fix failing asset service tests * Fix formatting issue * Cleanup migrations * Remove newline from pubspec * Revert newline * Checkout main version * Revert again * Only return AssetCheck --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Michel Heusschen <59014050+michelheusschen@users.noreply.github.com>
2023-05-24 23:08:21 +02:00
},
2023-06-10 06:14:18 +02:00
"UpdateAssetDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"tagIds": {
"title": "Array of tag IDs to add to the asset",
"example": [
"bf973405-3f2a-48d2-a687-2ed4167164be",
"dd41870b-5d00-46d2-924e-1d8489a0aa0f",
"fad77c3f-deef-4e7e-9608-14c1aa4e559a"
],
"type": "array",
"items": {
"type": "string"
}
},
2023-06-10 06:14:18 +02:00
"isFavorite": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"isArchived": {
"type": "boolean"
},
"description": {
"type": "string"
}
2023-06-10 06:14:18 +02:00
}
},
2023-06-10 06:14:18 +02:00
"UpdateTagDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"name": {
"type": "string"
}
2023-06-10 06:14:18 +02:00
}
},
2023-06-10 06:14:18 +02:00
"UpdateUserDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string",
"format": "uuid"
},
"email": {
"type": "string"
},
"password": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"storageLabel": {
"type": "string"
},
feat(server): support for read-only assets and importing existing items in the filesystem (#2715) * Added read-only flag for assets, endpoint to trigger file import vs upload * updated fixtures with new property * if upload is 'read-only', ensure there is no existing asset at the designated originalPath * added test for file import as well as detecting existing image at read-only destination location * Added storage service test for a case where it should not move read-only assets * upload doesn't need the read-only flag available, just importing * default isReadOnly on import endpoint to true * formatting fixes * create-asset dto needs isReadOnly, so set it to false by default on create, updated api generation * updated code to reflect changes in MR * fixed read stream promise return type * new index for originalPath, check for existing path on import, reglardless of user, to prevent duplicates * refactor: import asset * chore: open api * chore: tests * Added externalPath support for individual users, updated UI to allow this to be set by admin * added missing var for externalPath in ui * chore: open api * fix: compilation issues * fix: server test * built api, fixed user-response dto to include externalPath * reverted accidental commit * bad commit of duplicate externalPath in user response dto * fixed tests to include externalPath on expected result * fix: unit tests * centralized supported filetypes, perform file type checking of asset and sidecar during file import process * centralized supported filetype check method to keep regex DRY * fixed typo * combined migrations into one * update api * Removed externalPath from shared-link code, added column to admin user page whether external paths / import is enabled or not * update mimetype * Fixed detect correct mimetype * revert asset-upload config * reverted domain.constant * refactor * fix mime-type issue * fix format --------- Co-authored-by: Jason Rasmussen <jrasm91@gmail.com> Co-authored-by: Alex Tran <alex.tran1502@gmail.com>
2023-06-22 04:33:20 +02:00
"externalPath": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"isAdmin": {
"type": "boolean"
},
"shouldChangePassword": {
"type": "boolean"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id"
]
},
2023-06-10 06:14:18 +02:00
"UsageByUserDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"userId": {
"type": "string"
2022-12-05 19:56:44 +02:00
},
2023-06-10 06:14:18 +02:00
"userFirstName": {
"type": "string"
},
"userLastName": {
"type": "string"
},
"photos": {
2022-12-05 19:56:44 +02:00
"type": "integer"
},
2023-06-10 06:14:18 +02:00
"videos": {
2022-12-05 19:56:44 +02:00
"type": "integer"
2023-06-10 06:14:18 +02:00
},
"usage": {
"type": "integer",
"format": "int64"
2022-12-05 19:56:44 +02:00
}
},
"required": [
2023-06-10 06:14:18 +02:00
"userId",
"userFirstName",
"userLastName",
"photos",
"videos",
"usage"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"UserCountResponseDto": {
2022-12-05 19:56:44 +02:00
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"userCount": {
2022-12-05 19:56:44 +02:00
"type": "integer"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"userCount"
2022-12-05 19:56:44 +02:00
]
},
2023-06-10 06:14:18 +02:00
"UserResponseDto": {
"type": "object",
"properties": {
2023-06-10 06:14:18 +02:00
"id": {
"type": "string"
},
"email": {
"type": "string"
},
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"storageLabel": {
"type": "string",
2023-06-10 06:14:18 +02:00
"nullable": 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 04:33:20 +02:00
"externalPath": {
"type": "string",
"nullable": true
},
2023-06-10 06:14:18 +02:00
"profileImagePath": {
"type": "string"
},
2023-06-10 06:14:18 +02:00
"shouldChangePassword": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"isAdmin": {
"type": "boolean"
},
2023-06-10 06:14:18 +02:00
"createdAt": {
"format": "date-time",
"type": "string"
},
2023-06-10 06:14:18 +02:00
"deletedAt": {
"format": "date-time",
"type": "string",
"nullable": true
},
"updatedAt": {
"format": "date-time",
"type": "string"
},
"oauthId": {
"type": "string"
}
},
"required": [
2023-06-10 06:14:18 +02:00
"id",
"email",
"firstName",
"lastName",
"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 04:33:20 +02:00
"externalPath",
2023-06-10 06:14:18 +02:00
"profileImagePath",
"shouldChangePassword",
"isAdmin",
"createdAt",
"deletedAt",
"updatedAt",
"oauthId"
]
},
"ValidateAccessTokenResponseDto": {
"type": "object",
"properties": {
"authStatus": {
"type": "boolean"
}
},
"required": [
"authStatus"
]
2022-12-05 19:56:44 +02:00
}
}
}
}