summaryrefslogtreecommitdiff
path: root/packages/backend/src
diff options
context:
space:
mode:
authoryupix <yupi0982@outlook.jp>2023-12-06 15:47:57 +0900
committerGitHub <noreply@github.com>2023-12-06 15:47:57 +0900
commite42c91dee77bbbe7bff848aac51ab7ec0cd3fe6e (patch)
tree35269a2de3a0d4dc8daad5870bd55e7e340ab594 /packages/backend/src
parentchore: hide thumbnail if website is sensitive (#12581) (diff)
downloadsharkey-e42c91dee77bbbe7bff848aac51ab7ec0cd3fe6e.tar.gz
sharkey-e42c91dee77bbbe7bff848aac51ab7ec0cd3fe6e.tar.bz2
sharkey-e42c91dee77bbbe7bff848aac51ab7ec0cd3fe6e.zip
feat: Roleに関するSchemaを追加 (#12572)
* feat: Roleに関連するschemaを追加 * feat: 新しいRoleSchemaを使うように * chore: misskey.jsのデータを更新 * chore: misskey-js.api.mdを更新
Diffstat (limited to 'packages/backend/src')
-rw-r--r--packages/backend/src/misc/json-schema.ts3
-rw-r--r--packages/backend/src/models/json-schema/role.ts157
-rw-r--r--packages/backend/src/models/json-schema/user.ts36
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/create.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/list.ts10
-rw-r--r--packages/backend/src/server/api/endpoints/admin/roles/show.ts6
-rw-r--r--packages/backend/src/server/api/endpoints/roles/list.ts10
-rw-r--r--packages/backend/src/server/api/endpoints/roles/show.ts6
8 files changed, 199 insertions, 35 deletions
diff --git a/packages/backend/src/misc/json-schema.ts b/packages/backend/src/misc/json-schema.ts
index 7e7fc447c3..49f35b9b74 100644
--- a/packages/backend/src/misc/json-schema.ts
+++ b/packages/backend/src/misc/json-schema.ts
@@ -37,6 +37,7 @@ import { packedEmojiDetailedSchema, packedEmojiSimpleSchema } from '@/models/jso
import { packedFlashSchema } from '@/models/json-schema/flash.js';
import { packedAnnouncementSchema } from '@/models/json-schema/announcement.js';
import { packedSigninSchema } from '@/models/json-schema/signin.js';
+import { packedRoleLiteSchema, packedRoleSchema } from '@/models/json-schema/role.js';
export const refs = {
UserLite: packedUserLiteSchema,
@@ -73,6 +74,8 @@ export const refs = {
EmojiDetailed: packedEmojiDetailedSchema,
Flash: packedFlashSchema,
Signin: packedSigninSchema,
+ RoleLite: packedRoleLiteSchema,
+ Role: packedRoleSchema,
};
export type Packed<x extends keyof typeof refs> = SchemaType<typeof refs[x]>;
diff --git a/packages/backend/src/models/json-schema/role.ts b/packages/backend/src/models/json-schema/role.ts
new file mode 100644
index 0000000000..dd2f32b14d
--- /dev/null
+++ b/packages/backend/src/models/json-schema/role.ts
@@ -0,0 +1,157 @@
+const rolePolicyValue = {
+ type: 'object',
+ properties: {
+ value: {
+ oneOf: [
+ {
+ type: 'integer',
+ optional: false, nullable: false,
+ },
+ {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ ],
+ },
+ priority: {
+ type: 'integer',
+ optional: false, nullable: false,
+ },
+ useDefault: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ },
+ },
+} as const;
+
+export const packedRoleLiteSchema = {
+ type: 'object',
+ properties: {
+ id: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'id',
+ example: 'xxxxxxxxxx',
+ },
+ name: {
+ type: 'string',
+ optional: false, nullable: false,
+ example: 'New Role',
+ },
+ color: {
+ type: 'string',
+ optional: false, nullable: true,
+ example: '#000000',
+ },
+ iconUrl: {
+ type: 'string',
+ optional: false, nullable: true,
+ },
+ description: {
+ type: 'string',
+ optional: false, nullable: false,
+ },
+ isModerator: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ isAdministrator: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ displayOrder: {
+ type: 'integer',
+ optional: false, nullable: false,
+ example: 0,
+ },
+ },
+} as const;
+
+export const packedRoleSchema = {
+ type: 'object',
+ allOf: [
+ {
+ type: 'object',
+ ref: 'RoleLite',
+ },
+ {
+ type: 'object',
+ properties: {
+ createdAt: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'date-time',
+ },
+ updatedAt: {
+ type: 'string',
+ optional: false, nullable: false,
+ format: 'date-time',
+ },
+ target: {
+ type: 'string',
+ optional: false, nullable: false,
+ enum: ['manual', 'conditional'],
+ },
+ condFormula: {
+ type: 'object',
+ optional: false, nullable: false,
+ },
+ isPublic: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ isExplorable: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ asBadge: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ canEditMembersByModerator: {
+ type: 'boolean',
+ optional: false, nullable: false,
+ example: false,
+ },
+ policies: {
+ type: 'object',
+ optional: false, nullable: false,
+ properties: {
+ pinLimit: rolePolicyValue,
+ canInvite: rolePolicyValue,
+ clipLimit: rolePolicyValue,
+ canHideAds: rolePolicyValue,
+ inviteLimit: rolePolicyValue,
+ antennaLimit: rolePolicyValue,
+ gtlAvailable: rolePolicyValue,
+ ltlAvailable: rolePolicyValue,
+ webhookLimit: rolePolicyValue,
+ canPublicNote: rolePolicyValue,
+ userListLimit: rolePolicyValue,
+ wordMuteLimit: rolePolicyValue,
+ alwaysMarkNsfw: rolePolicyValue,
+ canSearchNotes: rolePolicyValue,
+ driveCapacityMb: rolePolicyValue,
+ rateLimitFactor: rolePolicyValue,
+ inviteLimitCycle: rolePolicyValue,
+ noteEachClipsLimit: rolePolicyValue,
+ inviteExpirationTime: rolePolicyValue,
+ canManageCustomEmojis: rolePolicyValue,
+ userEachUserListsLimit: rolePolicyValue,
+ canManageAvatarDecorations: rolePolicyValue,
+ canUseTranslator: rolePolicyValue,
+ },
+ },
+ usersCount: {
+ type: 'integer',
+ optional: false, nullable: false,
+ },
+ },
+ },
+ ],
+} as const;
diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts
index 2621e7e6c0..c6b2707b80 100644
--- a/packages/backend/src/models/json-schema/user.ts
+++ b/packages/backend/src/models/json-schema/user.ts
@@ -329,41 +329,7 @@ export const packedUserDetailedNotMeOnlySchema = {
items: {
type: 'object',
nullable: false, optional: false,
- properties: {
- id: {
- type: 'string',
- nullable: false, optional: false,
- format: 'id',
- },
- name: {
- type: 'string',
- nullable: false, optional: false,
- },
- color: {
- type: 'string',
- nullable: true, optional: false,
- },
- iconUrl: {
- type: 'string',
- nullable: true, optional: false,
- },
- description: {
- type: 'string',
- nullable: false, optional: false,
- },
- isModerator: {
- type: 'boolean',
- nullable: false, optional: false,
- },
- isAdministrator: {
- type: 'boolean',
- nullable: false, optional: false,
- },
- displayOrder: {
- type: 'number',
- nullable: false, optional: false,
- },
- },
+ ref: 'RoleLite',
},
},
memo: {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/create.ts b/packages/backend/src/server/api/endpoints/admin/roles/create.ts
index 8451b1955f..fb53815333 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/create.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/create.ts
@@ -13,6 +13,12 @@ export const meta = {
requireCredential: true,
requireAdmin: true,
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/list.ts b/packages/backend/src/server/api/endpoints/admin/roles/list.ts
index 3ed4b324dc..71b8e44e77 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/list.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/list.ts
@@ -14,6 +14,16 @@ export const meta = {
requireCredential: true,
requireModerator: true,
+
+ res: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/admin/roles/show.ts b/packages/backend/src/server/api/endpoints/admin/roles/show.ts
index 5f0accab6f..1ca952a3f8 100644
--- a/packages/backend/src/server/api/endpoints/admin/roles/show.ts
+++ b/packages/backend/src/server/api/endpoints/admin/roles/show.ts
@@ -23,6 +23,12 @@ export const meta = {
id: '07dc7d34-c0d8-49b7-96c6-db3ce64ee0b3',
},
},
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/roles/list.ts b/packages/backend/src/server/api/endpoints/roles/list.ts
index d1de73ad32..dc2be8e11d 100644
--- a/packages/backend/src/server/api/endpoints/roles/list.ts
+++ b/packages/backend/src/server/api/endpoints/roles/list.ts
@@ -13,6 +13,16 @@ export const meta = {
tags: ['role'],
requireCredential: true,
+
+ res: {
+ type: 'array',
+ optional: false, nullable: false,
+ items: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
+ },
} as const;
export const paramDef = {
diff --git a/packages/backend/src/server/api/endpoints/roles/show.ts b/packages/backend/src/server/api/endpoints/roles/show.ts
index 2afa0e7b7f..6bfe52bb1a 100644
--- a/packages/backend/src/server/api/endpoints/roles/show.ts
+++ b/packages/backend/src/server/api/endpoints/roles/show.ts
@@ -22,6 +22,12 @@ export const meta = {
id: 'de5502bf-009a-4639-86c1-fec349e46dcb',
},
},
+
+ res: {
+ type: 'object',
+ optional: false, nullable: false,
+ ref: 'Role',
+ },
} as const;
export const paramDef = {