@clidey/dory 0.24.0 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/dist/dory.js +41 -3
- package/bin/dist/dory.js.map +1 -1
- package/bin/dory.ts +44 -3
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/src/components/search.tsx +5 -5
- package/src/components/store.ts +1 -1
- package/src/mdx/card.tsx +7 -7
- package/src/mdx/step.tsx +6 -4
- package/src/plugins/docs-assets.ts +79 -0
- package/src/theme.scss +5 -1
- package/src/ui/header.tsx +1 -1
- package/src/ui/table-of-content.tsx +1 -1
- package/src/utils/colors.ts +1 -1
- package/src/utils/fonts.ts +1 -1
- package/vite.config.ts +6 -1
- package/dist/api-playground-demo.mdx +0 -119
- package/dist/api-reference/asyncapi.json +0 -324
- package/dist/api-reference/openapi.json +0 -366
- package/dist/api-reference/operations/create.mdx +0 -5
- package/dist/api-reference/operations/delete.mdx +0 -5
- package/dist/api-reference/operations/get.mdx +0 -5
- package/dist/api-reference/operations/update.mdx +0 -5
- package/dist/api-reference/websocket-operations/receive-chat-message.mdx +0 -5
- package/dist/api-reference/websocket-operations/receive-notifications.mdx +0 -5
- package/dist/api-reference/websocket-operations/receive-presence-update.mdx +0 -5
- package/dist/api-reference/websocket-operations/send-chat-message.mdx +0 -5
- package/dist/api-reference/websocket-operations/send-presence-update.mdx +0 -5
- package/dist/dory.json +0 -64
- package/dist/features.mdx +0 -440
- package/dist/introduction.mdx +0 -44
- package/dist/websocket-playground-demo.mdx +0 -135
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"asyncapi": "3.0.0",
|
|
3
|
-
"info": {
|
|
4
|
-
"title": "Chat WebSocket API",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"description": "Real-time chat API using WebSocket for bidirectional communication"
|
|
7
|
-
},
|
|
8
|
-
"servers": {
|
|
9
|
-
"development": {
|
|
10
|
-
"host": "localhost:8080",
|
|
11
|
-
"pathname": "/ws",
|
|
12
|
-
"protocol": "ws",
|
|
13
|
-
"description": "Development WebSocket server"
|
|
14
|
-
},
|
|
15
|
-
"production": {
|
|
16
|
-
"host": "api.example.com",
|
|
17
|
-
"pathname": "/ws",
|
|
18
|
-
"protocol": "wss",
|
|
19
|
-
"description": "Production WebSocket server"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"channels": {
|
|
23
|
-
"/chat": {
|
|
24
|
-
"address": "/chat",
|
|
25
|
-
"title": "Chat Channel",
|
|
26
|
-
"description": "Channel for sending and receiving chat messages",
|
|
27
|
-
"subscribe": {
|
|
28
|
-
"operationId": "receiveChatMessage",
|
|
29
|
-
"summary": "Receive chat messages",
|
|
30
|
-
"description": "Subscribe to receive chat messages from other users",
|
|
31
|
-
"message": {
|
|
32
|
-
"$ref": "#/components/messages/ChatMessage"
|
|
33
|
-
}
|
|
34
|
-
},
|
|
35
|
-
"publish": {
|
|
36
|
-
"operationId": "sendChatMessage",
|
|
37
|
-
"summary": "Send chat message",
|
|
38
|
-
"description": "Send a chat message to other users",
|
|
39
|
-
"message": {
|
|
40
|
-
"$ref": "#/components/messages/ChatMessage"
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
"/notifications": {
|
|
45
|
-
"address": "/notifications",
|
|
46
|
-
"title": "Notifications Channel",
|
|
47
|
-
"description": "Channel for receiving system notifications",
|
|
48
|
-
"subscribe": {
|
|
49
|
-
"operationId": "receiveNotification",
|
|
50
|
-
"summary": "Receive notifications",
|
|
51
|
-
"description": "Subscribe to receive system notifications",
|
|
52
|
-
"message": {
|
|
53
|
-
"$ref": "#/components/messages/Notification"
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
"/presence": {
|
|
58
|
-
"address": "/presence",
|
|
59
|
-
"title": "Presence Channel",
|
|
60
|
-
"description": "Channel for user presence updates",
|
|
61
|
-
"subscribe": {
|
|
62
|
-
"operationId": "receivePresenceUpdate",
|
|
63
|
-
"summary": "Receive presence updates",
|
|
64
|
-
"description": "Subscribe to receive user presence updates",
|
|
65
|
-
"message": {
|
|
66
|
-
"$ref": "#/components/messages/PresenceUpdate"
|
|
67
|
-
}
|
|
68
|
-
},
|
|
69
|
-
"publish": {
|
|
70
|
-
"operationId": "sendPresenceUpdate",
|
|
71
|
-
"summary": "Send presence update",
|
|
72
|
-
"description": "Send a presence update",
|
|
73
|
-
"message": {
|
|
74
|
-
"$ref": "#/components/messages/PresenceUpdate"
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"components": {
|
|
80
|
-
"messages": {
|
|
81
|
-
"ChatMessage": {
|
|
82
|
-
"name": "ChatMessage",
|
|
83
|
-
"title": "Chat Message",
|
|
84
|
-
"summary": "Message sent in a chat conversation",
|
|
85
|
-
"description": "A message sent by a user in a chat conversation",
|
|
86
|
-
"contentType": "application/json",
|
|
87
|
-
"payload": {
|
|
88
|
-
"$ref": "#/components/schemas/ChatMessagePayload"
|
|
89
|
-
},
|
|
90
|
-
"headers": {
|
|
91
|
-
"$ref": "#/components/schemas/MessageHeaders"
|
|
92
|
-
},
|
|
93
|
-
"examples": [
|
|
94
|
-
{
|
|
95
|
-
"id": "msg_123",
|
|
96
|
-
"type": "message",
|
|
97
|
-
"content": "Hello, how are you?",
|
|
98
|
-
"userId": "user_456",
|
|
99
|
-
"username": "john_doe",
|
|
100
|
-
"timestamp": "2024-01-15T10:30:00Z",
|
|
101
|
-
"channel": "general"
|
|
102
|
-
}
|
|
103
|
-
]
|
|
104
|
-
},
|
|
105
|
-
"Notification": {
|
|
106
|
-
"name": "Notification",
|
|
107
|
-
"title": "System Notification",
|
|
108
|
-
"summary": "System-generated notification",
|
|
109
|
-
"description": "A notification sent by the system to inform users about events",
|
|
110
|
-
"contentType": "application/json",
|
|
111
|
-
"payload": {
|
|
112
|
-
"$ref": "#/components/schemas/NotificationPayload"
|
|
113
|
-
},
|
|
114
|
-
"headers": {
|
|
115
|
-
"$ref": "#/components/schemas/MessageHeaders"
|
|
116
|
-
},
|
|
117
|
-
"examples": [
|
|
118
|
-
{
|
|
119
|
-
"id": "notif_789",
|
|
120
|
-
"type": "notification",
|
|
121
|
-
"title": "New Message",
|
|
122
|
-
"message": "You have a new message from Alice",
|
|
123
|
-
"level": "info",
|
|
124
|
-
"timestamp": "2024-01-15T10:35:00Z",
|
|
125
|
-
"userId": "user_456"
|
|
126
|
-
}
|
|
127
|
-
]
|
|
128
|
-
},
|
|
129
|
-
"PresenceUpdate": {
|
|
130
|
-
"name": "PresenceUpdate",
|
|
131
|
-
"title": "Presence Update",
|
|
132
|
-
"summary": "User presence status update",
|
|
133
|
-
"description": "Update about a user's presence status (online, offline, away)",
|
|
134
|
-
"contentType": "application/json",
|
|
135
|
-
"payload": {
|
|
136
|
-
"$ref": "#/components/schemas/PresenceUpdatePayload"
|
|
137
|
-
},
|
|
138
|
-
"headers": {
|
|
139
|
-
"$ref": "#/components/schemas/MessageHeaders"
|
|
140
|
-
},
|
|
141
|
-
"examples": [
|
|
142
|
-
{
|
|
143
|
-
"id": "presence_101",
|
|
144
|
-
"type": "presence",
|
|
145
|
-
"userId": "user_456",
|
|
146
|
-
"username": "john_doe",
|
|
147
|
-
"status": "online",
|
|
148
|
-
"lastSeen": "2024-01-15T10:40:00Z",
|
|
149
|
-
"timestamp": "2024-01-15T10:40:00Z"
|
|
150
|
-
}
|
|
151
|
-
]
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
"schemas": {
|
|
155
|
-
"ChatMessagePayload": {
|
|
156
|
-
"type": "object",
|
|
157
|
-
"required": ["id", "type", "content", "userId", "username", "timestamp"],
|
|
158
|
-
"properties": {
|
|
159
|
-
"id": {
|
|
160
|
-
"type": "string",
|
|
161
|
-
"description": "Unique identifier for the message",
|
|
162
|
-
"example": "msg_123"
|
|
163
|
-
},
|
|
164
|
-
"type": {
|
|
165
|
-
"type": "string",
|
|
166
|
-
"enum": ["message"],
|
|
167
|
-
"description": "Message type identifier",
|
|
168
|
-
"example": "message"
|
|
169
|
-
},
|
|
170
|
-
"content": {
|
|
171
|
-
"type": "string",
|
|
172
|
-
"description": "The message content",
|
|
173
|
-
"example": "Hello, how are you?"
|
|
174
|
-
},
|
|
175
|
-
"userId": {
|
|
176
|
-
"type": "string",
|
|
177
|
-
"description": "ID of the user who sent the message",
|
|
178
|
-
"example": "user_456"
|
|
179
|
-
},
|
|
180
|
-
"username": {
|
|
181
|
-
"type": "string",
|
|
182
|
-
"description": "Username of the sender",
|
|
183
|
-
"example": "john_doe"
|
|
184
|
-
},
|
|
185
|
-
"timestamp": {
|
|
186
|
-
"type": "string",
|
|
187
|
-
"format": "date-time",
|
|
188
|
-
"description": "When the message was sent",
|
|
189
|
-
"example": "2024-01-15T10:30:00Z"
|
|
190
|
-
},
|
|
191
|
-
"channel": {
|
|
192
|
-
"type": "string",
|
|
193
|
-
"description": "Channel where the message was sent",
|
|
194
|
-
"example": "general"
|
|
195
|
-
},
|
|
196
|
-
"replyTo": {
|
|
197
|
-
"type": "string",
|
|
198
|
-
"description": "ID of the message this is replying to",
|
|
199
|
-
"example": "msg_122"
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
"NotificationPayload": {
|
|
204
|
-
"type": "object",
|
|
205
|
-
"required": ["id", "type", "title", "message", "timestamp"],
|
|
206
|
-
"properties": {
|
|
207
|
-
"id": {
|
|
208
|
-
"type": "string",
|
|
209
|
-
"description": "Unique identifier for the notification",
|
|
210
|
-
"example": "notif_789"
|
|
211
|
-
},
|
|
212
|
-
"type": {
|
|
213
|
-
"type": "string",
|
|
214
|
-
"enum": ["notification"],
|
|
215
|
-
"description": "Message type identifier",
|
|
216
|
-
"example": "notification"
|
|
217
|
-
},
|
|
218
|
-
"title": {
|
|
219
|
-
"type": "string",
|
|
220
|
-
"description": "Notification title",
|
|
221
|
-
"example": "New Message"
|
|
222
|
-
},
|
|
223
|
-
"message": {
|
|
224
|
-
"type": "string",
|
|
225
|
-
"description": "Notification message content",
|
|
226
|
-
"example": "You have a new message from Alice"
|
|
227
|
-
},
|
|
228
|
-
"level": {
|
|
229
|
-
"type": "string",
|
|
230
|
-
"enum": ["info", "warning", "error", "success"],
|
|
231
|
-
"description": "Notification level",
|
|
232
|
-
"example": "info"
|
|
233
|
-
},
|
|
234
|
-
"timestamp": {
|
|
235
|
-
"type": "string",
|
|
236
|
-
"format": "date-time",
|
|
237
|
-
"description": "When the notification was created",
|
|
238
|
-
"example": "2024-01-15T10:35:00Z"
|
|
239
|
-
},
|
|
240
|
-
"userId": {
|
|
241
|
-
"type": "string",
|
|
242
|
-
"description": "ID of the user receiving the notification",
|
|
243
|
-
"example": "user_456"
|
|
244
|
-
},
|
|
245
|
-
"actionUrl": {
|
|
246
|
-
"type": "string",
|
|
247
|
-
"description": "URL to navigate to when notification is clicked",
|
|
248
|
-
"example": "/chat/general"
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
},
|
|
252
|
-
"PresenceUpdatePayload": {
|
|
253
|
-
"type": "object",
|
|
254
|
-
"required": ["id", "type", "userId", "username", "status", "timestamp"],
|
|
255
|
-
"properties": {
|
|
256
|
-
"id": {
|
|
257
|
-
"type": "string",
|
|
258
|
-
"description": "Unique identifier for the presence update",
|
|
259
|
-
"example": "presence_101"
|
|
260
|
-
},
|
|
261
|
-
"type": {
|
|
262
|
-
"type": "string",
|
|
263
|
-
"enum": ["presence"],
|
|
264
|
-
"description": "Message type identifier",
|
|
265
|
-
"example": "presence"
|
|
266
|
-
},
|
|
267
|
-
"userId": {
|
|
268
|
-
"type": "string",
|
|
269
|
-
"description": "ID of the user whose presence is being updated",
|
|
270
|
-
"example": "user_456"
|
|
271
|
-
},
|
|
272
|
-
"username": {
|
|
273
|
-
"type": "string",
|
|
274
|
-
"description": "Username of the user",
|
|
275
|
-
"example": "john_doe"
|
|
276
|
-
},
|
|
277
|
-
"status": {
|
|
278
|
-
"type": "string",
|
|
279
|
-
"enum": ["online", "offline", "away", "busy"],
|
|
280
|
-
"description": "User's presence status",
|
|
281
|
-
"example": "online"
|
|
282
|
-
},
|
|
283
|
-
"lastSeen": {
|
|
284
|
-
"type": "string",
|
|
285
|
-
"format": "date-time",
|
|
286
|
-
"description": "When the user was last seen",
|
|
287
|
-
"example": "2024-01-15T10:40:00Z"
|
|
288
|
-
},
|
|
289
|
-
"timestamp": {
|
|
290
|
-
"type": "string",
|
|
291
|
-
"format": "date-time",
|
|
292
|
-
"description": "When the presence update was sent",
|
|
293
|
-
"example": "2024-01-15T10:40:00Z"
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
},
|
|
297
|
-
"MessageHeaders": {
|
|
298
|
-
"type": "object",
|
|
299
|
-
"properties": {
|
|
300
|
-
"correlation-id": {
|
|
301
|
-
"type": "string",
|
|
302
|
-
"description": "Correlation ID for request tracking",
|
|
303
|
-
"example": "corr_123"
|
|
304
|
-
},
|
|
305
|
-
"user-id": {
|
|
306
|
-
"type": "string",
|
|
307
|
-
"description": "ID of the user sending the message",
|
|
308
|
-
"example": "user_456"
|
|
309
|
-
},
|
|
310
|
-
"session-id": {
|
|
311
|
-
"type": "string",
|
|
312
|
-
"description": "Session ID for the connection",
|
|
313
|
-
"example": "sess_789"
|
|
314
|
-
},
|
|
315
|
-
"client-version": {
|
|
316
|
-
"type": "string",
|
|
317
|
-
"description": "Version of the client application",
|
|
318
|
-
"example": "1.0.0"
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
}
|
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"openapi": "3.0.0",
|
|
3
|
-
"info": {
|
|
4
|
-
"title": "Products API",
|
|
5
|
-
"version": "1.0.0",
|
|
6
|
-
"description": "API for managing products"
|
|
7
|
-
},
|
|
8
|
-
"servers": [
|
|
9
|
-
{
|
|
10
|
-
"url": "https://api.example.com/v1",
|
|
11
|
-
"description": "Production server"
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"components": {
|
|
15
|
-
"securitySchemes": {
|
|
16
|
-
"ApiKeyAuth": {
|
|
17
|
-
"type": "apiKey",
|
|
18
|
-
"in": "header",
|
|
19
|
-
"name": "X-API-Key"
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"schemas": {
|
|
23
|
-
"Product": {
|
|
24
|
-
"type": "object",
|
|
25
|
-
"required": ["name", "price", "category"],
|
|
26
|
-
"properties": {
|
|
27
|
-
"id": {
|
|
28
|
-
"type": "string",
|
|
29
|
-
"format": "uuid",
|
|
30
|
-
"description": "Unique identifier for the product"
|
|
31
|
-
},
|
|
32
|
-
"name": {
|
|
33
|
-
"type": "string",
|
|
34
|
-
"description": "Name of the product"
|
|
35
|
-
},
|
|
36
|
-
"description": {
|
|
37
|
-
"type": "string",
|
|
38
|
-
"description": "Detailed description of the product"
|
|
39
|
-
},
|
|
40
|
-
"price": {
|
|
41
|
-
"type": "number",
|
|
42
|
-
"format": "float",
|
|
43
|
-
"minimum": 0,
|
|
44
|
-
"description": "Price of the product"
|
|
45
|
-
},
|
|
46
|
-
"category": {
|
|
47
|
-
"type": "string",
|
|
48
|
-
"description": "Category of the product"
|
|
49
|
-
},
|
|
50
|
-
"inStock": {
|
|
51
|
-
"type": "boolean",
|
|
52
|
-
"default": true,
|
|
53
|
-
"description": "Whether the product is in stock"
|
|
54
|
-
},
|
|
55
|
-
"createdAt": {
|
|
56
|
-
"type": "string",
|
|
57
|
-
"format": "date-time",
|
|
58
|
-
"description": "Creation timestamp"
|
|
59
|
-
},
|
|
60
|
-
"updatedAt": {
|
|
61
|
-
"type": "string",
|
|
62
|
-
"format": "date-time",
|
|
63
|
-
"description": "Last update timestamp"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
"Error": {
|
|
68
|
-
"type": "object",
|
|
69
|
-
"properties": {
|
|
70
|
-
"code": {
|
|
71
|
-
"type": "string",
|
|
72
|
-
"description": "Error code"
|
|
73
|
-
},
|
|
74
|
-
"message": {
|
|
75
|
-
"type": "string",
|
|
76
|
-
"description": "Error message"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"paths": {
|
|
83
|
-
"/products": {
|
|
84
|
-
"get": {
|
|
85
|
-
"summary": "List all products",
|
|
86
|
-
"description": "Retrieve a paginated list of products",
|
|
87
|
-
"security": [
|
|
88
|
-
{
|
|
89
|
-
"ApiKeyAuth": []
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
"parameters": [
|
|
93
|
-
{
|
|
94
|
-
"name": "page",
|
|
95
|
-
"in": "query",
|
|
96
|
-
"description": "Page number",
|
|
97
|
-
"required": false,
|
|
98
|
-
"schema": {
|
|
99
|
-
"type": "integer",
|
|
100
|
-
"default": 1,
|
|
101
|
-
"minimum": 1
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"name": "limit",
|
|
106
|
-
"in": "query",
|
|
107
|
-
"description": "Number of items per page",
|
|
108
|
-
"required": false,
|
|
109
|
-
"schema": {
|
|
110
|
-
"type": "integer",
|
|
111
|
-
"default": 10,
|
|
112
|
-
"minimum": 1,
|
|
113
|
-
"maximum": 100
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
"name": "category",
|
|
118
|
-
"in": "query",
|
|
119
|
-
"description": "Filter by category",
|
|
120
|
-
"required": false,
|
|
121
|
-
"schema": {
|
|
122
|
-
"type": "string"
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
],
|
|
126
|
-
"responses": {
|
|
127
|
-
"200": {
|
|
128
|
-
"description": "Successful response",
|
|
129
|
-
"content": {
|
|
130
|
-
"application/json": {
|
|
131
|
-
"schema": {
|
|
132
|
-
"type": "object",
|
|
133
|
-
"properties": {
|
|
134
|
-
"data": {
|
|
135
|
-
"type": "array",
|
|
136
|
-
"items": {
|
|
137
|
-
"$ref": "#/components/schemas/Product"
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
"total": {
|
|
141
|
-
"type": "integer"
|
|
142
|
-
},
|
|
143
|
-
"page": {
|
|
144
|
-
"type": "integer"
|
|
145
|
-
},
|
|
146
|
-
"limit": {
|
|
147
|
-
"type": "integer"
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
"401": {
|
|
155
|
-
"description": "Unauthorized",
|
|
156
|
-
"content": {
|
|
157
|
-
"application/json": {
|
|
158
|
-
"schema": {
|
|
159
|
-
"$ref": "#/components/schemas/Error"
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
},
|
|
166
|
-
"post": {
|
|
167
|
-
"summary": "Create a new product",
|
|
168
|
-
"description": "Create a new product with the provided details",
|
|
169
|
-
"security": [
|
|
170
|
-
{
|
|
171
|
-
"ApiKeyAuth": []
|
|
172
|
-
}
|
|
173
|
-
],
|
|
174
|
-
"requestBody": {
|
|
175
|
-
"required": true,
|
|
176
|
-
"content": {
|
|
177
|
-
"application/json": {
|
|
178
|
-
"schema": {
|
|
179
|
-
"type": "object",
|
|
180
|
-
"required": ["name", "price", "category"],
|
|
181
|
-
"properties": {
|
|
182
|
-
"name": {
|
|
183
|
-
"type": "string"
|
|
184
|
-
},
|
|
185
|
-
"description": {
|
|
186
|
-
"type": "string"
|
|
187
|
-
},
|
|
188
|
-
"price": {
|
|
189
|
-
"type": "number",
|
|
190
|
-
"minimum": 0
|
|
191
|
-
},
|
|
192
|
-
"category": {
|
|
193
|
-
"type": "string"
|
|
194
|
-
},
|
|
195
|
-
"inStock": {
|
|
196
|
-
"type": "boolean"
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
},
|
|
203
|
-
"responses": {
|
|
204
|
-
"201": {
|
|
205
|
-
"description": "Product created successfully",
|
|
206
|
-
"content": {
|
|
207
|
-
"application/json": {
|
|
208
|
-
"schema": {
|
|
209
|
-
"$ref": "#/components/schemas/Product"
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
},
|
|
214
|
-
"400": {
|
|
215
|
-
"description": "Invalid input",
|
|
216
|
-
"content": {
|
|
217
|
-
"application/json": {
|
|
218
|
-
"schema": {
|
|
219
|
-
"$ref": "#/components/schemas/Error"
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
},
|
|
224
|
-
"401": {
|
|
225
|
-
"description": "Unauthorized",
|
|
226
|
-
"content": {
|
|
227
|
-
"application/json": {
|
|
228
|
-
"schema": {
|
|
229
|
-
"$ref": "#/components/schemas/Error"
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
},
|
|
237
|
-
"/products/{id}": {
|
|
238
|
-
"parameters": [
|
|
239
|
-
{
|
|
240
|
-
"name": "id",
|
|
241
|
-
"in": "path",
|
|
242
|
-
"required": true,
|
|
243
|
-
"schema": {
|
|
244
|
-
"type": "string",
|
|
245
|
-
"format": "uuid"
|
|
246
|
-
},
|
|
247
|
-
"description": "Product ID"
|
|
248
|
-
}
|
|
249
|
-
],
|
|
250
|
-
"get": {
|
|
251
|
-
"summary": "Get product by ID",
|
|
252
|
-
"description": "Retrieve a specific product by its ID",
|
|
253
|
-
"security": [
|
|
254
|
-
{
|
|
255
|
-
"ApiKeyAuth": []
|
|
256
|
-
}
|
|
257
|
-
],
|
|
258
|
-
"responses": {
|
|
259
|
-
"200": {
|
|
260
|
-
"description": "Successful response",
|
|
261
|
-
"content": {
|
|
262
|
-
"application/json": {
|
|
263
|
-
"schema": {
|
|
264
|
-
"$ref": "#/components/schemas/Product"
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
},
|
|
269
|
-
"404": {
|
|
270
|
-
"description": "Product not found",
|
|
271
|
-
"content": {
|
|
272
|
-
"application/json": {
|
|
273
|
-
"schema": {
|
|
274
|
-
"$ref": "#/components/schemas/Error"
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
},
|
|
281
|
-
"put": {
|
|
282
|
-
"summary": "Update product",
|
|
283
|
-
"description": "Update an existing product by its ID",
|
|
284
|
-
"security": [
|
|
285
|
-
{
|
|
286
|
-
"ApiKeyAuth": []
|
|
287
|
-
}
|
|
288
|
-
],
|
|
289
|
-
"requestBody": {
|
|
290
|
-
"required": true,
|
|
291
|
-
"content": {
|
|
292
|
-
"application/json": {
|
|
293
|
-
"schema": {
|
|
294
|
-
"type": "object",
|
|
295
|
-
"properties": {
|
|
296
|
-
"name": {
|
|
297
|
-
"type": "string"
|
|
298
|
-
},
|
|
299
|
-
"description": {
|
|
300
|
-
"type": "string"
|
|
301
|
-
},
|
|
302
|
-
"price": {
|
|
303
|
-
"type": "number",
|
|
304
|
-
"minimum": 0
|
|
305
|
-
},
|
|
306
|
-
"category": {
|
|
307
|
-
"type": "string"
|
|
308
|
-
},
|
|
309
|
-
"inStock": {
|
|
310
|
-
"type": "boolean"
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
},
|
|
317
|
-
"responses": {
|
|
318
|
-
"200": {
|
|
319
|
-
"description": "Product updated successfully",
|
|
320
|
-
"content": {
|
|
321
|
-
"application/json": {
|
|
322
|
-
"schema": {
|
|
323
|
-
"$ref": "#/components/schemas/Product"
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
},
|
|
328
|
-
"404": {
|
|
329
|
-
"description": "Product not found",
|
|
330
|
-
"content": {
|
|
331
|
-
"application/json": {
|
|
332
|
-
"schema": {
|
|
333
|
-
"$ref": "#/components/schemas/Error"
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
},
|
|
340
|
-
"delete": {
|
|
341
|
-
"summary": "Delete product",
|
|
342
|
-
"description": "Delete a product by its ID",
|
|
343
|
-
"security": [
|
|
344
|
-
{
|
|
345
|
-
"ApiKeyAuth": []
|
|
346
|
-
}
|
|
347
|
-
],
|
|
348
|
-
"responses": {
|
|
349
|
-
"204": {
|
|
350
|
-
"description": "Product deleted successfully"
|
|
351
|
-
},
|
|
352
|
-
"404": {
|
|
353
|
-
"description": "Product not found",
|
|
354
|
-
"content": {
|
|
355
|
-
"application/json": {
|
|
356
|
-
"schema": {
|
|
357
|
-
"$ref": "#/components/schemas/Error"
|
|
358
|
-
}
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
}
|