Skip to content

Commit 5ec80d0

Browse files
committed
Refactor API schema to remove 'id' from required fields and adjust parameter handling for arrays
1 parent b13ef65 commit 5ec80d0

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

index.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
6161
],
6262
'tags': [],
6363
};
64-
const requiredSchema = ['method', 'id', 'jsonrpc'];
64+
const requiredSchema = ['method', 'jsonrpc'];
6565
prepare: for (const module of documents) {
6666
let isJsonRpc = false;
6767

@@ -121,7 +121,6 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
121121
default: apiName,
122122
description: `API method ${apiName}`,
123123
},
124-
// todo делать разграничение для notification request (без id)
125124
id: {
126125
type: 'integer',
127126
default: 1,
@@ -155,7 +154,23 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
155154
if (parameter.type.names[0] === 'object') {
156155
return accumulator;
157156
}
158-
const [type] = parameter.type.names;
157+
let [type] = parameter.type.names;
158+
let items;
159+
switch (type) {
160+
case 'Array.<string>': {
161+
type = 'array';
162+
items = { type: 'number' };
163+
break;
164+
}
165+
case 'Array.<number>': {
166+
type = 'array';
167+
items = { type: 'string' };
168+
break;
169+
}
170+
default: {
171+
break;
172+
}
173+
}
159174
const description = parameter.description;
160175
let name;
161176
try {
@@ -171,6 +186,7 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
171186
[name]: {
172187
type,
173188
description,
189+
items,
174190
},
175191
};
176192
return accumulator;
@@ -179,12 +195,11 @@ async function openapiJsonrpcJsdoc({ files, securitySchemes = {}, packageUrl, se
179195
title: 'Parameters',
180196
type: 'object',
181197
'default': exampleJSON,
182-
required: requiredSchema,
198+
required: [],
183199
properties: {},
184200
},
185201
);
186202
const schemaPostJsdoc = schema.post.requestBody.content['application/json'].schema;
187-
schemaPostJsdoc.required.push('params');
188203
schemaPostJsdoc.properties.params = propertiesParameters;
189204
}
190205
temporaryDocument.paths[`${api}${apiName}`] = schema;

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "openapi-jsonrpc-jsdoc",
3-
"version": "1.2.1",
3+
"version": "1.2.2",
44
"description": "Transform JSDoc-annotated JSON-RPC 2.0 methods into OpenAPI 3.0 specifications. Auto-generates REST API documentation with complete schemas, parameters, and endpoint definitions.",
55
"main": "index.js",
66
"scripts": {

test/api/v1.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* @param {object} parameters - params
55
* @param {string} parameters.id - id
66
* @param {string} [parameters.test] - test
7+
* @param {string[]} parameters.array - array
78
* @tags api, api-v1, api
89
* @example
910
* {

test/index.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ test('t1', t => {
6464
t.true(Array.isArray(v1Test.post.parameters));
6565
const v1RequestBodySchema = v1Test.post.requestBody.content['application/json'].schema;
6666
t.is(v1RequestBodySchema.type, 'object');
67-
t.true(v1RequestBodySchema.required.includes('id'));
67+
t.true(v1RequestBodySchema.required.includes('method'));
6868
});
6969

7070
test('t2', t => {

0 commit comments

Comments
 (0)