openapi: 3.0.0
paths:
  /activities:
    get:
      operationId: getActivities
      parameters:
        - name: albumId
          required: true
          in: query
          schema:
            format: uuid
            type: string
        - name: assetId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: level
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/ReactionLevel'
        - name: type
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/ReactionType'
        - name: userId
          required: false
          in: query
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ActivityResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Activities
    post:
      operationId: createActivity
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivityCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Activities
  /activities/statistics:
    get:
      operationId: getActivityStatistics
      parameters:
        - name: albumId
          required: true
          in: query
          schema:
            format: uuid
            type: string
        - name: assetId
          required: false
          in: query
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityStatisticsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Activities
  /activities/{id}:
    delete:
      operationId: deleteActivity
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Activities
  /admin/notifications:
    post:
      operationId: createNotification
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications (Admin)
  /admin/notifications/templates/{name}:
    post:
      operationId: getNotificationTemplateAdmin
      parameters:
        - name: name
          required: true
          in: path
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TemplateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications (Admin)
  /admin/notifications/test-email:
    post:
      operationId: sendTestEmailAdmin
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SystemConfigSmtpDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TestEmailResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications (Admin)
  /admin/users:
    get:
      operationId: searchUsersAdmin
      parameters:
        - name: id
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: withDeleted
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/UserAdminResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
    post:
      operationId: createUserAdmin
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAdminCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
  /admin/users/{id}:
    delete:
      operationId: deleteUserAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAdminDeleteDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
    get:
      operationId: getUserAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
    put:
      operationId: updateUserAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAdminUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
  /admin/users/{id}/preferences:
    get:
      operationId: getUserPreferencesAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
    put:
      operationId: updateUserPreferencesAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPreferencesUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
  /admin/users/{id}/restore:
    post:
      operationId: restoreUserAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
  /admin/users/{id}/statistics:
    get:
      operationId: getUserStatisticsAdmin
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: isFavorite
          required: false
          in: query
          schema:
            type: boolean
        - name: isTrashed
          required: false
          in: query
          schema:
            type: boolean
        - name: visibility
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetVisibility'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStatsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users (admin)
  /albums:
    get:
      operationId: getAllAlbums
      parameters:
        - name: assetId
          required: false
          in: query
          description: |-
            Only returns albums that contain the asset
            Ignores the shared parameter
            undefined: get all albums
          schema:
            format: uuid
            type: string
        - name: shared
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AlbumResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
    post:
      operationId: createAlbum
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAlbumDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /albums/statistics:
    get:
      operationId: getAlbumStatistics
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumStatisticsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /albums/{id}:
    delete:
      operationId: deleteAlbum
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
    get:
      operationId: getAlbumInfo
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: withoutAssets
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
    patch:
      operationId: updateAlbumInfo
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAlbumDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /albums/{id}/assets:
    delete:
      operationId: removeAssetFromAlbum
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
    put:
      operationId: addAssetsToAlbum
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /albums/{id}/user/{userId}:
    delete:
      operationId: removeUserFromAlbum
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: userId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
    put:
      operationId: updateAlbumUser
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: userId
          required: true
          in: path
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAlbumUserDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /albums/{id}/users:
    put:
      operationId: addUsersToAlbum
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddUsersDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlbumResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Albums
  /api-keys:
    get:
      operationId: getApiKeys
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/APIKeyResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - API Keys
    post:
      operationId: createApiKey
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKeyCreateResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - API Keys
  /api-keys/{id}:
    delete:
      operationId: deleteApiKey
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - API Keys
    get:
      operationId: getApiKey
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKeyResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - API Keys
    put:
      operationId: updateApiKey
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/APIKeyUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIKeyResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - API Keys
  /assets:
    delete:
      operationId: deleteAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetBulkDeleteDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
    post:
      operationId: uploadAsset
      parameters:
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: x-immich-checksum
          in: header
          description: sha1 checksum that can be used for duplicate detection before the file is uploaded
          required: false
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AssetMediaCreateDto'
        description: Asset Upload Information
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetMediaResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
    put:
      operationId: updateAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetBulkUpdateDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /assets/bulk-upload-check:
    post:
      description: Checks if assets exist by checksums
      operationId: checkBulkUpload
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetBulkUploadCheckDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetBulkUploadCheckResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      summary: checkBulkUpload
      tags:
        - Assets
  /assets/device/{deviceId}:
    get:
      description: Get all asset of a device that are in the database, ID only.
      operationId: getAllUserAssetsByDeviceId
      parameters:
        - name: deviceId
          required: true
          in: path
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  type: string
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      summary: getAllUserAssetsByDeviceId
      tags:
        - Assets
  /assets/exist:
    post:
      description: Checks if multiple assets exist on the server and returns all existing - used by background backup
      operationId: checkExistingAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckExistingAssetsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckExistingAssetsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      summary: checkExistingAssets
      tags:
        - Assets
  /assets/jobs:
    post:
      operationId: runAssetJobs
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetJobsDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /assets/random:
    get:
      deprecated: true
      description: This property was deprecated in v1.116.0
      operationId: getRandom
      parameters:
        - name: count
          required: false
          in: query
          schema:
            minimum: 1
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
        - Deprecated
      x-immich-lifecycle:
        deprecatedAt: v1.116.0
  /assets/statistics:
    get:
      operationId: getAssetStatistics
      parameters:
        - name: isFavorite
          required: false
          in: query
          schema:
            type: boolean
        - name: isTrashed
          required: false
          in: query
          schema:
            type: boolean
        - name: visibility
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetVisibility'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetStatsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /assets/{id}:
    get:
      operationId: getAssetInfo
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
    put:
      operationId: updateAsset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAssetDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /assets/{id}/original:
    get:
      operationId: downloadAsset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
    put:
      description: Replace the asset with new file, without changing its id
      operationId: replaceAsset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/AssetMediaReplaceDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetMediaResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      summary: replaceAsset
      tags:
        - Assets
      x-immich-lifecycle:
        addedAt: v1.106.0
  /assets/{id}/thumbnail:
    get:
      operationId: viewAsset
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: size
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetMediaSize'
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /assets/{id}/video/playback:
    get:
      operationId: playAssetVideo
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Assets
  /auth/admin-sign-up:
    post:
      operationId: signUpAdmin
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignUpDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      tags:
        - Authentication
  /auth/change-password:
    post:
      operationId: changePassword
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ChangePasswordDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/login:
    post:
      operationId: login
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginCredentialDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponseDto'
          description: ''
      tags:
        - Authentication
  /auth/logout:
    post:
      operationId: logout
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LogoutResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/pin-code:
    delete:
      operationId: resetPinCode
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinCodeResetDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
    post:
      operationId: setupPinCode
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinCodeSetupDto'
        required: true
      responses:
        '201':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
    put:
      operationId: changePinCode
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PinCodeChangeDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/session/lock:
    post:
      operationId: lockAuthSession
      parameters: []
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/session/unlock:
    post:
      operationId: unlockAuthSession
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionUnlockDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/status:
    get:
      operationId: getAuthStatus
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthStatusResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /auth/validateToken:
    post:
      operationId: validateAccessToken
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateAccessTokenResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Authentication
  /download/archive:
    post:
      operationId: downloadArchive
      parameters:
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetIdsDto'
        required: true
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Download
  /download/info:
    post:
      operationId: getDownloadInfo
      parameters:
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DownloadInfoDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Download
  /duplicates:
    get:
      operationId: getAssetDuplicates
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/DuplicateResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Duplicates
  /faces:
    get:
      operationId: getFaces
      parameters:
        - name: id
          required: true
          in: query
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetFaceResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Faces
    post:
      operationId: createFace
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetFaceCreateDto'
        required: true
      responses:
        '201':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Faces
  /faces/{id}:
    delete:
      operationId: deleteFace
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetFaceDeleteDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Faces
    put:
      operationId: reassignFacesById
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FaceDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Faces
  /jobs:
    get:
      operationId: getAllJobsStatus
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AllJobStatusResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Jobs
    post:
      operationId: createJob
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobCreateDto'
        required: true
      responses:
        '201':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Jobs
  /jobs/{id}:
    put:
      operationId: sendJobCommand
      parameters:
        - name: id
          required: true
          in: path
          schema:
            $ref: '#/components/schemas/JobName'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobCommandDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobStatusDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Jobs
  /libraries:
    get:
      operationId: getAllLibraries
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/LibraryResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
    post:
      operationId: createLibrary
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLibraryDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LibraryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
  /libraries/{id}:
    delete:
      operationId: deleteLibrary
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
    get:
      operationId: getLibrary
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LibraryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
    put:
      operationId: updateLibrary
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateLibraryDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LibraryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
  /libraries/{id}/scan:
    post:
      operationId: scanLibrary
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
  /libraries/{id}/statistics:
    get:
      operationId: getLibraryStatistics
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LibraryStatsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
  /libraries/{id}/validate:
    post:
      operationId: validate
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateLibraryDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidateLibraryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Libraries
  /map/markers:
    get:
      operationId: getMapMarkers
      parameters:
        - name: fileCreatedAfter
          required: false
          in: query
          schema:
            format: date-time
            type: string
        - name: fileCreatedBefore
          required: false
          in: query
          schema:
            format: date-time
            type: string
        - name: isArchived
          required: false
          in: query
          schema:
            type: boolean
        - name: isFavorite
          required: false
          in: query
          schema:
            type: boolean
        - name: withPartners
          required: false
          in: query
          schema:
            type: boolean
        - name: withSharedAlbums
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MapMarkerResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Map
  /map/reverse-geocode:
    get:
      operationId: reverseGeocode
      parameters:
        - name: lat
          required: true
          in: query
          schema:
            format: double
            type: number
        - name: lon
          required: true
          in: query
          schema:
            format: double
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MapReverseGeocodeResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Map
  /memories:
    get:
      operationId: searchMemories
      parameters:
        - name: for
          required: false
          in: query
          schema:
            format: date-time
            type: string
        - name: isSaved
          required: false
          in: query
          schema:
            type: boolean
        - name: isTrashed
          required: false
          in: query
          schema:
            type: boolean
        - name: type
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/MemoryType'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/MemoryResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
    post:
      operationId: createMemory
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
  /memories/{id}:
    delete:
      operationId: deleteMemory
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
    get:
      operationId: getMemory
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
    put:
      operationId: updateMemory
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MemoryUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MemoryResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
  /memories/{id}/assets:
    delete:
      operationId: removeMemoryAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
    put:
      operationId: addMemoryAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Memories
  /notifications:
    delete:
      operationId: deleteNotifications
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationDeleteAllDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
    get:
      operationId: getNotifications
      parameters:
        - name: id
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: level
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/NotificationLevel'
        - name: type
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/NotificationType'
        - name: unread
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NotificationDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
    put:
      operationId: updateNotifications
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationUpdateAllDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
  /notifications/{id}:
    delete:
      operationId: deleteNotification
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
    get:
      operationId: getNotification
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
    put:
      operationId: updateNotification
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NotificationUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotificationDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Notifications
  /oauth/authorize:
    post:
      operationId: startOAuth
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OAuthConfigDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OAuthAuthorizeResponseDto'
          description: ''
      tags:
        - OAuth
  /oauth/callback:
    post:
      operationId: finishOAuth
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OAuthCallbackDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponseDto'
          description: ''
      tags:
        - OAuth
  /oauth/link:
    post:
      operationId: linkOAuthAccount
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OAuthCallbackDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - OAuth
  /oauth/mobile-redirect:
    get:
      operationId: redirectOAuthToMobile
      parameters: []
      responses:
        '200':
          description: ''
      tags:
        - OAuth
  /oauth/unlink:
    post:
      operationId: unlinkOAuthAccount
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - OAuth
  /partners:
    get:
      operationId: getPartners
      parameters:
        - name: direction
          required: true
          in: query
          schema:
            $ref: '#/components/schemas/PartnerDirection'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PartnerResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Partners
  /partners/{id}:
    delete:
      operationId: removePartner
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Partners
    post:
      operationId: createPartner
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Partners
    put:
      operationId: updatePartner
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePartnerDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Partners
  /people:
    get:
      operationId: getAllPeople
      parameters:
        - name: closestAssetId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: closestPersonId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: page
          required: false
          in: query
          description: Page number for pagination
          schema:
            minimum: 1
            default: 1
            type: number
        - name: size
          required: false
          in: query
          description: Number of items per page
          schema:
            minimum: 1
            maximum: 1000
            default: 500
            type: number
        - name: withHidden
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PeopleResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
    post:
      operationId: createPerson
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
    put:
      operationId: updatePeople
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PeopleUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /people/{id}:
    get:
      operationId: getPerson
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
    put:
      operationId: updatePerson
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PersonUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /people/{id}/merge:
    post:
      operationId: mergePerson
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MergePersonDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /people/{id}/reassign:
    put:
      operationId: reassignFaces
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetFaceUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PersonResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /people/{id}/statistics:
    get:
      operationId: getPersonStatistics
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PersonStatisticsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /people/{id}/thumbnail:
    get:
      operationId: getPersonThumbnail
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - People
  /search/cities:
    get:
      operationId: getAssetsByCity
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/explore:
    get:
      operationId: getExploreData
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SearchExploreResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/metadata:
    post:
      operationId: searchAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataSearchDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/person:
    get:
      operationId: searchPerson
      parameters:
        - name: name
          required: true
          in: query
          schema:
            type: string
        - name: withHidden
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PersonResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/places:
    get:
      operationId: searchPlaces
      parameters:
        - name: name
          required: true
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/PlacesResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/random:
    post:
      operationId: searchRandom
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RandomSearchDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/smart:
    post:
      operationId: searchSmart
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SmartSearchDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /search/suggestions:
    get:
      operationId: getSearchSuggestions
      parameters:
        - name: country
          required: false
          in: query
          schema:
            type: string
        - name: includeNull
          required: false
          in: query
          description: This property was added in v111.0.0
          schema:
            type: boolean
        - name: make
          required: false
          in: query
          schema:
            type: string
        - name: model
          required: false
          in: query
          schema:
            type: string
        - name: state
          required: false
          in: query
          schema:
            type: string
        - name: type
          required: true
          in: query
          schema:
            $ref: '#/components/schemas/SearchSuggestionType'
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  type: string
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Search
  /server/about:
    get:
      operationId: getAboutInfo
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerAboutResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
  /server/config:
    get:
      operationId: getServerConfig
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerConfigDto'
          description: ''
      tags:
        - Server
  /server/features:
    get:
      operationId: getServerFeatures
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerFeaturesDto'
          description: ''
      tags:
        - Server
  /server/license:
    delete:
      operationId: deleteServerLicense
      parameters: []
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
    get:
      operationId: getServerLicense
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponseDto'
          description: ''
        '404':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
    put:
      operationId: setServerLicense
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseKeyDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
  /server/media-types:
    get:
      operationId: getSupportedMediaTypes
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerMediaTypesResponseDto'
          description: ''
      tags:
        - Server
  /server/ping:
    get:
      operationId: pingServer
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerPingResponse'
          description: ''
      tags:
        - Server
  /server/statistics:
    get:
      operationId: getServerStatistics
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerStatsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
  /server/storage:
    get:
      operationId: getStorage
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerStorageResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Server
  /server/theme:
    get:
      operationId: getTheme
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerThemeDto'
          description: ''
      tags:
        - Server
  /server/version:
    get:
      operationId: getServerVersion
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServerVersionResponseDto'
          description: ''
      tags:
        - Server
  /server/version-history:
    get:
      operationId: getVersionHistory
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ServerVersionHistoryResponseDto'
                type: array
          description: ''
      tags:
        - Server
  /sessions:
    delete:
      operationId: deleteAllSessions
      parameters: []
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sessions
    get:
      operationId: getSessions
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SessionResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sessions
    post:
      operationId: createSession
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SessionCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionCreateResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sessions
  /sessions/{id}:
    delete:
      operationId: deleteSession
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sessions
  /sessions/{id}/lock:
    post:
      operationId: lockSession
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sessions
  /shared-links:
    get:
      operationId: getAllSharedLinks
      parameters:
        - name: albumId
          required: false
          in: query
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SharedLinkResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
    post:
      operationId: createSharedLink
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedLinkCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedLinkResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
  /shared-links/me:
    get:
      operationId: getMySharedLink
      parameters:
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: password
          required: false
          in: query
          schema:
            example: password
            type: string
        - name: token
          required: false
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedLinkResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
  /shared-links/{id}:
    delete:
      operationId: removeSharedLink
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
    get:
      operationId: getSharedLinkById
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedLinkResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
    patch:
      operationId: updateSharedLink
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedLinkEditDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SharedLinkResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
  /shared-links/{id}/assets:
    delete:
      operationId: removeSharedLinkAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetIdsResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
    put:
      operationId: addSharedLinkAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
        - name: key
          required: false
          in: query
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetIdsResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Shared Links
  /stacks:
    delete:
      operationId: deleteStacks
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
    get:
      operationId: searchStacks
      parameters:
        - name: primaryAssetId
          required: false
          in: query
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/StackResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
    post:
      operationId: createStack
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StackCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
  /stacks/{id}:
    delete:
      operationId: deleteStack
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
    get:
      operationId: getStack
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
    put:
      operationId: updateStack
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StackUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StackResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Stacks
  /sync/ack:
    delete:
      operationId: deleteSyncAck
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncAckDeleteDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
    get:
      operationId: getSyncAck
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/SyncAckDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
    post:
      operationId: sendSyncAck
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncAckSetDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
  /sync/delta-sync:
    post:
      operationId: getDeltaSync
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetDeltaSyncDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetDeltaSyncResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
  /sync/full-sync:
    post:
      operationId: getFullSyncForUser
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetFullSyncDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
  /sync/stream:
    post:
      operationId: getSyncStream
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SyncStreamDto'
        required: true
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Sync
  /system-config:
    get:
      operationId: getConfig
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemConfigDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Config
    put:
      operationId: updateConfig
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SystemConfigDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemConfigDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Config
  /system-config/defaults:
    get:
      operationId: getConfigDefaults
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemConfigDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Config
  /system-config/storage-template-options:
    get:
      operationId: getStorageTemplateOptions
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SystemConfigTemplateStorageOptionDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Config
  /system-metadata/admin-onboarding:
    get:
      operationId: getAdminOnboarding
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminOnboardingUpdateDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Metadata
    post:
      operationId: updateAdminOnboarding
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AdminOnboardingUpdateDto'
        required: true
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Metadata
  /system-metadata/reverse-geocoding-state:
    get:
      operationId: getReverseGeocodingState
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReverseGeocodingStateResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - System Metadata
  /tags:
    get:
      operationId: getAllTags
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TagResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
    post:
      operationId: createTag
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagCreateDto'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
    put:
      operationId: upsertTags
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagUpsertDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TagResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
  /tags/assets:
    put:
      operationId: bulkTagAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagBulkAssetsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagBulkAssetsResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
  /tags/{id}:
    delete:
      operationId: deleteTag
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
    get:
      operationId: getTagById
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
    put:
      operationId: updateTag
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
  /tags/{id}/assets:
    delete:
      operationId: untagAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
    put:
      operationId: tagAssets
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/BulkIdResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Tags
  /timeline/bucket:
    get:
      operationId: getTimeBucket
      parameters:
        - name: albumId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: isFavorite
          required: false
          in: query
          schema:
            type: boolean
        - name: isTrashed
          required: false
          in: query
          schema:
            type: boolean
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: order
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetOrder'
        - name: personId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: size
          required: true
          in: query
          schema:
            $ref: '#/components/schemas/TimeBucketSize'
        - name: tagId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: timeBucket
          required: true
          in: query
          schema:
            type: string
        - name: userId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: visibility
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetVisibility'
        - name: withPartners
          required: false
          in: query
          schema:
            type: boolean
        - name: withStacked
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Timeline
  /timeline/buckets:
    get:
      operationId: getTimeBuckets
      parameters:
        - name: albumId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: isFavorite
          required: false
          in: query
          schema:
            type: boolean
        - name: isTrashed
          required: false
          in: query
          schema:
            type: boolean
        - name: key
          required: false
          in: query
          schema:
            type: string
        - name: order
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetOrder'
        - name: personId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: size
          required: true
          in: query
          schema:
            $ref: '#/components/schemas/TimeBucketSize'
        - name: tagId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: userId
          required: false
          in: query
          schema:
            format: uuid
            type: string
        - name: visibility
          required: false
          in: query
          schema:
            $ref: '#/components/schemas/AssetVisibility'
        - name: withPartners
          required: false
          in: query
          schema:
            type: boolean
        - name: withStacked
          required: false
          in: query
          schema:
            type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/TimeBucketResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Timeline
  /trash/empty:
    post:
      operationId: emptyTrash
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrashResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Trash
  /trash/restore:
    post:
      operationId: restoreTrash
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrashResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Trash
  /trash/restore/assets:
    post:
      operationId: restoreAssets
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkIdsDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrashResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Trash
  /users:
    get:
      operationId: searchUsers
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/UserResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/me:
    get:
      operationId: getMyUser
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
    put:
      operationId: updateMyUser
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserUpdateMeDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAdminResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/me/license:
    delete:
      operationId: deleteUserLicense
      parameters: []
      responses:
        '200':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
    get:
      operationId: getUserLicense
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
    put:
      operationId: setUserLicense
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseKeyDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/me/preferences:
    get:
      operationId: getMyPreferences
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
    put:
      operationId: updateMyPreferences
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserPreferencesUpdateDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserPreferencesResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/profile-image:
    delete:
      operationId: deleteProfileImage
      parameters: []
      responses:
        '204':
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
    post:
      operationId: createProfileImage
      parameters: []
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CreateProfileImageDto'
        description: A new avatar for the user
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateProfileImageResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/{id}:
    get:
      operationId: getUser
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserResponseDto'
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /users/{id}/profile-image:
    get:
      operationId: getProfileImage
      parameters:
        - name: id
          required: true
          in: path
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/octet-stream:
              schema:
                format: binary
                type: string
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - Users
  /view/folder:
    get:
      operationId: getAssetsByOriginalPath
      parameters:
        - name: path
          required: true
          in: query
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/AssetResponseDto'
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - View
  /view/folder/unique-paths:
    get:
      operationId: getUniqueOriginalPaths
      parameters: []
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  type: string
                type: array
          description: ''
      security:
        - bearer: []
        - cookie: []
        - api_key: []
      tags:
        - View
info:
  title: Immich
  description: Immich API
  version: 1.132.3
  contact: {}
tags: []
servers:
  - url: https://bildes.blue.lv/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
      example: "wFX1c4CeYHjGkpy48ON3G3F6BRJrQh2TB52n3SQ2o6U"
  schemas:
    APIKeyCreateDto:
      properties:
        name:
          type: string
        permissions:
          items:
            $ref: '#/components/schemas/Permission'
          minItems: 1
          type: array
      required:
        - permissions
      type: object
    APIKeyCreateResponseDto:
      properties:
        apiKey:
          $ref: '#/components/schemas/APIKeyResponseDto'
        secret:
          type: string
      required:
        - apiKey
        - secret
      type: object
    APIKeyResponseDto:
      properties:
        createdAt:
          format: date-time
          type: string
        id:
          type: string
        name:
          type: string
        permissions:
          items:
            $ref: '#/components/schemas/Permission'
          type: array
        updatedAt:
          format: date-time
          type: string
      required:
        - createdAt
        - id
        - name
        - permissions
        - updatedAt
      type: object
    APIKeyUpdateDto:
      properties:
        name:
          type: string
      required:
        - name
      type: object
    ActivityCreateDto:
      properties:
        albumId:
          format: uuid
          type: string
        assetId:
          format: uuid
          type: string
        comment:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/ReactionType'
      required:
        - albumId
        - type
      type: object
    ActivityResponseDto:
      properties:
        assetId:
          nullable: true
          type: string
        comment:
          nullable: true
          type: string
        createdAt:
          format: date-time
          type: string
        id:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/ReactionType'
        user:
          $ref: '#/components/schemas/UserResponseDto'
      required:
        - assetId
        - createdAt
        - id
        - type
        - user
      type: object
    ActivityStatisticsResponseDto:
      properties:
        comments:
          type: integer
      required:
        - comments
      type: object
    AddUsersDto:
      properties:
        albumUsers:
          items:
            $ref: '#/components/schemas/AlbumUserAddDto'
          minItems: 1
          type: array
      required:
        - albumUsers
      type: object
    AdminOnboardingUpdateDto:
      properties:
        isOnboarded:
          type: boolean
      required:
        - isOnboarded
      type: object
    AlbumResponseDto:
      properties:
        albumName:
          type: string
        albumThumbnailAssetId:
          nullable: true
          type: string
        albumUsers:
          items:
            $ref: '#/components/schemas/AlbumUserResponseDto'
          type: array
        assetCount:
          type: integer
        assets:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        createdAt:
          format: date-time
          type: string
        description:
          type: string
        endDate:
          format: date-time
          type: string
        hasSharedLink:
          type: boolean
        id:
          type: string
        isActivityEnabled:
          type: boolean
        lastModifiedAssetTimestamp:
          format: date-time
          type: string
        order:
          allOf:
            - $ref: '#/components/schemas/AssetOrder'
        owner:
          $ref: '#/components/schemas/UserResponseDto'
        ownerId:
          type: string
        shared:
          type: boolean
        startDate:
          format: date-time
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - albumName
        - albumThumbnailAssetId
        - albumUsers
        - assetCount
        - assets
        - createdAt
        - description
        - hasSharedLink
        - id
        - isActivityEnabled
        - owner
        - ownerId
        - shared
        - updatedAt
      type: object
    AlbumStatisticsResponseDto:
      properties:
        notShared:
          type: integer
        owned:
          type: integer
        shared:
          type: integer
      required:
        - notShared
        - owned
        - shared
      type: object
    AlbumUserAddDto:
      properties:
        role:
          allOf:
            - $ref: '#/components/schemas/AlbumUserRole'
          default: editor
        userId:
          format: uuid
          type: string
      required:
        - userId
      type: object
    AlbumUserCreateDto:
      properties:
        role:
          allOf:
            - $ref: '#/components/schemas/AlbumUserRole'
        userId:
          format: uuid
          type: string
      required:
        - role
        - userId
      type: object
    AlbumUserResponseDto:
      properties:
        role:
          allOf:
            - $ref: '#/components/schemas/AlbumUserRole'
        user:
          $ref: '#/components/schemas/UserResponseDto'
      required:
        - role
        - user
      type: object
    AlbumUserRole:
      enum:
        - editor
        - viewer
      type: string
    AllJobStatusResponseDto:
      properties:
        backgroundTask:
          $ref: '#/components/schemas/JobStatusDto'
        backupDatabase:
          $ref: '#/components/schemas/JobStatusDto'
        duplicateDetection:
          $ref: '#/components/schemas/JobStatusDto'
        faceDetection:
          $ref: '#/components/schemas/JobStatusDto'
        facialRecognition:
          $ref: '#/components/schemas/JobStatusDto'
        library:
          $ref: '#/components/schemas/JobStatusDto'
        metadataExtraction:
          $ref: '#/components/schemas/JobStatusDto'
        migration:
          $ref: '#/components/schemas/JobStatusDto'
        notifications:
          $ref: '#/components/schemas/JobStatusDto'
        search:
          $ref: '#/components/schemas/JobStatusDto'
        sidecar:
          $ref: '#/components/schemas/JobStatusDto'
        smartSearch:
          $ref: '#/components/schemas/JobStatusDto'
        storageTemplateMigration:
          $ref: '#/components/schemas/JobStatusDto'
        thumbnailGeneration:
          $ref: '#/components/schemas/JobStatusDto'
        videoConversion:
          $ref: '#/components/schemas/JobStatusDto'
      required:
        - backgroundTask
        - backupDatabase
        - duplicateDetection
        - faceDetection
        - facialRecognition
        - library
        - metadataExtraction
        - migration
        - notifications
        - search
        - sidecar
        - smartSearch
        - storageTemplateMigration
        - thumbnailGeneration
        - videoConversion
      type: object
    AssetBulkDeleteDto:
      properties:
        force:
          type: boolean
        ids:
          items:
            format: uuid
            type: string
          type: array
      required:
        - ids
      type: object
    AssetBulkUpdateDto:
      properties:
        dateTimeOriginal:
          type: string
        duplicateId:
          nullable: true
          type: string
        ids:
          items:
            format: uuid
            type: string
          type: array
        isFavorite:
          type: boolean
        latitude:
          type: number
        longitude:
          type: number
        rating:
          maximum: 5
          minimum: -1
          type: number
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
      required:
        - ids
      type: object
    AssetBulkUploadCheckDto:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/AssetBulkUploadCheckItem'
          type: array
      required:
        - assets
      type: object
    AssetBulkUploadCheckItem:
      properties:
        checksum:
          description: base64 or hex encoded sha1 hash
          type: string
        id:
          type: string
      required:
        - checksum
        - id
      type: object
    AssetBulkUploadCheckResponseDto:
      properties:
        results:
          items:
            $ref: '#/components/schemas/AssetBulkUploadCheckResult'
          type: array
      required:
        - results
      type: object
    AssetBulkUploadCheckResult:
      properties:
        action:
          enum:
            - accept
            - reject
          type: string
        assetId:
          type: string
        id:
          type: string
        isTrashed:
          type: boolean
        reason:
          enum:
            - duplicate
            - unsupported-format
          type: string
      required:
        - action
        - id
      type: object
    AssetDeltaSyncDto:
      properties:
        updatedAfter:
          format: date-time
          type: string
        userIds:
          items:
            format: uuid
            type: string
          type: array
      required:
        - updatedAfter
        - userIds
      type: object
    AssetDeltaSyncResponseDto:
      properties:
        deleted:
          items:
            type: string
          type: array
        needsFullSync:
          type: boolean
        upserted:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
      required:
        - deleted
        - needsFullSync
        - upserted
      type: object
    AssetFaceCreateDto:
      properties:
        assetId:
          format: uuid
          type: string
        height:
          type: integer
        imageHeight:
          type: integer
        imageWidth:
          type: integer
        personId:
          format: uuid
          type: string
        width:
          type: integer
        x:
          type: integer
        'y':
          type: integer
      required:
        - assetId
        - height
        - imageHeight
        - imageWidth
        - personId
        - width
        - x
        - 'y'
      type: object
    AssetFaceDeleteDto:
      properties:
        force:
          type: boolean
      required:
        - force
      type: object
    AssetFaceResponseDto:
      properties:
        boundingBoxX1:
          type: integer
        boundingBoxX2:
          type: integer
        boundingBoxY1:
          type: integer
        boundingBoxY2:
          type: integer
        id:
          format: uuid
          type: string
        imageHeight:
          type: integer
        imageWidth:
          type: integer
        person:
          allOf:
            - $ref: '#/components/schemas/PersonResponseDto'
          nullable: true
        sourceType:
          allOf:
            - $ref: '#/components/schemas/SourceType'
      required:
        - boundingBoxX1
        - boundingBoxX2
        - boundingBoxY1
        - boundingBoxY2
        - id
        - imageHeight
        - imageWidth
        - person
      type: object
    AssetFaceUpdateDto:
      properties:
        data:
          items:
            $ref: '#/components/schemas/AssetFaceUpdateItem'
          type: array
      required:
        - data
      type: object
    AssetFaceUpdateItem:
      properties:
        assetId:
          format: uuid
          type: string
        personId:
          format: uuid
          type: string
      required:
        - assetId
        - personId
      type: object
    AssetFaceWithoutPersonResponseDto:
      properties:
        boundingBoxX1:
          type: integer
        boundingBoxX2:
          type: integer
        boundingBoxY1:
          type: integer
        boundingBoxY2:
          type: integer
        id:
          format: uuid
          type: string
        imageHeight:
          type: integer
        imageWidth:
          type: integer
        sourceType:
          allOf:
            - $ref: '#/components/schemas/SourceType'
      required:
        - boundingBoxX1
        - boundingBoxX2
        - boundingBoxY1
        - boundingBoxY2
        - id
        - imageHeight
        - imageWidth
      type: object
    AssetFullSyncDto:
      properties:
        lastId:
          format: uuid
          type: string
        limit:
          minimum: 1
          type: integer
        updatedUntil:
          format: date-time
          type: string
        userId:
          format: uuid
          type: string
      required:
        - limit
        - updatedUntil
      type: object
    AssetIdsDto:
      properties:
        assetIds:
          items:
            format: uuid
            type: string
          type: array
      required:
        - assetIds
      type: object
    AssetIdsResponseDto:
      properties:
        assetId:
          type: string
        error:
          enum:
            - duplicate
            - no_permission
            - not_found
          type: string
        success:
          type: boolean
      required:
        - assetId
        - success
      type: object
    AssetJobName:
      enum:
        - refresh-faces
        - refresh-metadata
        - regenerate-thumbnail
        - transcode-video
      type: string
    AssetJobsDto:
      properties:
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        name:
          allOf:
            - $ref: '#/components/schemas/AssetJobName'
      required:
        - assetIds
        - name
      type: object
    AssetMediaCreateDto:
      properties:
        assetData:
          format: binary
          type: string
        deviceAssetId:
          type: string
        deviceId:
          type: string
        duration:
          type: string
        fileCreatedAt:
          format: date-time
          type: string
        fileModifiedAt:
          format: date-time
          type: string
        isFavorite:
          type: boolean
        livePhotoVideoId:
          format: uuid
          type: string
        sidecarData:
          format: binary
          type: string
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
      required:
        - assetData
        - deviceAssetId
        - deviceId
        - fileCreatedAt
        - fileModifiedAt
      type: object
    AssetMediaReplaceDto:
      properties:
        assetData:
          format: binary
          type: string
        deviceAssetId:
          type: string
        deviceId:
          type: string
        duration:
          type: string
        fileCreatedAt:
          format: date-time
          type: string
        fileModifiedAt:
          format: date-time
          type: string
      required:
        - assetData
        - deviceAssetId
        - deviceId
        - fileCreatedAt
        - fileModifiedAt
      type: object
    AssetMediaResponseDto:
      properties:
        id:
          type: string
        status:
          allOf:
            - $ref: '#/components/schemas/AssetMediaStatus'
      required:
        - id
        - status
      type: object
    AssetMediaSize:
      enum:
        - fullsize
        - preview
        - thumbnail
      type: string
    AssetMediaStatus:
      enum:
        - created
        - replaced
        - duplicate
      type: string
    AssetOrder:
      enum:
        - asc
        - desc
      type: string
    AssetResponseDto:
      properties:
        checksum:
          description: base64 encoded sha1 hash
          type: string
        deviceAssetId:
          type: string
        deviceId:
          type: string
        duplicateId:
          nullable: true
          type: string
        duration:
          type: string
        exifInfo:
          $ref: '#/components/schemas/ExifResponseDto'
        fileCreatedAt:
          format: date-time
          type: string
        fileModifiedAt:
          format: date-time
          type: string
        hasMetadata:
          type: boolean
        id:
          type: string
        isArchived:
          type: boolean
        isFavorite:
          type: boolean
        isOffline:
          type: boolean
        isTrashed:
          type: boolean
        libraryId:
          deprecated: true
          description: This property was deprecated in v1.106.0
          nullable: true
          type: string
        livePhotoVideoId:
          nullable: true
          type: string
        localDateTime:
          format: date-time
          type: string
        originalFileName:
          type: string
        originalMimeType:
          type: string
        originalPath:
          type: string
        owner:
          $ref: '#/components/schemas/UserResponseDto'
        ownerId:
          type: string
        people:
          items:
            $ref: '#/components/schemas/PersonWithFacesResponseDto'
          type: array
        resized:
          deprecated: true
          description: This property was deprecated in v1.113.0
          type: boolean
        stack:
          allOf:
            - $ref: '#/components/schemas/AssetStackResponseDto'
          nullable: true
        tags:
          items:
            $ref: '#/components/schemas/TagResponseDto'
          type: array
        thumbhash:
          nullable: true
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/AssetTypeEnum'
        unassignedFaces:
          items:
            $ref: '#/components/schemas/AssetFaceWithoutPersonResponseDto'
          type: array
        updatedAt:
          format: date-time
          type: string
        visibility:
          enum:
            - archive
            - timeline
            - hidden
            - locked
          type: string
      required:
        - checksum
        - deviceAssetId
        - deviceId
        - duration
        - fileCreatedAt
        - fileModifiedAt
        - hasMetadata
        - id
        - isArchived
        - isFavorite
        - isOffline
        - isTrashed
        - localDateTime
        - originalFileName
        - originalPath
        - ownerId
        - thumbhash
        - type
        - updatedAt
        - visibility
      type: object
    AssetStackResponseDto:
      properties:
        assetCount:
          type: integer
        id:
          type: string
        primaryAssetId:
          type: string
      required:
        - assetCount
        - id
        - primaryAssetId
      type: object
    AssetStatsResponseDto:
      properties:
        images:
          type: integer
        total:
          type: integer
        videos:
          type: integer
      required:
        - images
        - total
        - videos
      type: object
    AssetTypeEnum:
      enum:
        - IMAGE
        - VIDEO
        - AUDIO
        - OTHER
      type: string
    AssetVisibility:
      enum:
        - archive
        - timeline
        - hidden
        - locked
      type: string
    AudioCodec:
      enum:
        - mp3
        - aac
        - libopus
        - pcm_s16le
      type: string
    AuthStatusResponseDto:
      properties:
        expiresAt:
          type: string
        isElevated:
          type: boolean
        password:
          type: boolean
        pinCode:
          type: boolean
        pinExpiresAt:
          type: string
      required:
        - isElevated
        - password
        - pinCode
      type: object
    AvatarUpdate:
      properties:
        color:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
      type: object
    BulkIdResponseDto:
      properties:
        error:
          enum:
            - duplicate
            - no_permission
            - not_found
            - unknown
          type: string
        id:
          type: string
        success:
          type: boolean
      required:
        - id
        - success
      type: object
    BulkIdsDto:
      properties:
        ids:
          items:
            format: uuid
            type: string
          type: array
      required:
        - ids
      type: object
    CLIPConfig:
      properties:
        enabled:
          type: boolean
        modelName:
          type: string
      required:
        - enabled
        - modelName
      type: object
    CQMode:
      enum:
        - auto
        - cqp
        - icq
      type: string
    ChangePasswordDto:
      properties:
        newPassword:
          example: password
          minLength: 8
          type: string
        password:
          example: password
          type: string
      required:
        - newPassword
        - password
      type: object
    CheckExistingAssetsDto:
      properties:
        deviceAssetIds:
          items:
            type: string
          minItems: 1
          type: array
        deviceId:
          type: string
      required:
        - deviceAssetIds
        - deviceId
      type: object
    CheckExistingAssetsResponseDto:
      properties:
        existingIds:
          items:
            type: string
          type: array
      required:
        - existingIds
      type: object
    Colorspace:
      enum:
        - srgb
        - p3
      type: string
    CreateAlbumDto:
      properties:
        albumName:
          type: string
        albumUsers:
          items:
            $ref: '#/components/schemas/AlbumUserCreateDto'
          type: array
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        description:
          type: string
      required:
        - albumName
      type: object
    CreateLibraryDto:
      properties:
        exclusionPatterns:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
        importPaths:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
        name:
          type: string
        ownerId:
          format: uuid
          type: string
      required:
        - ownerId
      type: object
    CreateProfileImageDto:
      properties:
        file:
          format: binary
          type: string
      required:
        - file
      type: object
    CreateProfileImageResponseDto:
      properties:
        profileChangedAt:
          format: date-time
          type: string
        profileImagePath:
          type: string
        userId:
          type: string
      required:
        - profileChangedAt
        - profileImagePath
        - userId
      type: object
    DatabaseBackupConfig:
      properties:
        cronExpression:
          type: string
        enabled:
          type: boolean
        keepLastAmount:
          minimum: 1
          type: number
      required:
        - cronExpression
        - enabled
        - keepLastAmount
      type: object
    DownloadArchiveInfo:
      properties:
        assetIds:
          items:
            type: string
          type: array
        size:
          type: integer
      required:
        - assetIds
        - size
      type: object
    DownloadInfoDto:
      properties:
        albumId:
          format: uuid
          type: string
        archiveSize:
          minimum: 1
          type: integer
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        userId:
          format: uuid
          type: string
      type: object
    DownloadResponse:
      properties:
        archiveSize:
          type: integer
        includeEmbeddedVideos:
          default: false
          type: boolean
      required:
        - archiveSize
        - includeEmbeddedVideos
      type: object
    DownloadResponseDto:
      properties:
        archives:
          items:
            $ref: '#/components/schemas/DownloadArchiveInfo'
          type: array
        totalSize:
          type: integer
      required:
        - archives
        - totalSize
      type: object
    DownloadUpdate:
      properties:
        archiveSize:
          minimum: 1
          type: integer
        includeEmbeddedVideos:
          type: boolean
      type: object
    DuplicateDetectionConfig:
      properties:
        enabled:
          type: boolean
        maxDistance:
          format: double
          maximum: 0.1
          minimum: 0.001
          type: number
      required:
        - enabled
        - maxDistance
      type: object
    DuplicateResponseDto:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        duplicateId:
          type: string
      required:
        - assets
        - duplicateId
      type: object
    EmailNotificationsResponse:
      properties:
        albumInvite:
          type: boolean
        albumUpdate:
          type: boolean
        enabled:
          type: boolean
      required:
        - albumInvite
        - albumUpdate
        - enabled
      type: object
    EmailNotificationsUpdate:
      properties:
        albumInvite:
          type: boolean
        albumUpdate:
          type: boolean
        enabled:
          type: boolean
      type: object
    ExifResponseDto:
      properties:
        city:
          default: null
          nullable: true
          type: string
        country:
          default: null
          nullable: true
          type: string
        dateTimeOriginal:
          default: null
          format: date-time
          nullable: true
          type: string
        description:
          default: null
          nullable: true
          type: string
        exifImageHeight:
          default: null
          nullable: true
          type: number
        exifImageWidth:
          default: null
          nullable: true
          type: number
        exposureTime:
          default: null
          nullable: true
          type: string
        fNumber:
          default: null
          nullable: true
          type: number
        fileSizeInByte:
          default: null
          format: int64
          nullable: true
          type: integer
        focalLength:
          default: null
          nullable: true
          type: number
        iso:
          default: null
          nullable: true
          type: number
        latitude:
          default: null
          nullable: true
          type: number
        lensModel:
          default: null
          nullable: true
          type: string
        longitude:
          default: null
          nullable: true
          type: number
        make:
          default: null
          nullable: true
          type: string
        model:
          default: null
          nullable: true
          type: string
        modifyDate:
          default: null
          format: date-time
          nullable: true
          type: string
        orientation:
          default: null
          nullable: true
          type: string
        projectionType:
          default: null
          nullable: true
          type: string
        rating:
          default: null
          nullable: true
          type: number
        state:
          default: null
          nullable: true
          type: string
        timeZone:
          default: null
          nullable: true
          type: string
      type: object
    FaceDto:
      properties:
        id:
          format: uuid
          type: string
      required:
        - id
      type: object
    FacialRecognitionConfig:
      properties:
        enabled:
          type: boolean
        maxDistance:
          format: double
          maximum: 2
          minimum: 0.1
          type: number
        minFaces:
          minimum: 1
          type: integer
        minScore:
          format: double
          maximum: 1
          minimum: 0.1
          type: number
        modelName:
          type: string
      required:
        - enabled
        - maxDistance
        - minFaces
        - minScore
        - modelName
      type: object
    FoldersResponse:
      properties:
        enabled:
          default: false
          type: boolean
        sidebarWeb:
          default: false
          type: boolean
      required:
        - enabled
        - sidebarWeb
      type: object
    FoldersUpdate:
      properties:
        enabled:
          type: boolean
        sidebarWeb:
          type: boolean
      type: object
    ImageFormat:
      enum:
        - jpeg
        - webp
      type: string
    JobCommand:
      enum:
        - start
        - pause
        - resume
        - empty
        - clear-failed
      type: string
    JobCommandDto:
      properties:
        command:
          allOf:
            - $ref: '#/components/schemas/JobCommand'
        force:
          type: boolean
      required:
        - command
      type: object
    JobCountsDto:
      properties:
        active:
          type: integer
        completed:
          type: integer
        delayed:
          type: integer
        failed:
          type: integer
        paused:
          type: integer
        waiting:
          type: integer
      required:
        - active
        - completed
        - delayed
        - failed
        - paused
        - waiting
      type: object
    JobCreateDto:
      properties:
        name:
          allOf:
            - $ref: '#/components/schemas/ManualJobName'
      required:
        - name
      type: object
    JobName:
      enum:
        - thumbnailGeneration
        - metadataExtraction
        - videoConversion
        - faceDetection
        - facialRecognition
        - smartSearch
        - duplicateDetection
        - backgroundTask
        - storageTemplateMigration
        - migration
        - search
        - sidecar
        - library
        - notifications
        - backupDatabase
      type: string
    JobSettingsDto:
      properties:
        concurrency:
          minimum: 1
          type: integer
      required:
        - concurrency
      type: object
    JobStatusDto:
      properties:
        jobCounts:
          $ref: '#/components/schemas/JobCountsDto'
        queueStatus:
          $ref: '#/components/schemas/QueueStatusDto'
      required:
        - jobCounts
        - queueStatus
      type: object
    LibraryResponseDto:
      properties:
        assetCount:
          type: integer
        createdAt:
          format: date-time
          type: string
        exclusionPatterns:
          items:
            type: string
          type: array
        id:
          type: string
        importPaths:
          items:
            type: string
          type: array
        name:
          type: string
        ownerId:
          type: string
        refreshedAt:
          format: date-time
          nullable: true
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - assetCount
        - createdAt
        - exclusionPatterns
        - id
        - importPaths
        - name
        - ownerId
        - refreshedAt
        - updatedAt
      type: object
    LibraryStatsResponseDto:
      properties:
        photos:
          default: 0
          type: integer
        total:
          default: 0
          type: integer
        usage:
          default: 0
          format: int64
          type: integer
        videos:
          default: 0
          type: integer
      required:
        - photos
        - total
        - usage
        - videos
      type: object
    LicenseKeyDto:
      properties:
        activationKey:
          type: string
        licenseKey:
          pattern: /IM(SV|CL)(-[\dA-Za-z]{4}){8}/
          type: string
      required:
        - activationKey
        - licenseKey
      type: object
    LicenseResponseDto:
      properties:
        activatedAt:
          format: date-time
          type: string
        activationKey:
          type: string
        licenseKey:
          pattern: /IM(SV|CL)(-[\dA-Za-z]{4}){8}/
          type: string
      required:
        - activatedAt
        - activationKey
        - licenseKey
      type: object
    LogLevel:
      enum:
        - verbose
        - debug
        - log
        - warn
        - error
        - fatal
      type: string
    LoginCredentialDto:
      properties:
        email:
          example: testuser@email.com
          format: email
          type: string
        password:
          example: password
          type: string
      required:
        - email
        - password
      type: object
    LoginResponseDto:
      properties:
        accessToken:
          type: string
        isAdmin:
          type: boolean
        name:
          type: string
        profileImagePath:
          type: string
        shouldChangePassword:
          type: boolean
        userEmail:
          type: string
        userId:
          type: string
      required:
        - accessToken
        - isAdmin
        - name
        - profileImagePath
        - shouldChangePassword
        - userEmail
        - userId
      type: object
    LogoutResponseDto:
      properties:
        redirectUri:
          type: string
        successful:
          type: boolean
      required:
        - redirectUri
        - successful
      type: object
    ManualJobName:
      enum:
        - person-cleanup
        - tag-cleanup
        - user-cleanup
        - memory-cleanup
        - memory-create
        - backup-database
      type: string
    MapMarkerResponseDto:
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        id:
          type: string
        lat:
          format: double
          type: number
        lon:
          format: double
          type: number
        state:
          nullable: true
          type: string
      required:
        - city
        - country
        - id
        - lat
        - lon
        - state
      type: object
    MapReverseGeocodeResponseDto:
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        state:
          nullable: true
          type: string
      required:
        - city
        - country
        - state
      type: object
    MemoriesResponse:
      properties:
        enabled:
          default: true
          type: boolean
      required:
        - enabled
      type: object
    MemoriesUpdate:
      properties:
        enabled:
          type: boolean
      type: object
    MemoryCreateDto:
      properties:
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        data:
          $ref: '#/components/schemas/OnThisDayDto'
        isSaved:
          type: boolean
        memoryAt:
          format: date-time
          type: string
        seenAt:
          format: date-time
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/MemoryType'
      required:
        - data
        - memoryAt
        - type
      type: object
    MemoryResponseDto:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        createdAt:
          format: date-time
          type: string
        data:
          $ref: '#/components/schemas/OnThisDayDto'
        deletedAt:
          format: date-time
          type: string
        hideAt:
          format: date-time
          type: string
        id:
          type: string
        isSaved:
          type: boolean
        memoryAt:
          format: date-time
          type: string
        ownerId:
          type: string
        seenAt:
          format: date-time
          type: string
        showAt:
          format: date-time
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/MemoryType'
        updatedAt:
          format: date-time
          type: string
      required:
        - assets
        - createdAt
        - data
        - id
        - isSaved
        - memoryAt
        - ownerId
        - type
        - updatedAt
      type: object
    MemoryType:
      enum:
        - on_this_day
      type: string
    MemoryUpdateDto:
      properties:
        isSaved:
          type: boolean
        memoryAt:
          format: date-time
          type: string
        seenAt:
          format: date-time
          type: string
      type: object
    MergePersonDto:
      properties:
        ids:
          items:
            format: uuid
            type: string
          type: array
      required:
        - ids
      type: object
    MetadataSearchDto:
      properties:
        checksum:
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        createdAfter:
          format: date-time
          type: string
        createdBefore:
          format: date-time
          type: string
        description:
          type: string
        deviceAssetId:
          type: string
        deviceId:
          type: string
        encodedVideoPath:
          type: string
        id:
          format: uuid
          type: string
        isEncoded:
          type: boolean
        isFavorite:
          type: boolean
        isMotion:
          type: boolean
        isNotInAlbum:
          type: boolean
        isOffline:
          type: boolean
        lensModel:
          nullable: true
          type: string
        libraryId:
          format: uuid
          nullable: true
          type: string
        make:
          type: string
        model:
          nullable: true
          type: string
        order:
          allOf:
            - $ref: '#/components/schemas/AssetOrder'
          default: desc
        originalFileName:
          type: string
        originalPath:
          type: string
        page:
          minimum: 1
          type: number
        personIds:
          items:
            format: uuid
            type: string
          type: array
        previewPath:
          type: string
        rating:
          maximum: 5
          minimum: -1
          type: number
        size:
          maximum: 1000
          minimum: 1
          type: number
        state:
          nullable: true
          type: string
        tagIds:
          items:
            format: uuid
            type: string
          type: array
        takenAfter:
          format: date-time
          type: string
        takenBefore:
          format: date-time
          type: string
        thumbnailPath:
          type: string
        trashedAfter:
          format: date-time
          type: string
        trashedBefore:
          format: date-time
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/AssetTypeEnum'
        updatedAfter:
          format: date-time
          type: string
        updatedBefore:
          format: date-time
          type: string
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
        withDeleted:
          type: boolean
        withExif:
          type: boolean
        withPeople:
          type: boolean
        withStacked:
          type: boolean
      type: object
    NotificationCreateDto:
      properties:
        data:
          type: object
        description:
          nullable: true
          type: string
        level:
          allOf:
            - $ref: '#/components/schemas/NotificationLevel'
        readAt:
          format: date-time
          nullable: true
          type: string
        title:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/NotificationType'
        userId:
          format: uuid
          type: string
      required:
        - title
        - userId
      type: object
    NotificationDeleteAllDto:
      properties:
        ids:
          items:
            format: uuid
            type: string
          type: array
      required:
        - ids
      type: object
    NotificationDto:
      properties:
        createdAt:
          format: date-time
          type: string
        data:
          type: object
        description:
          type: string
        id:
          type: string
        level:
          allOf:
            - $ref: '#/components/schemas/NotificationLevel'
        readAt:
          format: date-time
          type: string
        title:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/NotificationType'
      required:
        - createdAt
        - id
        - level
        - title
        - type
      type: object
    NotificationLevel:
      enum:
        - success
        - error
        - warning
        - info
      type: string
    NotificationType:
      enum:
        - JobFailed
        - BackupFailed
        - SystemMessage
        - Custom
      type: string
    NotificationUpdateAllDto:
      properties:
        ids:
          items:
            format: uuid
            type: string
          type: array
        readAt:
          format: date-time
          nullable: true
          type: string
      required:
        - ids
      type: object
    NotificationUpdateDto:
      properties:
        readAt:
          format: date-time
          nullable: true
          type: string
      type: object
    OAuthAuthorizeResponseDto:
      properties:
        url:
          type: string
      required:
        - url
      type: object
    OAuthCallbackDto:
      properties:
        codeVerifier:
          type: string
        state:
          type: string
        url:
          type: string
      required:
        - url
      type: object
    OAuthConfigDto:
      properties:
        codeChallenge:
          type: string
        redirectUri:
          type: string
        state:
          type: string
      required:
        - redirectUri
      type: object
    OAuthTokenEndpointAuthMethod:
      enum:
        - client_secret_post
        - client_secret_basic
      type: string
    OnThisDayDto:
      properties:
        year:
          minimum: 1
          type: number
      required:
        - year
      type: object
    PartnerDirection:
      enum:
        - shared-by
        - shared-with
      type: string
    PartnerResponseDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
        email:
          type: string
        id:
          type: string
        inTimeline:
          type: boolean
        name:
          type: string
        profileChangedAt:
          format: date-time
          type: string
        profileImagePath:
          type: string
      required:
        - avatarColor
        - email
        - id
        - name
        - profileChangedAt
        - profileImagePath
      type: object
    PeopleResponse:
      properties:
        enabled:
          default: true
          type: boolean
        sidebarWeb:
          default: false
          type: boolean
      required:
        - enabled
        - sidebarWeb
      type: object
    PeopleResponseDto:
      properties:
        hasNextPage:
          description: This property was added in v1.110.0
          type: boolean
        hidden:
          type: integer
        people:
          items:
            $ref: '#/components/schemas/PersonResponseDto'
          type: array
        total:
          type: integer
      required:
        - hidden
        - people
        - total
      type: object
    PeopleUpdate:
      properties:
        enabled:
          type: boolean
        sidebarWeb:
          type: boolean
      type: object
    PeopleUpdateDto:
      properties:
        people:
          items:
            $ref: '#/components/schemas/PeopleUpdateItem'
          type: array
      required:
        - people
      type: object
    PeopleUpdateItem:
      properties:
        birthDate:
          description: |-
            Person date of birth.
            Note: the mobile app cannot currently set the birth date to null.
          format: date
          nullable: true
          type: string
        color:
          nullable: true
          type: string
        featureFaceAssetId:
          description: Asset is used to get the feature face thumbnail.
          format: uuid
          type: string
        id:
          description: Person id.
          type: string
        isFavorite:
          type: boolean
        isHidden:
          description: Person visibility
          type: boolean
        name:
          description: Person name.
          type: string
      required:
        - id
      type: object
    Permission:
      enum:
        - all
        - activity.create
        - activity.read
        - activity.update
        - activity.delete
        - activity.statistics
        - apiKey.create
        - apiKey.read
        - apiKey.update
        - apiKey.delete
        - asset.read
        - asset.update
        - asset.delete
        - asset.share
        - asset.view
        - asset.download
        - asset.upload
        - album.create
        - album.read
        - album.update
        - album.delete
        - album.statistics
        - album.addAsset
        - album.removeAsset
        - album.share
        - album.download
        - authDevice.delete
        - archive.read
        - face.create
        - face.read
        - face.update
        - face.delete
        - library.create
        - library.read
        - library.update
        - library.delete
        - library.statistics
        - timeline.read
        - timeline.download
        - memory.create
        - memory.read
        - memory.update
        - memory.delete
        - notification.create
        - notification.read
        - notification.update
        - notification.delete
        - partner.create
        - partner.read
        - partner.update
        - partner.delete
        - person.create
        - person.read
        - person.update
        - person.delete
        - person.statistics
        - person.merge
        - person.reassign
        - session.create
        - session.read
        - session.update
        - session.delete
        - session.lock
        - sharedLink.create
        - sharedLink.read
        - sharedLink.update
        - sharedLink.delete
        - stack.create
        - stack.read
        - stack.update
        - stack.delete
        - systemConfig.read
        - systemConfig.update
        - systemMetadata.read
        - systemMetadata.update
        - tag.create
        - tag.read
        - tag.update
        - tag.delete
        - tag.asset
        - admin.user.create
        - admin.user.read
        - admin.user.update
        - admin.user.delete
      type: string
    PersonCreateDto:
      properties:
        birthDate:
          description: |-
            Person date of birth.
            Note: the mobile app cannot currently set the birth date to null.
          format: date
          nullable: true
          type: string
        color:
          nullable: true
          type: string
        isFavorite:
          type: boolean
        isHidden:
          description: Person visibility
          type: boolean
        name:
          description: Person name.
          type: string
      type: object
    PersonResponseDto:
      properties:
        birthDate:
          format: date
          nullable: true
          type: string
        color:
          description: This property was added in v1.126.0
          type: string
        id:
          type: string
        isFavorite:
          description: This property was added in v1.126.0
          type: boolean
        isHidden:
          type: boolean
        name:
          type: string
        thumbnailPath:
          type: string
        updatedAt:
          description: This property was added in v1.107.0
          format: date-time
          type: string
      required:
        - birthDate
        - id
        - isHidden
        - name
        - thumbnailPath
      type: object
    PersonStatisticsResponseDto:
      properties:
        assets:
          type: integer
      required:
        - assets
      type: object
    PersonUpdateDto:
      properties:
        birthDate:
          description: |-
            Person date of birth.
            Note: the mobile app cannot currently set the birth date to null.
          format: date
          nullable: true
          type: string
        color:
          nullable: true
          type: string
        featureFaceAssetId:
          description: Asset is used to get the feature face thumbnail.
          format: uuid
          type: string
        isFavorite:
          type: boolean
        isHidden:
          description: Person visibility
          type: boolean
        name:
          description: Person name.
          type: string
      type: object
    PersonWithFacesResponseDto:
      properties:
        birthDate:
          format: date
          nullable: true
          type: string
        color:
          description: This property was added in v1.126.0
          type: string
        faces:
          items:
            $ref: '#/components/schemas/AssetFaceWithoutPersonResponseDto'
          type: array
        id:
          type: string
        isFavorite:
          description: This property was added in v1.126.0
          type: boolean
        isHidden:
          type: boolean
        name:
          type: string
        thumbnailPath:
          type: string
        updatedAt:
          description: This property was added in v1.107.0
          format: date-time
          type: string
      required:
        - birthDate
        - faces
        - id
        - isHidden
        - name
        - thumbnailPath
      type: object
    PinCodeChangeDto:
      properties:
        newPinCode:
          example: '123456'
          type: string
        password:
          type: string
        pinCode:
          example: '123456'
          type: string
      required:
        - newPinCode
      type: object
    PinCodeResetDto:
      properties:
        password:
          type: string
        pinCode:
          example: '123456'
          type: string
      type: object
    PinCodeSetupDto:
      properties:
        pinCode:
          example: '123456'
          type: string
      required:
        - pinCode
      type: object
    PlacesResponseDto:
      properties:
        admin1name:
          type: string
        admin2name:
          type: string
        latitude:
          type: number
        longitude:
          type: number
        name:
          type: string
      required:
        - latitude
        - longitude
        - name
      type: object
    PurchaseResponse:
      properties:
        hideBuyButtonUntil:
          type: string
        showSupportBadge:
          type: boolean
      required:
        - hideBuyButtonUntil
        - showSupportBadge
      type: object
    PurchaseUpdate:
      properties:
        hideBuyButtonUntil:
          type: string
        showSupportBadge:
          type: boolean
      type: object
    QueueStatusDto:
      properties:
        isActive:
          type: boolean
        isPaused:
          type: boolean
      required:
        - isActive
        - isPaused
      type: object
    RandomSearchDto:
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        createdAfter:
          format: date-time
          type: string
        createdBefore:
          format: date-time
          type: string
        deviceId:
          type: string
        isEncoded:
          type: boolean
        isFavorite:
          type: boolean
        isMotion:
          type: boolean
        isNotInAlbum:
          type: boolean
        isOffline:
          type: boolean
        lensModel:
          nullable: true
          type: string
        libraryId:
          format: uuid
          nullable: true
          type: string
        make:
          type: string
        model:
          nullable: true
          type: string
        personIds:
          items:
            format: uuid
            type: string
          type: array
        rating:
          maximum: 5
          minimum: -1
          type: number
        size:
          maximum: 1000
          minimum: 1
          type: number
        state:
          nullable: true
          type: string
        tagIds:
          items:
            format: uuid
            type: string
          type: array
        takenAfter:
          format: date-time
          type: string
        takenBefore:
          format: date-time
          type: string
        trashedAfter:
          format: date-time
          type: string
        trashedBefore:
          format: date-time
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/AssetTypeEnum'
        updatedAfter:
          format: date-time
          type: string
        updatedBefore:
          format: date-time
          type: string
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
        withDeleted:
          type: boolean
        withExif:
          type: boolean
        withPeople:
          type: boolean
        withStacked:
          type: boolean
      type: object
    RatingsResponse:
      properties:
        enabled:
          default: false
          type: boolean
      required:
        - enabled
      type: object
    RatingsUpdate:
      properties:
        enabled:
          type: boolean
      type: object
    ReactionLevel:
      enum:
        - album
        - asset
      type: string
    ReactionType:
      enum:
        - comment
        - like
      type: string
    ReverseGeocodingStateResponseDto:
      properties:
        lastImportFileName:
          nullable: true
          type: string
        lastUpdate:
          nullable: true
          type: string
      required:
        - lastImportFileName
        - lastUpdate
      type: object
    SearchAlbumResponseDto:
      properties:
        count:
          type: integer
        facets:
          items:
            $ref: '#/components/schemas/SearchFacetResponseDto'
          type: array
        items:
          items:
            $ref: '#/components/schemas/AlbumResponseDto'
          type: array
        total:
          type: integer
      required:
        - count
        - facets
        - items
        - total
      type: object
    SearchAssetResponseDto:
      properties:
        count:
          type: integer
        facets:
          items:
            $ref: '#/components/schemas/SearchFacetResponseDto'
          type: array
        items:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        nextPage:
          nullable: true
          type: string
        total:
          type: integer
      required:
        - count
        - facets
        - items
        - nextPage
        - total
      type: object
    SearchExploreItem:
      properties:
        data:
          $ref: '#/components/schemas/AssetResponseDto'
        value:
          type: string
      required:
        - data
        - value
      type: object
    SearchExploreResponseDto:
      properties:
        fieldName:
          type: string
        items:
          items:
            $ref: '#/components/schemas/SearchExploreItem'
          type: array
      required:
        - fieldName
        - items
      type: object
    SearchFacetCountResponseDto:
      properties:
        count:
          type: integer
        value:
          type: string
      required:
        - count
        - value
      type: object
    SearchFacetResponseDto:
      properties:
        counts:
          items:
            $ref: '#/components/schemas/SearchFacetCountResponseDto'
          type: array
        fieldName:
          type: string
      required:
        - counts
        - fieldName
      type: object
    SearchResponseDto:
      properties:
        albums:
          $ref: '#/components/schemas/SearchAlbumResponseDto'
        assets:
          $ref: '#/components/schemas/SearchAssetResponseDto'
      required:
        - albums
        - assets
      type: object
    SearchSuggestionType:
      enum:
        - country
        - state
        - city
        - camera-make
        - camera-model
      type: string
    ServerAboutResponseDto:
      properties:
        build:
          type: string
        buildImage:
          type: string
        buildImageUrl:
          type: string
        buildUrl:
          type: string
        exiftool:
          type: string
        ffmpeg:
          type: string
        imagemagick:
          type: string
        libvips:
          type: string
        licensed:
          type: boolean
        nodejs:
          type: string
        repository:
          type: string
        repositoryUrl:
          type: string
        sourceCommit:
          type: string
        sourceRef:
          type: string
        sourceUrl:
          type: string
        thirdPartyBugFeatureUrl:
          type: string
        thirdPartyDocumentationUrl:
          type: string
        thirdPartySourceUrl:
          type: string
        thirdPartySupportUrl:
          type: string
        version:
          type: string
        versionUrl:
          type: string
      required:
        - licensed
        - version
        - versionUrl
      type: object
    ServerConfigDto:
      properties:
        externalDomain:
          type: string
        isInitialized:
          type: boolean
        isOnboarded:
          type: boolean
        loginPageMessage:
          type: string
        mapDarkStyleUrl:
          type: string
        mapLightStyleUrl:
          type: string
        oauthButtonText:
          type: string
        publicUsers:
          type: boolean
        trashDays:
          type: integer
        userDeleteDelay:
          type: integer
      required:
        - externalDomain
        - isInitialized
        - isOnboarded
        - loginPageMessage
        - mapDarkStyleUrl
        - mapLightStyleUrl
        - oauthButtonText
        - publicUsers
        - trashDays
        - userDeleteDelay
      type: object
    ServerFeaturesDto:
      properties:
        configFile:
          type: boolean
        duplicateDetection:
          type: boolean
        email:
          type: boolean
        facialRecognition:
          type: boolean
        importFaces:
          type: boolean
        map:
          type: boolean
        oauth:
          type: boolean
        oauthAutoLaunch:
          type: boolean
        passwordLogin:
          type: boolean
        reverseGeocoding:
          type: boolean
        search:
          type: boolean
        sidecar:
          type: boolean
        smartSearch:
          type: boolean
        trash:
          type: boolean
      required:
        - configFile
        - duplicateDetection
        - email
        - facialRecognition
        - importFaces
        - map
        - oauth
        - oauthAutoLaunch
        - passwordLogin
        - reverseGeocoding
        - search
        - sidecar
        - smartSearch
        - trash
      type: object
    ServerMediaTypesResponseDto:
      properties:
        image:
          items:
            type: string
          type: array
        sidecar:
          items:
            type: string
          type: array
        video:
          items:
            type: string
          type: array
      required:
        - image
        - sidecar
        - video
      type: object
    ServerPingResponse:
      properties:
        res:
          example: pong
          readOnly: true
          type: string
      required:
        - res
      type: object
    ServerStatsResponseDto:
      properties:
        photos:
          default: 0
          type: integer
        usage:
          default: 0
          format: int64
          type: integer
        usageByUser:
          default: []
          example:
            - photos: 1
              videos: 1
              diskUsageRaw: 2
              usagePhotos: 1
              usageVideos: 1
          items:
            $ref: '#/components/schemas/UsageByUserDto'
          title: Array of usage for each user
          type: array
        usagePhotos:
          default: 0
          format: int64
          type: integer
        usageVideos:
          default: 0
          format: int64
          type: integer
        videos:
          default: 0
          type: integer
      required:
        - photos
        - usage
        - usageByUser
        - usagePhotos
        - usageVideos
        - videos
      type: object
    ServerStorageResponseDto:
      properties:
        diskAvailable:
          type: string
        diskAvailableRaw:
          format: int64
          type: integer
        diskSize:
          type: string
        diskSizeRaw:
          format: int64
          type: integer
        diskUsagePercentage:
          format: double
          type: number
        diskUse:
          type: string
        diskUseRaw:
          format: int64
          type: integer
      required:
        - diskAvailable
        - diskAvailableRaw
        - diskSize
        - diskSizeRaw
        - diskUsagePercentage
        - diskUse
        - diskUseRaw
      type: object
    ServerThemeDto:
      properties:
        customCss:
          type: string
      required:
        - customCss
      type: object
    ServerVersionHistoryResponseDto:
      properties:
        createdAt:
          format: date-time
          type: string
        id:
          type: string
        version:
          type: string
      required:
        - createdAt
        - id
        - version
      type: object
    ServerVersionResponseDto:
      properties:
        major:
          type: integer
        minor:
          type: integer
        patch:
          type: integer
      required:
        - major
        - minor
        - patch
      type: object
    SessionCreateDto:
      properties:
        deviceOS:
          type: string
        deviceType:
          type: string
        duration:
          description: session duration, in seconds
          minimum: 1
          type: number
      type: object
    SessionCreateResponseDto:
      properties:
        createdAt:
          type: string
        current:
          type: boolean
        deviceOS:
          type: string
        deviceType:
          type: string
        expiresAt:
          type: string
        id:
          type: string
        token:
          type: string
        updatedAt:
          type: string
      required:
        - createdAt
        - current
        - deviceOS
        - deviceType
        - id
        - token
        - updatedAt
      type: object
    SessionResponseDto:
      properties:
        createdAt:
          type: string
        current:
          type: boolean
        deviceOS:
          type: string
        deviceType:
          type: string
        expiresAt:
          type: string
        id:
          type: string
        updatedAt:
          type: string
      required:
        - createdAt
        - current
        - deviceOS
        - deviceType
        - id
        - updatedAt
      type: object
    SessionUnlockDto:
      properties:
        password:
          type: string
        pinCode:
          example: '123456'
          type: string
      type: object
    SharedLinkCreateDto:
      properties:
        albumId:
          format: uuid
          type: string
        allowDownload:
          default: true
          type: boolean
        allowUpload:
          type: boolean
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        description:
          type: string
        expiresAt:
          default: null
          format: date-time
          nullable: true
          type: string
        password:
          type: string
        showMetadata:
          default: true
          type: boolean
        type:
          allOf:
            - $ref: '#/components/schemas/SharedLinkType'
      required:
        - type
      type: object
    SharedLinkEditDto:
      properties:
        allowDownload:
          type: boolean
        allowUpload:
          type: boolean
        changeExpiryTime:
          description: |-
            Few clients cannot send null to set the expiryTime to never.
            Setting this flag and not sending expiryAt is considered as null instead.
            Clients that can send null values can ignore this.
          type: boolean
        description:
          type: string
        expiresAt:
          format: date-time
          nullable: true
          type: string
        password:
          type: string
        showMetadata:
          type: boolean
      type: object
    SharedLinkResponseDto:
      properties:
        album:
          $ref: '#/components/schemas/AlbumResponseDto'
        allowDownload:
          type: boolean
        allowUpload:
          type: boolean
        assets:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        createdAt:
          format: date-time
          type: string
        description:
          nullable: true
          type: string
        expiresAt:
          format: date-time
          nullable: true
          type: string
        id:
          type: string
        key:
          type: string
        password:
          nullable: true
          type: string
        showMetadata:
          type: boolean
        token:
          nullable: true
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/SharedLinkType'
        userId:
          type: string
      required:
        - allowDownload
        - allowUpload
        - assets
        - createdAt
        - description
        - expiresAt
        - id
        - key
        - password
        - showMetadata
        - type
        - userId
      type: object
    SharedLinkType:
      enum:
        - ALBUM
        - INDIVIDUAL
      type: string
    SharedLinksResponse:
      properties:
        enabled:
          default: true
          type: boolean
        sidebarWeb:
          default: false
          type: boolean
      required:
        - enabled
        - sidebarWeb
      type: object
    SharedLinksUpdate:
      properties:
        enabled:
          type: boolean
        sidebarWeb:
          type: boolean
      type: object
    SignUpDto:
      properties:
        email:
          example: testuser@email.com
          format: email
          type: string
        name:
          example: Admin
          type: string
        password:
          example: password
          type: string
      required:
        - email
        - name
        - password
      type: object
    SmartSearchDto:
      properties:
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        createdAfter:
          format: date-time
          type: string
        createdBefore:
          format: date-time
          type: string
        deviceId:
          type: string
        isEncoded:
          type: boolean
        isFavorite:
          type: boolean
        isMotion:
          type: boolean
        isNotInAlbum:
          type: boolean
        isOffline:
          type: boolean
        language:
          type: string
        lensModel:
          nullable: true
          type: string
        libraryId:
          format: uuid
          nullable: true
          type: string
        make:
          type: string
        model:
          nullable: true
          type: string
        page:
          minimum: 1
          type: number
        personIds:
          items:
            format: uuid
            type: string
          type: array
        query:
          type: string
        rating:
          maximum: 5
          minimum: -1
          type: number
        size:
          maximum: 1000
          minimum: 1
          type: number
        state:
          nullable: true
          type: string
        tagIds:
          items:
            format: uuid
            type: string
          type: array
        takenAfter:
          format: date-time
          type: string
        takenBefore:
          format: date-time
          type: string
        trashedAfter:
          format: date-time
          type: string
        trashedBefore:
          format: date-time
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/AssetTypeEnum'
        updatedAfter:
          format: date-time
          type: string
        updatedBefore:
          format: date-time
          type: string
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
        withDeleted:
          type: boolean
        withExif:
          type: boolean
      required:
        - query
      type: object
    SourceType:
      enum:
        - machine-learning
        - exif
        - manual
      type: string
    StackCreateDto:
      properties:
        assetIds:
          description: first asset becomes the primary
          items:
            format: uuid
            type: string
          minItems: 2
          type: array
      required:
        - assetIds
      type: object
    StackResponseDto:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/AssetResponseDto'
          type: array
        id:
          type: string
        primaryAssetId:
          type: string
      required:
        - assets
        - id
        - primaryAssetId
      type: object
    StackUpdateDto:
      properties:
        primaryAssetId:
          format: uuid
          type: string
      type: object
    SyncAckDeleteDto:
      properties:
        types:
          items:
            $ref: '#/components/schemas/SyncEntityType'
          type: array
      type: object
    SyncAckDto:
      properties:
        ack:
          type: string
        type:
          allOf:
            - $ref: '#/components/schemas/SyncEntityType'
      required:
        - ack
        - type
      type: object
    SyncAckSetDto:
      properties:
        acks:
          items:
            type: string
          type: array
      required:
        - acks
      type: object
    SyncAssetDeleteV1:
      properties:
        assetId:
          type: string
      required:
        - assetId
      type: object
    SyncAssetExifV1:
      properties:
        assetId:
          type: string
        city:
          nullable: true
          type: string
        country:
          nullable: true
          type: string
        dateTimeOriginal:
          format: date-time
          nullable: true
          type: string
        description:
          nullable: true
          type: string
        exifImageHeight:
          nullable: true
          type: integer
        exifImageWidth:
          nullable: true
          type: integer
        exposureTime:
          nullable: true
          type: string
        fNumber:
          nullable: true
          type: integer
        fileSizeInByte:
          nullable: true
          type: integer
        focalLength:
          nullable: true
          type: integer
        fps:
          nullable: true
          type: integer
        iso:
          nullable: true
          type: integer
        latitude:
          nullable: true
          type: integer
        lensModel:
          nullable: true
          type: string
        longitude:
          nullable: true
          type: integer
        make:
          nullable: true
          type: string
        model:
          nullable: true
          type: string
        modifyDate:
          format: date-time
          nullable: true
          type: string
        orientation:
          nullable: true
          type: string
        profileDescription:
          nullable: true
          type: string
        projectionType:
          nullable: true
          type: string
        rating:
          nullable: true
          type: integer
        state:
          nullable: true
          type: string
        timeZone:
          nullable: true
          type: string
      required:
        - assetId
        - city
        - country
        - dateTimeOriginal
        - description
        - exifImageHeight
        - exifImageWidth
        - exposureTime
        - fNumber
        - fileSizeInByte
        - focalLength
        - fps
        - iso
        - latitude
        - lensModel
        - longitude
        - make
        - model
        - modifyDate
        - orientation
        - profileDescription
        - projectionType
        - rating
        - state
        - timeZone
      type: object
    SyncAssetV1:
      properties:
        checksum:
          type: string
        deletedAt:
          format: date-time
          nullable: true
          type: string
        fileCreatedAt:
          format: date-time
          nullable: true
          type: string
        fileModifiedAt:
          format: date-time
          nullable: true
          type: string
        id:
          type: string
        isFavorite:
          type: boolean
        localDateTime:
          format: date-time
          nullable: true
          type: string
        ownerId:
          type: string
        thumbhash:
          nullable: true
          type: string
        type:
          enum:
            - IMAGE
            - VIDEO
            - AUDIO
            - OTHER
          type: string
        visibility:
          enum:
            - archive
            - timeline
            - hidden
            - locked
          type: string
      required:
        - checksum
        - deletedAt
        - fileCreatedAt
        - fileModifiedAt
        - id
        - isFavorite
        - localDateTime
        - ownerId
        - thumbhash
        - type
        - visibility
      type: object
    SyncEntityType:
      enum:
        - UserV1
        - UserDeleteV1
        - PartnerV1
        - PartnerDeleteV1
        - AssetV1
        - AssetDeleteV1
        - AssetExifV1
        - PartnerAssetV1
        - PartnerAssetDeleteV1
        - PartnerAssetExifV1
      type: string
    SyncPartnerDeleteV1:
      properties:
        sharedById:
          type: string
        sharedWithId:
          type: string
      required:
        - sharedById
        - sharedWithId
      type: object
    SyncPartnerV1:
      properties:
        inTimeline:
          type: boolean
        sharedById:
          type: string
        sharedWithId:
          type: string
      required:
        - inTimeline
        - sharedById
        - sharedWithId
      type: object
    SyncRequestType:
      enum:
        - UsersV1
        - PartnersV1
        - AssetsV1
        - AssetExifsV1
        - PartnerAssetsV1
        - PartnerAssetExifsV1
      type: string
    SyncStreamDto:
      properties:
        types:
          items:
            $ref: '#/components/schemas/SyncRequestType'
          type: array
      required:
        - types
      type: object
    SyncUserDeleteV1:
      properties:
        userId:
          type: string
      required:
        - userId
      type: object
    SyncUserV1:
      properties:
        deletedAt:
          format: date-time
          nullable: true
          type: string
        email:
          type: string
        id:
          type: string
        name:
          type: string
      required:
        - deletedAt
        - email
        - id
        - name
      type: object
    SystemConfigBackupsDto:
      properties:
        database:
          $ref: '#/components/schemas/DatabaseBackupConfig'
      required:
        - database
      type: object
    SystemConfigDto:
      properties:
        backup:
          $ref: '#/components/schemas/SystemConfigBackupsDto'
        ffmpeg:
          $ref: '#/components/schemas/SystemConfigFFmpegDto'
        image:
          $ref: '#/components/schemas/SystemConfigImageDto'
        job:
          $ref: '#/components/schemas/SystemConfigJobDto'
        library:
          $ref: '#/components/schemas/SystemConfigLibraryDto'
        logging:
          $ref: '#/components/schemas/SystemConfigLoggingDto'
        machineLearning:
          $ref: '#/components/schemas/SystemConfigMachineLearningDto'
        map:
          $ref: '#/components/schemas/SystemConfigMapDto'
        metadata:
          $ref: '#/components/schemas/SystemConfigMetadataDto'
        newVersionCheck:
          $ref: '#/components/schemas/SystemConfigNewVersionCheckDto'
        notifications:
          $ref: '#/components/schemas/SystemConfigNotificationsDto'
        oauth:
          $ref: '#/components/schemas/SystemConfigOAuthDto'
        passwordLogin:
          $ref: '#/components/schemas/SystemConfigPasswordLoginDto'
        reverseGeocoding:
          $ref: '#/components/schemas/SystemConfigReverseGeocodingDto'
        server:
          $ref: '#/components/schemas/SystemConfigServerDto'
        storageTemplate:
          $ref: '#/components/schemas/SystemConfigStorageTemplateDto'
        templates:
          $ref: '#/components/schemas/SystemConfigTemplatesDto'
        theme:
          $ref: '#/components/schemas/SystemConfigThemeDto'
        trash:
          $ref: '#/components/schemas/SystemConfigTrashDto'
        user:
          $ref: '#/components/schemas/SystemConfigUserDto'
      required:
        - backup
        - ffmpeg
        - image
        - job
        - library
        - logging
        - machineLearning
        - map
        - metadata
        - newVersionCheck
        - notifications
        - oauth
        - passwordLogin
        - reverseGeocoding
        - server
        - storageTemplate
        - templates
        - theme
        - trash
        - user
      type: object
    SystemConfigFFmpegDto:
      properties:
        accel:
          allOf:
            - $ref: '#/components/schemas/TranscodeHWAccel'
        accelDecode:
          type: boolean
        acceptedAudioCodecs:
          items:
            $ref: '#/components/schemas/AudioCodec'
          type: array
        acceptedContainers:
          items:
            $ref: '#/components/schemas/VideoContainer'
          type: array
        acceptedVideoCodecs:
          items:
            $ref: '#/components/schemas/VideoCodec'
          type: array
        bframes:
          maximum: 16
          minimum: -1
          type: integer
        cqMode:
          allOf:
            - $ref: '#/components/schemas/CQMode'
        crf:
          maximum: 51
          minimum: 0
          type: integer
        gopSize:
          minimum: 0
          type: integer
        maxBitrate:
          type: string
        preferredHwDevice:
          type: string
        preset:
          type: string
        refs:
          maximum: 6
          minimum: 0
          type: integer
        targetAudioCodec:
          allOf:
            - $ref: '#/components/schemas/AudioCodec'
        targetResolution:
          type: string
        targetVideoCodec:
          allOf:
            - $ref: '#/components/schemas/VideoCodec'
        temporalAQ:
          type: boolean
        threads:
          minimum: 0
          type: integer
        tonemap:
          allOf:
            - $ref: '#/components/schemas/ToneMapping'
        transcode:
          allOf:
            - $ref: '#/components/schemas/TranscodePolicy'
        twoPass:
          type: boolean
      required:
        - accel
        - accelDecode
        - acceptedAudioCodecs
        - acceptedContainers
        - acceptedVideoCodecs
        - bframes
        - cqMode
        - crf
        - gopSize
        - maxBitrate
        - preferredHwDevice
        - preset
        - refs
        - targetAudioCodec
        - targetResolution
        - targetVideoCodec
        - temporalAQ
        - threads
        - tonemap
        - transcode
        - twoPass
      type: object
    SystemConfigFacesDto:
      properties:
        import:
          type: boolean
      required:
        - import
      type: object
    SystemConfigGeneratedFullsizeImageDto:
      properties:
        enabled:
          type: boolean
        format:
          allOf:
            - $ref: '#/components/schemas/ImageFormat'
        quality:
          maximum: 100
          minimum: 1
          type: integer
      required:
        - enabled
        - format
        - quality
      type: object
    SystemConfigGeneratedImageDto:
      properties:
        format:
          allOf:
            - $ref: '#/components/schemas/ImageFormat'
        quality:
          maximum: 100
          minimum: 1
          type: integer
        size:
          minimum: 1
          type: integer
      required:
        - format
        - quality
        - size
      type: object
    SystemConfigImageDto:
      properties:
        colorspace:
          allOf:
            - $ref: '#/components/schemas/Colorspace'
        extractEmbedded:
          type: boolean
        fullsize:
          $ref: '#/components/schemas/SystemConfigGeneratedFullsizeImageDto'
        preview:
          $ref: '#/components/schemas/SystemConfigGeneratedImageDto'
        thumbnail:
          $ref: '#/components/schemas/SystemConfigGeneratedImageDto'
      required:
        - colorspace
        - extractEmbedded
        - fullsize
        - preview
        - thumbnail
      type: object
    SystemConfigJobDto:
      properties:
        backgroundTask:
          $ref: '#/components/schemas/JobSettingsDto'
        faceDetection:
          $ref: '#/components/schemas/JobSettingsDto'
        library:
          $ref: '#/components/schemas/JobSettingsDto'
        metadataExtraction:
          $ref: '#/components/schemas/JobSettingsDto'
        migration:
          $ref: '#/components/schemas/JobSettingsDto'
        notifications:
          $ref: '#/components/schemas/JobSettingsDto'
        search:
          $ref: '#/components/schemas/JobSettingsDto'
        sidecar:
          $ref: '#/components/schemas/JobSettingsDto'
        smartSearch:
          $ref: '#/components/schemas/JobSettingsDto'
        thumbnailGeneration:
          $ref: '#/components/schemas/JobSettingsDto'
        videoConversion:
          $ref: '#/components/schemas/JobSettingsDto'
      required:
        - backgroundTask
        - faceDetection
        - library
        - metadataExtraction
        - migration
        - notifications
        - search
        - sidecar
        - smartSearch
        - thumbnailGeneration
        - videoConversion
      type: object
    SystemConfigLibraryDto:
      properties:
        scan:
          $ref: '#/components/schemas/SystemConfigLibraryScanDto'
        watch:
          $ref: '#/components/schemas/SystemConfigLibraryWatchDto'
      required:
        - scan
        - watch
      type: object
    SystemConfigLibraryScanDto:
      properties:
        cronExpression:
          type: string
        enabled:
          type: boolean
      required:
        - cronExpression
        - enabled
      type: object
    SystemConfigLibraryWatchDto:
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type: object
    SystemConfigLoggingDto:
      properties:
        enabled:
          type: boolean
        level:
          allOf:
            - $ref: '#/components/schemas/LogLevel'
      required:
        - enabled
        - level
      type: object
    SystemConfigMachineLearningDto:
      properties:
        clip:
          $ref: '#/components/schemas/CLIPConfig'
        duplicateDetection:
          $ref: '#/components/schemas/DuplicateDetectionConfig'
        enabled:
          type: boolean
        facialRecognition:
          $ref: '#/components/schemas/FacialRecognitionConfig'
        url:
          deprecated: true
          description: This property was deprecated in v1.122.0
          type: string
        urls:
          format: uri
          items:
            format: uri
            type: string
          minItems: 1
          type: array
      required:
        - clip
        - duplicateDetection
        - enabled
        - facialRecognition
        - urls
      type: object
    SystemConfigMapDto:
      properties:
        darkStyle:
          format: uri
          type: string
        enabled:
          type: boolean
        lightStyle:
          format: uri
          type: string
      required:
        - darkStyle
        - enabled
        - lightStyle
      type: object
    SystemConfigMetadataDto:
      properties:
        faces:
          $ref: '#/components/schemas/SystemConfigFacesDto'
      required:
        - faces
      type: object
    SystemConfigNewVersionCheckDto:
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type: object
    SystemConfigNotificationsDto:
      properties:
        smtp:
          $ref: '#/components/schemas/SystemConfigSmtpDto'
      required:
        - smtp
      type: object
    SystemConfigOAuthDto:
      properties:
        autoLaunch:
          type: boolean
        autoRegister:
          type: boolean
        buttonText:
          type: string
        clientId:
          type: string
        clientSecret:
          type: string
        defaultStorageQuota:
          minimum: 0
          type: number
        enabled:
          type: boolean
        issuerUrl:
          type: string
        mobileOverrideEnabled:
          type: boolean
        mobileRedirectUri:
          format: uri
          type: string
        profileSigningAlgorithm:
          type: string
        scope:
          type: string
        signingAlgorithm:
          type: string
        storageLabelClaim:
          type: string
        storageQuotaClaim:
          type: string
        timeout:
          minimum: 1
          type: integer
        tokenEndpointAuthMethod:
          allOf:
            - $ref: '#/components/schemas/OAuthTokenEndpointAuthMethod'
      required:
        - autoLaunch
        - autoRegister
        - buttonText
        - clientId
        - clientSecret
        - defaultStorageQuota
        - enabled
        - issuerUrl
        - mobileOverrideEnabled
        - mobileRedirectUri
        - profileSigningAlgorithm
        - scope
        - signingAlgorithm
        - storageLabelClaim
        - storageQuotaClaim
        - timeout
        - tokenEndpointAuthMethod
      type: object
    SystemConfigPasswordLoginDto:
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type: object
    SystemConfigReverseGeocodingDto:
      properties:
        enabled:
          type: boolean
      required:
        - enabled
      type: object
    SystemConfigServerDto:
      properties:
        externalDomain:
          format: uri
          type: string
        loginPageMessage:
          type: string
        publicUsers:
          type: boolean
      required:
        - externalDomain
        - loginPageMessage
        - publicUsers
      type: object
    SystemConfigSmtpDto:
      properties:
        enabled:
          type: boolean
        from:
          type: string
        replyTo:
          type: string
        transport:
          $ref: '#/components/schemas/SystemConfigSmtpTransportDto'
      required:
        - enabled
        - from
        - replyTo
        - transport
      type: object
    SystemConfigSmtpTransportDto:
      properties:
        host:
          type: string
        ignoreCert:
          type: boolean
        password:
          type: string
        port:
          maximum: 65535
          minimum: 0
          type: number
        username:
          type: string
      required:
        - host
        - ignoreCert
        - password
        - port
        - username
      type: object
    SystemConfigStorageTemplateDto:
      properties:
        enabled:
          type: boolean
        hashVerificationEnabled:
          type: boolean
        template:
          type: string
      required:
        - enabled
        - hashVerificationEnabled
        - template
      type: object
    SystemConfigTemplateEmailsDto:
      properties:
        albumInviteTemplate:
          type: string
        albumUpdateTemplate:
          type: string
        welcomeTemplate:
          type: string
      required:
        - albumInviteTemplate
        - albumUpdateTemplate
        - welcomeTemplate
      type: object
    SystemConfigTemplateStorageOptionDto:
      properties:
        dayOptions:
          items:
            type: string
          type: array
        hourOptions:
          items:
            type: string
          type: array
        minuteOptions:
          items:
            type: string
          type: array
        monthOptions:
          items:
            type: string
          type: array
        presetOptions:
          items:
            type: string
          type: array
        secondOptions:
          items:
            type: string
          type: array
        weekOptions:
          items:
            type: string
          type: array
        yearOptions:
          items:
            type: string
          type: array
      required:
        - dayOptions
        - hourOptions
        - minuteOptions
        - monthOptions
        - presetOptions
        - secondOptions
        - weekOptions
        - yearOptions
      type: object
    SystemConfigTemplatesDto:
      properties:
        email:
          $ref: '#/components/schemas/SystemConfigTemplateEmailsDto'
      required:
        - email
      type: object
    SystemConfigThemeDto:
      properties:
        customCss:
          type: string
      required:
        - customCss
      type: object
    SystemConfigTrashDto:
      properties:
        days:
          minimum: 0
          type: integer
        enabled:
          type: boolean
      required:
        - days
        - enabled
      type: object
    SystemConfigUserDto:
      properties:
        deleteDelay:
          minimum: 1
          type: integer
      required:
        - deleteDelay
      type: object
    TagBulkAssetsDto:
      properties:
        assetIds:
          items:
            format: uuid
            type: string
          type: array
        tagIds:
          items:
            format: uuid
            type: string
          type: array
      required:
        - assetIds
        - tagIds
      type: object
    TagBulkAssetsResponseDto:
      properties:
        count:
          type: integer
      required:
        - count
      type: object
    TagCreateDto:
      properties:
        color:
          pattern: ^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$
          type: string
        name:
          type: string
        parentId:
          format: uuid
          nullable: true
          type: string
      required:
        - name
      type: object
    TagResponseDto:
      properties:
        color:
          type: string
        createdAt:
          format: date-time
          type: string
        id:
          type: string
        name:
          type: string
        parentId:
          type: string
        updatedAt:
          format: date-time
          type: string
        value:
          type: string
      required:
        - createdAt
        - id
        - name
        - updatedAt
        - value
      type: object
    TagUpdateDto:
      properties:
        color:
          nullable: true
          type: string
      type: object
    TagUpsertDto:
      properties:
        tags:
          items:
            type: string
          type: array
      required:
        - tags
      type: object
    TagsResponse:
      properties:
        enabled:
          default: true
          type: boolean
        sidebarWeb:
          default: true
          type: boolean
      required:
        - enabled
        - sidebarWeb
      type: object
    TagsUpdate:
      properties:
        enabled:
          type: boolean
        sidebarWeb:
          type: boolean
      type: object
    TemplateDto:
      properties:
        template:
          type: string
      required:
        - template
      type: object
    TemplateResponseDto:
      properties:
        html:
          type: string
        name:
          type: string
      required:
        - html
        - name
      type: object
    TestEmailResponseDto:
      properties:
        messageId:
          type: string
      required:
        - messageId
      type: object
    TimeBucketResponseDto:
      properties:
        count:
          type: integer
        timeBucket:
          type: string
      required:
        - count
        - timeBucket
      type: object
    TimeBucketSize:
      enum:
        - DAY
        - MONTH
      type: string
    ToneMapping:
      enum:
        - hable
        - mobius
        - reinhard
        - disabled
      type: string
    TranscodeHWAccel:
      enum:
        - nvenc
        - qsv
        - vaapi
        - rkmpp
        - disabled
      type: string
    TranscodePolicy:
      enum:
        - all
        - optimal
        - bitrate
        - required
        - disabled
      type: string
    TrashResponseDto:
      properties:
        count:
          type: integer
      required:
        - count
      type: object
    UpdateAlbumDto:
      properties:
        albumName:
          type: string
        albumThumbnailAssetId:
          format: uuid
          type: string
        description:
          type: string
        isActivityEnabled:
          type: boolean
        order:
          allOf:
            - $ref: '#/components/schemas/AssetOrder'
      type: object
    UpdateAlbumUserDto:
      properties:
        role:
          allOf:
            - $ref: '#/components/schemas/AlbumUserRole'
      required:
        - role
      type: object
    UpdateAssetDto:
      properties:
        dateTimeOriginal:
          type: string
        description:
          type: string
        isFavorite:
          type: boolean
        latitude:
          type: number
        livePhotoVideoId:
          format: uuid
          nullable: true
          type: string
        longitude:
          type: number
        rating:
          maximum: 5
          minimum: -1
          type: number
        visibility:
          allOf:
            - $ref: '#/components/schemas/AssetVisibility'
      type: object
    UpdateLibraryDto:
      properties:
        exclusionPatterns:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
        importPaths:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
        name:
          type: string
      type: object
    UpdatePartnerDto:
      properties:
        inTimeline:
          type: boolean
      required:
        - inTimeline
      type: object
    UsageByUserDto:
      properties:
        photos:
          type: integer
        quotaSizeInBytes:
          format: int64
          nullable: true
          type: integer
        usage:
          format: int64
          type: integer
        usagePhotos:
          format: int64
          type: integer
        usageVideos:
          format: int64
          type: integer
        userId:
          type: string
        userName:
          type: string
        videos:
          type: integer
      required:
        - photos
        - quotaSizeInBytes
        - usage
        - usagePhotos
        - usageVideos
        - userId
        - userName
        - videos
      type: object
    UserAdminCreateDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
          nullable: true
        email:
          format: email
          type: string
        name:
          type: string
        notify:
          type: boolean
        password:
          type: string
        quotaSizeInBytes:
          format: int64
          minimum: 0
          nullable: true
          type: integer
        shouldChangePassword:
          type: boolean
        storageLabel:
          nullable: true
          type: string
      required:
        - email
        - name
        - password
      type: object
    UserAdminDeleteDto:
      properties:
        force:
          type: boolean
      type: object
    UserAdminResponseDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
        createdAt:
          format: date-time
          type: string
        deletedAt:
          format: date-time
          nullable: true
          type: string
        email:
          type: string
        id:
          type: string
        isAdmin:
          type: boolean
        license:
          allOf:
            - $ref: '#/components/schemas/UserLicense'
          nullable: true
        name:
          type: string
        oauthId:
          type: string
        profileChangedAt:
          format: date-time
          type: string
        profileImagePath:
          type: string
        quotaSizeInBytes:
          format: int64
          nullable: true
          type: integer
        quotaUsageInBytes:
          format: int64
          nullable: true
          type: integer
        shouldChangePassword:
          type: boolean
        status:
          allOf:
            - $ref: '#/components/schemas/UserStatus'
        storageLabel:
          nullable: true
          type: string
        updatedAt:
          format: date-time
          type: string
      required:
        - avatarColor
        - createdAt
        - deletedAt
        - email
        - id
        - isAdmin
        - license
        - name
        - oauthId
        - profileChangedAt
        - profileImagePath
        - quotaSizeInBytes
        - quotaUsageInBytes
        - shouldChangePassword
        - status
        - storageLabel
        - updatedAt
      type: object
    UserAdminUpdateDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
          nullable: true
        email:
          format: email
          type: string
        name:
          type: string
        password:
          type: string
        pinCode:
          example: '123456'
          nullable: true
          type: string
        quotaSizeInBytes:
          format: int64
          minimum: 0
          nullable: true
          type: integer
        shouldChangePassword:
          type: boolean
        storageLabel:
          nullable: true
          type: string
      type: object
    UserAvatarColor:
      enum:
        - primary
        - pink
        - red
        - yellow
        - blue
        - green
        - purple
        - orange
        - gray
        - amber
      type: string
    UserLicense:
      properties:
        activatedAt:
          format: date-time
          type: string
        activationKey:
          type: string
        licenseKey:
          type: string
      required:
        - activatedAt
        - activationKey
        - licenseKey
      type: object
    UserPreferencesResponseDto:
      properties:
        download:
          $ref: '#/components/schemas/DownloadResponse'
        emailNotifications:
          $ref: '#/components/schemas/EmailNotificationsResponse'
        folders:
          $ref: '#/components/schemas/FoldersResponse'
        memories:
          $ref: '#/components/schemas/MemoriesResponse'
        people:
          $ref: '#/components/schemas/PeopleResponse'
        purchase:
          $ref: '#/components/schemas/PurchaseResponse'
        ratings:
          $ref: '#/components/schemas/RatingsResponse'
        sharedLinks:
          $ref: '#/components/schemas/SharedLinksResponse'
        tags:
          $ref: '#/components/schemas/TagsResponse'
      required:
        - download
        - emailNotifications
        - folders
        - memories
        - people
        - purchase
        - ratings
        - sharedLinks
        - tags
      type: object
    UserPreferencesUpdateDto:
      properties:
        avatar:
          $ref: '#/components/schemas/AvatarUpdate'
        download:
          $ref: '#/components/schemas/DownloadUpdate'
        emailNotifications:
          $ref: '#/components/schemas/EmailNotificationsUpdate'
        folders:
          $ref: '#/components/schemas/FoldersUpdate'
        memories:
          $ref: '#/components/schemas/MemoriesUpdate'
        people:
          $ref: '#/components/schemas/PeopleUpdate'
        purchase:
          $ref: '#/components/schemas/PurchaseUpdate'
        ratings:
          $ref: '#/components/schemas/RatingsUpdate'
        sharedLinks:
          $ref: '#/components/schemas/SharedLinksUpdate'
        tags:
          $ref: '#/components/schemas/TagsUpdate'
      type: object
    UserResponseDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
        email:
          type: string
        id:
          type: string
        name:
          type: string
        profileChangedAt:
          format: date-time
          type: string
        profileImagePath:
          type: string
      required:
        - avatarColor
        - email
        - id
        - name
        - profileChangedAt
        - profileImagePath
      type: object
    UserStatus:
      enum:
        - active
        - removing
        - deleted
      type: string
    UserUpdateMeDto:
      properties:
        avatarColor:
          allOf:
            - $ref: '#/components/schemas/UserAvatarColor'
          nullable: true
        email:
          format: email
          type: string
        name:
          type: string
        password:
          type: string
      type: object
    ValidateAccessTokenResponseDto:
      properties:
        authStatus:
          type: boolean
      required:
        - authStatus
      type: object
    ValidateLibraryDto:
      properties:
        exclusionPatterns:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
        importPaths:
          items:
            type: string
          maxItems: 128
          type: array
          uniqueItems: true
      type: object
    ValidateLibraryImportPathResponseDto:
      properties:
        importPath:
          type: string
        isValid:
          default: false
          type: boolean
        message:
          type: string
      required:
        - importPath
        - isValid
      type: object
    ValidateLibraryResponseDto:
      properties:
        importPaths:
          items:
            $ref: '#/components/schemas/ValidateLibraryImportPathResponseDto'
          type: array
      type: object
    VideoCodec:
      enum:
        - h264
        - hevc
        - vp9
        - av1
      type: string
    VideoContainer:
      enum:
        - mov
        - mp4
        - ogg
        - webm
      type: string
