Merge branch 'develop'

This commit is contained in:
syuilo 2021-06-10 14:03:28 +09:00
commit d04014f875
259 changed files with 408 additions and 2549 deletions

View File

@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "Drive-Kapazität pro Benutzer anderer Instanzen"
inMb: "In Megabytes"
iconUrl: "Icon-URL"
bannerUrl: "Banner-URL"
backgroundImageUrl: "Hintergrundbild-URL"
basicInfo: "Basisdaten"
pinnedUsers: "Angepinnte Benutzer"
pinnedUsersDescription: "Gib einen Benutzernamen pro Zeile ein. Diese werden im \"Erkunden\" Tab angezeigt."

View File

@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "Drive capacity per remote user"
inMb: "In megabytes"
iconUrl: "Icon URL"
bannerUrl: "Banner image URL"
backgroundImageUrl: "Background image URL"
basicInfo: "Basic info"
pinnedUsers: "Pinned user"
pinnedUsersDescription: "List one username per line. Users listed here will be pinned under \"Explore\" tab."

View File

@ -279,6 +279,7 @@ emptyDrive: "Le Drive est vide"
emptyFolder: "Le dossier est vide"
unableToDelete: "Suppression impossible"
inputNewFileName: "Entrez un nouveau nom de fichier"
inputNewDescription: "Veuillez entrer une nouvelle description"
inputNewFolderName: "Entrez un nouveau nom de dossier"
circularReferenceFolder: "Le dossier de destination est un sous-dossier du dossier que vous souhaitez déplacer."
hasChildFilesOrFolders: "Impossible de supprimer ce dossier car il n'est pas vide."
@ -310,6 +311,8 @@ monthX: "{month}"
yearX: "{year}"
pages: "Pages"
integration: "Intégrations"
connectService: "Connexion"
disconnectService: "Déconnexion"
enableLocalTimeline: "Activer le fil local"
enableGlobalTimeline: "Activer le fil global"
disablingTimelinesInfo: "Même si vous désactivez ces fils, les administrateur·rice·s et les modérateur·rice·s pourront toujours y accéder."
@ -544,6 +547,8 @@ disablePlayer: "Fermer le lecteur vidéo"
expandTweet: "Étendre le tweet"
themeEditor: "Éditeur de thèmes"
description: "Description"
describeFile: "Ajouter une description d'image"
enterFileDescription: "Saisissez une description"
author: "Auteur·rice"
leaveConfirm: "Vous avez des modifications non-sauvegardées. Voulez-vous les ignorer ?"
manage: "Gestion"

View File

@ -274,6 +274,7 @@ emptyDrive: "Il Drive è vuoto"
emptyFolder: "La cartella è vuota"
unableToDelete: "Eliminazione impossibile"
inputNewFileName: "Inserisci nome del nuovo file"
inputNewDescription: "Inserisci una nuova descrizione"
inputNewFolderName: "Inserisci nome della nuova cartella"
circularReferenceFolder: "La cartella di destinazione è una sottocartella della cartella che vuoi spostare."
hasChildFilesOrFolders: "Impossibile eliminare la cartella perché non è vuota"
@ -305,6 +306,8 @@ monthX: "{month}"
yearX: "{year}"
pages: "Pagine"
integration: "App collegate"
connectService: "Connessione"
disconnectService: "Disconnessione "
enableLocalTimeline: "Abilita Timeline locale"
enableGlobalTimeline: "Abilita Timeline federata"
disablingTimelinesInfo: "Anche se disabiliti queste timeline, gli amministratori e i moderatori potranno sempre accederci."
@ -531,6 +534,8 @@ disablePlayer: "Chiudi lettore video"
expandTweet: "Espandi tweet"
themeEditor: "Editor di temi"
description: "Descrizione"
describeFile: "Aggiungi una descrizione d'immagine"
enterFileDescription: "Inserisci descrizione"
author: "Autore"
leaveConfirm: "Ci sono delle modifiche ancora non salvate. Vuoi cancellarle?"
manage: "Gestione"

View File

@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのド
inMb: "メガバイト単位"
iconUrl: "アイコン画像のURL (faviconなど)"
bannerUrl: "バナー画像のURL"
backgroundImageUrl: "背景画像のURL"
basicInfo: "基本情報"
pinnedUsers: "ピン留めユーザー"
pinnedUsersDescription: "「みつける」ページなどにピン留めしたいユーザーを改行で区切って記述します。"

View File

@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "리모트 유저 한 명당 드라이브 용량"
inMb: "메가바이트 단위"
iconUrl: "아이콘 URL"
bannerUrl: "배너 이미지 URL"
backgroundImageUrl: "배경 이미지 URL"
basicInfo: "기본 정보"
pinnedUsers: "고정된 유저"
pinnedUsersDescription: "\"발견하기\" 페이지 등에 고정하고 싶은 유저를 한 줄에 한 명씩 적습니다."

View File

@ -326,6 +326,7 @@ driveCapacityPerRemoteAccount: "每个远程用户的网盘容量"
inMb: "以兆字节(MegaByte)为单位"
iconUrl: "图标URL"
bannerUrl: "Banner URL"
backgroundImageUrl: "背景图URL"
basicInfo: "基本信息"
pinnedUsers: "置顶用户"
pinnedUsersDescription: "在「发现」页面中使用换行标记想要置顶的用户。"

View File

@ -0,0 +1,13 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class userProfileDescriptionLength1622679304522 implements MigrationInterface {
name = 'userProfileDescriptionLength1622679304522';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(2048)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "user_profile" ALTER COLUMN "description" TYPE character varying(1024)`, undefined);
}
}

View File

@ -0,0 +1,12 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class logMessageLength1622681548499 implements MigrationInterface {
name = 'logMessageLength1622681548499';
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(2048)`, undefined);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "log" ALTER COLUMN "message" TYPE character varying(1024)`, undefined);
}
}

View File

@ -1,7 +1,7 @@
{
"name": "misskey",
"author": "syuilo <syuilotan@yahoo.co.jp>",
"version": "12.82.0",
"version": "12.83.0",
"codename": "indigo",
"repository": {
"type": "git",
@ -60,7 +60,7 @@
"@types/jsonld": "1.5.5",
"@types/katex": "0.11.0",
"@types/koa": "2.13.3",
"@types/koa-bodyparser": "4.3.0",
"@types/koa-bodyparser": "4.3.1",
"@types/koa-cors": "0.0.0",
"@types/koa-favicon": "2.0.19",
"@types/koa-logger": "3.1.1",
@ -70,10 +70,10 @@
"@types/koa__cors": "3.0.2",
"@types/koa__multer": "2.0.2",
"@types/koa__router": "8.0.4",
"@types/markdown-it": "12.0.1",
"@types/markdown-it": "12.0.2",
"@types/matter-js": "0.14.12",
"@types/mocha": "8.2.2",
"@types/node": "15.6.1",
"@types/node": "15.12.2",
"@types/node-fetch": "2.5.10",
"@types/nodemailer": "6.4.2",
"@types/nprogress": "0.2.0",
@ -91,7 +91,7 @@
"@types/request-stats": "3.0.0",
"@types/rimraf": "3.0.0",
"@types/seedrandom": "2.4.28",
"@types/sharp": "0.28.2",
"@types/sharp": "0.28.3",
"@types/sinonjs__fake-timers": "6.0.2",
"@types/speakeasy": "2.0.5",
"@types/throttle-debounce": "2.1.0",
@ -103,18 +103,18 @@
"@types/webpack-stream": "3.2.12",
"@types/websocket": "1.0.2",
"@types/ws": "7.4.4",
"@typescript-eslint/parser": "4.25.0",
"@vue/compiler-sfc": "3.0.11",
"@typescript-eslint/parser": "4.26.1",
"@vue/compiler-sfc": "3.1.1",
"abort-controller": "3.0.0",
"apexcharts": "3.26.3",
"apexcharts": "3.27.1",
"autobind-decorator": "2.4.0",
"autosize": "4.0.4",
"autwh": "0.1.0",
"aws-sdk": "2.918.0",
"aws-sdk": "2.923.0",
"bcryptjs": "2.4.3",
"blurhash": "1.1.3",
"broadcast-channel": "3.6.0",
"bull": "3.22.6",
"bull": "3.22.7",
"cafy": "15.2.1",
"cbor": "7.0.5",
"chalk": "4.1.1",
@ -123,14 +123,14 @@
"commander": "7.2.0",
"concurrently": "6.2.0",
"content-disposition": "0.5.3",
"core-js": "3.13.1",
"core-js": "3.14.0",
"crc-32": "1.2.0",
"css-loader": "5.2.6",
"cssnano": "5.0.5",
"dateformat": "4.5.1",
"diskusage": "1.1.3",
"escape-regexp": "0.0.1",
"eslint": "7.27.0",
"eslint": "7.28.0",
"eslint-plugin-vue": "7.10.0",
"eventemitter3": "4.0.7",
"feed": "4.2.2",
@ -174,8 +174,8 @@
"markdown-it": "12.0.6",
"markdown-it-anchor": "7.1.0",
"matter-js": "0.17.1",
"mfm-js": "0.16.4",
"misskey-js": "0.0.2",
"mfm-js": "0.18.0",
"misskey-js": "0.0.4",
"mocha": "8.4.0",
"moji": "0.5.1",
"ms": "2.1.3",
@ -191,7 +191,7 @@
"postcss": "8.3.0",
"postcss-loader": "5.3.0",
"prismjs": "1.23.0",
"probe-image-size": "7.1.1",
"probe-image-size": "7.2.1",
"promise-limit": "2.7.0",
"promise-sequential": "1.1.1",
"pug": "3.0.2",
@ -212,8 +212,8 @@
"rimraf": "3.0.2",
"rndstr": "1.0.0",
"s-age": "1.1.2",
"sass": "1.34.0",
"sass-loader": "11.1.1",
"sass": "1.34.1",
"sass-loader": "12.0.0",
"seedrandom": "3.0.5",
"sharp": "0.28.3",
"speakeasy": "2.0.0",
@ -228,20 +228,20 @@
"throttle-debounce": "3.0.1",
"tinycolor2": "1.4.2",
"tmp": "0.2.1",
"ts-loader": "9.2.2",
"ts-loader": "9.2.3",
"ts-node": "10.0.0",
"tsc-alias": "1.2.11",
"tsc-alias": "1.3.2",
"tsconfig-paths": "3.9.0",
"tslint": "6.1.3",
"tslint-sonarts": "1.9.0",
"twemoji-parser": "13.1.0",
"typeorm": "0.2.32",
"typeorm": "0.2.34",
"typescript": "4.3.2",
"ulid": "2.3.0",
"uuid": "8.3.2",
"v-debounce": "0.1.2",
"vanilla-tilt": "1.7.0",
"vue": "3.0.11",
"vue": "3.1.1",
"vue-color": "2.8.1",
"vue-json-pretty": "1.7.1",
"vue-loader": "16.1.2",
@ -252,7 +252,7 @@
"vuedraggable": "4.0.1",
"web-push": "3.4.4",
"webpack": "5.38.1",
"webpack-cli": "4.7.0",
"webpack-cli": "4.7.2",
"websocket": "1.0.34",
"ws": "7.4.6",
"xev": "2.0.1"

View File

@ -1,7 +1,5 @@
<template>
<div class="xfbouadm" v-if="meta" :style="{ backgroundImage: `url(${ meta.backgroundImageUrl })` }">
</div>
<div class="xfbouadm" v-if="meta" :style="{ backgroundImage: `url(${ meta.backgroundImageUrl })` }"></div>
</template>
<script lang="ts">

View File

@ -87,8 +87,6 @@ export default defineComponent({
> .icon {
padding-left: 2px;
font-size: .9em;
font-weight: 400;
font-style: normal;
}
}
</style>

View File

@ -19,6 +19,11 @@
<span>{{ $ts.bannerUrl }}</span>
</FormInput>
<FormInput v-model:value="backgroundImageUrl">
<template #prefix><i class="fas fa-link"></i></template>
<span>{{ $ts.backgroundImageUrl }}</span>
</FormInput>
<FormInput v-model:value="tosUrl">
<template #prefix><i class="fas fa-link"></i></template>
<span>{{ $ts.tosUrl }}</span>
@ -88,6 +93,7 @@ export default defineComponent({
maintainerEmail: null,
iconUrl: null,
bannerUrl: null,
backgroundImageUrl: null,
maxNoteTextLength: 0,
enableLocalTimeline: false,
enableGlobalTimeline: false,
@ -106,6 +112,7 @@ export default defineComponent({
this.tosUrl = meta.tosUrl;
this.iconUrl = meta.iconUrl;
this.bannerUrl = meta.bannerUrl;
this.backgroundImageUrl = meta.backgroundImageUrl;
this.maintainerName = meta.maintainerName;
this.maintainerEmail = meta.maintainerEmail;
this.maxNoteTextLength = meta.maxNoteTextLength;
@ -120,6 +127,7 @@ export default defineComponent({
tosUrl: this.tosUrl,
iconUrl: this.iconUrl,
bannerUrl: this.bannerUrl,
backgroundImageUrl: this.backgroundImageUrl,
maintainerName: this.maintainerName,
maintainerEmail: this.maintainerEmail,
maxNoteTextLength: this.maxNoteTextLength,

View File

@ -350,6 +350,9 @@ export default defineComponent({
</script>
<style lang="scss" scoped>
@use "sass:math";
.xqnhankfuuilcwvhgsopeqncafzsquya {
text-align: center;
@ -388,11 +391,11 @@ export default defineComponent({
font-size: 0.8em;
&:first-child {
margin-left: -($gap / 2);
margin-left: -(math.div($gap, 2));
}
&:last-child {
margin-right: -($gap / 2);
margin-right: -(math.div($gap, 2));
}
}
}
@ -413,11 +416,11 @@ export default defineComponent({
font-size: 12px;
&:first-child {
margin-top: -($gap / 2);
margin-top: -(math.div($gap, 2));
}
&:last-child {
margin-bottom: -($gap / 2);
margin-bottom: -(math.div($gap, 2));
}
}
}

View File

@ -220,6 +220,9 @@ export default defineComponent({
</script>
<style lang="scss" scoped>
@use "sass:math";
.uawsfosz {
> div {
padding: 24px;
@ -227,12 +230,12 @@ export default defineComponent({
> .meter {
$size: 12px;
background: rgba(0, 0, 0, 0.1);
border-radius: ($size / 2);
border-radius: math.div($size, 2);
overflow: hidden;
> div {
height: $size;
border-radius: ($size / 2);
border-radius: math.div($size, 2);
}
}
}

View File

@ -1,25 +1,25 @@
# ストリーミングAPI
# API de Streaming
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、メッセージが届いた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
Usando la API de streaming, se puede recibir en tiempo real toda clase de información (por ejemplo, los posts nuevos que pasaron por la linea de tiempo, los mensajes recibidos, las notificaciones de seguimiento, etc.) y manejar varias operaciones en estas.
## ストリームに接続する
## Conectarse a streams
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**接続する必要があります。
Para usar la API de streaming, primero hay que conectar un **websocket** al servidor de Misskey
以下のURLに、`i`というパラメータ名で認証情報を含めて、websocket接続してください。例:
Conecte el websocket a la URL mencionada abajo, incluyendo la información de autenticación en el parámetro `i`Ej:
```
%WS_URL%/streaming?i=xxxxxxxxxxxxxxx
```
認証情報は、自分のAPIキーや、アプリケーションからストリームに接続する際はユーザーのアクセストークンのことを指します。
La información de autenticación hace referencia a tu propia clave de la API, o al token de acceso del usuario cuando se conecta al stream desde la aplicación
<div class="ui info">
<p><i class="fas fa-info-circle"></i> 認証情報の取得については、<a href="./api">こちらのドキュメント</a>をご確認ください。</p>
<p><i class="fas fa-info-circle"></i> Para obtener la información de la autenticación, consulte <a href="./api">Este documento</a></p>
</div>
---
認証情報は省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。例:
La información de autenticación puede omitirse, pero en ese caso de uso sin un login, se restringirá la información que puede ser recibida y las operaciones posibles,Ej:
```
%WS_URL%/streaming
@ -50,7 +50,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
}
```
ここで、
Aquí
* `channel`には接続したいチャンネル名を設定します。チャンネルの種類については後述します。
* `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません。
* `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
@ -76,7 +76,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
}
```
ここで、
Aquí
* `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます。
* `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります。
* `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります。
@ -98,7 +98,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
}
```
ここで、
Aquí
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます。
* `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります。
* `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります。
@ -115,7 +115,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
}
```
ここで、
Aquí
* `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。
## ストリームを経由してAPIリクエストする
@ -136,7 +136,7 @@ MisskeyのストリーミングAPIにはチャンネルという概念があり
}
```
ここで、
Aquí
* `id`には、APIのレスポンスを識別するための、APIリクエストごとの一意なIDを設定する必要があります。UUIDや、簡単な乱数のようなもので構いません。
* `endpoint`には、あなたがリクエストしたいAPIのエンドポイントを指定します。
* `data`には、エンドポイントのパラメータを含めます。
@ -158,7 +158,7 @@ APIへリクエストすると、レスポンスがストリームから次の
}
```
ここで、
Aquí
* `xxxxxxxxxxxxxxxx`の部分には、リクエストの際に設定された`id`が含まれています。これにより、どのリクエストに対するレスポンスなのか判別することができます。
* `body`には、レスポンスが含まれています。
@ -185,7 +185,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
}
```
ここで、
Aquí
* `id`にキャプチャしたい投稿の`id`を設定します。
このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。
@ -206,7 +206,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
}
```
ここで、
Aquí
* `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。
* `body`内の`type`に、イベントの種類が設定されます。
* `body`内の`body`に、イベントの詳細が設定されます。
@ -219,7 +219,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `reaction`に、リアクションの種類が設定されます。
* `userId`に、リアクションを行ったユーザーのIDが設定されます。
:
Ej:
```json
{
type: 'noteUpdated',
@ -239,7 +239,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `deletedAt`に、削除日時が設定されます。
:
Ej:
```json
{
type: 'noteUpdated',
@ -259,7 +259,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
* `choice`に、選択肢IDが設定されます。
* `userId`に、投票を行ったユーザーのIDが設定されます。
:
Ej:
```json
{
type: 'noteUpdated',
@ -289,7 +289,7 @@ Misskeyは投稿のキャプチャと呼ばれる仕組みを提供していま
}
```
ここで、
Aquí
* `id`にキャプチャを解除したい投稿の`id`を設定します。
このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。

View File

@ -1,12 +1,12 @@
# Tema
テーマを設定して、Misskeyクライアントの見た目を変更できます。
Eligiendo un tema, se puede cambiar la apariencia del cliente de Misskey
## テーマの設定
設定 > テーマ
## Configuración del tema
Configuración > Tema
## テーマを作成する
テーマコードはJSON5で記述されたテーマオブジェクトです。 テーマは以下のようなオブジェクトです。
## Crear tema
El código del tema se guarda como un archivo JSON5. Un ejemplo de tema se puede ver aquí:
``` js
{
id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
@ -33,36 +33,36 @@
```
* `id` ... テーマの一意なID。UUIDをおすすめします。
* `name` ... テーマ名
* `author` ... テーマの作者
* `desc` ... テーマの説明(オプション)
* `base` ... 明るいテーマか、暗いテーマか
* `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
* テーマはここで設定されたベーステーマを継承します。
* `props` ... テーマのスタイル定義。これから説明します。
* `id` ... Clave única del tema.Se recomienda un código UUID
* `name` ... Nombre del tema
* `author` ... Autor del tema
* `desc` ... Descripción del tema (opcional)
* `base` ... Si es un tema claro u oscuro
* Si se elige `light`, será un tema claro. Si se elige `dark`, será un tema oscuro.
* Aquí el tema hereda los valores por defecto del tema base elegido
* `props` ... Definición del estilo del tema. Esto se explica en lo siguiente.
### テーマのスタイル定義
`props`下にはテーマのスタイルを定義します。 キーがCSSの変数名になり、バリューで中身を指定します。 なお、この`props`オブジェクトはベーステーマから継承されます。 ベーステーマは、このテーマの`base`が`light`なら[_light.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_light.json5)で、`dark`なら[_dark.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_dark.json5)です。 つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。
### Definición del estilo del tema
Debajo de `props`, se define el estilo del tema. La clave es el nombre de las variables del CSS, y con los valores estos se configuran. Incluso más, este objeto `props` hereda los valores por defecto del tema base. El tema base es [_light.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_light.json5) si el `base` de este tema es `light`, y [_dark.json5](https://github.com/misskey-dev/misskey/blob/develop/src/client/themes/_dark.json5) si si el `base` de este tema es `dark` Resumiendo, aunque no haya una clave `panel` en el `props` del tema, se considera el <0>panel</0> del tema base.
#### バリューで使える構文
* 16進数で表された色
* : `#00ff00`
* `rgb(r, g, b)`形式で表された色
* : `rgb(0, 255, 0)`
* `rgb(r, g, b, a)`形式で表された透明度を含む色
* : `rgba(0, 255, 0, 0.5)`
* 他のキーの値の参照
* `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。
* : `@panel`
* 定数(後述)の参照
* `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。
* : `$main`
* 関数(後述)
* `:{関数名}<{引数}<{色}`
#### Sintaxis de las variables
* Los colores en base hexadecimal
* Ej: `#00ff00`
* Los colores con la sintaxis `rgb(r, g, b)`
* Ej: `rgb(0, 255, 0)`
* Los colores con la sintaxis `rgb(r, g, b, a)` con un grado de transparencia
* Ej: `rgba(0, 255, 0, 0.5)`
* Referencias a valores de otras claves
* Escribiendo `@{nombre de clave}` se hace referencia al valor de la otra clave.Reemplace `{nombre de clave}` por el nombre de la clave al cual quiera hacer referencia.
* Ej: `@panel`
* Referencia a una constante (ver más abajo)
* Escribiendo `${nombre de la constante}` se hace referencia a la constante.Reemplace `{nombre de la constante}` por la constante al cual quiera hacer referencia.
* Ej: `$main`
* Funciones (ver más abajo)
* `:{nombre de la función}<{parámetros}<{color}`
#### Constante
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。 キー名を`$`で始めると、そのキーはCSS変数として出力されません。
#### Constantes
Cuando hay un valor que no se quiere generar como variable CSS pero sí se quiere reutilizar como valor de otra variable CSS, es conveniente usar constantes. Cuando a un nombre de clave se le añade como prefijo `$`, esa clave no será generada como una variable CSS.
#### funciones
wip

View File

@ -1,15 +1,15 @@
# タイムラインの比較
# Comparación de las lineas de tiempo
https://docs.google.com/spreadsheets/d/1lxQ2ugKrhz58Bg96HTDK_2F98BUritkMyIiBkOByjHA/edit?usp=sharing
## Inicio
自分のフォローしているユーザーの投稿
Los posts de los usuarios que uno sigue
## Local
全てのローカルユーザーの「ホーム」指定されていない投稿
Todos los posts de los usuarios locales que no estén marcados como "Solo inicio"
## Social
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿
Los posts de los usuarios que uno sigue más todos los posts de los usuarios locales que no estén marcados como "Solo inicio"
## Global
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿
Todos los posts de los usuarios locales que no estén marcados como "Solo inicio" más todos los posts de los usuarios remotos recibidos por el servidor que no estén marcados como "Solo inicio"

View File

@ -7,11 +7,11 @@ API를 사용하려면 먼저 액세스 토큰을 취득해야 합니다. 이
## 액세스 토큰 가져오기
기본적으로 API는 요청 시에 액세스 토큰이 필요합니다. API에 요청하는 것이 자기 자신인지, 불특정한 유저에게 사용하는 애플리케이션인지에 따라 취득 절차가 달라집니다.
* 전자의 경우: [ 「자기 자신의 액세스 토큰을 수동으로 발급하기」](#自分自身のアクセストークンを手動発行する)로 진행
* 전자의 경우: [「자기 자신의 액세스 토큰을 수동으로 발급하기」](#自分自身のアクセストークンを手動発行する)로 진행
* 후자의 경우: [「애플리케이션 사용자에게 액세스 토큰 발급을 요청하기」](#アプリケーション利用者にアクセストークンの発行をリクエストする)로 진행
### 자기 자신의 액세스 토큰을 수동으로 발급하기
「설정 &#062 API」에서 자신의 액세스 토큰을 발급할 수 있습니다.
「설정 > API」에서 자신의 액세스 토큰을 발급할 수 있습니다.
[「API 사용 방법」으로 이동](#APIの使い方)

View File

@ -1,2 +1,2 @@
# MFM
MFM은 Misskey Flavored Markdown의 약자로, Misskey의 다양한 장소에서 사용할 수 있는 전용 마크업 언어입니다. MFM로 사용 가능한 구문은 [MFM 치트 시트 ](/mfm-cheat-sheet)에서 확인할 수 있습니다.
MFM은 Misskey Flavored Markdown의 약자로, Misskey의 다양한 장소에서 사용할 수 있는 전용 마크업 언어입니다. MFM로 사용 가능한 구문은 [MFM 치트 시트](/mfm-cheat-sheet)에서 확인할 수 있습니다.

View File

@ -56,6 +56,8 @@ const forceExitAfter = timeout => () => {
* @param {string} signalOrEvent The exit signal or event name received on the process.
*/
async function shutdownHandler(signalOrEvent) {
if (process.env.NODE_ENV === 'test') return process.exit(0);
console.warn(`Shutting down: received [${signalOrEvent}] signal`);
for (const listener of shutdownListeners) {

View File

@ -41,14 +41,12 @@ export const packedBlockingSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this blocking.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the blocking was created.'
},
blockeeId: {
type: 'string' as const,
@ -59,7 +57,6 @@ export const packedBlockingSchema = {
type: 'object' as const,
optional: false as const, nullable: false as const,
ref: 'User',
description: 'The blockee.'
},
}
};

View File

@ -51,14 +51,12 @@ export const packedChannelSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Channel.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Channel was created.'
},
lastNotedAt: {
type: 'string' as const,
@ -68,7 +66,6 @@ export const packedChannelSchema = {
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the Channel.'
},
description: {
type: 'string' as const,

View File

@ -39,14 +39,12 @@ export const packedClipSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Clip.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Clip was created.'
},
userId: {
type: 'string' as const,
@ -61,17 +59,14 @@ export const packedClipSchema = {
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the Clip.'
},
description: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'The description of the Clip.'
},
isPublic: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
description: 'Whether this Clip is public.',
},
},
};

View File

@ -154,44 +154,37 @@ export const packedDriveFileSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Drive file.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Drive file was created on Misskey.'
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The file name with extension.',
example: 'lenna.jpg'
},
type: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The MIME type of this Drive file.',
example: 'image/jpeg'
},
md5: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'md5',
description: 'The MD5 hash of this Drive file.',
example: '15eca7fba0480996e2245f5185bf39f2'
},
size: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'The size of this Drive file. (bytes)',
example: 51469
},
isSensitive: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
description: 'Whether this Drive file is sensitive.',
},
blurhash: {
type: 'string' as const,
@ -222,13 +215,11 @@ export const packedDriveFileSchema = {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The URL of this Drive file.',
},
thumbnailUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The thumbnail URL of this Drive file.',
},
comment: {
type: 'string' as const,
@ -238,26 +229,22 @@ export const packedDriveFileSchema = {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'id',
description: 'The parent folder ID of this Drive file.',
example: 'xxxxxxxxxx',
},
folder: {
type: 'object' as const,
optional: true as const, nullable: true as const,
description: 'The parent folder of this Drive file.',
ref: 'DriveFolder'
},
userId: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'id',
description: 'Owner ID of this Drive file.',
example: 'xxxxxxxxxx',
},
user: {
type: 'object' as const,
optional: true as const, nullable: true as const,
description: 'Owner of this Drive file.',
ref: 'User'
}
},

View File

@ -59,35 +59,29 @@ export const packedDriveFolderSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Drive folder.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Drive folder was created.'
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The folder name.',
},
foldersCount: {
type: 'number' as const,
optional: true as const, nullable: false as const,
description: 'The count of child folders.',
},
filesCount: {
type: 'number' as const,
optional: true as const, nullable: false as const,
description: 'The count of child files.',
},
parentId: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'id',
description: 'The parent folder ID of this folder.',
example: 'xxxxxxxxxx',
},
parent: {

View File

@ -95,14 +95,12 @@ export const packedFollowingSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this following.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the following was created.'
},
followeeId: {
type: 'string' as const,
@ -113,7 +111,6 @@ export const packedFollowingSchema = {
type: 'object' as const,
optional: true as const, nullable: false as const,
ref: 'User',
description: 'The followee.'
},
followerId: {
type: 'string' as const,
@ -124,7 +121,6 @@ export const packedFollowingSchema = {
type: 'object' as const,
optional: true as const, nullable: false as const,
ref: 'User',
description: 'The follower.'
},
}
};

View File

@ -34,38 +34,31 @@ export const packedHashtagSchema = {
tag: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The hashtag name. No # prefixed.',
example: 'misskey',
},
mentionedUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of all users using this hashtag.'
},
mentionedLocalUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of local users using this hashtag.'
},
mentionedRemoteUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of remote users using this hashtag.'
},
attachedUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of all users who attached this hashtag to profile.'
},
attachedLocalUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of local users who attached this hashtag to profile.'
},
attachedRemoteUsersCount: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of remote users who attached this hashtag to profile.'
},
}
};

View File

@ -53,14 +53,12 @@ export const packedMessagingMessageSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this MessagingMessage.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the MessagingMessage was created.'
},
userId: {
type: 'string' as const,

View File

@ -41,14 +41,12 @@ export const packedMutingSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this muting.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the muting was created.'
},
muteeId: {
type: 'string' as const,
@ -59,7 +57,6 @@ export const packedMutingSchema = {
type: 'object' as const,
optional: false as const, nullable: false as const,
ref: 'User',
description: 'The mutee.'
},
}
};

View File

@ -35,14 +35,12 @@ export const packedNoteFavoriteSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this favorite.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the favorite was created.'
},
note: {
type: 'object' as const,

View File

@ -32,25 +32,21 @@ export const packedNoteReactionSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this reaction.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the reaction was created.'
},
user: {
type: 'object' as const,
optional: false as const, nullable: false as const,
ref: 'User',
description: 'User who performed this reaction.'
},
type: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The reaction type.'
},
},
};

View File

@ -281,14 +281,12 @@ export const packedNoteSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Note.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Note was created on Misskey.'
},
text: {
type: 'string' as const,
@ -426,7 +424,6 @@ export const packedNoteSchema = {
reactions: {
type: 'object' as const,
optional: false as const, nullable: false as const,
description: 'Key is either Unicode emoji or custom emoji, value is count of that emoji reaction.',
},
renoteCount: {
type: 'number' as const,
@ -439,18 +436,15 @@ export const packedNoteSchema = {
uri: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'The URI of a note. it will be null when the note is local.',
},
url: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'The human readable url of a note. it will be null when the note is local.',
},
myReaction: {
type: 'object' as const,
optional: true as const, nullable: true as const,
description: 'Key is either Unicode emoji or custom emoji, value is count of that emoji reaction.',
},
},
};

View File

@ -117,20 +117,17 @@ export const packedNotificationSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this notification.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the notification was created.'
},
type: {
type: 'string' as const,
optional: false as const, nullable: false as const,
enum: ['follow', 'followRequestAccepted', 'receiveFollowRequest', 'mention', 'reply', 'renote', 'quote', 'reaction', 'pollVote'],
description: 'The type of the notification.'
},
userId: {
type: 'string' as const,

View File

@ -34,19 +34,16 @@ export const packedUserGroupSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this UserGroup.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the UserGroup was created.'
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the UserGroup.'
},
ownerId: {
type: 'string' as const,

View File

@ -33,19 +33,16 @@ export const packedUserListSchema = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this UserList.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the UserList was created.'
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the UserList.'
},
userIds: {
type: 'array' as const,

View File

@ -342,19 +342,16 @@ export const packedUserSchema = {
type: 'string' as const,
nullable: false as const, optional: false as const,
format: 'id',
description: 'The unique identifier for this User.',
example: 'xxxxxxxxxx',
},
name: {
type: 'string' as const,
nullable: true as const, optional: false as const,
description: 'The name of the user, as theyve defined it.',
example: '藍'
},
username: {
type: 'string' as const,
nullable: false as const, optional: false as const,
description: 'The screen name, handle, or alias that this user identifies themselves with.',
example: 'ai'
},
host: {
@ -379,24 +376,20 @@ export const packedUserSchema = {
isAdmin: {
type: 'boolean' as const,
nullable: false as const, optional: false as const,
description: 'Whether this account is the admin.',
default: false
},
isModerator: {
type: 'boolean' as const,
nullable: false as const, optional: false as const,
description: 'Whether this account is a moderator.',
default: false
},
isBot: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
description: 'Whether this account is a bot.'
},
isCat: {
type: 'boolean' as const,
nullable: false as const, optional: true as const,
description: 'Whether this account is a cat.'
},
emojis: {
type: 'array' as const,
@ -438,7 +431,6 @@ export const packedUserSchema = {
type: 'string' as const,
nullable: false as const, optional: true as const,
format: 'date-time',
description: 'The date that the user account was created on Misskey.'
},
updatedAt: {
type: 'string' as const,
@ -471,7 +463,6 @@ export const packedUserSchema = {
description: {
type: 'string' as const,
nullable: true as const, optional: true as const,
description: 'The user-defined UTF-8 string describing their account.',
example: 'Hi masters, I am Ai!'
},
location: {
@ -505,17 +496,14 @@ export const packedUserSchema = {
followersCount: {
type: 'number' as const,
nullable: false as const, optional: true as const,
description: 'The number of followers this account currently has.'
},
followingCount: {
type: 'number' as const,
nullable: false as const, optional: true as const,
description: 'The number of users this account is following.'
},
notesCount: {
type: 'number' as const,
nullable: false as const, optional: true as const,
description: 'The number of Notes (including renotes) issued by the user.'
},
pinnedNoteIds: {
type: 'array' as const,

View File

@ -3,7 +3,7 @@ export type ApObject = IObject | string | (IObject | string)[];
export interface IObject {
'@context': string | obj | obj[];
type: string | unknown[];
type: string | string[];
id?: string;
summary?: string;
published?: string;

View File

@ -8,15 +8,12 @@ export type Param = {
transform?: any;
default?: any;
deprecated?: boolean;
desc?: { [key: string]: string };
ref?: string;
};
export interface IEndpointMeta {
stability?: string; //'deprecated' | 'experimental' | 'stable';
desc?: { [key: string]: string };
tags?: string[];
params?: {

View File

@ -5,11 +5,6 @@ import { AbuseUserReports } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
desc: {
'ja-JP': '通報一覧を表示します。',
'en-US': 'Show list of abuse user reports.'
},
tags: ['admin'],
requireCredential: true as const,
@ -64,43 +59,36 @@ export const meta = {
type: 'string' as const,
nullable: false as const, optional: false as const,
format: 'id',
description: 'The unique identifier for this User.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
nullable: false as const, optional: false as const,
format: 'date-time',
description: 'The date that the abuse user report was created on Misskey.'
},
comment: {
type: 'string' as const,
nullable: false as const, optional: false as const,
description: 'The content of the report.',
},
resolved: {
type: 'boolean' as const,
nullable: false as const, optional: false as const,
description: 'Returns whether this report has been resolved',
example: false
},
reporterId: {
type: 'string' as const,
nullable: false as const, optional: false as const,
format: 'id',
description: 'Reporter\'s user ID.'
},
targetUserId: {
type: 'string' as const,
nullable: false as const, optional: false as const,
format: 'id',
description: 'User ID of the person to be reported.'
},
assigneeId: {
type: 'string' as const,
nullable: true as const, optional: false as const,
format: 'id',
description: 'User ID of the person who responded to the report.'
},
reporter: {
type: 'object' as const,

View File

@ -3,11 +3,6 @@ import { Users } from '../../../../../models';
import { signup } from '../../../common/signup';
export const meta = {
desc: {
'ja-JP': 'アカウントを作成します。',
'en-US': 'Create a account.'
},
tags: ['admin'],
params: {
@ -28,7 +23,6 @@ export const meta = {
token: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Token to access this user.'
}
}
}

View File

@ -4,11 +4,6 @@ import { Announcements } from '../../../../../models';
import { genId } from '@/misc/gen-id';
export const meta = {
desc: {
'ja-JP': 'アナウンスを作成します。',
'en-US': 'Create a announcement.'
},
tags: ['admin'],
requireCredential: true as const,
@ -34,35 +29,29 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Announcement.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Announcement was created.'
},
updatedAt: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'date-time',
description: 'The date that the Announcement was updated.'
},
title: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement title.'
},
text: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement text.'
},
imageUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'Announcement image.'
}
}
}

View File

@ -10,11 +10,6 @@ export const meta = {
requireCredential: true as const,
requireModerator: true,
desc: {
'ja-JP': 'アナウンスを削除します。',
'en-US': 'Delete a announcement.'
},
params: {
id: {
validator: $.type(ID)

View File

@ -5,11 +5,6 @@ import { Announcements, AnnouncementReads } from '../../../../../models';
import { makePaginationQuery } from '../../../common/make-pagination-query';
export const meta = {
desc: {
'ja-JP': 'アナウンスのリストを表示します。',
'en-US': 'List announcements.'
},
tags: ['admin'],
requireCredential: true as const,
@ -41,40 +36,33 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Announcement.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Announcement was created.'
},
updatedAt: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'date-time',
description: 'The date that the Announcement was updated.'
},
text: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement text.'
},
title: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement title.'
},
imageUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'Announcement image.'
},
reads: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of people who read this announcement.'
}
}
}

View File

@ -5,11 +5,6 @@ import { Announcements } from '../../../../../models';
import { ApiError } from '../../../error';
export const meta = {
desc: {
'ja-JP': 'アナウンスの内容を変更します。',
'en-US': 'Update a annoucement.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { DriveFiles } from '../../../../models';
import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
'ja-JP': '対象のユーザーのファイルを全て削除します。',
'en-US': 'Delete all files to specified user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -18,10 +13,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to suspend'
}
},
}
};

View File

@ -2,11 +2,6 @@ import define from '../../define';
import { Logs } from '../../../../models';
export const meta = {
desc: {
'ja-JP': 'ログを全て削除します。',
'en-US': 'Delete all logs.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -2,11 +2,6 @@ import define from '../../../define';
import { createCleanRemoteFilesJob } from '../../../../../queue';
export const meta = {
desc: {
'ja-JP': 'キャッシュされたリモートファイルをすべて削除します。',
'en-US': 'Deletes all cached remote files.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -4,11 +4,6 @@ import { deleteFile } from '../../../../../services/drive/delete-file';
import { DriveFiles } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': '使用されていないユーザーのファイルを削除します。',
'en-US': 'Delete the unused user\'s files.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
'ja-JP': '管理用のドライブの一覧を表示します。',
'en-US': 'Displays a list of management drives.'
},
tags: ['admin'],
requireCredential: false as const,

View File

@ -36,20 +36,17 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Drive file.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Drive file was created on Misskey.'
},
userId: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'id',
description: 'Owner ID of this Drive file.',
example: 'xxxxxxxxxx',
},
userHost: {
@ -60,25 +57,21 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'md5',
description: 'The MD5 hash of this Drive file.',
example: '15eca7fba0480996e2245f5185bf39f2'
},
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The file name with extension.',
example: 'lenna.jpg'
},
type: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The MIME type of this Drive file.',
example: 'image/jpeg'
},
size: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'The size of this Drive file. (bytes)',
example: 51469
},
comment: {
@ -113,41 +106,34 @@ export const meta = {
storedInternal: {
type: 'boolean' as const,
optional: false as const, nullable: true as const,
description: 'Indicates whether this file is stored in the same location as Misskey itself',
example: true
},
url: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The URL of this Drive file.',
},
thumbnailUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The thumbnail URL of this Drive file.',
},
webpublicUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'url',
description: 'The public URL of this Drive file.',
},
accessKey: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Access key to access this file'
},
thumbnailAccessKey: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Access key to access this file for thumbnail'
},
webpublicAccessKey: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Access key to access this file for webpublic'
},
uri: {
type: 'string' as const,
@ -161,13 +147,11 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'id',
description: 'The parent folder ID of this Drive file.',
example: 'xxxxxxxxxx',
},
isSensitive: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
description: 'Whether this Drive file is sensitive.',
},
isLink: {
type: 'boolean' as const,

View File

@ -10,10 +10,6 @@ import rndstr from 'rndstr';
import { publishBroadcastStream } from '../../../../../services/stream';
export const meta = {
desc: {
'ja-JP': 'カスタム絵文字を追加します。'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -9,11 +9,6 @@ import { ID } from '@/misc/cafy-id';
import uploadFromUrl from '../../../../../services/drive/upload-from-url';
export const meta = {
desc: {
'ja-JP': '選択したカスタム絵文字をコピーします。',
'en-US': 'Copies the selected custom emoji.'
},
tags: ['admin'],
requireCredential: true as const,
@ -41,7 +36,6 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'New copied emoji ID'
}
}
}

View File

@ -6,11 +6,6 @@ import { makePaginationQuery } from '../../../common/make-pagination-query';
import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
'ja-JP': 'リモートのカスタム絵文字一覧を取得します。',
'en-US': 'Gets a list of remote custom emojis.'
},
tags: ['admin'],
requireCredential: true as const,
@ -19,12 +14,12 @@ export const meta = {
params: {
query: {
validator: $.optional.nullable.str,
default: null as any
default: null
},
host: {
validator: $.optional.nullable.str,
default: null as any
default: null
},
limit: {
@ -52,12 +47,10 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Emoji.'
},
aliases: {
type: 'array' as const,
optional: false as const, nullable: false as const,
description: 'List to make it easier to be displayed as a candidate when entering emoji.',
items: {
type: 'string' as const,
optional: false as const, nullable: false as const
@ -66,22 +59,18 @@ export const meta = {
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Official name of custom emoji.'
},
category: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'Names categorized in the emoji list.'
},
host: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'If it is another server, the FQDN will be returned here.'
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Image URL of emoji.'
}
}
}

View File

@ -6,11 +6,6 @@ import { ID } from '@/misc/cafy-id';
import { Emoji } from '../../../../../models/entities/emoji';
export const meta = {
desc: {
'ja-JP': 'カスタム絵文字一覧を取得します。',
'en-US': 'List custom emojis.'
},
tags: ['admin'],
requireCredential: true as const,
@ -19,7 +14,7 @@ export const meta = {
params: {
query: {
validator: $.optional.nullable.str,
default: null as any
default: null
},
limit: {
@ -47,12 +42,10 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Emoji.'
},
aliases: {
type: 'array' as const,
optional: false as const, nullable: false as const,
description: 'List to make it easier to be displayed as a candidate when entering emoji.',
items: {
type: 'string' as const,
optional: false as const, nullable: false as const
@ -61,22 +54,18 @@ export const meta = {
name: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Official name of custom emoji.'
},
category: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'Names categorized in the emoji list.'
},
host: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'If it is another server, the FQDN will be returned here.'
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Image URL of emoji.'
}
}
}

View File

@ -7,10 +7,6 @@ import { insertModerationLog } from '../../../../../services/insert-moderation-l
import { ApiError } from '../../../error';
export const meta = {
desc: {
'ja-JP': 'カスタム絵文字を削除します。'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -6,10 +6,6 @@ import { getConnection } from 'typeorm';
import { ApiError } from '../../../error';
export const meta = {
desc: {
'ja-JP': 'カスタム絵文字を更新します。'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -4,11 +4,6 @@ import { deleteFile } from '../../../../../services/drive/delete-file';
import { DriveFiles } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したドメインのファイルを全て削除します。',
'en-US': 'Deletes all files in the specified domain.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -4,11 +4,6 @@ import deleteFollowing from '../../../../../services/following/delete';
import { Followings, Users } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したドメインの全ユーザーのフォローを全て解除します。',
'en-US': 'Unfollow all users in the specified domain.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -4,11 +4,6 @@ import { Instances } from '../../../../../models';
import { toPuny } from '@/misc/convert-host';
export const meta = {
desc: {
'ja-JP': '指定したドメインのアクティビティの配信を停止するかを選択します。',
'en-US': 'Select whether to undeliver the activity for the specified domain.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ export const meta = {
requireCredential: true as const,
requireModerator: true,
desc: {
'ja-JP': 'テーブル情報を取得します。',
'en-US': 'Get table stats'
},
tags: ['admin'],
params: {

View File

@ -4,11 +4,6 @@ import { RegistrationTickets } from '../../../../models';
import { genId } from '@/misc/gen-id';
export const meta = {
desc: {
'ja-JP': '招待コードを発行します。',
'en-US': 'Issue an invitation code.'
},
tags: ['admin'],
requireCredential: true as const,
@ -23,7 +18,6 @@ export const meta = {
code: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Give this code to the applicant for registration.',
example: '2ERUA5VR',
maxLength: 8,
minLength: 8

View File

@ -4,11 +4,6 @@ import { Logs } from '../../../../models';
import { Brackets } from 'typeorm';
export const meta = {
desc: {
'ja-JP': 'ログを表示します。',
'en-US': 'Show logs.'
},
tags: ['admin'],
requireCredential: true as const,
@ -22,12 +17,12 @@ export const meta = {
level: {
validator: $.optional.nullable.str,
default: null as any
default: null
},
domain: {
validator: $.optional.nullable.str,
default: null as any
default: null
}
},
@ -42,14 +37,12 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this log.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Drive file was created on Misskey.'
},
domain: {
type: 'array' as const,
@ -70,12 +63,10 @@ export const meta = {
machine: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the running machine.'
},
message: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Log body.'
},
data: {
type: 'object' as const,

View File

@ -4,11 +4,6 @@ import define from '../../../define';
import { Users } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーをモデレーターにします。',
'en-US': 'Mark a user as moderator.'
},
tags: ['admin'],
requireCredential: true as const,
@ -17,10 +12,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID'
}
},
}
};

View File

@ -4,11 +4,6 @@ import define from '../../../define';
import { Users } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーをモデレーター解除します。',
'en-US': 'Unmark a user as moderator.'
},
tags: ['admin'],
requireCredential: true as const,
@ -17,10 +12,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID'
}
},
}
};

View File

@ -6,11 +6,6 @@ import { getNote } from '../../../common/getters';
import { PromoNotes } from '../../../../../models';
export const meta = {
desc: {
'ja-JP': 'プロモーションを作成します。',
'en-US': 'Create a promotion.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -3,11 +3,6 @@ import { destroy } from '../../../../../queue';
import { insertModerationLog } from '../../../../../services/insert-moderation-log';
export const meta = {
desc: {
'ja-JP': 'ジョブキューを全て削除します。',
'en-US': 'Delete all job queues.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -3,11 +3,6 @@ import { URL } from 'url';
import define from '../../../define';
export const meta = {
desc: {
'ja-JP': '他サーバーへ送るキューの遅延一覧を返します。',
'en-US': 'Returns a list of delays in queues sent to other servers.'
},
tags: ['admin'],
requireCredential: true as const,
@ -26,11 +21,9 @@ export const meta = {
anyOf: [
{
type: 'string' as const,
description: 'FQDN to fediverse server'
},
{
type: 'number' as const,
description: 'Delayed queue counts'
}
]
}

View File

@ -3,11 +3,6 @@ import define from '../../../define';
import { inboxQueue } from '../../../../../queue';
export const meta = {
desc: {
'ja-JP': 'このサーバーへのキューの遅延一覧を返します。',
'en-US': 'Returns a list of queue delays to this server.'
},
tags: ['admin'],
requireCredential: true as const,
@ -26,11 +21,9 @@ export const meta = {
anyOf: [
{
type: 'string' as const,
description: 'FQDN to fediverse server'
},
{
type: 'number' as const,
description: 'Delayed queue counts'
}
]
}

View File

@ -3,11 +3,6 @@ import $ from 'cafy';
import define from '../../../define';
export const meta = {
desc: {
'ja-JP': 'ジョブ一覧を表示します。',
'en-US': 'Display the job list.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -2,11 +2,6 @@ import { deliverQueue, inboxQueue, dbQueue, objectStorageQueue } from '@/queue/q
import define from '../../../define';
export const meta = {
desc: {
'ja-JP': 'キューの状態を返します。',
'en-US': 'Returns the status of the queue.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { addRelay } from '../../../../../services/relay';
import { ApiError } from '../../../error';
export const meta = {
desc: {
'ja-JP': 'リレーを追加します。',
'en-US': 'Add relay'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -2,11 +2,6 @@ import define from '../../../define';
import { listRelay } from '../../../../../services/relay';
export const meta = {
desc: {
'ja-JP': 'リレー一覧を表示します。',
'en-US': 'List relay'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -3,11 +3,6 @@ import define from '../../../define';
import { removeRelay } from '../../../../../services/relay';
export const meta = {
desc: {
'ja-JP': 'リレーを削除します。',
'en-US': 'Remove relay'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -6,11 +6,6 @@ import rndstr from 'rndstr';
import { Users, UserProfiles } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーのパスワードをリセットします。',
'en-US': 'Reset password to specified user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -19,10 +14,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to suspend'
}
},
},

View File

@ -4,11 +4,6 @@ import define from '../../define';
import { AbuseUserReports } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定した通報を解決済みにします。',
'en-US': 'Marks the specified report as resolved.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -3,11 +3,6 @@ import { driveChart, notesChart, usersChart, instanceChart } from '../../../../s
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
desc: {
'ja-JP': 'チャートを再同期します。',
'en-US': 'Resync the chart.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -3,11 +3,6 @@ import define from '../../define';
import { sendEmail } from '../../../../services/send-email';
export const meta = {
desc: {
'ja-JP': 'メールを送信します。',
'en-US': 'Send a mail.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -8,11 +8,6 @@ export const meta = {
requireCredential: true as const,
requireModerator: true,
desc: {
'ja-JP': 'サーバー情報を表示します。',
'en-US': 'Show server information.'
},
tags: ['admin', 'meta'],
params: {
@ -25,23 +20,19 @@ export const meta = {
machine: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the running server'
},
os: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'OS used by the server',
example: 'linux'
},
node: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Version of Node.js'
},
psql: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Version of Postgresql'
},
cpu: {
type: 'object' as const,
@ -50,12 +41,10 @@ export const meta = {
model: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The name of the CPU you are using'
},
cores: {
type: 'number' as const,
optional: false as const, nullable: false as const,
description: 'Number of CPU cores used (number of logical processors)'
}
}
},
@ -67,7 +56,6 @@ export const meta = {
type: 'number' as const,
optional: false as const, nullable: false as const,
format: 'bytes',
description: 'RAM capacity.'
}
}
},
@ -79,13 +67,11 @@ export const meta = {
type: 'number' as const,
optional: false as const, nullable: false as const,
format: 'bytes',
description: 'Total storage capacity.'
},
used: {
type: 'number' as const,
optional: false as const, nullable: false as const,
format: 'bytes',
description: 'Amount of storage used'
}
}
},
@ -96,7 +82,6 @@ export const meta = {
interface: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'The interface name of your network.',
example: 'eth0'
}
}

View File

@ -5,11 +5,6 @@ import { ModerationLogs } from '../../../../models';
import { makePaginationQuery } from '../../common/make-pagination-query';
export const meta = {
desc: {
'ja-JP': 'モデレーションログ一覧を表示します。',
'en-US': 'Display the moderation log list.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -4,11 +4,6 @@ import define from '../../define';
import { Users } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したユーザーの情報を取得します(管理者向け)。',
'en-US': 'Gets the information of the specified user (for administrators).'
},
tags: ['admin'],
requireCredential: true as const,
@ -17,10 +12,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to suspend'
}
},
},

View File

@ -3,11 +3,6 @@ import define from '../../define';
import { Users } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '管理者用のユーザー一覧を表示します。',
'en-US': 'Displays a list of users for administrators.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { Users } from '../../../../models';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
desc: {
'ja-JP': '指定したユーザーをサイレンスにします。',
'en-US': 'Make silence a user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -18,10 +13,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to make silence'
}
},
}
};

View File

@ -8,11 +8,6 @@ import { insertModerationLog } from '../../../../services/insert-moderation-log'
import { doPostSuspend } from '../../../../services/suspend-user';
export const meta = {
desc: {
'ja-JP': '指定したユーザーを凍結します。',
'en-US': 'Suspend a user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -21,10 +16,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to suspend'
}
},
}
};

View File

@ -5,11 +5,6 @@ import { Users } from '../../../../models';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
desc: {
'ja-JP': '指定したユーザーのサイレンスを解除します。',
'en-US': 'Unsilence a user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -18,10 +13,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to unsilence'
}
},
}
};

View File

@ -6,11 +6,6 @@ import { insertModerationLog } from '../../../../services/insert-moderation-log'
import { doPostUnsuspend } from '../../../../services/unsuspend-user';
export const meta = {
desc: {
'ja-JP': '指定したユーザーの凍結を解除します。',
'en-US': 'Unsuspend a user.'
},
tags: ['admin'],
requireCredential: true as const,
@ -19,10 +14,6 @@ export const meta = {
params: {
userId: {
validator: $.type(ID),
desc: {
'ja-JP': '対象のユーザーID',
'en-US': 'The user ID which you want to unsuspend'
}
},
}
};

View File

@ -7,10 +7,6 @@ import { DB_MAX_NOTE_TEXT_LENGTH } from '@/misc/hard-limits';
import { ID } from '@/misc/cafy-id';
export const meta = {
desc: {
'ja-JP': 'インスタンスの設定を更新します。'
},
tags: ['admin'],
requireCredential: true as const,
@ -19,79 +15,46 @@ export const meta = {
params: {
disableRegistration: {
validator: $.optional.nullable.bool,
desc: {
'ja-JP': '招待制か否か'
}
},
disableLocalTimeline: {
validator: $.optional.nullable.bool,
desc: {
'ja-JP': 'ローカルタイムライン(とソーシャルタイムライン)を無効にするか否か'
}
},
disableGlobalTimeline: {
validator: $.optional.nullable.bool,
desc: {
'ja-JP': 'グローバルタイムラインを無効にするか否か'
}
},
useStarForReactionFallback: {
validator: $.optional.nullable.bool,
desc: {
'ja-JP': '不明なリアクションのフォールバックに star リアクションを使うか'
}
},
pinnedUsers: {
validator: $.optional.nullable.arr($.str),
desc: {
'ja-JP': 'ピン留めユーザー'
}
},
hiddenTags: {
validator: $.optional.nullable.arr($.str),
desc: {
'ja-JP': '統計などで無視するハッシュタグ'
}
},
blockedHosts: {
validator: $.optional.nullable.arr($.str),
desc: {
'ja-JP': 'ブロックするホスト'
}
},
mascotImageUrl: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスキャラクター画像のURL'
}
},
bannerUrl: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスのバナー画像URL'
}
},
errorImageUrl: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスのエラー画像URL'
}
},
iconUrl: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスのアイコンURL'
}
},
backgroundImageUrl: {
@ -104,116 +67,66 @@ export const meta = {
name: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンス名'
}
},
description: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスの紹介文'
}
},
maxNoteTextLength: {
validator: $.optional.num.min(0).max(DB_MAX_NOTE_TEXT_LENGTH),
desc: {
'ja-JP': '投稿の最大文字数'
}
},
localDriveCapacityMb: {
validator: $.optional.num.min(0),
desc: {
'ja-JP': 'ローカルユーザーひとりあたりのドライブ容量 (メガバイト単位)',
'en-US': 'Drive capacity of a local user (MB)'
}
},
remoteDriveCapacityMb: {
validator: $.optional.num.min(0),
desc: {
'ja-JP': 'リモートユーザーひとりあたりのドライブ容量 (メガバイト単位)',
'en-US': 'Drive capacity of a remote user (MB)'
}
},
cacheRemoteFiles: {
validator: $.optional.bool,
desc: {
'ja-JP': 'リモートのファイルをキャッシュするか否か'
}
},
proxyRemoteFiles: {
validator: $.optional.bool,
desc: {
'ja-JP': 'ローカルにないリモートのファイルをプロキシするか否か'
}
},
enableHcaptcha: {
validator: $.optional.bool,
desc: {
'ja-JP': 'hCaptchaを使用するか否か'
}
},
hcaptchaSiteKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'hCaptcha site key'
}
},
hcaptchaSecretKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'hCaptcha secret key'
}
},
enableRecaptcha: {
validator: $.optional.bool,
desc: {
'ja-JP': 'reCAPTCHAを使用するか否か'
}
},
recaptchaSiteKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'reCAPTCHA site key'
}
},
recaptchaSecretKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'reCAPTCHA secret key'
}
},
proxyAccountId: {
validator: $.optional.nullable.type(ID),
desc: {
'ja-JP': 'プロキシアカウントのID'
}
},
maintainerName: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスの管理者名'
}
},
maintainerEmail: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンス管理者の連絡先メールアドレス'
}
},
pinnedPages: {
@ -226,170 +139,98 @@ export const meta = {
langs: {
validator: $.optional.arr($.str),
desc: {
'ja-JP': 'インスタンスの対象言語'
}
},
summalyProxy: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'summalyプロキシURL'
}
},
enableTwitterIntegration: {
validator: $.optional.bool,
desc: {
'ja-JP': 'Twitter連携機能を有効にするか否か'
}
},
twitterConsumerKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'TwitterアプリのConsumer key'
}
},
twitterConsumerSecret: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'TwitterアプリのConsumer secret'
}
},
enableGithubIntegration: {
validator: $.optional.bool,
desc: {
'ja-JP': 'GitHub連携機能を有効にするか否か'
}
},
githubClientId: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'GitHubアプリのClient ID'
}
},
githubClientSecret: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'GitHubアプリのClient Secret'
}
},
enableDiscordIntegration: {
validator: $.optional.bool,
desc: {
'ja-JP': 'Discord連携機能を有効にするか否か'
}
},
discordClientId: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'DiscordアプリのClient ID'
}
},
discordClientSecret: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'DiscordアプリのClient Secret'
}
},
enableEmail: {
validator: $.optional.bool,
desc: {
'ja-JP': 'メール配信を有効にするか否か'
}
},
email: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'メール配信する際に利用するメールアドレス'
}
},
smtpSecure: {
validator: $.optional.bool,
desc: {
'ja-JP': 'SMTPサーバがSSLを使用しているか否か'
}
},
smtpHost: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのホスト'
}
},
smtpPort: {
validator: $.optional.nullable.num,
desc: {
'ja-JP': 'SMTPサーバのポート'
}
},
smtpUser: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのユーザー名'
}
},
smtpPass: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのパスワード'
}
},
enableServiceWorker: {
validator: $.optional.bool,
desc: {
'ja-JP': 'ServiceWorkerを有効にするか否か'
}
},
swPublicKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'ServiceWorkerのVAPIDキーペアの公開鍵'
}
},
swPrivateKey: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵'
}
},
tosUrl: {
validator: $.optional.nullable.str,
desc: {
'ja-JP': '利用規約のURL'
}
},
repositoryUrl: {
validator: $.optional.str,
desc: {
'ja-JP': 'リポジトリのURL'
}
},
feedbackUrl: {
validator: $.optional.str,
desc: {
'ja-JP': 'フィードバックのURL'
}
},
useObjectStorage: {

View File

@ -4,11 +4,6 @@ import { getConnection } from 'typeorm';
import { insertModerationLog } from '../../../../services/insert-moderation-log';
export const meta = {
desc: {
'ja-JP': 'データベースのメンテナンスを行います。',
'en-US': 'Perform database maintenance.'
},
tags: ['admin'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { Announcements, AnnouncementReads } from '../../../models';
import { makePaginationQuery } from '../common/make-pagination-query';
export const meta = {
desc: {
'ja-JP': 'アナウンスを表示します。',
'en-US': 'Show announcements.'
},
tags: ['meta'],
requireCredential: false as const,
@ -45,40 +40,33 @@ export const meta = {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'id',
description: 'The unique identifier for this Announcement.',
example: 'xxxxxxxxxx',
},
createdAt: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'date-time',
description: 'The date that the Announcement was created.'
},
updatedAt: {
type: 'string' as const,
optional: false as const, nullable: true as const,
format: 'date-time',
description: 'The date that the Announcement was updated.'
},
text: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement text.'
},
title: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'Announcement title.'
},
imageUrl: {
type: 'string' as const,
optional: false as const, nullable: true as const,
description: 'Announcement image.'
},
isRead: {
type: 'boolean' as const,
optional: false as const, nullable: false as const,
description: 'Indicates that you have read this announcement'
}
}
}

View File

@ -7,11 +7,6 @@ import { ApiError } from '../../error';
import { publishInternalEvent } from '../../../../services/stream';
export const meta = {
desc: {
'ja-JP': 'アンテナを作成します。',
'en-US': 'Create a antenna.'
},
tags: ['antennas'],
requireCredential: true as const,

View File

@ -6,11 +6,6 @@ import { Antennas } from '../../../../models';
import { publishInternalEvent } from '../../../../services/stream';
export const meta = {
desc: {
'ja-JP': 'アンテナを削除します。',
'en-US': 'Delete a antenna.'
},
tags: ['antennas'],
requireCredential: true as const,

View File

@ -2,11 +2,6 @@ import define from '../../define';
import { Antennas } from '../../../../models';
export const meta = {
desc: {
'ja-JP': 'アンテナの一覧を取得します。',
'en-US': 'Get a list of antennas.'
},
tags: ['antennas', 'account'],
requireCredential: true as const,

View File

@ -8,11 +8,6 @@ import { generateMutedUserQuery } from '../../common/generate-muted-user-query';
import { ApiError } from '../../error';
export const meta = {
desc: {
'ja-JP': '指定したアンテナのノート一覧を表示します。',
'en-US': 'Displays a list of notes for the specified antenna.'
},
tags: ['antennas', 'account', 'notes'],
requireCredential: true as const,

View File

@ -5,11 +5,6 @@ import { ApiError } from '../../error';
import { Antennas } from '../../../../models';
export const meta = {
desc: {
'ja-JP': '指定したアンテナの情報を取得します。',
'en-US': 'Acquires the information of the specified antenna.'
},
tags: ['antennas', 'account'],
requireCredential: true as const,

View File

@ -6,11 +6,6 @@ import { Antennas, UserLists, UserGroupJoinings } from '../../../../models';
import { publishInternalEvent } from '../../../../services/stream';
export const meta = {
desc: {
'ja-JP': 'アンテナの情報を更新します。',
'en-US': 'Updates the information of the specified antenna.'
},
tags: ['antennas'],
requireCredential: true as const,

View File

@ -6,19 +6,11 @@ import { ApiError } from '../../error';
export const meta = {
tags: ['federation'],
desc: {
'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。',
'en-US': 'Browse to the ActivityPub object by specifying the URI.'
},
requireCredential: false as const,
params: {
uri: {
validator: $.str,
desc: {
'ja-JP': 'ActivityPubオブジェクトのURI'
}
},
},

View File

@ -15,19 +15,11 @@ import { isActor, isPost, getApId } from '../../../../remote/activitypub/type';
export const meta = {
tags: ['federation'],
desc: {
'ja-JP': 'URIを指定してActivityPubオブジェクトを参照します。',
'en-US': 'Browse to the ActivityPub object by specifying the URI.'
},
requireCredential: false as const,
params: {
uri: {
validator: $.str,
desc: {
'ja-JP': 'ActivityPubオブジェクトのURI'
}
},
},

View File

@ -10,44 +10,23 @@ export const meta = {
requireCredential: false as const,
desc: {
'ja-JP': 'アプリを作成します。',
'en-US': 'Create a application.'
},
params: {
name: {
validator: $.str,
desc: {
'ja-JP': 'アプリの名前',
'en-US': 'Name of application'
}
},
description: {
validator: $.str,
desc: {
'ja-JP': 'アプリの説明',
'en-US': 'Description of application'
}
},
permission: {
validator: $.arr($.str).unique(),
desc: {
'ja-JP': 'このアプリに割り当てる権限(権限については"Permissions"を参照)',
'en-US': 'Permissions assigned to this app (see "Permissions" for the permissions)'
}
},
// TODO: Check it is valid url
callbackUrl: {
validator: $.optional.nullable.str,
default: null as any,
desc: {
'ja-JP': 'アプリ認証時にコールバックするURL',
'en-US': 'URL to call back at app authentication'
}
default: null,
},
},

View File

@ -11,18 +11,9 @@ export const meta = {
requireCredential: false as const,
desc: {
'ja-JP': 'アプリを認証するためのトークンを作成します。',
'en-US': 'Generate a token for authorize application.'
},
params: {
appSecret: {
validator: $.str,
desc: {
'ja-JP': 'アプリケーションのシークレットキー',
'en-US': 'The secret key of your application.'
}
}
},
@ -33,13 +24,11 @@ export const meta = {
token: {
type: 'string' as const,
optional: false as const, nullable: false as const,
description: 'セッションのトークン'
},
url: {
type: 'string' as const,
optional: false as const, nullable: false as const,
format: 'url',
description: 'セッションのURL'
},
}
},

View File

@ -11,10 +11,6 @@ export const meta = {
params: {
token: {
validator: $.str,
desc: {
'ja-JP': 'セッションのトークン',
'en-US': 'The token of a session.'
}
}
},

Some files were not shown because too many files have changed in this diff Show More