-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 {
import { isBlockedByServerOrAccount } from './blocklist'
import { Emailer } from './emailer'
import { PeerTubeSocket } from './peertube-socket'
-import { AccountModel } from '@server/models/account/account'
class Notifier {
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.'
})
}
await cleanupTests([ server ])
})
})
-
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>
import { RegisterServerAuthExternalOptions } from '@server/types'
import {
- MAbuse,
MAbuseMessage,
+ MAbuseReporter,
MAccountBlocklist,
MActorUrl,
MStreamingPlaylist,
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'
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
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
schema:
type: array
items:
- $ref: '#/components/schemas/VideoAbuse'
+ $ref: '#/components/schemas/Abuse'
post:
summary: Report an abuse
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:
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
- 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:
format: date-time
video:
$ref: '#/components/schemas/Video'
- VideoAbuse:
+ Abuse:
properties:
id:
type: integer
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: