mirror of
https://github.com/immich-app/immich.git
synced 2026-05-18 03:10:24 +03:00
openapi
This commit is contained in:
Generated
+5
@@ -103,12 +103,16 @@ Class | Method | HTTP request | Description
|
|||||||
*AssetsApi* | [**deleteBulkAssetMetadata**](doc//AssetsApi.md#deletebulkassetmetadata) | **DELETE** /assets/metadata | Delete asset metadata
|
*AssetsApi* | [**deleteBulkAssetMetadata**](doc//AssetsApi.md#deletebulkassetmetadata) | **DELETE** /assets/metadata | Delete asset metadata
|
||||||
*AssetsApi* | [**downloadAsset**](doc//AssetsApi.md#downloadasset) | **GET** /assets/{id}/original | Download original asset
|
*AssetsApi* | [**downloadAsset**](doc//AssetsApi.md#downloadasset) | **GET** /assets/{id}/original | Download original asset
|
||||||
*AssetsApi* | [**editAsset**](doc//AssetsApi.md#editasset) | **PUT** /assets/{id}/edits | Apply edits to an existing asset
|
*AssetsApi* | [**editAsset**](doc//AssetsApi.md#editasset) | **PUT** /assets/{id}/edits | Apply edits to an existing asset
|
||||||
|
*AssetsApi* | [**endSession**](doc//AssetsApi.md#endsession) | **DELETE** /assets/{id}/video/stream/{sessionId} | End HLS streaming session
|
||||||
*AssetsApi* | [**getAssetEdits**](doc//AssetsApi.md#getassetedits) | **GET** /assets/{id}/edits | Retrieve edits for an existing asset
|
*AssetsApi* | [**getAssetEdits**](doc//AssetsApi.md#getassetedits) | **GET** /assets/{id}/edits | Retrieve edits for an existing asset
|
||||||
*AssetsApi* | [**getAssetInfo**](doc//AssetsApi.md#getassetinfo) | **GET** /assets/{id} | Retrieve an asset
|
*AssetsApi* | [**getAssetInfo**](doc//AssetsApi.md#getassetinfo) | **GET** /assets/{id} | Retrieve an asset
|
||||||
*AssetsApi* | [**getAssetMetadata**](doc//AssetsApi.md#getassetmetadata) | **GET** /assets/{id}/metadata | Get asset metadata
|
*AssetsApi* | [**getAssetMetadata**](doc//AssetsApi.md#getassetmetadata) | **GET** /assets/{id}/metadata | Get asset metadata
|
||||||
*AssetsApi* | [**getAssetMetadataByKey**](doc//AssetsApi.md#getassetmetadatabykey) | **GET** /assets/{id}/metadata/{key} | Retrieve asset metadata by key
|
*AssetsApi* | [**getAssetMetadataByKey**](doc//AssetsApi.md#getassetmetadatabykey) | **GET** /assets/{id}/metadata/{key} | Retrieve asset metadata by key
|
||||||
*AssetsApi* | [**getAssetOcr**](doc//AssetsApi.md#getassetocr) | **GET** /assets/{id}/ocr | Retrieve asset OCR data
|
*AssetsApi* | [**getAssetOcr**](doc//AssetsApi.md#getassetocr) | **GET** /assets/{id}/ocr | Retrieve asset OCR data
|
||||||
*AssetsApi* | [**getAssetStatistics**](doc//AssetsApi.md#getassetstatistics) | **GET** /assets/statistics | Get asset statistics
|
*AssetsApi* | [**getAssetStatistics**](doc//AssetsApi.md#getassetstatistics) | **GET** /assets/statistics | Get asset statistics
|
||||||
|
*AssetsApi* | [**getMasterPlaylist**](doc//AssetsApi.md#getmasterplaylist) | **GET** /assets/{id}/video/stream/master.m3u8 | Get HLS master playlist
|
||||||
|
*AssetsApi* | [**getMediaPlaylist**](doc//AssetsApi.md#getmediaplaylist) | **GET** /assets/{id}/video/stream/{sessionId}/{variantIndex}/playlist.m3u8 | Get HLS media playlist
|
||||||
|
*AssetsApi* | [**getSegment**](doc//AssetsApi.md#getsegment) | **GET** /assets/{id}/video/stream/{sessionId}/{variantIndex}/{filename} | Get HLS segment or init file
|
||||||
*AssetsApi* | [**playAssetVideo**](doc//AssetsApi.md#playassetvideo) | **GET** /assets/{id}/video/playback | Play asset video
|
*AssetsApi* | [**playAssetVideo**](doc//AssetsApi.md#playassetvideo) | **GET** /assets/{id}/video/playback | Play asset video
|
||||||
*AssetsApi* | [**removeAssetEdits**](doc//AssetsApi.md#removeassetedits) | **DELETE** /assets/{id}/edits | Remove edits from an existing asset
|
*AssetsApi* | [**removeAssetEdits**](doc//AssetsApi.md#removeassetedits) | **DELETE** /assets/{id}/edits | Remove edits from an existing asset
|
||||||
*AssetsApi* | [**runAssetJobs**](doc//AssetsApi.md#runassetjobs) | **POST** /assets/jobs | Run an asset job
|
*AssetsApi* | [**runAssetJobs**](doc//AssetsApi.md#runassetjobs) | **POST** /assets/jobs | Run an asset job
|
||||||
@@ -601,6 +605,7 @@ Class | Method | HTTP request | Description
|
|||||||
- [SystemConfigBackupsDto](doc//SystemConfigBackupsDto.md)
|
- [SystemConfigBackupsDto](doc//SystemConfigBackupsDto.md)
|
||||||
- [SystemConfigDto](doc//SystemConfigDto.md)
|
- [SystemConfigDto](doc//SystemConfigDto.md)
|
||||||
- [SystemConfigFFmpegDto](doc//SystemConfigFFmpegDto.md)
|
- [SystemConfigFFmpegDto](doc//SystemConfigFFmpegDto.md)
|
||||||
|
- [SystemConfigFFmpegRealtimeDto](doc//SystemConfigFFmpegRealtimeDto.md)
|
||||||
- [SystemConfigFacesDto](doc//SystemConfigFacesDto.md)
|
- [SystemConfigFacesDto](doc//SystemConfigFacesDto.md)
|
||||||
- [SystemConfigGeneratedFullsizeImageDto](doc//SystemConfigGeneratedFullsizeImageDto.md)
|
- [SystemConfigGeneratedFullsizeImageDto](doc//SystemConfigGeneratedFullsizeImageDto.md)
|
||||||
- [SystemConfigGeneratedImageDto](doc//SystemConfigGeneratedImageDto.md)
|
- [SystemConfigGeneratedImageDto](doc//SystemConfigGeneratedImageDto.md)
|
||||||
|
|||||||
Generated
+1
@@ -349,6 +349,7 @@ part 'model/sync_user_v1.dart';
|
|||||||
part 'model/system_config_backups_dto.dart';
|
part 'model/system_config_backups_dto.dart';
|
||||||
part 'model/system_config_dto.dart';
|
part 'model/system_config_dto.dart';
|
||||||
part 'model/system_config_f_fmpeg_dto.dart';
|
part 'model/system_config_f_fmpeg_dto.dart';
|
||||||
|
part 'model/system_config_f_fmpeg_realtime_dto.dart';
|
||||||
part 'model/system_config_faces_dto.dart';
|
part 'model/system_config_faces_dto.dart';
|
||||||
part 'model/system_config_generated_fullsize_image_dto.dart';
|
part 'model/system_config_generated_fullsize_image_dto.dart';
|
||||||
part 'model/system_config_generated_image_dto.dart';
|
part 'model/system_config_generated_image_dto.dart';
|
||||||
|
|||||||
Generated
+310
@@ -416,6 +416,75 @@ class AssetsApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// End HLS streaming session
|
||||||
|
///
|
||||||
|
/// Releases server resources for the streaming session.
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<Response> endSessionWithHttpInfo(String id, String sessionId, { String? key, String? slug, }) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final apiPath = r'/assets/{id}/video/stream/{sessionId}'
|
||||||
|
.replaceAll('{id}', id)
|
||||||
|
.replaceAll('{sessionId}', sessionId);
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
if (key != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'key', key));
|
||||||
|
}
|
||||||
|
if (slug != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'slug', slug));
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
apiPath,
|
||||||
|
'DELETE',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// End HLS streaming session
|
||||||
|
///
|
||||||
|
/// Releases server resources for the streaming session.
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<void> endSession(String id, String sessionId, { String? key, String? slug, }) async {
|
||||||
|
final response = await endSessionWithHttpInfo(id, sessionId, key: key, slug: slug, );
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Retrieve edits for an existing asset
|
/// Retrieve edits for an existing asset
|
||||||
///
|
///
|
||||||
/// Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.
|
/// Retrieve a series of edit actions (crop, rotate, mirror) associated with the specified asset.
|
||||||
@@ -809,6 +878,247 @@ class AssetsApi {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Get HLS master playlist
|
||||||
|
///
|
||||||
|
/// Returns an HLS master playlist with all available variants for the asset.
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<Response> getMasterPlaylistWithHttpInfo(String id, { String? key, String? slug, }) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final apiPath = r'/assets/{id}/video/stream/master.m3u8'
|
||||||
|
.replaceAll('{id}', id);
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
if (key != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'key', key));
|
||||||
|
}
|
||||||
|
if (slug != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'slug', slug));
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
apiPath,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get HLS master playlist
|
||||||
|
///
|
||||||
|
/// Returns an HLS master playlist with all available variants for the asset.
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<String?> getMasterPlaylist(String id, { String? key, String? slug, }) async {
|
||||||
|
final response = await getMasterPlaylistWithHttpInfo(id, key: key, slug: slug, );
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'String',) as String;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get HLS media playlist
|
||||||
|
///
|
||||||
|
/// Returns an HLS media playlist for one variant of the streaming session.
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [int] variantIndex (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<Response> getMediaPlaylistWithHttpInfo(String id, String sessionId, int variantIndex, { String? key, String? slug, }) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final apiPath = r'/assets/{id}/video/stream/{sessionId}/{variantIndex}/playlist.m3u8'
|
||||||
|
.replaceAll('{id}', id)
|
||||||
|
.replaceAll('{sessionId}', sessionId)
|
||||||
|
.replaceAll('{variantIndex}', variantIndex.toString());
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
if (key != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'key', key));
|
||||||
|
}
|
||||||
|
if (slug != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'slug', slug));
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
apiPath,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get HLS media playlist
|
||||||
|
///
|
||||||
|
/// Returns an HLS media playlist for one variant of the streaming session.
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [int] variantIndex (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<String?> getMediaPlaylist(String id, String sessionId, int variantIndex, { String? key, String? slug, }) async {
|
||||||
|
final response = await getMediaPlaylistWithHttpInfo(id, sessionId, variantIndex, key: key, slug: slug, );
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'String',) as String;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get HLS segment or init file
|
||||||
|
///
|
||||||
|
/// Streams an HLS init segment (init.mp4) or media segment (seg_N.m4s).
|
||||||
|
///
|
||||||
|
/// Note: This method returns the HTTP [Response].
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] filename (required):
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [int] variantIndex (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<Response> getSegmentWithHttpInfo(String filename, String id, String sessionId, int variantIndex, { String? key, String? slug, }) async {
|
||||||
|
// ignore: prefer_const_declarations
|
||||||
|
final apiPath = r'/assets/{id}/video/stream/{sessionId}/{variantIndex}/{filename}'
|
||||||
|
.replaceAll('{filename}', filename)
|
||||||
|
.replaceAll('{id}', id)
|
||||||
|
.replaceAll('{sessionId}', sessionId)
|
||||||
|
.replaceAll('{variantIndex}', variantIndex.toString());
|
||||||
|
|
||||||
|
// ignore: prefer_final_locals
|
||||||
|
Object? postBody;
|
||||||
|
|
||||||
|
final queryParams = <QueryParam>[];
|
||||||
|
final headerParams = <String, String>{};
|
||||||
|
final formParams = <String, String>{};
|
||||||
|
|
||||||
|
if (key != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'key', key));
|
||||||
|
}
|
||||||
|
if (slug != null) {
|
||||||
|
queryParams.addAll(_queryParams('', 'slug', slug));
|
||||||
|
}
|
||||||
|
|
||||||
|
const contentTypes = <String>[];
|
||||||
|
|
||||||
|
|
||||||
|
return apiClient.invokeAPI(
|
||||||
|
apiPath,
|
||||||
|
'GET',
|
||||||
|
queryParams,
|
||||||
|
postBody,
|
||||||
|
headerParams,
|
||||||
|
formParams,
|
||||||
|
contentTypes.isEmpty ? null : contentTypes.first,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get HLS segment or init file
|
||||||
|
///
|
||||||
|
/// Streams an HLS init segment (init.mp4) or media segment (seg_N.m4s).
|
||||||
|
///
|
||||||
|
/// Parameters:
|
||||||
|
///
|
||||||
|
/// * [String] filename (required):
|
||||||
|
///
|
||||||
|
/// * [String] id (required):
|
||||||
|
///
|
||||||
|
/// * [String] sessionId (required):
|
||||||
|
///
|
||||||
|
/// * [int] variantIndex (required):
|
||||||
|
///
|
||||||
|
/// * [String] key:
|
||||||
|
///
|
||||||
|
/// * [String] slug:
|
||||||
|
Future<MultipartFile?> getSegment(String filename, String id, String sessionId, int variantIndex, { String? key, String? slug, }) async {
|
||||||
|
final response = await getSegmentWithHttpInfo(filename, id, sessionId, variantIndex, key: key, slug: slug, );
|
||||||
|
if (response.statusCode >= HttpStatus.badRequest) {
|
||||||
|
throw ApiException(response.statusCode, await _decodeBodyBytes(response));
|
||||||
|
}
|
||||||
|
// When a remote server returns no body with a status of 204, we shall not decode it.
|
||||||
|
// At the time of writing this, `dart:convert` will throw an "Unexpected end of input"
|
||||||
|
// FormatException when trying to decode an empty string.
|
||||||
|
if (response.body.isNotEmpty && response.statusCode != HttpStatus.noContent) {
|
||||||
|
return await apiClient.deserializeAsync(await _decodeBodyBytes(response), 'MultipartFile',) as MultipartFile;
|
||||||
|
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// Play asset video
|
/// Play asset video
|
||||||
///
|
///
|
||||||
/// Streams the video file for the specified asset. This endpoint also supports byte range requests.
|
/// Streams the video file for the specified asset. This endpoint also supports byte range requests.
|
||||||
|
|||||||
Generated
+2
@@ -744,6 +744,8 @@ class ApiClient {
|
|||||||
return SystemConfigDto.fromJson(value);
|
return SystemConfigDto.fromJson(value);
|
||||||
case 'SystemConfigFFmpegDto':
|
case 'SystemConfigFFmpegDto':
|
||||||
return SystemConfigFFmpegDto.fromJson(value);
|
return SystemConfigFFmpegDto.fromJson(value);
|
||||||
|
case 'SystemConfigFFmpegRealtimeDto':
|
||||||
|
return SystemConfigFFmpegRealtimeDto.fromJson(value);
|
||||||
case 'SystemConfigFacesDto':
|
case 'SystemConfigFacesDto':
|
||||||
return SystemConfigFacesDto.fromJson(value);
|
return SystemConfigFacesDto.fromJson(value);
|
||||||
case 'SystemConfigGeneratedFullsizeImageDto':
|
case 'SystemConfigGeneratedFullsizeImageDto':
|
||||||
|
|||||||
Generated
+3
@@ -52,6 +52,7 @@ class JobName {
|
|||||||
static const librarySyncFilesQueueAll = JobName._(r'LibrarySyncFilesQueueAll');
|
static const librarySyncFilesQueueAll = JobName._(r'LibrarySyncFilesQueueAll');
|
||||||
static const librarySyncFiles = JobName._(r'LibrarySyncFiles');
|
static const librarySyncFiles = JobName._(r'LibrarySyncFiles');
|
||||||
static const libraryScanQueueAll = JobName._(r'LibraryScanQueueAll');
|
static const libraryScanQueueAll = JobName._(r'LibraryScanQueueAll');
|
||||||
|
static const hlsSessionCleanup = JobName._(r'HlsSessionCleanup');
|
||||||
static const memoryCleanup = JobName._(r'MemoryCleanup');
|
static const memoryCleanup = JobName._(r'MemoryCleanup');
|
||||||
static const memoryGenerate = JobName._(r'MemoryGenerate');
|
static const memoryGenerate = JobName._(r'MemoryGenerate');
|
||||||
static const notificationsCleanup = JobName._(r'NotificationsCleanup');
|
static const notificationsCleanup = JobName._(r'NotificationsCleanup');
|
||||||
@@ -110,6 +111,7 @@ class JobName {
|
|||||||
librarySyncFilesQueueAll,
|
librarySyncFilesQueueAll,
|
||||||
librarySyncFiles,
|
librarySyncFiles,
|
||||||
libraryScanQueueAll,
|
libraryScanQueueAll,
|
||||||
|
hlsSessionCleanup,
|
||||||
memoryCleanup,
|
memoryCleanup,
|
||||||
memoryGenerate,
|
memoryGenerate,
|
||||||
notificationsCleanup,
|
notificationsCleanup,
|
||||||
@@ -203,6 +205,7 @@ class JobNameTypeTransformer {
|
|||||||
case r'LibrarySyncFilesQueueAll': return JobName.librarySyncFilesQueueAll;
|
case r'LibrarySyncFilesQueueAll': return JobName.librarySyncFilesQueueAll;
|
||||||
case r'LibrarySyncFiles': return JobName.librarySyncFiles;
|
case r'LibrarySyncFiles': return JobName.librarySyncFiles;
|
||||||
case r'LibraryScanQueueAll': return JobName.libraryScanQueueAll;
|
case r'LibraryScanQueueAll': return JobName.libraryScanQueueAll;
|
||||||
|
case r'HlsSessionCleanup': return JobName.hlsSessionCleanup;
|
||||||
case r'MemoryCleanup': return JobName.memoryCleanup;
|
case r'MemoryCleanup': return JobName.memoryCleanup;
|
||||||
case r'MemoryGenerate': return JobName.memoryGenerate;
|
case r'MemoryGenerate': return JobName.memoryGenerate;
|
||||||
case r'NotificationsCleanup': return JobName.notificationsCleanup;
|
case r'NotificationsCleanup': return JobName.notificationsCleanup;
|
||||||
|
|||||||
+9
-1
@@ -25,6 +25,7 @@ class SystemConfigFFmpegDto {
|
|||||||
required this.maxBitrate,
|
required this.maxBitrate,
|
||||||
required this.preferredHwDevice,
|
required this.preferredHwDevice,
|
||||||
required this.preset,
|
required this.preset,
|
||||||
|
required this.realtime,
|
||||||
required this.refs,
|
required this.refs,
|
||||||
required this.targetAudioCodec,
|
required this.targetAudioCodec,
|
||||||
required this.targetResolution,
|
required this.targetResolution,
|
||||||
@@ -79,6 +80,8 @@ class SystemConfigFFmpegDto {
|
|||||||
/// Preset
|
/// Preset
|
||||||
String preset;
|
String preset;
|
||||||
|
|
||||||
|
SystemConfigFFmpegRealtimeDto realtime;
|
||||||
|
|
||||||
/// References
|
/// References
|
||||||
///
|
///
|
||||||
/// Minimum value: 0
|
/// Minimum value: 0
|
||||||
@@ -122,6 +125,7 @@ class SystemConfigFFmpegDto {
|
|||||||
other.maxBitrate == maxBitrate &&
|
other.maxBitrate == maxBitrate &&
|
||||||
other.preferredHwDevice == preferredHwDevice &&
|
other.preferredHwDevice == preferredHwDevice &&
|
||||||
other.preset == preset &&
|
other.preset == preset &&
|
||||||
|
other.realtime == realtime &&
|
||||||
other.refs == refs &&
|
other.refs == refs &&
|
||||||
other.targetAudioCodec == targetAudioCodec &&
|
other.targetAudioCodec == targetAudioCodec &&
|
||||||
other.targetResolution == targetResolution &&
|
other.targetResolution == targetResolution &&
|
||||||
@@ -147,6 +151,7 @@ class SystemConfigFFmpegDto {
|
|||||||
(maxBitrate.hashCode) +
|
(maxBitrate.hashCode) +
|
||||||
(preferredHwDevice.hashCode) +
|
(preferredHwDevice.hashCode) +
|
||||||
(preset.hashCode) +
|
(preset.hashCode) +
|
||||||
|
(realtime.hashCode) +
|
||||||
(refs.hashCode) +
|
(refs.hashCode) +
|
||||||
(targetAudioCodec.hashCode) +
|
(targetAudioCodec.hashCode) +
|
||||||
(targetResolution.hashCode) +
|
(targetResolution.hashCode) +
|
||||||
@@ -158,7 +163,7 @@ class SystemConfigFFmpegDto {
|
|||||||
(twoPass.hashCode);
|
(twoPass.hashCode);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() => 'SystemConfigFFmpegDto[accel=$accel, accelDecode=$accelDecode, acceptedAudioCodecs=$acceptedAudioCodecs, acceptedContainers=$acceptedContainers, acceptedVideoCodecs=$acceptedVideoCodecs, bframes=$bframes, cqMode=$cqMode, crf=$crf, gopSize=$gopSize, maxBitrate=$maxBitrate, preferredHwDevice=$preferredHwDevice, preset=$preset, refs=$refs, targetAudioCodec=$targetAudioCodec, targetResolution=$targetResolution, targetVideoCodec=$targetVideoCodec, temporalAQ=$temporalAQ, threads=$threads, tonemap=$tonemap, transcode=$transcode, twoPass=$twoPass]';
|
String toString() => 'SystemConfigFFmpegDto[accel=$accel, accelDecode=$accelDecode, acceptedAudioCodecs=$acceptedAudioCodecs, acceptedContainers=$acceptedContainers, acceptedVideoCodecs=$acceptedVideoCodecs, bframes=$bframes, cqMode=$cqMode, crf=$crf, gopSize=$gopSize, maxBitrate=$maxBitrate, preferredHwDevice=$preferredHwDevice, preset=$preset, realtime=$realtime, refs=$refs, targetAudioCodec=$targetAudioCodec, targetResolution=$targetResolution, targetVideoCodec=$targetVideoCodec, temporalAQ=$temporalAQ, threads=$threads, tonemap=$tonemap, transcode=$transcode, twoPass=$twoPass]';
|
||||||
|
|
||||||
Map<String, dynamic> toJson() {
|
Map<String, dynamic> toJson() {
|
||||||
final json = <String, dynamic>{};
|
final json = <String, dynamic>{};
|
||||||
@@ -174,6 +179,7 @@ class SystemConfigFFmpegDto {
|
|||||||
json[r'maxBitrate'] = this.maxBitrate;
|
json[r'maxBitrate'] = this.maxBitrate;
|
||||||
json[r'preferredHwDevice'] = this.preferredHwDevice;
|
json[r'preferredHwDevice'] = this.preferredHwDevice;
|
||||||
json[r'preset'] = this.preset;
|
json[r'preset'] = this.preset;
|
||||||
|
json[r'realtime'] = this.realtime;
|
||||||
json[r'refs'] = this.refs;
|
json[r'refs'] = this.refs;
|
||||||
json[r'targetAudioCodec'] = this.targetAudioCodec;
|
json[r'targetAudioCodec'] = this.targetAudioCodec;
|
||||||
json[r'targetResolution'] = this.targetResolution;
|
json[r'targetResolution'] = this.targetResolution;
|
||||||
@@ -207,6 +213,7 @@ class SystemConfigFFmpegDto {
|
|||||||
maxBitrate: mapValueOfType<String>(json, r'maxBitrate')!,
|
maxBitrate: mapValueOfType<String>(json, r'maxBitrate')!,
|
||||||
preferredHwDevice: mapValueOfType<String>(json, r'preferredHwDevice')!,
|
preferredHwDevice: mapValueOfType<String>(json, r'preferredHwDevice')!,
|
||||||
preset: mapValueOfType<String>(json, r'preset')!,
|
preset: mapValueOfType<String>(json, r'preset')!,
|
||||||
|
realtime: SystemConfigFFmpegRealtimeDto.fromJson(json[r'realtime'])!,
|
||||||
refs: mapValueOfType<int>(json, r'refs')!,
|
refs: mapValueOfType<int>(json, r'refs')!,
|
||||||
targetAudioCodec: AudioCodec.fromJson(json[r'targetAudioCodec'])!,
|
targetAudioCodec: AudioCodec.fromJson(json[r'targetAudioCodec'])!,
|
||||||
targetResolution: mapValueOfType<String>(json, r'targetResolution')!,
|
targetResolution: mapValueOfType<String>(json, r'targetResolution')!,
|
||||||
@@ -275,6 +282,7 @@ class SystemConfigFFmpegDto {
|
|||||||
'maxBitrate',
|
'maxBitrate',
|
||||||
'preferredHwDevice',
|
'preferredHwDevice',
|
||||||
'preset',
|
'preset',
|
||||||
|
'realtime',
|
||||||
'refs',
|
'refs',
|
||||||
'targetAudioCodec',
|
'targetAudioCodec',
|
||||||
'targetResolution',
|
'targetResolution',
|
||||||
|
|||||||
@@ -0,0 +1,100 @@
|
|||||||
|
//
|
||||||
|
// AUTO-GENERATED FILE, DO NOT MODIFY!
|
||||||
|
//
|
||||||
|
// @dart=2.18
|
||||||
|
|
||||||
|
// ignore_for_file: unused_element, unused_import
|
||||||
|
// ignore_for_file: always_put_required_named_parameters_first
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
|
||||||
|
part of openapi.api;
|
||||||
|
|
||||||
|
class SystemConfigFFmpegRealtimeDto {
|
||||||
|
/// Returns a new [SystemConfigFFmpegRealtimeDto] instance.
|
||||||
|
SystemConfigFFmpegRealtimeDto({
|
||||||
|
required this.enabled,
|
||||||
|
});
|
||||||
|
|
||||||
|
/// Enable real-time HLS transcoding (alpha)
|
||||||
|
bool enabled;
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool operator ==(Object other) => identical(this, other) || other is SystemConfigFFmpegRealtimeDto &&
|
||||||
|
other.enabled == enabled;
|
||||||
|
|
||||||
|
@override
|
||||||
|
int get hashCode =>
|
||||||
|
// ignore: unnecessary_parenthesis
|
||||||
|
(enabled.hashCode);
|
||||||
|
|
||||||
|
@override
|
||||||
|
String toString() => 'SystemConfigFFmpegRealtimeDto[enabled=$enabled]';
|
||||||
|
|
||||||
|
Map<String, dynamic> toJson() {
|
||||||
|
final json = <String, dynamic>{};
|
||||||
|
json[r'enabled'] = this.enabled;
|
||||||
|
return json;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Returns a new [SystemConfigFFmpegRealtimeDto] instance and imports its values from
|
||||||
|
/// [value] if it's a [Map], null otherwise.
|
||||||
|
// ignore: prefer_constructors_over_static_methods
|
||||||
|
static SystemConfigFFmpegRealtimeDto? fromJson(dynamic value) {
|
||||||
|
upgradeDto(value, "SystemConfigFFmpegRealtimeDto");
|
||||||
|
if (value is Map) {
|
||||||
|
final json = value.cast<String, dynamic>();
|
||||||
|
|
||||||
|
return SystemConfigFFmpegRealtimeDto(
|
||||||
|
enabled: mapValueOfType<bool>(json, r'enabled')!,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
static List<SystemConfigFFmpegRealtimeDto> listFromJson(dynamic json, {bool growable = false,}) {
|
||||||
|
final result = <SystemConfigFFmpegRealtimeDto>[];
|
||||||
|
if (json is List && json.isNotEmpty) {
|
||||||
|
for (final row in json) {
|
||||||
|
final value = SystemConfigFFmpegRealtimeDto.fromJson(row);
|
||||||
|
if (value != null) {
|
||||||
|
result.add(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result.toList(growable: growable);
|
||||||
|
}
|
||||||
|
|
||||||
|
static Map<String, SystemConfigFFmpegRealtimeDto> mapFromJson(dynamic json) {
|
||||||
|
final map = <String, SystemConfigFFmpegRealtimeDto>{};
|
||||||
|
if (json is Map && json.isNotEmpty) {
|
||||||
|
json = json.cast<String, dynamic>(); // ignore: parameter_assignments
|
||||||
|
for (final entry in json.entries) {
|
||||||
|
final value = SystemConfigFFmpegRealtimeDto.fromJson(entry.value);
|
||||||
|
if (value != null) {
|
||||||
|
map[entry.key] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
// maps a json object with a list of SystemConfigFFmpegRealtimeDto-objects as value to a dart map
|
||||||
|
static Map<String, List<SystemConfigFFmpegRealtimeDto>> mapListFromJson(dynamic json, {bool growable = false,}) {
|
||||||
|
final map = <String, List<SystemConfigFFmpegRealtimeDto>>{};
|
||||||
|
if (json is Map && json.isNotEmpty) {
|
||||||
|
// ignore: parameter_assignments
|
||||||
|
json = json.cast<String, dynamic>();
|
||||||
|
for (final entry in json.entries) {
|
||||||
|
map[entry.key] = SystemConfigFFmpegRealtimeDto.listFromJson(entry.value, growable: growable,);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// The list of required keys that must be present in a JSON.
|
||||||
|
static const requiredKeys = <String>{
|
||||||
|
'enabled',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -2307,6 +2307,10 @@ export type DatabaseBackupConfig = {
|
|||||||
export type SystemConfigBackupsDto = {
|
export type SystemConfigBackupsDto = {
|
||||||
database: DatabaseBackupConfig;
|
database: DatabaseBackupConfig;
|
||||||
};
|
};
|
||||||
|
export type SystemConfigFFmpegRealtimeDto = {
|
||||||
|
/** Enable real-time HLS transcoding (alpha) */
|
||||||
|
enabled: boolean;
|
||||||
|
};
|
||||||
export type SystemConfigFFmpegDto = {
|
export type SystemConfigFFmpegDto = {
|
||||||
accel: TranscodeHWAccel;
|
accel: TranscodeHWAccel;
|
||||||
/** Accelerated decode */
|
/** Accelerated decode */
|
||||||
@@ -2330,6 +2334,7 @@ export type SystemConfigFFmpegDto = {
|
|||||||
preferredHwDevice: string;
|
preferredHwDevice: string;
|
||||||
/** Preset */
|
/** Preset */
|
||||||
preset: string;
|
preset: string;
|
||||||
|
realtime: SystemConfigFFmpegRealtimeDto;
|
||||||
/** References */
|
/** References */
|
||||||
refs: number;
|
refs: number;
|
||||||
targetAudioCodec: AudioCodec;
|
targetAudioCodec: AudioCodec;
|
||||||
@@ -4264,6 +4269,82 @@ export function playAssetVideo({ id, key, slug }: {
|
|||||||
...opts
|
...opts
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Get HLS master playlist
|
||||||
|
*/
|
||||||
|
export function getMasterPlaylist({ id, key, slug }: {
|
||||||
|
id: string;
|
||||||
|
key?: string;
|
||||||
|
slug?: string;
|
||||||
|
}, opts?: Oazapfts.RequestOpts) {
|
||||||
|
return oazapfts.ok(oazapfts.fetchBlob<{
|
||||||
|
status: 200;
|
||||||
|
data: string;
|
||||||
|
}>(`/assets/${encodeURIComponent(id)}/video/stream/master.m3u8${QS.query(QS.explode({
|
||||||
|
key,
|
||||||
|
slug
|
||||||
|
}))}`, {
|
||||||
|
...opts
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* End HLS streaming session
|
||||||
|
*/
|
||||||
|
export function endSession({ id, key, sessionId, slug }: {
|
||||||
|
id: string;
|
||||||
|
key?: string;
|
||||||
|
sessionId: string;
|
||||||
|
slug?: string;
|
||||||
|
}, opts?: Oazapfts.RequestOpts) {
|
||||||
|
return oazapfts.ok(oazapfts.fetchText(`/assets/${encodeURIComponent(id)}/video/stream/${encodeURIComponent(sessionId)}${QS.query(QS.explode({
|
||||||
|
key,
|
||||||
|
slug
|
||||||
|
}))}`, {
|
||||||
|
...opts,
|
||||||
|
method: "DELETE"
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get HLS media playlist
|
||||||
|
*/
|
||||||
|
export function getMediaPlaylist({ id, key, sessionId, slug, variantIndex }: {
|
||||||
|
id: string;
|
||||||
|
key?: string;
|
||||||
|
sessionId: string;
|
||||||
|
slug?: string;
|
||||||
|
variantIndex: number;
|
||||||
|
}, opts?: Oazapfts.RequestOpts) {
|
||||||
|
return oazapfts.ok(oazapfts.fetchBlob<{
|
||||||
|
status: 200;
|
||||||
|
data: string;
|
||||||
|
}>(`/assets/${encodeURIComponent(id)}/video/stream/${encodeURIComponent(sessionId)}/${encodeURIComponent(variantIndex)}/playlist.m3u8${QS.query(QS.explode({
|
||||||
|
key,
|
||||||
|
slug
|
||||||
|
}))}`, {
|
||||||
|
...opts
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Get HLS segment or init file
|
||||||
|
*/
|
||||||
|
export function getSegment({ filename, id, key, sessionId, slug, variantIndex }: {
|
||||||
|
filename: string;
|
||||||
|
id: string;
|
||||||
|
key?: string;
|
||||||
|
sessionId: string;
|
||||||
|
slug?: string;
|
||||||
|
variantIndex: number;
|
||||||
|
}, opts?: Oazapfts.RequestOpts) {
|
||||||
|
return oazapfts.ok(oazapfts.fetchBlob<{
|
||||||
|
status: 200;
|
||||||
|
data: Blob;
|
||||||
|
}>(`/assets/${encodeURIComponent(id)}/video/stream/${encodeURIComponent(sessionId)}/${encodeURIComponent(variantIndex)}/${encodeURIComponent(filename)}${QS.query(QS.explode({
|
||||||
|
key,
|
||||||
|
slug
|
||||||
|
}))}`, {
|
||||||
|
...opts
|
||||||
|
}));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Register admin
|
* Register admin
|
||||||
*/
|
*/
|
||||||
@@ -7098,6 +7179,7 @@ export enum JobName {
|
|||||||
LibrarySyncFilesQueueAll = "LibrarySyncFilesQueueAll",
|
LibrarySyncFilesQueueAll = "LibrarySyncFilesQueueAll",
|
||||||
LibrarySyncFiles = "LibrarySyncFiles",
|
LibrarySyncFiles = "LibrarySyncFiles",
|
||||||
LibraryScanQueueAll = "LibraryScanQueueAll",
|
LibraryScanQueueAll = "LibraryScanQueueAll",
|
||||||
|
HlsSessionCleanup = "HlsSessionCleanup",
|
||||||
MemoryCleanup = "MemoryCleanup",
|
MemoryCleanup = "MemoryCleanup",
|
||||||
MemoryGenerate = "MemoryGenerate",
|
MemoryGenerate = "MemoryGenerate",
|
||||||
NotificationsCleanup = "NotificationsCleanup",
|
NotificationsCleanup = "NotificationsCleanup",
|
||||||
|
|||||||
Reference in New Issue
Block a user