docs(openapi): add descriptions to OpenAPI specification (#25185)

* faces

* add openapi descriptions

* remove dto descriptions

* gen openapi

* dtos

* fix dtos

* fix more

* fix build

* more

* complete dtos

* descriptions on rebase

* gen rebase

* revert correct integer type conversion

* gen after revert

* revert correct nullables

* regen after revert

* actually incorrect adding default here

* revert correct number type conversion

* regen after revert

* revert nullable usage

* regen fully

* readd some comments

* one more

* one more

* use enum

* add missing

* add missing controllers

* add missing dtos

* complete it

* more

* describe global key and slug

* add remaining body and param descriptions

* lint and format

* cleanup

* response and schema descriptions

* test patch according to suggestion

* revert added api response objects

* revert added api body objects

* revert added api param object

* revert added api query objects

* revert reorganized http code objects

* revert reorganize ApiOkResponse objects

* revert added api response objects (2)

* revert added api tag object

* revert added api schema objects

* migrate missing asset.dto.ts

* regenerate openapi builds

* delete generated mustache files

* remove descriptions from properties that are schemas

* lint

* revert nullable type changes

* revert int/num type changes

* remove explicit default

* readd comment

* lint

* pr fixes

* last bits and pieces

* lint and format

* chore: remove rejected patches

* fix: deleting asset from asset-viewer on search results (#25596)

* fix: escape handling in search asset viewer (#25621)

* fix: correctly show owner in album options modal (#25618)

* fix: validation issues

* fix: validation issues

---------

Co-authored-by: Jason Rasmussen <jason@rasm.me>
Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: Daniel Dietzler <36593685+danieldietzler@users.noreply.github.com>
Co-authored-by: Paul Makles <me@insrt.uk>
This commit is contained in:
Timon
2026-01-29 14:49:15 +01:00
committed by GitHub
parent eadb2f89af
commit 8db61d341f
377 changed files with 5554 additions and 735 deletions
+84
View File
@@ -127,18 +127,25 @@ class SearchApi {
/// Parameters:
///
/// * [SearchSuggestionType] type (required):
/// Suggestion type
///
/// * [String] country:
/// Filter by country
///
/// * [bool] includeNull:
/// Include null values in suggestions
///
/// * [String] lensModel:
/// Filter by lens model
///
/// * [String] make:
/// Filter by camera make
///
/// * [String] model:
/// Filter by camera model
///
/// * [String] state:
/// Filter by state/province
Future<Response> getSearchSuggestionsWithHttpInfo(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
// ignore: prefer_const_declarations
final apiPath = r'/search/suggestions';
@@ -191,18 +198,25 @@ class SearchApi {
/// Parameters:
///
/// * [SearchSuggestionType] type (required):
/// Suggestion type
///
/// * [String] country:
/// Filter by country
///
/// * [bool] includeNull:
/// Include null values in suggestions
///
/// * [String] lensModel:
/// Filter by lens model
///
/// * [String] make:
/// Filter by camera make
///
/// * [String] model:
/// Filter by camera model
///
/// * [String] state:
/// Filter by state/province
Future<List<String>?> getSearchSuggestions(SearchSuggestionType type, { String? country, bool? includeNull, String? lensModel, String? make, String? model, String? state, }) async {
final response = await getSearchSuggestionsWithHttpInfo(type, country: country, includeNull: includeNull, lensModel: lensModel, make: make, model: model, state: state, );
if (response.statusCode >= HttpStatus.badRequest) {
@@ -342,68 +356,100 @@ class SearchApi {
/// Parameters:
///
/// * [List<String>] albumIds:
/// Filter by album IDs
///
/// * [String] city:
/// Filter by city name
///
/// * [String] country:
/// Filter by country name
///
/// * [DateTime] createdAfter:
/// Filter by creation date (after)
///
/// * [DateTime] createdBefore:
/// Filter by creation date (before)
///
/// * [String] deviceId:
/// Device ID to filter by
///
/// * [bool] isEncoded:
/// Filter by encoded status
///
/// * [bool] isFavorite:
/// Filter by favorite status
///
/// * [bool] isMotion:
/// Filter by motion photo status
///
/// * [bool] isNotInAlbum:
/// Filter assets not in any album
///
/// * [bool] isOffline:
/// Filter by offline status
///
/// * [String] lensModel:
/// Filter by lens model
///
/// * [String] libraryId:
/// Library ID to filter by
///
/// * [String] make:
/// Filter by camera make
///
/// * [int] minFileSize:
/// Minimum file size in bytes
///
/// * [String] model:
/// Filter by camera model
///
/// * [String] ocr:
/// Filter by OCR text content
///
/// * [List<String>] personIds:
/// Filter by person IDs
///
/// * [num] rating:
/// Filter by rating
///
/// * [num] size:
/// Number of results to return
///
/// * [String] state:
/// Filter by state/province name
///
/// * [List<String>] tagIds:
/// Filter by tag IDs
///
/// * [DateTime] takenAfter:
/// Filter by taken date (after)
///
/// * [DateTime] takenBefore:
/// Filter by taken date (before)
///
/// * [DateTime] trashedAfter:
/// Filter by trash date (after)
///
/// * [DateTime] trashedBefore:
/// Filter by trash date (before)
///
/// * [AssetTypeEnum] type:
/// Asset type filter
///
/// * [DateTime] updatedAfter:
/// Filter by update date (after)
///
/// * [DateTime] updatedBefore:
/// Filter by update date (before)
///
/// * [AssetVisibility] visibility:
/// Filter by visibility
///
/// * [bool] withDeleted:
/// Include deleted assets
///
/// * [bool] withExif:
/// Include EXIF data in response
Future<Response> searchLargeAssetsWithHttpInfo({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
// ignore: prefer_const_declarations
final apiPath = r'/search/large-assets';
@@ -533,68 +579,100 @@ class SearchApi {
/// Parameters:
///
/// * [List<String>] albumIds:
/// Filter by album IDs
///
/// * [String] city:
/// Filter by city name
///
/// * [String] country:
/// Filter by country name
///
/// * [DateTime] createdAfter:
/// Filter by creation date (after)
///
/// * [DateTime] createdBefore:
/// Filter by creation date (before)
///
/// * [String] deviceId:
/// Device ID to filter by
///
/// * [bool] isEncoded:
/// Filter by encoded status
///
/// * [bool] isFavorite:
/// Filter by favorite status
///
/// * [bool] isMotion:
/// Filter by motion photo status
///
/// * [bool] isNotInAlbum:
/// Filter assets not in any album
///
/// * [bool] isOffline:
/// Filter by offline status
///
/// * [String] lensModel:
/// Filter by lens model
///
/// * [String] libraryId:
/// Library ID to filter by
///
/// * [String] make:
/// Filter by camera make
///
/// * [int] minFileSize:
/// Minimum file size in bytes
///
/// * [String] model:
/// Filter by camera model
///
/// * [String] ocr:
/// Filter by OCR text content
///
/// * [List<String>] personIds:
/// Filter by person IDs
///
/// * [num] rating:
/// Filter by rating
///
/// * [num] size:
/// Number of results to return
///
/// * [String] state:
/// Filter by state/province name
///
/// * [List<String>] tagIds:
/// Filter by tag IDs
///
/// * [DateTime] takenAfter:
/// Filter by taken date (after)
///
/// * [DateTime] takenBefore:
/// Filter by taken date (before)
///
/// * [DateTime] trashedAfter:
/// Filter by trash date (after)
///
/// * [DateTime] trashedBefore:
/// Filter by trash date (before)
///
/// * [AssetTypeEnum] type:
/// Asset type filter
///
/// * [DateTime] updatedAfter:
/// Filter by update date (after)
///
/// * [DateTime] updatedBefore:
/// Filter by update date (before)
///
/// * [AssetVisibility] visibility:
/// Filter by visibility
///
/// * [bool] withDeleted:
/// Include deleted assets
///
/// * [bool] withExif:
/// Include EXIF data in response
Future<List<AssetResponseDto>?> searchLargeAssets({ List<String>? albumIds, String? city, String? country, DateTime? createdAfter, DateTime? createdBefore, String? deviceId, bool? isEncoded, bool? isFavorite, bool? isMotion, bool? isNotInAlbum, bool? isOffline, String? lensModel, String? libraryId, String? make, int? minFileSize, String? model, String? ocr, List<String>? personIds, num? rating, num? size, String? state, List<String>? tagIds, DateTime? takenAfter, DateTime? takenBefore, DateTime? trashedAfter, DateTime? trashedBefore, AssetTypeEnum? type, DateTime? updatedAfter, DateTime? updatedBefore, AssetVisibility? visibility, bool? withDeleted, bool? withExif, }) async {
final response = await searchLargeAssetsWithHttpInfo( albumIds: albumIds, city: city, country: country, createdAfter: createdAfter, createdBefore: createdBefore, deviceId: deviceId, isEncoded: isEncoded, isFavorite: isFavorite, isMotion: isMotion, isNotInAlbum: isNotInAlbum, isOffline: isOffline, lensModel: lensModel, libraryId: libraryId, make: make, minFileSize: minFileSize, model: model, ocr: ocr, personIds: personIds, rating: rating, size: size, state: state, tagIds: tagIds, takenAfter: takenAfter, takenBefore: takenBefore, trashedAfter: trashedAfter, trashedBefore: trashedBefore, type: type, updatedAfter: updatedAfter, updatedBefore: updatedBefore, visibility: visibility, withDeleted: withDeleted, withExif: withExif, );
if (response.statusCode >= HttpStatus.badRequest) {
@@ -622,8 +700,10 @@ class SearchApi {
/// Parameters:
///
/// * [String] name (required):
/// Person name to search for
///
/// * [bool] withHidden:
/// Include hidden people
Future<Response> searchPersonWithHttpInfo(String name, { bool? withHidden, }) async {
// ignore: prefer_const_declarations
final apiPath = r'/search/person';
@@ -661,8 +741,10 @@ class SearchApi {
/// Parameters:
///
/// * [String] name (required):
/// Person name to search for
///
/// * [bool] withHidden:
/// Include hidden people
Future<List<PersonResponseDto>?> searchPerson(String name, { bool? withHidden, }) async {
final response = await searchPersonWithHttpInfo(name, withHidden: withHidden, );
if (response.statusCode >= HttpStatus.badRequest) {
@@ -690,6 +772,7 @@ class SearchApi {
/// Parameters:
///
/// * [String] name (required):
/// Place name to search for
Future<Response> searchPlacesWithHttpInfo(String name,) async {
// ignore: prefer_const_declarations
final apiPath = r'/search/places';
@@ -724,6 +807,7 @@ class SearchApi {
/// Parameters:
///
/// * [String] name (required):
/// Place name to search for
Future<List<PlacesResponseDto>?> searchPlaces(String name,) async {
final response = await searchPlacesWithHttpInfo(name,);
if (response.statusCode >= HttpStatus.badRequest) {