This commit is contained in:
tamaina
2023-05-29 16:26:16 +00:00
parent 78558eb666
commit 07bbadbbdc
5 changed files with 117 additions and 91 deletions

View File

@@ -1613,6 +1613,19 @@ export const endpoints = {
res: undefined,
}],
},
'admin/server-info': {
requireCredential: true,
requireModerator: true,
tags: ['admin', 'meta'],
defines: [{
req: undefined,
res: {
$ref: 'https://misskey-hub.net/api/schemas/ServerInfoAdmin',
}
}],
},
} as const satisfies { [x: string]: IEndpointMeta; };
/**

View File

@@ -47,6 +47,10 @@ import {
InstanceMetaSharedSchema,
InstanceMetaAdminSchema,
} from './schemas/instance-meta.js';
import {
ServerInfoSchema,
ServerInfoAdminSchema,
} from './schemas/server-info.js';
import { Error, ApiError } from './schemas/error.js';
import type { JSONSchema7, JSONSchema7Definition, GetDef, GetRefs, GetKeys, UnionToArray } from 'schema-type';
@@ -95,6 +99,8 @@ export const refs = {
AbuseUserReport: packedAbuseUserReportSchema,
InstanceMetaShared: InstanceMetaSharedSchema,
InstanceMetaAdmin: InstanceMetaAdminSchema,
ServerInfo: ServerInfoSchema,
ServerInfoAdmin: ServerInfoAdminSchema,
Error: Error,
ApiError: ApiError,

View File

@@ -0,0 +1,86 @@
import type { JSONSchema7Definition } from 'schema-type';
export const ServerInfoSchema = {
$id: 'https://misskey-hub.net/api/schemas/ServerInfo',
type: 'object',
properties: {
machine: {
type: 'string',
},
cpu: {
type: 'object',
properties: {
model: { type: 'string' },
cores: { type: 'number' },
},
required: ['model', 'cores'],
},
mem: {
type: 'object',
properties: {
total: { type: 'number', format: 'bytes' },
},
required: ['total'],
},
fs: {
type: 'object',
properties: {
total: { type: 'number', format: 'bytes' },
used: { type: 'number', format: 'bytes' },
},
},
},
required: [
'machine',
'cpu',
'mem',
'fs',
],
} as const satisfies JSONSchema7Definition;
export const ServerInfoAdminSchema = {
$id: 'https://misskey-hub.net/api/schemas/ServerInfoAdmin',
allOf: [
{ $ref: 'https://misskey-hub.net/api/schemas/ServerInfo' },
{
type: 'object',
properties: {
os: {
type: 'string',
enum: [
// NodeJS.Platform
'aix',
'android',
'darwin',
'freebsd',
'haiku',
'linux',
'openbsd',
'sunos',
'win32',
'cygwin',
'netbsd',
]
},
node: { type: 'string', examples: ['v14.17.0'] },
psql: { type: 'string' },
redis: { type: 'string' },
net: {
type: 'object',
properties: {
interface: { type: 'string', examples: ['eth0'] },
},
required: ['interface'],
},
},
required: [
'os',
'node',
'psql',
'net',
],
},
],
} as const satisfies JSONSchema7Definition;

View File

@@ -110,6 +110,15 @@ describe('schemas', () => {
test('abuse user report', () => {
type AbuseUserReport = Packed<'AbuseUserReport'>;
});
test('meta', () => {
type MetaShared = Packed<'InstanceMetaShared'>;
//type Meta = Packed<'InstanceMeta'>;
type MetaAdmin = Packed<'InstanceMetaAdmin'>;
});
test('server info', () => {
type ServerInfo = Packed<'ServerInfo'>;
type ServerInfoAdmin = Packed<'ServerInfoAdmin'>;
});
test('error', () => {
type Error = Packed<'Error'>;
type ApiError = Packed<'ApiError'>;