From 668b7f096ead74d6e7692944a026c936f581dae8 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 28 Jul 2020 11:12:16 +0200 Subject: [PATCH] Add openapi doc --- server/lib/notifier.ts | 3 +- server/middlewares/validators/abuse.ts | 2 +- server/tests/api/check-params/abuses.ts | 1 - server/types/models/moderation/abuse.ts | 6 +- server/typings/express/index.d.ts | 5 +- support/doc/api/openapi.yaml | 120 ++++++++++++++++++++++-- 6 files changed, 118 insertions(+), 19 deletions(-) diff --git a/server/lib/notifier.ts b/server/lib/notifier.ts index 9c2f16c27..1da81a535 100644 --- a/server/lib/notifier.ts +++ b/server/lib/notifier.ts @@ -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 { diff --git a/server/middlewares/validators/abuse.ts b/server/middlewares/validators/abuse.ts index 2a096e0af..f99d850a5 100644 --- a/server/middlewares/validators/abuse.ts +++ b/server/middlewares/validators/abuse.ts @@ -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.' }) } diff --git a/server/tests/api/check-params/abuses.ts b/server/tests/api/check-params/abuses.ts index 0ef8f6cac..1f040bbcf 100644 --- a/server/tests/api/check-params/abuses.ts +++ b/server/tests/api/check-params/abuses.ts @@ -427,4 +427,3 @@ describe('Test abuses API validators', function () { await cleanupTests([ server ]) }) }) - diff --git a/server/types/models/moderation/abuse.ts b/server/types/models/moderation/abuse.ts index 5409dfd6b..6fd83684c 100644 --- a/server/types/models/moderation/abuse.ts +++ b/server/types/models/moderation/abuse.ts @@ -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 = PickWith type UseVideoAbuse = PickWith diff --git a/server/typings/express/index.d.ts b/server/typings/express/index.d.ts index d95b8925d..cd8e544e0 100644 --- a/server/typings/express/index.d.ts +++ b/server/typings/express/index.d.ts @@ -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' diff --git a/support/doc/api/openapi.yaml b/support/doc/api/openapi.yaml index ad4d58e4b..ec2fe9155 100644 --- a/support/doc/api/openapi.yaml +++ b/support/doc/api/openapi.yaml @@ -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: -- 2.41.0