1
0
Fork 0

Add openapi doc

This commit is contained in:
Chocobozzz 2020-07-28 11:12:16 +02:00 committed by Chocobozzz
parent d573926e9b
commit 668b7f096e
6 changed files with 118 additions and 19 deletions

View File

@ -1,4 +1,4 @@
import { AbuseMessageModel } from '@server/models/abuse/abuse-message'
import { AccountModel } from '@server/models/account/account'
import { getServerActor } from '@server/models/application/application'
import { ServerBlocklistModel } from '@server/models/server/server-blocklist'
import {
@ -24,7 +24,6 @@ import { MCommentOwnerVideo, MVideoAccountLight, MVideoFullLight } from '../type
import { isBlockedByServerOrAccount } from './blocklist'
import { Emailer } from './emailer'
import { PeerTubeSocket } from './peertube-socket'
import { AccountModel } from '@server/models/account/account'
class Notifier {

View File

@ -208,7 +208,7 @@ const checkAbuseValidForMessagesValidator = [
const abuse = res.locals.abuse
if (abuse.ReporterAccount.isOwned() === false) {
return res.status(400).json({
error: 'This abuse was created by a user of your instance.',
error: 'This abuse was created by a user of your instance.'
})
}

View File

@ -427,4 +427,3 @@ describe('Test abuses API validators', function () {
await cleanupTests([ server ])
})
})

View File

@ -1,11 +1,11 @@
import { VideoAbuseModel } from '@server/models/abuse/video-abuse'
import { VideoCommentAbuseModel } from '@server/models/abuse/video-comment-abuse'
import { VideoCommentModel } from '@server/models/video/video-comment'
import { PickWith } from '@shared/core-utils'
import { AbuseModel } from '../../../models/abuse/abuse'
import { MAccountDefault, MAccountFormattable, MAccountLight, MAccountUrl, MAccount } from '../account'
import { MCommentOwner, MCommentUrl, MVideoUrl, MCommentOwnerVideo, MComment, MCommentVideo } from '../video'
import { MAccountDefault, MAccountFormattable, MAccountLight, MAccountUrl } from '../account'
import { MComment, MCommentOwner, MCommentUrl, MCommentVideo, MVideoUrl } from '../video'
import { MVideo, MVideoAccountLightBlacklistAllFiles } from '../video/video'
import { VideoCommentModel } from '@server/models/video/video-comment'
type Use<K extends keyof AbuseModel, M> = PickWith<AbuseModel, K, M>
type UseVideoAbuse<K extends keyof VideoAbuseModel, M> = PickWith<VideoAbuseModel, K, M>

View File

@ -1,7 +1,7 @@
import { RegisterServerAuthExternalOptions } from '@server/types'
import {
MAbuse,
MAbuseMessage,
MAbuseReporter,
MAccountBlocklist,
MActorUrl,
MStreamingPlaylist,
@ -9,8 +9,7 @@ import {
MVideoFile,
MVideoImmutable,
MVideoPlaylistFull,
MVideoPlaylistFullSummary,
MAbuseReporter
MVideoPlaylistFullSummary
} from '@server/types/models'
import { MOAuthTokenUser } from '@server/types/models/oauth/oauth-token'
import { MPlugin, MServer, MServerBlocklist } from '@server/types/models/server'

View File

@ -1474,6 +1474,38 @@ paths:
description: HTTP or Torrent/magnetURI import not enabled
'400':
description: '`magnetUri` or `targetUrl` or a torrent file missing'
/users/me/abuses:
get:
summary: List my abuses
security:
- OAuth2: []
tags:
- Abuses
- My User
parameters:
- name: id
in: query
description: only list the report with this id
schema:
type: integer
- name: state
in: query
schema:
$ref: '#/components/schemas/AbuseStateSet'
- $ref: '#/components/parameters/start'
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/abusesSort'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Abuse'
/abuses:
get:
summary: List abuses
@ -1501,13 +1533,8 @@ paths:
type: string
- name: state
in: query
description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
schema:
type: integer
enum:
- 1
- 2
- 3
$ref: '#/components/schemas/AbuseStateSet'
- name: searchReporter
in: query
description: only list reports of a specific reporter
@ -1556,7 +1583,7 @@ paths:
schema:
type: array
items:
$ref: '#/components/schemas/VideoAbuse'
$ref: '#/components/schemas/Abuse'
post:
summary: Report an abuse
@ -1653,6 +1680,61 @@ paths:
description: successful operation
'404':
description: block not found
'/abuses/{abuseId}/messages':
get:
summary: List messages of an abuse
security:
- OAuth2: []
tags:
- Abuses
parameters:
- $ref: '#/components/parameters/abuseId'
responses:
'200':
description: successful operation
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AbuseMessage'
post:
summary: Add message to an abuse
security:
- OAuth2: []
tags:
- Abuses
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
message:
description: Message to send
type: string
required:
- message
responses:
'200':
description: successful operation
'400':
description: incorrect request parameters
'/abuses/{abuseId}/messages/{abuseMessageId}':
delete:
summary: Delete an abuse message
security:
- OAuth2: []
tags:
- Abuses
parameters:
- $ref: '#/components/parameters/abuseId'
- $ref: '#/components/parameters/abuseMessageId'
responses:
'204':
description: successful operation
'/videos/{id}/blacklist':
post:
@ -3332,6 +3414,13 @@ components:
description: Abuse id
schema:
type: integer
abuseMessageId:
name: abuseMessageId
in: path
required: true
description: Abuse message id
schema:
type: integer
captionLanguage:
name: captionLanguage
in: path
@ -3599,7 +3688,7 @@ components:
- 1
- 2
- 3
description: 'The video playlist privacy (Pending = `1`, Rejected = `2`, Accepted = `3`)'
description: 'The abuse state (Pending = `1`, Rejected = `2`, Accepted = `3`)'
AbuseStateConstant:
properties:
id:
@ -3960,7 +4049,7 @@ components:
format: date-time
video:
$ref: '#/components/schemas/Video'
VideoAbuse:
Abuse:
properties:
id:
type: integer
@ -3991,6 +4080,19 @@ components:
createdAt:
type: string
format: date-time
AbuseMessage:
properties:
id:
type: integer
message:
type: string
byModerator:
type: boolean
createdAt:
type: string
format: date-time
account:
$ref: '#/components/schemas/AccountSummary'
VideoBlacklist:
properties:
id: