diff options
Diffstat (limited to 'packages/backend/src/server/api/endpoints.ts')
| -rw-r--r-- | packages/backend/src/server/api/endpoints.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts index e458d720ab..41232091c6 100644 --- a/packages/backend/src/server/api/endpoints.ts +++ b/packages/backend/src/server/api/endpoints.ts @@ -4,6 +4,7 @@ */ import type { Schema } from '@/misc/json-schema.js'; +import { permissions } from 'misskey-js'; import { RolePolicies } from '@/core/RoleService.js'; import * as ep___admin_meta from './endpoints/admin/meta.js'; @@ -724,7 +725,7 @@ const eps = [ ['retention', ep___retention], ]; -export interface IEndpointMeta { +interface IEndpointMetaBase { readonly stability?: 'deprecated' | 'experimental' | 'stable'; readonly tags?: ReadonlyArray<string>; @@ -823,6 +824,23 @@ export interface IEndpointMeta { readonly cacheSec?: number; } +export type IEndpointMeta = (Omit<IEndpointMetaBase, 'requireCrential' | 'requireModerator' | 'requireAdmin'> & { + requireCredential?: false, + requireAdmin?: false, + requireModerator?: false, +}) | (Omit<IEndpointMetaBase, 'secure'> & { + secure: true, +}) | (Omit<IEndpointMetaBase, 'requireCredential' | 'kind'> & { + requireCredential: true, + kind: (typeof permissions)[number], +}) | (Omit<IEndpointMetaBase, 'requireModerator' | 'kind'> & { + requireModerator: true, + kind: (typeof permissions)[number], +}) | (Omit<IEndpointMetaBase, 'requireAdmin' | 'kind'> & { + requireAdmin: true, + kind: (typeof permissions)[number], +}) + export interface IEndpoint { name: string; meta: IEndpointMeta; |