docs: improve doucmentation
improve doucmentation and fix small store changes
This commit is contained in:
@@ -5,6 +5,15 @@ export interface OpenApiBuildOptions {
|
||||
|
||||
export function buildOpenApiDocument(options: OpenApiBuildOptions): unknown {
|
||||
const { baseUrl, appVersion } = options;
|
||||
const roomIdPathParameter = { name: 'roomId', in: 'path', required: true, schema: { type: 'string' } };
|
||||
const userIdPathParameter = { name: 'userId', in: 'path', required: true, schema: { type: 'string' } };
|
||||
const messageIdPathParameter = { name: 'messageId', in: 'path', required: true, schema: { type: 'string' } };
|
||||
const sinceTimestampQueryParameter = {
|
||||
name: 'sinceTimestamp',
|
||||
in: 'query',
|
||||
required: true,
|
||||
schema: { type: 'integer', minimum: 0, format: 'int64' }
|
||||
};
|
||||
|
||||
return {
|
||||
openapi: '3.1.0',
|
||||
@@ -96,6 +105,19 @@ export function buildOpenApiDocument(options: OpenApiBuildOptions): unknown {
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
User: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
oderId: { type: 'string' },
|
||||
username: { type: 'string' },
|
||||
displayName: { type: 'string' },
|
||||
status: { type: 'string' },
|
||||
role: { type: 'string' },
|
||||
isOnline: { type: 'boolean' }
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
Message: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
@@ -110,6 +132,59 @@ export function buildOpenApiDocument(options: OpenApiBuildOptions): unknown {
|
||||
isDeleted: { type: 'boolean' }
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
Reaction: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
messageId: { type: 'string' },
|
||||
userId: { type: 'string' },
|
||||
oderId: { type: 'string' },
|
||||
emoji: { type: 'string' },
|
||||
timestamp: { type: 'integer', format: 'int64' }
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
Attachment: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string' },
|
||||
messageId: { type: 'string' },
|
||||
filename: { type: 'string' },
|
||||
size: { type: 'integer' },
|
||||
mime: { type: 'string' },
|
||||
isImage: { type: 'boolean' },
|
||||
filePath: { type: 'string' },
|
||||
savedPath: { type: 'string' }
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
Ban: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
oderId: { type: 'string' },
|
||||
roomId: { type: 'string' },
|
||||
userId: { type: 'string' },
|
||||
bannedBy: { type: 'string' },
|
||||
displayName: { type: 'string' },
|
||||
reason: { type: 'string' },
|
||||
expiresAt: { type: 'integer', format: 'int64' },
|
||||
timestamp: { type: 'integer', format: 'int64' }
|
||||
},
|
||||
additionalProperties: true
|
||||
},
|
||||
PluginDataValue: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
value: {}
|
||||
}
|
||||
},
|
||||
MetaValue: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
key: { type: 'string' },
|
||||
value: { type: ['string', 'null'] }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -225,11 +300,47 @@ export function buildOpenApiDocument(options: OpenApiBuildOptions): unknown {
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}': {
|
||||
get: {
|
||||
summary: 'Get a room by id',
|
||||
parameters: [roomIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Room details',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/Room' }
|
||||
}
|
||||
}
|
||||
},
|
||||
'404': {
|
||||
description: 'Room not found',
|
||||
content: { 'application/json': { schema: { $ref: '#/components/schemas/Error' } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}/users': {
|
||||
get: {
|
||||
summary: 'List users known for a room',
|
||||
parameters: [roomIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Users array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/User' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}/messages': {
|
||||
get: {
|
||||
summary: 'List messages for a room',
|
||||
parameters: [
|
||||
{ name: 'roomId', in: 'path', required: true, schema: { type: 'string' } },
|
||||
roomIdPathParameter,
|
||||
{ name: 'limit', in: 'query', required: false, schema: { type: 'integer', minimum: 1, maximum: 500 } },
|
||||
{ name: 'offset', in: 'query', required: false, schema: { type: 'integer', minimum: 0 } }
|
||||
],
|
||||
@@ -247,6 +358,182 @@ export function buildOpenApiDocument(options: OpenApiBuildOptions): unknown {
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}/messages/since': {
|
||||
get: {
|
||||
summary: 'List room messages after a timestamp',
|
||||
parameters: [roomIdPathParameter, sinceTimestampQueryParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Messages array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/Message' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}/bans': {
|
||||
get: {
|
||||
summary: 'List active bans for a room',
|
||||
parameters: [roomIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Bans array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/Ban' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/rooms/{roomId}/bans/{userId}': {
|
||||
get: {
|
||||
summary: 'Check whether a user is banned in a room',
|
||||
parameters: [roomIdPathParameter, userIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Ban status',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: {
|
||||
type: 'object',
|
||||
required: ['isBanned'],
|
||||
properties: { isBanned: { type: 'boolean' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/messages/{messageId}': {
|
||||
get: {
|
||||
summary: 'Get a message by id',
|
||||
parameters: [messageIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Message details',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/Message' }
|
||||
}
|
||||
}
|
||||
},
|
||||
'404': {
|
||||
description: 'Message not found',
|
||||
content: { 'application/json': { schema: { $ref: '#/components/schemas/Error' } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/messages/{messageId}/reactions': {
|
||||
get: {
|
||||
summary: 'List reactions for a message',
|
||||
parameters: [messageIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Reactions array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/Reaction' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/messages/{messageId}/attachments': {
|
||||
get: {
|
||||
summary: 'List attachments for a message',
|
||||
parameters: [messageIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Attachments array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/Attachment' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/users/{userId}': {
|
||||
get: {
|
||||
summary: 'Get a user by id',
|
||||
parameters: [userIdPathParameter],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'User details',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/User' }
|
||||
}
|
||||
}
|
||||
},
|
||||
'404': {
|
||||
description: 'User not found',
|
||||
content: { 'application/json': { schema: { $ref: '#/components/schemas/Error' } } }
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/attachments': {
|
||||
get: {
|
||||
summary: 'List all attachments stored on this device',
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Attachments array',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { type: 'array', items: { $ref: '#/components/schemas/Attachment' } }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/plugin-data': {
|
||||
get: {
|
||||
summary: 'Read a plugin data value',
|
||||
parameters: [
|
||||
{ name: 'pluginId', in: 'query', required: true, schema: { type: 'string' } },
|
||||
{ name: 'key', in: 'query', required: true, schema: { type: 'string' } },
|
||||
{ name: 'scope', in: 'query', required: true, schema: { type: 'string', enum: ['local', 'server'] } },
|
||||
{ name: 'serverId', in: 'query', required: false, schema: { type: 'string' } }
|
||||
],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Plugin data value',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/PluginDataValue' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
'/api/meta/{key}': {
|
||||
get: {
|
||||
summary: 'Read a desktop metadata value',
|
||||
parameters: [{ name: 'key', in: 'path', required: true, schema: { type: 'string' } }],
|
||||
responses: {
|
||||
'200': {
|
||||
description: 'Metadata value',
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: { $ref: '#/components/schemas/MetaValue' }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user