refactor: APIエンドポイントファイルの定義を良い感じにする (#8154)

* Fix API Schema Error

* Delete SimpleSchema/SimpleObj
and Move schemas to dedicated files

* Userのスキーマを分割してみる

* define packMany type

* add ,

* Ensure enum schema and Make "as const" put once

* test?

* Revert "test?"

This reverts commit 97dc9bfa70851bfb7d1cf38e883f8df20fb78b79.

* Revert "Fix API Schema Error"

This reverts commit 21b6176d974ed8e3eb73723ad21a105c5d297323.

* ✌️

* clean up

* test?

* wip

* wip

* better schema def

* ✌️

* fix

* add minLength property

* wip

* wip

* wip

* anyOf/oneOf/allOfに対応? ~ relation.ts

* refactor!

* Define MinimumSchema

* wip

* wip

* anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正

* anyOf/oneOf/allOfが動作するようにUnionSchemaTypeを修正

* Update packages/backend/src/misc/schema.ts

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>

* fix

* array oneOfをより正確な型に

* array oneOfをより正確な型に

* wip

* ✌️

* なんかもういろいろ

* remove

* very good schema

* api schema

* wip

* refactor: awaitAllの型定義を変えてみる

* fix

* specify types in awaitAll

* specify types in awaitAll

* ✌️

* wip

* ...

* ✌️

* AllowDateはやめておく

* 不必要なoptional: false, nullable: falseを廃止

* Packedが展開されないように

* 続packed

* wip

* define note type

* wip

* UserDetailedをMeDetailedかUserDetailedNotMeかを区別できるように

* wip

* wip

* wip specify user type of other schemas

* ok

* convertSchemaToOpenApiSchemaを改修

* convertSchemaToOpenApiSchemaを改修

* Fix

* fix

* ✌️

* wip

* 分割代入ではなくallOfで定義するように

Co-authored-by: Acid Chicken (硫酸鶏) <root@acid-chicken.com>
This commit is contained in:
tamaina
2022-01-18 22:27:10 +09:00
committed by GitHub
parent a8fad1b61c
commit efb0ffc4ec
358 changed files with 3623 additions and 3417 deletions

View File

@ -9,7 +9,7 @@ import { MoreThan } from 'typeorm';
export const meta = {
tags: ['meta'],
requireCredential: false as const,
requireCredential: false,
params: {
detail: {
@ -19,434 +19,434 @@ export const meta = {
},
res: {
type: 'object' as const,
optional: false as const, nullable: false as const,
type: 'object',
optional: false, nullable: false,
properties: {
maintainerName: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
maintainerEmail: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
version: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
example: config.version,
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
uri: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
format: 'url',
example: 'https://misskey.example.com',
},
description: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
langs: {
type: 'array' as const,
optional: false as const, nullable: false as const,
type: 'array',
optional: false, nullable: false,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
},
tosUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
repositoryUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
default: 'https://github.com/misskey-dev/misskey',
},
feedbackUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
default: 'https://github.com/misskey-dev/misskey/issues/new',
},
secure: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
default: false,
},
disableRegistration: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
disableLocalTimeline: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
disableGlobalTimeline: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
driveCapacityPerLocalUserMb: {
type: 'number' as const,
optional: false as const, nullable: false as const,
type: 'number',
optional: false, nullable: false,
},
driveCapacityPerRemoteUserMb: {
type: 'number' as const,
optional: false as const, nullable: false as const,
type: 'number',
optional: false, nullable: false,
},
cacheRemoteFiles: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
proxyRemoteFiles: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
emailRequiredForSignup: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
enableHcaptcha: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
hcaptchaSiteKey: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
enableRecaptcha: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
recaptchaSiteKey: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
swPublickey: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
mascotImageUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
default: '/assets/ai.png',
},
bannerUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
errorImageUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
default: 'https://xn--931a.moe/aiart/yubitun.png',
},
iconUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
maxNoteTextLength: {
type: 'number' as const,
optional: false as const, nullable: false as const,
type: 'number',
optional: false, nullable: false,
default: 500,
},
emojis: {
type: 'array' as const,
optional: false as const, nullable: false as const,
type: 'array',
optional: false, nullable: false,
items: {
type: 'object' as const,
optional: false as const, nullable: false as const,
type: 'object',
optional: false, nullable: false,
properties: {
id: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
format: 'id',
},
aliases: {
type: 'array' as const,
optional: false as const, nullable: false as const,
type: 'array',
optional: false, nullable: false,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
},
category: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
host: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
format: 'url',
},
},
},
},
ads: {
type: 'array' as const,
optional: false as const, nullable: false as const,
type: 'array',
optional: false, nullable: false,
items: {
type: 'object' as const,
optional: false as const, nullable: false as const,
type: 'object',
optional: false, nullable: false,
properties: {
place: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
format: 'url',
},
imageUrl: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
format: 'url',
},
},
},
},
requireSetup: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
example: false,
},
enableEmail: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
enableTwitterIntegration: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
enableGithubIntegration: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
enableDiscordIntegration: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
enableServiceWorker: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
translatorAvailable: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
proxyAccountName: {
type: 'string' as const,
optional: false as const, nullable: true as const,
type: 'string',
optional: false, nullable: true,
},
features: {
type: 'object' as const,
optional: true as const, nullable: false as const,
type: 'object',
optional: true, nullable: false,
properties: {
registration: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
localTimeLine: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
globalTimeLine: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
elasticsearch: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
hcaptcha: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
recaptcha: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
objectStorage: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
twitter: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
github: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
discord: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
serviceWorker: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
type: 'boolean',
optional: false, nullable: false,
},
miauth: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
default: true,
},
},
},
userStarForReactionFallback: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
pinnedUsers: {
type: 'array' as const,
optional: true as const, nullable: false as const,
type: 'array',
optional: true, nullable: false,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
},
hiddenTags: {
type: 'array' as const,
optional: true as const, nullable: false as const,
type: 'array',
optional: true, nullable: false,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
},
blockedHosts: {
type: 'array' as const,
optional: true as const, nullable: false as const,
type: 'array',
optional: true, nullable: false,
items: {
type: 'string' as const,
optional: false as const, nullable: false as const,
type: 'string',
optional: false, nullable: false,
},
},
hcaptchaSecretKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
recaptchaSecretKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
proxyAccountId: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
format: 'id',
},
twitterConsumerKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
twitterConsumerSecret: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
githubClientId: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
githubClientSecret: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
discordClientId: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
discordClientSecret: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
summaryProxy: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
email: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
smtpSecure: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
smtpHost: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
smtpPort: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
smtpUser: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
smtpPass: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
swPrivateKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
useObjectStorage: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
objectStorageBaseUrl: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStorageBucket: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStoragePrefix: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStorageEndpoint: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStorageRegion: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStoragePort: {
type: 'number' as const,
optional: true as const, nullable: true as const,
type: 'number',
optional: true, nullable: true,
},
objectStorageAccessKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStorageSecretKey: {
type: 'string' as const,
optional: true as const, nullable: true as const,
type: 'string',
optional: true, nullable: true,
},
objectStorageUseSSL: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
objectStorageUseProxy: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
objectStorageSetPublicRead: {
type: 'boolean' as const,
optional: true as const, nullable: false as const,
type: 'boolean',
optional: true, nullable: false,
},
},
},
};
} as const;
// eslint-disable-next-line import/no-default-export
export default define(meta, async (ps, me) => {