summaryrefslogtreecommitdiff
path: root/packages/backend/src/models/json-schema/user.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/models/json-schema/user.ts')
-rw-r--r--packages/backend/src/models/json-schema/user.ts311
1 files changed, 277 insertions, 34 deletions
diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts
index 37bdcbe281..b0e18db01a 100644
--- a/packages/backend/src/models/json-schema/user.ts
+++ b/packages/backend/src/models/json-schema/user.ts
@@ -49,11 +49,6 @@ export const packedUserLiteSchema = {
nullable: false, optional: false,
format: 'id',
},
- url: {
- type: 'string',
- format: 'url',
- nullable: false, optional: false,
- },
angle: {
type: 'number',
nullable: false, optional: true,
@@ -62,33 +57,83 @@ export const packedUserLiteSchema = {
type: 'boolean',
nullable: false, optional: true,
},
+ url: {
+ type: 'string',
+ format: 'url',
+ nullable: false, optional: false,
+ },
},
},
},
- isAdmin: {
+ isBot: {
type: 'boolean',
nullable: false, optional: true,
- default: false,
},
- isModerator: {
+ isCat: {
type: 'boolean',
nullable: false, optional: true,
- default: false,
},
- isBot: {
- type: 'boolean',
+ instance: {
+ type: 'object',
nullable: false, optional: true,
+ properties: {
+ name: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ softwareName: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ softwareVersion: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ iconUrl: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ faviconUrl: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ themeColor: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ },
},
- isCat: {
- type: 'boolean',
- nullable: false, optional: true,
+ emojis: {
+ type: 'object',
+ nullable: false, optional: false,
},
onlineStatus: {
type: 'string',
- format: 'url',
- nullable: true, optional: false,
+ nullable: false, optional: false,
enum: ['unknown', 'online', 'active', 'offline'],
},
+ badgeRoles: {
+ type: 'array',
+ nullable: false, optional: true,
+ items: {
+ type: 'object',
+ nullable: false, optional: false,
+ properties: {
+ name: {
+ type: 'string',
+ nullable: false, optional: false,
+ },
+ iconUrl: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ displayOrder: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ },
+ },
+ },
},
} as const;
@@ -105,21 +150,18 @@ export const packedUserDetailedNotMeOnlySchema = {
format: 'uri',
nullable: true, optional: false,
},
- movedToUri: {
+ movedTo: {
type: 'string',
format: 'uri',
- nullable: true,
- optional: false,
+ nullable: true, optional: false,
},
alsoKnownAs: {
type: 'array',
- nullable: true,
- optional: false,
+ nullable: true, optional: false,
items: {
type: 'string',
format: 'id',
- nullable: false,
- optional: false,
+ nullable: false, optional: false,
},
},
createdAt: {
@@ -249,6 +291,11 @@ export const packedUserDetailedNotMeOnlySchema = {
type: 'boolean',
nullable: false, optional: false,
},
+ ffVisibility: {
+ type: 'string',
+ nullable: false, optional: false,
+ enum: ['public', 'followers', 'private'],
+ },
twoFactorEnabled: {
type: 'boolean',
nullable: false, optional: false,
@@ -264,6 +311,57 @@ export const packedUserDetailedNotMeOnlySchema = {
nullable: false, optional: false,
default: false,
},
+ roles: {
+ type: 'array',
+ nullable: false, optional: false,
+ 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,
+ },
+ },
+ },
+ },
+ memo: {
+ type: 'string',
+ nullable: true, optional: false,
+ },
+ moderationNote: {
+ type: 'string',
+ nullable: false, optional: true,
+ },
//#region relations
isFollowing: {
type: 'boolean',
@@ -297,10 +395,6 @@ export const packedUserDetailedNotMeOnlySchema = {
type: 'boolean',
nullable: false, optional: true,
},
- memo: {
- type: 'string',
- nullable: false, optional: true,
- },
notify: {
type: 'string',
nullable: false, optional: true,
@@ -326,29 +420,37 @@ export const packedMeDetailedOnlySchema = {
nullable: true, optional: false,
format: 'id',
},
- injectFeaturedNote: {
+ isModerator: {
type: 'boolean',
nullable: true, optional: false,
},
- receiveAnnouncementEmail: {
+ isAdmin: {
type: 'boolean',
nullable: true, optional: false,
},
+ injectFeaturedNote: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ receiveAnnouncementEmail: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
alwaysMarkNsfw: {
type: 'boolean',
- nullable: true, optional: false,
+ nullable: false, optional: false,
},
autoSensitive: {
type: 'boolean',
- nullable: true, optional: false,
+ nullable: false, optional: false,
},
carefulBot: {
type: 'boolean',
- nullable: true, optional: false,
+ nullable: false, optional: false,
},
autoAcceptFollowed: {
type: 'boolean',
- nullable: true, optional: false,
+ nullable: false, optional: false,
},
noCrawle: {
type: 'boolean',
@@ -387,10 +489,23 @@ export const packedMeDetailedOnlySchema = {
type: 'boolean',
nullable: false, optional: false,
},
+ unreadAnnouncements: {
+ type: 'array',
+ nullable: false, optional: false,
+ items: {
+ type: 'object',
+ nullable: false, optional: false,
+ ref: 'Announcement',
+ },
+ },
hasUnreadAntenna: {
type: 'boolean',
nullable: false, optional: false,
},
+ hasUnreadChannel: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
hasUnreadNotification: {
type: 'boolean',
nullable: false, optional: false,
@@ -429,12 +544,132 @@ export const packedMeDetailedOnlySchema = {
},
emailNotificationTypes: {
type: 'array',
- nullable: true, optional: false,
+ nullable: false, optional: false,
items: {
type: 'string',
nullable: false, optional: false,
},
},
+ achievements: {
+ type: 'array',
+ nullable: false, optional: false,
+ items: {
+ type: 'object',
+ nullable: false, optional: false,
+ properties: {
+ name: {
+ type: 'string',
+ nullable: false, optional: false,
+ },
+ unlockedAt: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ },
+ },
+ },
+ loggedInDays: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ policies: {
+ type: 'object',
+ nullable: false, optional: false,
+ properties: {
+ gtlAvailable: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ ltlAvailable: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canPublicNote: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canInvite: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ inviteLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ inviteLimitCycle: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ inviteExpirationTime: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ canManageCustomEmojis: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canManageAvatarDecorations: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canSearchNotes: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canUseTranslator: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ canHideAds: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ driveCapacityMb: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ alwaysMarkNsfw: {
+ type: 'boolean',
+ nullable: false, optional: false,
+ },
+ pinLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ antennaLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ wordMuteLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ webhookLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ clipLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ noteEachClipsLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ userListLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ userEachUserListsLimit: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ rateLimitFactor: {
+ type: 'number',
+ nullable: false, optional: false,
+ },
+ },
+ },
//#region secrets
email: {
type: 'string',
@@ -511,5 +746,13 @@ export const packedUserSchema = {
type: 'object',
ref: 'UserDetailed',
},
+ {
+ type: 'object',
+ ref: 'UserDetailedNotMe',
+ },
+ {
+ type: 'object',
+ ref: 'MeDetailed',
+ },
],
} as const;