aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.html5
-rw-r--r--client/src/app/+admin/overview/videos/video-list.component.ts4
-rw-r--r--client/src/app/shared/shared-main/video/video.service.ts16
-rw-r--r--server/models/video/sql/shared/abstract-run-query.ts (renamed from server/models/video/sql/shared/abstract-videos-query-builder.ts)2
-rw-r--r--server/models/video/sql/shared/abstract-video-query-builder.ts (renamed from server/models/video/sql/shared/abstract-videos-model-query-builder.ts)10
-rw-r--r--server/models/video/sql/shared/video-file-query-builder.ts4
-rw-r--r--server/models/video/sql/shared/video-model-builder.ts4
-rw-r--r--server/models/video/sql/shared/video-table-attributes.ts (renamed from server/models/video/sql/shared/video-tables.ts)32
-rw-r--r--server/models/video/sql/video-model-get-query-builder.ts11
-rw-r--r--server/models/video/sql/videos-id-list-query-builder.ts6
-rw-r--r--server/models/video/sql/videos-model-list-query-builder.ts10
-rw-r--r--support/doc/api/openapi.yaml4
12 files changed, 54 insertions, 54 deletions
diff --git a/client/src/app/+admin/overview/videos/video-list.component.html b/client/src/app/+admin/overview/videos/video-list.component.html
index eedf6f3dc..dd4ab178e 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.html
+++ b/client/src/app/+admin/overview/videos/video-list.component.html
@@ -69,7 +69,7 @@
69 69
70 <span *ngIf="video.nsfw" class="badge badge-red" i18n>NSFW</span> 70 <span *ngIf="video.nsfw" class="badge badge-red" i18n>NSFW</span>
71 71
72 <span *ngIf="isUnpublished(video.state.id)" class="badge badge-yellow" i18n>Not published yet</span> 72 <span *ngIf="isUnpublished(video.state.id)" class="badge badge-yellow" i18n>{{ video.state.label }}</span>
73 73
74 <span *ngIf="isAccountBlocked(video)" class="badge badge-red" i18n>Account muted</span> 74 <span *ngIf="isAccountBlocked(video)" class="badge badge-red" i18n>Account muted</span>
75 <span *ngIf="isServerBlocked(video)" class="badge badge-red" i18n>Server muted</span> 75 <span *ngIf="isServerBlocked(video)" class="badge badge-red" i18n>Server muted</span>
@@ -80,8 +80,9 @@
80 <td> 80 <td>
81 <span *ngIf="isHLS(video)" class="badge badge-blue">HLS</span> 81 <span *ngIf="isHLS(video)" class="badge badge-blue">HLS</span>
82 <span *ngIf="isWebTorrent(video)" class="badge badge-blue">WebTorrent</span> 82 <span *ngIf="isWebTorrent(video)" class="badge badge-blue">WebTorrent</span>
83 <span *ngIf="video.isLive" class="badge badge-blue">Live</span>
83 84
84 <span *ngIf="!video.remote">{{ getFilesSize(video) | bytes: 1 }}</span> 85 <span *ngIf="!video.isLive && video.isLocal">{{ getFilesSize(video) | bytes: 1 }}</span>
85 </td> 86 </td>
86 87
87 <td> 88 <td>
diff --git a/client/src/app/+admin/overview/videos/video-list.component.ts b/client/src/app/+admin/overview/videos/video-list.component.ts
index 6885abfc7..8bd171c53 100644
--- a/client/src/app/+admin/overview/videos/video-list.component.ts
+++ b/client/src/app/+admin/overview/videos/video-list.component.ts
@@ -16,7 +16,7 @@ export class VideoListComponent extends RestTable implements OnInit {
16 videos: Video[] = [] 16 videos: Video[] = []
17 17
18 totalRecords = 0 18 totalRecords = 0
19 sort: SortMeta = { field: 'publishedAt', order: 1 } 19 sort: SortMeta = { field: 'publishedAt', order: -1 }
20 pagination: RestPagination = { count: this.rowsPerPage, start: 0 } 20 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
21 21
22 bulkVideoActions: DropdownAction<Video[]>[][] = [] 22 bulkVideoActions: DropdownAction<Video[]>[][] = []
@@ -99,7 +99,7 @@ export class VideoListComponent extends RestTable implements OnInit {
99 } 99 }
100 100
101 isUnpublished (state: VideoState) { 101 isUnpublished (state: VideoState) {
102 return state !== VideoState.PUBLISHED 102 return state !== VideoState.LIVE_ENDED && state !== VideoState.PUBLISHED
103 } 103 }
104 104
105 isAccountBlocked (video: Video) { 105 isAccountBlocked (video: Video) {
diff --git a/client/src/app/shared/shared-main/video/video.service.ts b/client/src/app/shared/shared-main/video/video.service.ts
index 5db9a8704..819847ac6 100644
--- a/client/src/app/shared/shared-main/video/video.service.ts
+++ b/client/src/app/shared/shared-main/video/video.service.ts
@@ -48,7 +48,7 @@ export type CommonVideoParams = {
48 48
49@Injectable() 49@Injectable()
50export class VideoService { 50export class VideoService {
51 static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos/' 51 static BASE_VIDEO_URL = environment.apiUrl + '/api/v1/videos'
52 static BASE_FEEDS_URL = environment.apiUrl + '/feeds/videos.' 52 static BASE_FEEDS_URL = environment.apiUrl + '/feeds/videos.'
53 static BASE_SUBSCRIPTION_FEEDS_URL = environment.apiUrl + '/feeds/subscriptions.' 53 static BASE_SUBSCRIPTION_FEEDS_URL = environment.apiUrl + '/feeds/subscriptions.'
54 54
@@ -60,18 +60,18 @@ export class VideoService {
60 ) {} 60 ) {}
61 61
62 getVideoViewUrl (uuid: string) { 62 getVideoViewUrl (uuid: string) {
63 return VideoService.BASE_VIDEO_URL + uuid + '/views' 63 return VideoService.BASE_VIDEO_URL + '/' + uuid + '/views'
64 } 64 }
65 65
66 getUserWatchingVideoUrl (uuid: string) { 66 getUserWatchingVideoUrl (uuid: string) {
67 return VideoService.BASE_VIDEO_URL + uuid + '/watching' 67 return VideoService.BASE_VIDEO_URL + '/' + uuid + '/watching'
68 } 68 }
69 69
70 getVideo (options: { videoId: string }): Observable<VideoDetails> { 70 getVideo (options: { videoId: string }): Observable<VideoDetails> {
71 return this.serverService.getServerLocale() 71 return this.serverService.getServerLocale()
72 .pipe( 72 .pipe(
73 switchMap(translations => { 73 switchMap(translations => {
74 return this.authHttp.get<VideoDetailsServerModel>(VideoService.BASE_VIDEO_URL + options.videoId) 74 return this.authHttp.get<VideoDetailsServerModel>(VideoService.BASE_VIDEO_URL + '/' + options.videoId)
75 .pipe(map(videoHash => ({ videoHash, translations }))) 75 .pipe(map(videoHash => ({ videoHash, translations })))
76 }), 76 }),
77 map(({ videoHash, translations }) => new VideoDetails(videoHash, translations)), 77 map(({ videoHash, translations }) => new VideoDetails(videoHash, translations)),
@@ -111,7 +111,7 @@ export class VideoService {
111 111
112 const data = objectToFormData(body) 112 const data = objectToFormData(body)
113 113
114 return this.authHttp.put(VideoService.BASE_VIDEO_URL + video.id, data) 114 return this.authHttp.put(VideoService.BASE_VIDEO_URL + '/' + video.id, data)
115 .pipe( 115 .pipe(
116 map(this.restExtractor.extractDataBool), 116 map(this.restExtractor.extractDataBool),
117 catchError(err => this.restExtractor.handleError(err)) 117 catchError(err => this.restExtractor.handleError(err))
@@ -119,7 +119,7 @@ export class VideoService {
119 } 119 }
120 120
121 uploadVideo (video: FormData) { 121 uploadVideo (video: FormData) {
122 const req = new HttpRequest('POST', VideoService.BASE_VIDEO_URL + 'upload', video, { reportProgress: true }) 122 const req = new HttpRequest('POST', VideoService.BASE_VIDEO_URL + '/' + 'upload', video, { reportProgress: true })
123 123
124 return this.authHttp 124 return this.authHttp
125 .request<{ video: { id: number, uuid: string } }>(req) 125 .request<{ video: { id: number, uuid: string } }>(req)
@@ -321,7 +321,7 @@ export class VideoService {
321 321
322 return from(ids) 322 return from(ids)
323 .pipe( 323 .pipe(
324 concatMap(id => this.authHttp.delete(VideoService.BASE_VIDEO_URL + id)), 324 concatMap(id => this.authHttp.delete(VideoService.BASE_VIDEO_URL + '/' + id)),
325 toArray(), 325 toArray(),
326 catchError(err => this.restExtractor.handleError(err)) 326 catchError(err => this.restExtractor.handleError(err))
327 ) 327 )
@@ -413,7 +413,7 @@ export class VideoService {
413 } 413 }
414 414
415 private setVideoRate (id: number, rateType: UserVideoRateType) { 415 private setVideoRate (id: number, rateType: UserVideoRateType) {
416 const url = VideoService.BASE_VIDEO_URL + id + '/rate' 416 const url = VideoService.BASE_VIDEO_URL + '/' + id + '/rate'
417 const body: UserVideoRateUpdate = { 417 const body: UserVideoRateUpdate = {
418 rating: rateType 418 rating: rateType
419 } 419 }
diff --git a/server/models/video/sql/shared/abstract-videos-query-builder.ts b/server/models/video/sql/shared/abstract-run-query.ts
index 09776bcb0..8e7a7642d 100644
--- a/server/models/video/sql/shared/abstract-videos-query-builder.ts
+++ b/server/models/video/sql/shared/abstract-run-query.ts
@@ -6,7 +6,7 @@ import { QueryTypes, Sequelize, Transaction } from 'sequelize'
6 * 6 *
7 */ 7 */
8 8
9export class AbstractVideosQueryBuilder { 9export class AbstractRunQuery {
10 protected sequelize: Sequelize 10 protected sequelize: Sequelize
11 11
12 protected query: string 12 protected query: string
diff --git a/server/models/video/sql/shared/abstract-videos-model-query-builder.ts b/server/models/video/sql/shared/abstract-video-query-builder.ts
index 29827db2a..a6afb04e4 100644
--- a/server/models/video/sql/shared/abstract-videos-model-query-builder.ts
+++ b/server/models/video/sql/shared/abstract-video-query-builder.ts
@@ -1,8 +1,8 @@
1import { createSafeIn } from '@server/models/utils' 1import { createSafeIn } from '@server/models/utils'
2import { MUserAccountId } from '@server/types/models' 2import { MUserAccountId } from '@server/types/models'
3import validator from 'validator' 3import validator from 'validator'
4import { AbstractVideosQueryBuilder } from './abstract-videos-query-builder' 4import { AbstractRunQuery } from './abstract-run-query'
5import { VideoTables } from './video-tables' 5import { VideoTableAttributes } from './video-table-attributes'
6 6
7/** 7/**
8 * 8 *
@@ -10,18 +10,18 @@ import { VideoTables } from './video-tables'
10 * 10 *
11 */ 11 */
12 12
13export class AbstractVideosModelQueryBuilder extends AbstractVideosQueryBuilder { 13export class AbstractVideoQueryBuilder extends AbstractRunQuery {
14 protected attributes: { [key: string]: string } = {} 14 protected attributes: { [key: string]: string } = {}
15 15
16 protected joins = '' 16 protected joins = ''
17 protected where: string 17 protected where: string
18 18
19 protected tables: VideoTables 19 protected tables: VideoTableAttributes
20 20
21 constructor (protected readonly mode: 'list' | 'get') { 21 constructor (protected readonly mode: 'list' | 'get') {
22 super() 22 super()
23 23
24 this.tables = new VideoTables(this.mode) 24 this.tables = new VideoTableAttributes(this.mode)
25 } 25 }
26 26
27 protected buildSelect () { 27 protected buildSelect () {
diff --git a/server/models/video/sql/shared/video-file-query-builder.ts b/server/models/video/sql/shared/video-file-query-builder.ts
index 6b15c3b69..3eb3dc07d 100644
--- a/server/models/video/sql/shared/video-file-query-builder.ts
+++ b/server/models/video/sql/shared/video-file-query-builder.ts
@@ -1,6 +1,6 @@
1import { Sequelize } from 'sequelize' 1import { Sequelize } from 'sequelize'
2import { BuildVideoGetQueryOptions } from '../video-model-get-query-builder' 2import { BuildVideoGetQueryOptions } from '../video-model-get-query-builder'
3import { AbstractVideosModelQueryBuilder } from './abstract-videos-model-query-builder' 3import { AbstractVideoQueryBuilder } from './abstract-video-query-builder'
4 4
5/** 5/**
6 * 6 *
@@ -8,7 +8,7 @@ import { AbstractVideosModelQueryBuilder } from './abstract-videos-model-query-b
8 * 8 *
9 */ 9 */
10 10
11export class VideoFileQueryBuilder extends AbstractVideosModelQueryBuilder { 11export class VideoFileQueryBuilder extends AbstractVideoQueryBuilder {
12 protected attributes: { [key: string]: string } 12 protected attributes: { [key: string]: string }
13 13
14 constructor (protected readonly sequelize: Sequelize) { 14 constructor (protected readonly sequelize: Sequelize) {
diff --git a/server/models/video/sql/shared/video-model-builder.ts b/server/models/video/sql/shared/video-model-builder.ts
index 0eac95661..7751d8e68 100644
--- a/server/models/video/sql/shared/video-model-builder.ts
+++ b/server/models/video/sql/shared/video-model-builder.ts
@@ -18,7 +18,7 @@ import { VideoChannelModel } from '../../video-channel'
18import { VideoFileModel } from '../../video-file' 18import { VideoFileModel } from '../../video-file'
19import { VideoLiveModel } from '../../video-live' 19import { VideoLiveModel } from '../../video-live'
20import { VideoStreamingPlaylistModel } from '../../video-streaming-playlist' 20import { VideoStreamingPlaylistModel } from '../../video-streaming-playlist'
21import { VideoTables } from './video-tables' 21import { VideoTableAttributes } from './video-table-attributes'
22 22
23type SQLRow = { [id: string]: string | number } 23type SQLRow = { [id: string]: string | number }
24 24
@@ -51,7 +51,7 @@ export class VideoModelBuilder {
51 51
52 constructor ( 52 constructor (
53 readonly mode: 'get' | 'list', 53 readonly mode: 'get' | 'list',
54 readonly tables: VideoTables 54 readonly tables: VideoTableAttributes
55 ) { 55 ) {
56 56
57 } 57 }
diff --git a/server/models/video/sql/shared/video-tables.ts b/server/models/video/sql/shared/video-table-attributes.ts
index 042b9d5da..8a8d2073a 100644
--- a/server/models/video/sql/shared/video-tables.ts
+++ b/server/models/video/sql/shared/video-table-attributes.ts
@@ -4,7 +4,7 @@
4 * Class to build video attributes/join names we want to fetch from the database 4 * Class to build video attributes/join names we want to fetch from the database
5 * 5 *
6 */ 6 */
7export class VideoTables { 7export class VideoTableAttributes {
8 8
9 constructor (readonly mode: 'get' | 'list') { 9 constructor (readonly mode: 'get' | 'list') {
10 10
@@ -93,22 +93,20 @@ export class VideoTables {
93 } 93 }
94 94
95 getStreamingPlaylistAttributes () { 95 getStreamingPlaylistAttributes () {
96 let playlistKeys = [ 'id', 'playlistUrl', 'playlistFilename', 'type' ] 96 return [
97 97 'id',
98 if (this.mode === 'get') { 98 'playlistUrl',
99 playlistKeys = playlistKeys.concat([ 99 'playlistFilename',
100 'p2pMediaLoaderInfohashes', 100 'type',
101 'p2pMediaLoaderPeerVersion', 101 'p2pMediaLoaderInfohashes',
102 'segmentsSha256Filename', 102 'p2pMediaLoaderPeerVersion',
103 'segmentsSha256Url', 103 'segmentsSha256Filename',
104 'videoId', 104 'segmentsSha256Url',
105 'createdAt', 105 'videoId',
106 'updatedAt', 106 'createdAt',
107 'storage' 107 'updatedAt',
108 ]) 108 'storage'
109 } 109 ]
110
111 return playlistKeys
112 } 110 }
113 111
114 getUserHistoryAttributes () { 112 getUserHistoryAttributes () {
diff --git a/server/models/video/sql/video-model-get-query-builder.ts b/server/models/video/sql/video-model-get-query-builder.ts
index 2f34d5602..a65c96097 100644
--- a/server/models/video/sql/video-model-get-query-builder.ts
+++ b/server/models/video/sql/video-model-get-query-builder.ts
@@ -1,8 +1,8 @@
1import { Sequelize, Transaction } from 'sequelize' 1import { Sequelize, Transaction } from 'sequelize'
2import { AbstractVideosModelQueryBuilder } from './shared/abstract-videos-model-query-builder' 2import { AbstractVideoQueryBuilder } from './shared/abstract-video-query-builder'
3import { VideoFileQueryBuilder } from './shared/video-file-query-builder' 3import { VideoFileQueryBuilder } from './shared/video-file-query-builder'
4import { VideoModelBuilder } from './shared/video-model-builder' 4import { VideoModelBuilder } from './shared/video-model-builder'
5import { VideoTables } from './shared/video-tables' 5import { VideoTableAttributes } from './shared/video-table-attributes'
6 6
7/** 7/**
8 * 8 *
@@ -46,7 +46,7 @@ export class VideoModelGetQueryBuilder {
46 this.webtorrentFilesQueryBuilder = new VideoFileQueryBuilder(sequelize) 46 this.webtorrentFilesQueryBuilder = new VideoFileQueryBuilder(sequelize)
47 this.streamingPlaylistFilesQueryBuilder = new VideoFileQueryBuilder(sequelize) 47 this.streamingPlaylistFilesQueryBuilder = new VideoFileQueryBuilder(sequelize)
48 48
49 this.videoModelBuilder = new VideoModelBuilder('get', new VideoTables('get')) 49 this.videoModelBuilder = new VideoModelBuilder('get', new VideoTableAttributes('get'))
50 } 50 }
51 51
52 async queryVideo (options: BuildVideoGetQueryOptions) { 52 async queryVideo (options: BuildVideoGetQueryOptions) {
@@ -69,15 +69,16 @@ export class VideoModelGetQueryBuilder {
69 }) 69 })
70 70
71 if (videos.length > 1) { 71 if (videos.length > 1) {
72 throw new Error('Video results is more than ') 72 throw new Error('Video results is more than 1')
73 } 73 }
74 74
75 if (videos.length === 0) return null 75 if (videos.length === 0) return null
76
76 return videos[0] 77 return videos[0]
77 } 78 }
78} 79}
79 80
80export class VideosModelGetQuerySubBuilder extends AbstractVideosModelQueryBuilder { 81export class VideosModelGetQuerySubBuilder extends AbstractVideoQueryBuilder {
81 protected attributes: { [key: string]: string } 82 protected attributes: { [key: string]: string }
82 83
83 protected webtorrentFilesQuery: string 84 protected webtorrentFilesQuery: string
diff --git a/server/models/video/sql/videos-id-list-query-builder.ts b/server/models/video/sql/videos-id-list-query-builder.ts
index 4d6e0ea4b..5064afafe 100644
--- a/server/models/video/sql/videos-id-list-query-builder.ts
+++ b/server/models/video/sql/videos-id-list-query-builder.ts
@@ -5,7 +5,7 @@ import { WEBSERVER } from '@server/initializers/constants'
5import { buildDirectionAndField, createSafeIn } from '@server/models/utils' 5import { buildDirectionAndField, createSafeIn } from '@server/models/utils'
6import { MUserAccountId, MUserId } from '@server/types/models' 6import { MUserAccountId, MUserId } from '@server/types/models'
7import { VideoInclude, VideoPrivacy, VideoState } from '@shared/models' 7import { VideoInclude, VideoPrivacy, VideoState } from '@shared/models'
8import { AbstractVideosQueryBuilder } from './shared/abstract-videos-query-builder' 8import { AbstractRunQuery } from './shared/abstract-run-query'
9 9
10/** 10/**
11 * 11 *
@@ -72,7 +72,7 @@ export type BuildVideosListQueryOptions = {
72 having?: string 72 having?: string
73} 73}
74 74
75export class VideosIdListQueryBuilder extends AbstractVideosQueryBuilder { 75export class VideosIdListQueryBuilder extends AbstractRunQuery {
76 protected replacements: any = {} 76 protected replacements: any = {}
77 77
78 private attributes: string[] 78 private attributes: string[]
@@ -105,7 +105,7 @@ export class VideosIdListQueryBuilder extends AbstractVideosQueryBuilder {
105 return this.runQuery().then(rows => rows.length !== 0 ? rows[0].total : 0) 105 return this.runQuery().then(rows => rows.length !== 0 ? rows[0].total : 0)
106 } 106 }
107 107
108 getIdsListQueryAndSort (options: BuildVideosListQueryOptions) { 108 getQuery (options: BuildVideosListQueryOptions) {
109 this.buildIdsListQuery(options) 109 this.buildIdsListQuery(options)
110 110
111 return { query: this.query, sort: this.sort, replacements: this.replacements } 111 return { query: this.query, sort: this.sort, replacements: this.replacements }
diff --git a/server/models/video/sql/videos-model-list-query-builder.ts b/server/models/video/sql/videos-model-list-query-builder.ts
index cd721f055..b15b29ec3 100644
--- a/server/models/video/sql/videos-model-list-query-builder.ts
+++ b/server/models/video/sql/videos-model-list-query-builder.ts
@@ -1,6 +1,6 @@
1import { VideoInclude } from '@shared/models' 1import { VideoInclude } from '@shared/models'
2import { Sequelize } from 'sequelize' 2import { Sequelize } from 'sequelize'
3import { AbstractVideosModelQueryBuilder } from './shared/abstract-videos-model-query-builder' 3import { AbstractVideoQueryBuilder } from './shared/abstract-video-query-builder'
4import { VideoModelBuilder } from './shared/video-model-builder' 4import { VideoModelBuilder } from './shared/video-model-builder'
5import { BuildVideosListQueryOptions, VideosIdListQueryBuilder } from './videos-id-list-query-builder' 5import { BuildVideosListQueryOptions, VideosIdListQueryBuilder } from './videos-id-list-query-builder'
6 6
@@ -10,7 +10,7 @@ import { BuildVideosListQueryOptions, VideosIdListQueryBuilder } from './videos-
10 * 10 *
11 */ 11 */
12 12
13export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder { 13export class VideosModelListQueryBuilder extends AbstractVideoQueryBuilder {
14 protected attributes: { [key: string]: string } 14 protected attributes: { [key: string]: string }
15 15
16 private innerQuery: string 16 private innerQuery: string
@@ -26,7 +26,7 @@ export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder
26 26
27 queryVideos (options: BuildVideosListQueryOptions) { 27 queryVideos (options: BuildVideosListQueryOptions) {
28 this.buildInnerQuery(options) 28 this.buildInnerQuery(options)
29 this.buildListQueryFromIdsQuery(options) 29 this.buildMainQuery(options)
30 30
31 return this.runQuery() 31 return this.runQuery()
32 .then(rows => this.videoModelBuilder.buildVideosFromRows({ rows, include: options.include })) 32 .then(rows => this.videoModelBuilder.buildVideosFromRows({ rows, include: options.include }))
@@ -34,14 +34,14 @@ export class VideosModelListQueryBuilder extends AbstractVideosModelQueryBuilder
34 34
35 private buildInnerQuery (options: BuildVideosListQueryOptions) { 35 private buildInnerQuery (options: BuildVideosListQueryOptions) {
36 const idsQueryBuilder = new VideosIdListQueryBuilder(this.sequelize) 36 const idsQueryBuilder = new VideosIdListQueryBuilder(this.sequelize)
37 const { query, sort, replacements } = idsQueryBuilder.getIdsListQueryAndSort(options) 37 const { query, sort, replacements } = idsQueryBuilder.getQuery(options)
38 38
39 this.replacements = replacements 39 this.replacements = replacements
40 this.innerQuery = query 40 this.innerQuery = query
41 this.innerSort = sort 41 this.innerSort = sort
42 } 42 }
43 43
44 private buildListQueryFromIdsQuery (options: BuildVideosListQueryOptions) { 44 private buildMainQuery (options: BuildVideosListQueryOptions) {
45 this.attributes = { 45 this.attributes = {
46 '"video".*': '' 46 '"video".*': ''
47 } 47 }
diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml
index cdb4dd343..e9e7e1757 100644
--- a/support/doc/api/openapi.yaml
+++ b/support/doc/api/openapi.yaml
@@ -4805,7 +4805,7 @@ components:
4805 required: false 4805 required: false
4806 schema: 4806 schema:
4807 type: boolean 4807 type: boolean
4808 description: 'Display only local or remote videos' 4808 description: '**PeerTube >= 4.0** Display only local or remote videos'
4809 include: 4809 include:
4810 name: include 4810 name: include
4811 in: query 4811 in: query
@@ -4819,7 +4819,7 @@ components:
4819 - 4 4819 - 4
4820 - 8 4820 - 8
4821 description: > 4821 description: >
4822 Include additional videos in results (can be combined using bitwise or operator) 4822 **PeerTube >= 4.0** Include additional videos in results (can be combined using bitwise or operator)
4823 4823
4824 - `0` NONE 4824 - `0` NONE
4825 4825