Skip to content

Commit 53e576f

Browse files
committed
feat: added response and request bodies
1 parent f48bef0 commit 53e576f

20 files changed

Lines changed: 942 additions & 481 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
node_modules
22
dist
33
coverage
4+
tmp

__tests__/example.json

Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
{
2+
"openapi": "3.1.0",
3+
"info": {
4+
"title": "Example REST API",
5+
"version": "1.0.0"
6+
},
7+
"components": {
8+
"schemas": {
9+
"Address": {
10+
"type": "object",
11+
"required": [
12+
"name"
13+
],
14+
"additionalProperties": false,
15+
"properties": {
16+
"postcode": {
17+
"type": "integer",
18+
"format": "int32",
19+
"minimum": 1000,
20+
"maximum": 9999
21+
}
22+
}
23+
},
24+
"Id": {
25+
"type": "string"
26+
},
27+
"User": {
28+
"type": "object",
29+
"required": [
30+
"name"
31+
],
32+
"additionalProperties": false,
33+
"properties": {
34+
"name": {
35+
"type": "string"
36+
},
37+
"address": {
38+
"type": "object",
39+
"required": [
40+
"name"
41+
],
42+
"additionalProperties": false,
43+
"properties": {
44+
"postcode": {
45+
"type": "integer",
46+
"format": "int32",
47+
"minimum": 1000,
48+
"maximum": 9999
49+
}
50+
}
51+
},
52+
"age": {
53+
"type": "integer",
54+
"format": "int32",
55+
"minimum": 0
56+
}
57+
}
58+
},
59+
"UpdateUserRequest": {
60+
"type": "object",
61+
"required": [
62+
"name"
63+
],
64+
"additionalProperties": false,
65+
"properties": {
66+
"name": {
67+
"type": "string"
68+
},
69+
"address": {
70+
"type": "object",
71+
"required": [
72+
"name"
73+
],
74+
"additionalProperties": false,
75+
"properties": {
76+
"postcode": {
77+
"type": "integer",
78+
"format": "int32",
79+
"minimum": 1000,
80+
"maximum": 9999
81+
}
82+
}
83+
},
84+
"age": {
85+
"type": "integer",
86+
"format": "int32",
87+
"minimum": 0
88+
}
89+
}
90+
},
91+
"Users": {
92+
"type": "array",
93+
"uniqueItems": true,
94+
"items": {
95+
"type": "object",
96+
"required": [
97+
"name"
98+
],
99+
"additionalProperties": false,
100+
"properties": {
101+
"name": {
102+
"type": "string"
103+
},
104+
"address": {
105+
"type": "object",
106+
"required": [
107+
"name"
108+
],
109+
"additionalProperties": false,
110+
"properties": {
111+
"postcode": {
112+
"type": "integer",
113+
"format": "int32",
114+
"minimum": 1000,
115+
"maximum": 9999
116+
}
117+
}
118+
},
119+
"age": {
120+
"type": "integer",
121+
"format": "int32",
122+
"minimum": 0
123+
}
124+
}
125+
}
126+
}
127+
},
128+
"parameters": {
129+
"UserId": {
130+
"name": "userId",
131+
"in": "path",
132+
"required": true,
133+
"schema": {
134+
"type": "string"
135+
}
136+
}
137+
},
138+
"securitySchemes": {
139+
"HttpBearerJwtScheme": {
140+
"type": "http",
141+
"scheme": "bearer",
142+
"bearerFormat": "JWT"
143+
}
144+
}
145+
},
146+
"paths": {
147+
"/users": {
148+
"get": {
149+
"operationId": "listUsers",
150+
"tags": [
151+
"user"
152+
],
153+
"responses": {
154+
"200": {
155+
"description": "User 200 response",
156+
"content": {
157+
"application/json": {
158+
"schema": {
159+
"$ref": "#/components/schemas/Users"
160+
}
161+
}
162+
}
163+
}
164+
}
165+
}
166+
},
167+
"/users/{userId}": {
168+
"get": {
169+
"operationId": "getUserByIdCommand",
170+
"tags": [
171+
"user"
172+
],
173+
"responses": {
174+
"200": {
175+
"description": "User 200 response",
176+
"content": {
177+
"application/json": {
178+
"schema": {
179+
"$ref": "#/components/schemas/User"
180+
}
181+
}
182+
}
183+
}
184+
}
185+
},
186+
"delete": {
187+
"operationId": "deleteUserByIdCommand",
188+
"security": [
189+
{
190+
"HttpBearerJwtScheme": [
191+
"users.delete"
192+
]
193+
}
194+
],
195+
"tags": [
196+
"user"
197+
]
198+
},
199+
"head": {
200+
"operationId": "checkUserIdAvailableCommand",
201+
"security": [
202+
{}
203+
],
204+
"tags": [
205+
"user"
206+
]
207+
},
208+
"post": {
209+
"operationId": "updateUserCommand",
210+
"tags": [
211+
"user"
212+
],
213+
"requestBody": {
214+
"description": "postRequestBody",
215+
"content": {
216+
"application/json": {
217+
"schema": {
218+
"$ref": "#/components/schemas/UpdateUserRequest"
219+
}
220+
}
221+
}
222+
},
223+
"responses": {
224+
"200": {
225+
"description": "",
226+
"content": {
227+
"application/json": {
228+
"schema": {
229+
"$ref": "#/components/schemas/User"
230+
}
231+
}
232+
}
233+
}
234+
}
235+
},
236+
"parameters": [
237+
{
238+
"$ref": "#/components/parameters/UserId"
239+
}
240+
]
241+
}
242+
},
243+
"security": [
244+
{
245+
"HttpBearerJwtScheme": []
246+
},
247+
{
248+
"HttpBearerJwtScheme": [
249+
"users.delete"
250+
]
251+
},
252+
{}
253+
]
254+
}

__tests__/example.yaml

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
openapi: 3.1.0
2+
info:
3+
title: Example REST API
4+
version: 1.0.0
5+
components:
6+
schemas:
7+
Address:
8+
&a1
9+
type: object
10+
required:
11+
- name
12+
additionalProperties: false
13+
properties:
14+
postcode:
15+
type: integer
16+
format: int32
17+
minimum: 1000
18+
maximum: 9999
19+
Id:
20+
&a3
21+
type: string
22+
User:
23+
&a2
24+
type: object
25+
required:
26+
- name
27+
additionalProperties: false
28+
properties:
29+
name:
30+
type: string
31+
address: *a1
32+
age:
33+
type: integer
34+
format: int32
35+
minimum: 0
36+
UpdateUserRequest:
37+
type: object
38+
required:
39+
- name
40+
additionalProperties: false
41+
properties:
42+
name:
43+
type: string
44+
address: *a1
45+
age:
46+
type: integer
47+
format: int32
48+
minimum: 0
49+
Users:
50+
type: array
51+
uniqueItems: true
52+
items: *a2
53+
parameters:
54+
UserId:
55+
name: userId
56+
in: path
57+
required: true
58+
schema: *a3
59+
securitySchemes:
60+
HttpBearerJwtScheme:
61+
type: http
62+
scheme: bearer
63+
bearerFormat: JWT
64+
paths:
65+
/users:
66+
get:
67+
operationId: listUsers
68+
tags:
69+
- user
70+
responses:
71+
"200":
72+
description: User 200 response
73+
content:
74+
application/json:
75+
schema:
76+
$ref: "#/components/schemas/Users"
77+
"/users/{userId}":
78+
get:
79+
operationId: getUserByIdCommand
80+
tags:
81+
- user
82+
responses:
83+
"200":
84+
description: User 200 response
85+
content:
86+
application/json:
87+
schema:
88+
$ref: "#/components/schemas/User"
89+
delete:
90+
operationId: deleteUserByIdCommand
91+
security:
92+
- HttpBearerJwtScheme:
93+
&a4
94+
- users.delete
95+
tags:
96+
- user
97+
head:
98+
operationId: checkUserIdAvailableCommand
99+
security:
100+
- {}
101+
tags:
102+
- user
103+
post:
104+
operationId: updateUserCommand
105+
tags:
106+
- user
107+
requestBody:
108+
description: postRequestBody
109+
content:
110+
application/json:
111+
schema:
112+
$ref: "#/components/schemas/UpdateUserRequest"
113+
responses:
114+
"200":
115+
description: ""
116+
content:
117+
application/json:
118+
schema:
119+
$ref: "#/components/schemas/User"
120+
parameters:
121+
- $ref: "#/components/parameters/UserId"
122+
security:
123+
- HttpBearerJwtScheme: []
124+
- HttpBearerJwtScheme: *a4
125+
- {}

0 commit comments

Comments
 (0)