db-model-router 1.0.5 → 1.0.7

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.
Files changed (136) hide show
  1. package/README.md +150 -11
  2. package/TODO.md +0 -14
  3. package/db-manager/.dbmanager.sqlite +0 -0
  4. package/db-manager/README.md +223 -0
  5. package/db-manager/adapter-proxy.js +361 -0
  6. package/db-manager/demo/cockroachdb.env +6 -0
  7. package/db-manager/demo/demo.sqlite +0 -0
  8. package/db-manager/demo/dynamodb.env +7 -0
  9. package/db-manager/demo/mongodb.env +4 -0
  10. package/db-manager/demo/mssql.env +6 -0
  11. package/db-manager/demo/mysql.env +6 -0
  12. package/db-manager/demo/oracle.env +6 -0
  13. package/db-manager/demo/postgres.env +6 -0
  14. package/db-manager/demo/redis.env +4 -0
  15. package/db-manager/demo/seeds/cockroachdb.sql +32 -0
  16. package/db-manager/demo/seeds/mssql.sql +32 -0
  17. package/db-manager/demo/seeds/mysql.sql +32 -0
  18. package/db-manager/demo/seeds/oracle.sql +43 -0
  19. package/db-manager/demo/seeds/postgres.sql +32 -0
  20. package/db-manager/demo/seeds/sqlite3.sql +32 -0
  21. package/db-manager/demo/sqlite3.env +2 -0
  22. package/db-manager/metadata-db.js +170 -0
  23. package/db-manager/public/.gitkeep +1 -0
  24. package/db-manager/public/css/style.css +1413 -0
  25. package/db-manager/public/js/app.js +1370 -0
  26. package/db-manager/routes/api.js +388 -0
  27. package/db-manager/routes/views.js +61 -0
  28. package/db-manager/server.js +39 -0
  29. package/db-manager/utils/build-filter-config.js +18 -0
  30. package/db-manager/utils/csv-export.js +59 -0
  31. package/db-manager/utils/export-filename.js +39 -0
  32. package/db-manager/utils/filter-tables.js +20 -0
  33. package/db-manager/utils/parse-filters.js +93 -0
  34. package/db-manager/utils/sort-state.js +35 -0
  35. package/db-manager/views/.gitkeep +1 -0
  36. package/db-manager/views/dashboard.ejs +53 -0
  37. package/db-manager/views/history.ejs +52 -0
  38. package/db-manager/views/index.ejs +35 -0
  39. package/db-manager/views/layout.ejs +31 -0
  40. package/db-manager/views/partials/data-panel.ejs +74 -0
  41. package/db-manager/views/partials/header.ejs +36 -0
  42. package/db-manager/views/partials/sidebar.ejs +30 -0
  43. package/db-manager/views/query.ejs +58 -0
  44. package/dbmr.schema.json +23 -45
  45. package/demo/.env.example +1 -0
  46. package/demo/app.js +3 -1
  47. package/demo/commons/db.js +11 -0
  48. package/demo/commons/migrate.js +3 -0
  49. package/demo/commons/modules.js +18 -0
  50. package/demo/commons/password.js +36 -0
  51. package/demo/commons/webhook.js +81 -0
  52. package/demo/dbmr.schema.json +22 -46
  53. package/demo/middleware/authenticate.js +14 -0
  54. package/demo/middleware/hasPermission.js +30 -0
  55. package/demo/middleware/tenantIsolation.js +17 -0
  56. package/demo/migrations/20260509170349_create_saas_tables.sql +69 -0
  57. package/demo/migrations/{20260430155809_create_tables.sql → 20260509170349_create_tables.sql} +11 -25
  58. package/demo/models/addresses.js +5 -3
  59. package/demo/models/cart_items.js +5 -3
  60. package/demo/models/carts.js +5 -3
  61. package/demo/models/categories.js +5 -3
  62. package/demo/models/coupons.js +5 -3
  63. package/demo/models/index.js +43 -0
  64. package/demo/models/order_items.js +4 -2
  65. package/demo/models/orders.js +5 -3
  66. package/demo/models/payments.js +5 -3
  67. package/demo/models/product_images.js +4 -2
  68. package/demo/models/product_reviews.js +5 -3
  69. package/demo/models/product_variants.js +5 -3
  70. package/demo/models/products.js +5 -3
  71. package/demo/models/role_permissions.js +17 -0
  72. package/demo/models/roles.js +17 -0
  73. package/demo/models/shipments.js +5 -3
  74. package/demo/models/tenants.js +18 -0
  75. package/demo/models/users.js +12 -8
  76. package/demo/models/webhook_logs.js +22 -0
  77. package/demo/models/webhooks.js +19 -0
  78. package/demo/models/wishlists.js +4 -2
  79. package/demo/openapi.json +1744 -616
  80. package/demo/package-lock.json +24 -24
  81. package/demo/package.json +9 -0
  82. package/demo/routes/{addresses.js → addresses/index.js} +1 -1
  83. package/demo/routes/auth/index.js +55 -0
  84. package/demo/routes/carts/{cart_items.js → cart_items/index.js} +1 -1
  85. package/demo/routes/{carts.js → carts/index.js} +1 -1
  86. package/demo/routes/{categories.js → categories/index.js} +1 -1
  87. package/demo/routes/{coupons.js → coupons/index.js} +1 -1
  88. package/demo/routes/index.js +39 -24
  89. package/demo/routes/{orders.js → orders/index.js} +1 -1
  90. package/demo/routes/orders/{order_items.js → order_items/index.js} +1 -1
  91. package/demo/routes/orders/{payments.js → payments/index.js} +1 -1
  92. package/demo/routes/orders/{shipments.js → shipments/index.js} +1 -1
  93. package/demo/routes/{products.js → products/index.js} +1 -1
  94. package/demo/routes/products/{product_images.js → product_images/index.js} +1 -1
  95. package/demo/routes/products/{product_reviews.js → product_reviews/index.js} +1 -1
  96. package/demo/routes/products/{product_variants.js → product_variants/index.js} +1 -1
  97. package/demo/routes/roles/index.js +75 -0
  98. package/demo/routes/roles/permissions/index.js +47 -0
  99. package/demo/routes/tenants/index.js +45 -0
  100. package/demo/routes/users/index.js +45 -0
  101. package/demo/routes/{wishlists.js → wishlists/index.js} +1 -1
  102. package/demo/seeds/saas-seed.js +329 -0
  103. package/docker-compose.yml +61 -0
  104. package/package.json +120 -113
  105. package/scripts/demo-create.js +1 -1
  106. package/skill/SKILL.md +119 -3
  107. package/src/cli/commands/db-manager.js +134 -0
  108. package/src/cli/commands/generate.js +112 -43
  109. package/src/cli/commands/help.js +0 -1
  110. package/src/cli/diff-engine.js +2 -1
  111. package/src/cli/generate-model.js +9 -4
  112. package/src/cli/generate-openapi.js +40 -13
  113. package/src/cli/generate-route.js +61 -22
  114. package/src/cli/generate-saas-structure.js +122 -0
  115. package/src/cli/init/generators.js +42 -30
  116. package/src/cli/init.js +8 -0
  117. package/src/cli/main.js +8 -1
  118. package/src/cli/saas/generate-saas-middleware.js +108 -0
  119. package/src/cli/saas/generate-saas-migrations.js +480 -0
  120. package/src/cli/saas/generate-saas-models.js +211 -0
  121. package/src/cli/saas/generate-saas-openapi.js +419 -0
  122. package/src/cli/saas/generate-saas-routes.js +435 -0
  123. package/src/cli/saas/generate-saas-seeds.js +243 -0
  124. package/src/cli/saas/generate-saas-utils.js +176 -0
  125. package/src/commons/kafka.js +139 -0
  126. package/src/commons/model.js +29 -9
  127. package/src/index.js +2 -0
  128. package/src/mssql/db.js +41 -3
  129. package/src/mysql/db.js +3 -0
  130. package/src/postgres/db.js +6 -0
  131. package/src/sqlite3/db.js +11 -0
  132. package/demo/docs/llm.md +0 -197
  133. package/demo/llms.txt +0 -70
  134. package/demo/routes/users.js +0 -6
  135. package/src/cli/commands/generate-llm-docs.js +0 -418
  136. /package/demo/migrations/{20260430155808_create_migrations_table.sql → 20260509170349_create_migrations_table.sql} +0 -0
package/demo/openapi.json CHANGED
@@ -6,12 +6,604 @@
6
6
  "description": "Auto-generated by db-model-router CLI"
7
7
  },
8
8
  "paths": {
9
- "/api/addresses/": {
9
+ "/api/auth/login": {
10
+ "post": {
11
+ "tags": [
12
+ "auth"
13
+ ],
14
+ "summary": "Login and create session",
15
+ "description": "Authenticate with email and password. On success, populates session with user, role, and permissions.",
16
+ "requestBody": {
17
+ "required": true,
18
+ "content": {
19
+ "application/json": {
20
+ "schema": {
21
+ "type": "object",
22
+ "required": [
23
+ "email",
24
+ "password"
25
+ ],
26
+ "properties": {
27
+ "email": {
28
+ "type": "string",
29
+ "format": "email",
30
+ "description": "User email address"
31
+ },
32
+ "password": {
33
+ "type": "string",
34
+ "description": "User password"
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ },
41
+ "responses": {
42
+ "200": {
43
+ "description": "Login successful",
44
+ "content": {
45
+ "application/json": {
46
+ "schema": {
47
+ "type": "object",
48
+ "properties": {
49
+ "message": {
50
+ "type": "string",
51
+ "example": "Login successful"
52
+ },
53
+ "user": {
54
+ "type": "object",
55
+ "properties": {
56
+ "id": {
57
+ "type": "integer"
58
+ },
59
+ "email": {
60
+ "type": "string"
61
+ },
62
+ "name": {
63
+ "type": "string"
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ },
72
+ "401": {
73
+ "description": "Invalid credentials"
74
+ },
75
+ "500": {
76
+ "description": "Internal server error"
77
+ }
78
+ }
79
+ }
80
+ },
81
+ "/api/auth/logout": {
82
+ "post": {
83
+ "tags": [
84
+ "auth"
85
+ ],
86
+ "summary": "Logout and destroy session",
87
+ "description": "Destroys the current session. Requires authentication.",
88
+ "security": [
89
+ {
90
+ "sessionAuth": []
91
+ }
92
+ ],
93
+ "responses": {
94
+ "200": {
95
+ "description": "Logout successful",
96
+ "content": {
97
+ "application/json": {
98
+ "schema": {
99
+ "type": "object",
100
+ "properties": {
101
+ "message": {
102
+ "type": "string",
103
+ "example": "Logout successful"
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ },
110
+ "401": {
111
+ "description": "Unauthorized - no valid session"
112
+ },
113
+ "500": {
114
+ "description": "Failed to destroy session"
115
+ }
116
+ }
117
+ }
118
+ },
119
+ "/api/users/": {
10
120
  "get": {
11
121
  "tags": [
12
- "addresses"
122
+ "users"
123
+ ],
124
+ "summary": "List users",
125
+ "description": "List all users. Requires authentication, tenant isolation, and users:read permission.",
126
+ "security": [
127
+ {
128
+ "sessionAuth": []
129
+ }
130
+ ],
131
+ "parameters": [
132
+ {
133
+ "name": "page",
134
+ "in": "query",
135
+ "schema": {
136
+ "type": "integer",
137
+ "default": 0
138
+ }
139
+ },
140
+ {
141
+ "name": "size",
142
+ "in": "query",
143
+ "schema": {
144
+ "type": "integer",
145
+ "default": 30
146
+ }
147
+ }
148
+ ],
149
+ "responses": {
150
+ "200": {
151
+ "description": "Success",
152
+ "content": {
153
+ "application/json": {
154
+ "schema": {
155
+ "type": "object",
156
+ "properties": {
157
+ "data": {
158
+ "type": "array",
159
+ "items": {
160
+ "$ref": "#/components/schemas/Users"
161
+ }
162
+ },
163
+ "count": {
164
+ "type": "integer"
165
+ }
166
+ }
167
+ }
168
+ }
169
+ }
170
+ },
171
+ "401": {
172
+ "description": "Unauthorized"
173
+ },
174
+ "403": {
175
+ "description": "Forbidden - insufficient permissions"
176
+ }
177
+ }
178
+ },
179
+ "post": {
180
+ "tags": [
181
+ "users"
182
+ ],
183
+ "summary": "Create user",
184
+ "description": "Create a new user. Requires authentication, tenant isolation, and users:write permission.",
185
+ "security": [
186
+ {
187
+ "sessionAuth": []
188
+ }
189
+ ],
190
+ "requestBody": {
191
+ "required": true,
192
+ "content": {
193
+ "application/json": {
194
+ "schema": {
195
+ "$ref": "#/components/schemas/Users"
196
+ }
197
+ }
198
+ }
199
+ },
200
+ "responses": {
201
+ "201": {
202
+ "description": "Created",
203
+ "content": {
204
+ "application/json": {
205
+ "schema": {
206
+ "$ref": "#/components/schemas/Users"
207
+ }
208
+ }
209
+ }
210
+ },
211
+ "401": {
212
+ "description": "Unauthorized"
213
+ },
214
+ "403": {
215
+ "description": "Forbidden - insufficient permissions"
216
+ },
217
+ "500": {
218
+ "description": "Internal server error"
219
+ }
220
+ }
221
+ }
222
+ },
223
+ "/api/users/{user_id}": {
224
+ "get": {
225
+ "tags": [
226
+ "users"
227
+ ],
228
+ "summary": "Get user by ID",
229
+ "description": "Get a single user by user_id. Requires users:read permission.",
230
+ "security": [
231
+ {
232
+ "sessionAuth": []
233
+ }
234
+ ],
235
+ "parameters": [
236
+ {
237
+ "name": "user_id",
238
+ "in": "path",
239
+ "required": true,
240
+ "schema": {
241
+ "type": "integer"
242
+ }
243
+ }
244
+ ],
245
+ "responses": {
246
+ "200": {
247
+ "description": "Success",
248
+ "content": {
249
+ "application/json": {
250
+ "schema": {
251
+ "$ref": "#/components/schemas/Users"
252
+ }
253
+ }
254
+ }
255
+ },
256
+ "401": {
257
+ "description": "Unauthorized"
258
+ },
259
+ "403": {
260
+ "description": "Forbidden"
261
+ },
262
+ "404": {
263
+ "description": "Not found"
264
+ }
265
+ }
266
+ },
267
+ "put": {
268
+ "tags": [
269
+ "users"
270
+ ],
271
+ "summary": "Update user",
272
+ "description": "Update a user by user_id. Requires users:update permission.",
273
+ "security": [
274
+ {
275
+ "sessionAuth": []
276
+ }
277
+ ],
278
+ "parameters": [
279
+ {
280
+ "name": "user_id",
281
+ "in": "path",
282
+ "required": true,
283
+ "schema": {
284
+ "type": "integer"
285
+ }
286
+ }
287
+ ],
288
+ "requestBody": {
289
+ "required": true,
290
+ "content": {
291
+ "application/json": {
292
+ "schema": {
293
+ "$ref": "#/components/schemas/Users"
294
+ }
295
+ }
296
+ }
297
+ },
298
+ "responses": {
299
+ "200": {
300
+ "description": "Updated",
301
+ "content": {
302
+ "application/json": {
303
+ "schema": {
304
+ "$ref": "#/components/schemas/Users"
305
+ }
306
+ }
307
+ }
308
+ },
309
+ "401": {
310
+ "description": "Unauthorized"
311
+ },
312
+ "403": {
313
+ "description": "Forbidden"
314
+ },
315
+ "404": {
316
+ "description": "Not found"
317
+ }
318
+ }
319
+ },
320
+ "delete": {
321
+ "tags": [
322
+ "users"
323
+ ],
324
+ "summary": "Delete user",
325
+ "description": "Delete a user by user_id. Requires users:delete permission.",
326
+ "security": [
327
+ {
328
+ "sessionAuth": []
329
+ }
330
+ ],
331
+ "parameters": [
332
+ {
333
+ "name": "user_id",
334
+ "in": "path",
335
+ "required": true,
336
+ "schema": {
337
+ "type": "integer"
338
+ }
339
+ }
340
+ ],
341
+ "responses": {
342
+ "200": {
343
+ "description": "Deleted"
344
+ },
345
+ "401": {
346
+ "description": "Unauthorized"
347
+ },
348
+ "403": {
349
+ "description": "Forbidden"
350
+ },
351
+ "404": {
352
+ "description": "Not found"
353
+ }
354
+ }
355
+ }
356
+ },
357
+ "/api/tenants/": {
358
+ "get": {
359
+ "tags": [
360
+ "tenants"
361
+ ],
362
+ "summary": "List tenants",
363
+ "description": "List all tenants. Requires authentication, tenant isolation, and tenants:read permission.",
364
+ "security": [
365
+ {
366
+ "sessionAuth": []
367
+ }
368
+ ],
369
+ "parameters": [
370
+ {
371
+ "name": "page",
372
+ "in": "query",
373
+ "schema": {
374
+ "type": "integer",
375
+ "default": 0
376
+ }
377
+ },
378
+ {
379
+ "name": "size",
380
+ "in": "query",
381
+ "schema": {
382
+ "type": "integer",
383
+ "default": 30
384
+ }
385
+ }
386
+ ],
387
+ "responses": {
388
+ "200": {
389
+ "description": "Success",
390
+ "content": {
391
+ "application/json": {
392
+ "schema": {
393
+ "type": "object",
394
+ "properties": {
395
+ "data": {
396
+ "type": "array",
397
+ "items": {
398
+ "$ref": "#/components/schemas/Tenants"
399
+ }
400
+ },
401
+ "count": {
402
+ "type": "integer"
403
+ }
404
+ }
405
+ }
406
+ }
407
+ }
408
+ },
409
+ "401": {
410
+ "description": "Unauthorized"
411
+ },
412
+ "403": {
413
+ "description": "Forbidden - insufficient permissions"
414
+ }
415
+ }
416
+ },
417
+ "post": {
418
+ "tags": [
419
+ "tenants"
420
+ ],
421
+ "summary": "Create tenant",
422
+ "description": "Create a new tenant. Requires authentication, tenant isolation, and tenants:write permission.",
423
+ "security": [
424
+ {
425
+ "sessionAuth": []
426
+ }
427
+ ],
428
+ "requestBody": {
429
+ "required": true,
430
+ "content": {
431
+ "application/json": {
432
+ "schema": {
433
+ "$ref": "#/components/schemas/Tenants"
434
+ }
435
+ }
436
+ }
437
+ },
438
+ "responses": {
439
+ "201": {
440
+ "description": "Created",
441
+ "content": {
442
+ "application/json": {
443
+ "schema": {
444
+ "$ref": "#/components/schemas/Tenants"
445
+ }
446
+ }
447
+ }
448
+ },
449
+ "401": {
450
+ "description": "Unauthorized"
451
+ },
452
+ "403": {
453
+ "description": "Forbidden - insufficient permissions"
454
+ },
455
+ "500": {
456
+ "description": "Internal server error"
457
+ }
458
+ }
459
+ }
460
+ },
461
+ "/api/tenants/{tenant_id}": {
462
+ "get": {
463
+ "tags": [
464
+ "tenants"
465
+ ],
466
+ "summary": "Get tenant by ID",
467
+ "description": "Get a single tenant by tenant_id. Requires tenants:read permission.",
468
+ "security": [
469
+ {
470
+ "sessionAuth": []
471
+ }
472
+ ],
473
+ "parameters": [
474
+ {
475
+ "name": "tenant_id",
476
+ "in": "path",
477
+ "required": true,
478
+ "schema": {
479
+ "type": "integer"
480
+ }
481
+ }
482
+ ],
483
+ "responses": {
484
+ "200": {
485
+ "description": "Success",
486
+ "content": {
487
+ "application/json": {
488
+ "schema": {
489
+ "$ref": "#/components/schemas/Tenants"
490
+ }
491
+ }
492
+ }
493
+ },
494
+ "401": {
495
+ "description": "Unauthorized"
496
+ },
497
+ "403": {
498
+ "description": "Forbidden"
499
+ },
500
+ "404": {
501
+ "description": "Not found"
502
+ }
503
+ }
504
+ },
505
+ "put": {
506
+ "tags": [
507
+ "tenants"
508
+ ],
509
+ "summary": "Update tenant",
510
+ "description": "Update a tenant by tenant_id. Requires tenants:update permission.",
511
+ "security": [
512
+ {
513
+ "sessionAuth": []
514
+ }
515
+ ],
516
+ "parameters": [
517
+ {
518
+ "name": "tenant_id",
519
+ "in": "path",
520
+ "required": true,
521
+ "schema": {
522
+ "type": "integer"
523
+ }
524
+ }
525
+ ],
526
+ "requestBody": {
527
+ "required": true,
528
+ "content": {
529
+ "application/json": {
530
+ "schema": {
531
+ "$ref": "#/components/schemas/Tenants"
532
+ }
533
+ }
534
+ }
535
+ },
536
+ "responses": {
537
+ "200": {
538
+ "description": "Updated",
539
+ "content": {
540
+ "application/json": {
541
+ "schema": {
542
+ "$ref": "#/components/schemas/Tenants"
543
+ }
544
+ }
545
+ }
546
+ },
547
+ "401": {
548
+ "description": "Unauthorized"
549
+ },
550
+ "403": {
551
+ "description": "Forbidden"
552
+ },
553
+ "404": {
554
+ "description": "Not found"
555
+ }
556
+ }
557
+ },
558
+ "delete": {
559
+ "tags": [
560
+ "tenants"
561
+ ],
562
+ "summary": "Delete tenant",
563
+ "description": "Delete a tenant by tenant_id. Requires tenants:delete permission.",
564
+ "security": [
565
+ {
566
+ "sessionAuth": []
567
+ }
568
+ ],
569
+ "parameters": [
570
+ {
571
+ "name": "tenant_id",
572
+ "in": "path",
573
+ "required": true,
574
+ "schema": {
575
+ "type": "integer"
576
+ }
577
+ }
578
+ ],
579
+ "responses": {
580
+ "200": {
581
+ "description": "Deleted"
582
+ },
583
+ "401": {
584
+ "description": "Unauthorized"
585
+ },
586
+ "403": {
587
+ "description": "Forbidden"
588
+ },
589
+ "404": {
590
+ "description": "Not found"
591
+ }
592
+ }
593
+ }
594
+ },
595
+ "/api/roles/": {
596
+ "get": {
597
+ "tags": [
598
+ "roles"
599
+ ],
600
+ "summary": "List roles",
601
+ "description": "List all roles. Requires authentication, tenant isolation, and roles:read permission.",
602
+ "security": [
603
+ {
604
+ "sessionAuth": []
605
+ }
13
606
  ],
14
- "summary": "List addresses",
15
607
  "parameters": [
16
608
  {
17
609
  "name": "page",
@@ -28,33 +620,6 @@
28
620
  "type": "integer",
29
621
  "default": 30
30
622
  }
31
- },
32
- {
33
- "name": "sort",
34
- "in": "query",
35
- "schema": {
36
- "type": "string"
37
- }
38
- },
39
- {
40
- "name": "select_columns",
41
- "in": "query",
42
- "schema": {
43
- "type": "string"
44
- },
45
- "description": "Comma-separated column names"
46
- },
47
- {
48
- "name": "output_content_type",
49
- "in": "query",
50
- "schema": {
51
- "type": "string",
52
- "enum": [
53
- "json",
54
- "csv",
55
- "xml"
56
- ]
57
- }
58
623
  }
59
624
  ],
60
625
  "responses": {
@@ -68,7 +633,7 @@
68
633
  "data": {
69
634
  "type": "array",
70
635
  "items": {
71
- "$ref": "#/components/schemas/Addresses"
636
+ "$ref": "#/components/schemas/Roles"
72
637
  }
73
638
  },
74
639
  "count": {
@@ -78,126 +643,78 @@
78
643
  }
79
644
  }
80
645
  }
646
+ },
647
+ "401": {
648
+ "description": "Unauthorized"
649
+ },
650
+ "403": {
651
+ "description": "Forbidden - insufficient permissions"
81
652
  }
82
653
  }
83
654
  },
84
655
  "post": {
85
656
  "tags": [
86
- "addresses"
657
+ "roles"
87
658
  ],
88
- "summary": "Bulk insert addresses",
89
- "requestBody": {
90
- "content": {
91
- "application/json": {
92
- "schema": {
93
- "type": "object",
94
- "properties": {
95
- "data": {
96
- "type": "array",
97
- "items": {
98
- "$ref": "#/components/schemas/Addresses"
99
- }
100
- }
101
- }
102
- }
103
- }
104
- }
105
- },
106
- "responses": {
107
- "200": {
108
- "description": "Success"
659
+ "summary": "Create role",
660
+ "description": "Create a new role. Requires authentication, tenant isolation, and roles:write permission.",
661
+ "security": [
662
+ {
663
+ "sessionAuth": []
109
664
  }
110
- }
111
- },
112
- "put": {
113
- "tags": [
114
- "addresses"
115
665
  ],
116
- "summary": "Bulk update addresses",
117
666
  "requestBody": {
667
+ "required": true,
118
668
  "content": {
119
669
  "application/json": {
120
670
  "schema": {
121
- "type": "object",
122
- "properties": {
123
- "data": {
124
- "type": "array",
125
- "items": {
126
- "$ref": "#/components/schemas/Addresses"
127
- }
128
- }
129
- }
671
+ "$ref": "#/components/schemas/Roles"
130
672
  }
131
673
  }
132
674
  }
133
675
  },
134
676
  "responses": {
135
- "200": {
136
- "description": "Success"
137
- }
138
- }
139
- },
140
- "delete": {
141
- "tags": [
142
- "addresses"
143
- ],
144
- "summary": "Bulk delete addresses",
145
- "requestBody": {
146
- "content": {
147
- "application/json": {
148
- "schema": {
149
- "type": "object",
150
- "properties": {
151
- "data": {
152
- "type": "array",
153
- "items": {
154
- "type": "object"
155
- }
156
- }
677
+ "201": {
678
+ "description": "Created",
679
+ "content": {
680
+ "application/json": {
681
+ "schema": {
682
+ "$ref": "#/components/schemas/Roles"
157
683
  }
158
684
  }
159
685
  }
160
- }
161
- },
162
- "responses": {
163
- "200": {
164
- "description": "Success"
686
+ },
687
+ "401": {
688
+ "description": "Unauthorized"
689
+ },
690
+ "403": {
691
+ "description": "Forbidden - insufficient permissions"
692
+ },
693
+ "500": {
694
+ "description": "Internal server error"
165
695
  }
166
696
  }
167
697
  }
168
698
  },
169
- "/api/addresses/{address_id}": {
699
+ "/api/roles/{role_id}": {
170
700
  "get": {
171
701
  "tags": [
172
- "addresses"
702
+ "roles"
703
+ ],
704
+ "summary": "Get role by ID",
705
+ "description": "Get a single role by role_id. Requires roles:read permission.",
706
+ "security": [
707
+ {
708
+ "sessionAuth": []
709
+ }
173
710
  ],
174
- "summary": "Get addresses by address_id",
175
711
  "parameters": [
176
712
  {
177
- "name": "address_id",
713
+ "name": "role_id",
178
714
  "in": "path",
179
715
  "required": true,
180
716
  "schema": {
181
- "type": "string"
182
- }
183
- },
184
- {
185
- "name": "select_columns",
186
- "in": "query",
187
- "schema": {
188
- "type": "string"
189
- }
190
- },
191
- {
192
- "name": "output_content_type",
193
- "in": "query",
194
- "schema": {
195
- "type": "string",
196
- "enum": [
197
- "json",
198
- "csv",
199
- "xml"
200
- ]
717
+ "type": "integer"
201
718
  }
202
719
  }
203
720
  ],
@@ -207,113 +724,251 @@
207
724
  "content": {
208
725
  "application/json": {
209
726
  "schema": {
210
- "$ref": "#/components/schemas/Addresses"
727
+ "$ref": "#/components/schemas/Roles"
211
728
  }
212
729
  }
213
730
  }
214
731
  },
732
+ "401": {
733
+ "description": "Unauthorized"
734
+ },
735
+ "403": {
736
+ "description": "Forbidden"
737
+ },
215
738
  "404": {
216
- "description": "Not Found"
739
+ "description": "Not found"
217
740
  }
218
741
  }
219
742
  },
220
- "post": {
743
+ "put": {
221
744
  "tags": [
222
- "addresses"
745
+ "roles"
746
+ ],
747
+ "summary": "Update role",
748
+ "description": "Update a role by role_id. Requires roles:update permission.",
749
+ "security": [
750
+ {
751
+ "sessionAuth": []
752
+ }
223
753
  ],
224
- "summary": "Insert a addresses",
225
754
  "parameters": [
226
755
  {
227
- "name": "address_id",
756
+ "name": "role_id",
228
757
  "in": "path",
229
758
  "required": true,
230
759
  "schema": {
231
- "type": "string"
760
+ "type": "integer"
232
761
  }
233
762
  }
234
763
  ],
235
764
  "requestBody": {
765
+ "required": true,
236
766
  "content": {
237
767
  "application/json": {
238
768
  "schema": {
239
- "$ref": "#/components/schemas/Addresses"
769
+ "$ref": "#/components/schemas/Roles"
240
770
  }
241
771
  }
242
772
  }
243
773
  },
244
774
  "responses": {
245
775
  "200": {
246
- "description": "Created",
776
+ "description": "Updated",
247
777
  "content": {
248
778
  "application/json": {
249
779
  "schema": {
250
- "$ref": "#/components/schemas/Addresses"
780
+ "$ref": "#/components/schemas/Roles"
251
781
  }
252
782
  }
253
783
  }
784
+ },
785
+ "401": {
786
+ "description": "Unauthorized"
787
+ },
788
+ "403": {
789
+ "description": "Forbidden"
790
+ },
791
+ "404": {
792
+ "description": "Not found"
254
793
  }
255
794
  }
256
795
  },
257
- "put": {
796
+ "delete": {
258
797
  "tags": [
259
- "addresses"
798
+ "roles"
799
+ ],
800
+ "summary": "Delete role",
801
+ "description": "Delete a role by role_id. Requires roles:delete permission.",
802
+ "security": [
803
+ {
804
+ "sessionAuth": []
805
+ }
260
806
  ],
261
- "summary": "Update a addresses",
262
807
  "parameters": [
263
808
  {
264
- "name": "address_id",
809
+ "name": "role_id",
265
810
  "in": "path",
266
811
  "required": true,
267
812
  "schema": {
268
- "type": "string"
813
+ "type": "integer"
814
+ }
815
+ }
816
+ ],
817
+ "responses": {
818
+ "200": {
819
+ "description": "Deleted"
820
+ },
821
+ "401": {
822
+ "description": "Unauthorized"
823
+ },
824
+ "403": {
825
+ "description": "Forbidden"
826
+ },
827
+ "404": {
828
+ "description": "Not found"
829
+ }
830
+ }
831
+ }
832
+ },
833
+ "/api/roles/{role_id}/permissions/": {
834
+ "get": {
835
+ "tags": [
836
+ "permissions"
837
+ ],
838
+ "summary": "List permissions for a role",
839
+ "description": "List all permission entries for a specific role. Requires permissions:read.",
840
+ "security": [
841
+ {
842
+ "sessionAuth": []
843
+ }
844
+ ],
845
+ "parameters": [
846
+ {
847
+ "name": "role_id",
848
+ "in": "path",
849
+ "required": true,
850
+ "schema": {
851
+ "type": "integer"
852
+ },
853
+ "description": "Role ID"
854
+ }
855
+ ],
856
+ "responses": {
857
+ "200": {
858
+ "description": "Success",
859
+ "content": {
860
+ "application/json": {
861
+ "schema": {
862
+ "type": "object",
863
+ "properties": {
864
+ "data": {
865
+ "type": "array",
866
+ "items": {
867
+ "$ref": "#/components/schemas/RolePermission"
868
+ }
869
+ }
870
+ }
871
+ }
872
+ }
269
873
  }
874
+ },
875
+ "401": {
876
+ "description": "Unauthorized"
877
+ },
878
+ "403": {
879
+ "description": "Forbidden"
880
+ }
881
+ }
882
+ },
883
+ "post": {
884
+ "tags": [
885
+ "permissions"
886
+ ],
887
+ "summary": "Add permission to role",
888
+ "description": "Create a new permission entry for a role. Requires permissions:write.",
889
+ "security": [
890
+ {
891
+ "sessionAuth": []
892
+ }
893
+ ],
894
+ "parameters": [
895
+ {
896
+ "name": "role_id",
897
+ "in": "path",
898
+ "required": true,
899
+ "schema": {
900
+ "type": "integer"
901
+ },
902
+ "description": "Role ID"
270
903
  }
271
904
  ],
272
905
  "requestBody": {
906
+ "required": true,
273
907
  "content": {
274
908
  "application/json": {
275
909
  "schema": {
276
- "$ref": "#/components/schemas/Addresses"
910
+ "$ref": "#/components/schemas/RolePermission"
277
911
  }
278
912
  }
279
913
  }
280
914
  },
281
915
  "responses": {
282
- "200": {
283
- "description": "Updated",
916
+ "201": {
917
+ "description": "Created",
284
918
  "content": {
285
919
  "application/json": {
286
920
  "schema": {
287
- "$ref": "#/components/schemas/Addresses"
921
+ "$ref": "#/components/schemas/RolePermission"
288
922
  }
289
923
  }
290
924
  }
291
925
  },
292
- "404": {
293
- "description": "Not Found"
926
+ "401": {
927
+ "description": "Unauthorized"
928
+ },
929
+ "403": {
930
+ "description": "Forbidden"
294
931
  }
295
932
  }
296
- },
297
- "patch": {
933
+ }
934
+ },
935
+ "/api/roles/{role_id}/permissions/{role_permission_id}": {
936
+ "put": {
298
937
  "tags": [
299
- "addresses"
938
+ "permissions"
939
+ ],
940
+ "summary": "Update a role permission",
941
+ "description": "Update a permission entry by role_permission_id. Requires permissions:update.",
942
+ "security": [
943
+ {
944
+ "sessionAuth": []
945
+ }
300
946
  ],
301
- "summary": "Partial update a addresses",
302
947
  "parameters": [
303
948
  {
304
- "name": "address_id",
949
+ "name": "role_id",
305
950
  "in": "path",
306
951
  "required": true,
307
952
  "schema": {
308
- "type": "string"
953
+ "type": "integer"
954
+ },
955
+ "description": "Role ID"
956
+ },
957
+ {
958
+ "name": "role_permission_id",
959
+ "in": "path",
960
+ "required": true,
961
+ "schema": {
962
+ "type": "integer"
309
963
  }
310
964
  }
311
965
  ],
312
966
  "requestBody": {
967
+ "required": true,
313
968
  "content": {
314
969
  "application/json": {
315
970
  "schema": {
316
- "type": "object"
971
+ "$ref": "#/components/schemas/RolePermission"
317
972
  }
318
973
  }
319
974
  }
@@ -324,28 +979,46 @@
324
979
  "content": {
325
980
  "application/json": {
326
981
  "schema": {
327
- "$ref": "#/components/schemas/Addresses"
982
+ "$ref": "#/components/schemas/RolePermission"
328
983
  }
329
984
  }
330
985
  }
331
986
  },
332
- "404": {
333
- "description": "Not Found"
987
+ "401": {
988
+ "description": "Unauthorized"
989
+ },
990
+ "403": {
991
+ "description": "Forbidden"
334
992
  }
335
993
  }
336
994
  },
337
995
  "delete": {
338
996
  "tags": [
339
- "addresses"
997
+ "permissions"
998
+ ],
999
+ "summary": "Delete a role permission",
1000
+ "description": "Delete a permission entry by role_permission_id. Requires permissions:delete.",
1001
+ "security": [
1002
+ {
1003
+ "sessionAuth": []
1004
+ }
340
1005
  ],
341
- "summary": "Delete a addresses",
342
1006
  "parameters": [
343
1007
  {
344
- "name": "address_id",
1008
+ "name": "role_id",
345
1009
  "in": "path",
346
1010
  "required": true,
347
1011
  "schema": {
348
- "type": "string"
1012
+ "type": "integer"
1013
+ },
1014
+ "description": "Role ID"
1015
+ },
1016
+ {
1017
+ "name": "role_permission_id",
1018
+ "in": "path",
1019
+ "required": true,
1020
+ "schema": {
1021
+ "type": "integer"
349
1022
  }
350
1023
  }
351
1024
  ],
@@ -353,18 +1026,21 @@
353
1026
  "200": {
354
1027
  "description": "Deleted"
355
1028
  },
356
- "404": {
357
- "description": "Not Found"
1029
+ "401": {
1030
+ "description": "Unauthorized"
1031
+ },
1032
+ "403": {
1033
+ "description": "Forbidden"
358
1034
  }
359
1035
  }
360
1036
  }
361
1037
  },
362
- "/api/cart_items/": {
1038
+ "/api/addresses/": {
363
1039
  "get": {
364
1040
  "tags": [
365
- "cart_items"
1041
+ "addresses"
366
1042
  ],
367
- "summary": "List cart_items",
1043
+ "summary": "List addresses",
368
1044
  "parameters": [
369
1045
  {
370
1046
  "name": "page",
@@ -421,7 +1097,7 @@
421
1097
  "data": {
422
1098
  "type": "array",
423
1099
  "items": {
424
- "$ref": "#/components/schemas/Cart_items"
1100
+ "$ref": "#/components/schemas/Addresses"
425
1101
  }
426
1102
  },
427
1103
  "count": {
@@ -436,9 +1112,9 @@
436
1112
  },
437
1113
  "post": {
438
1114
  "tags": [
439
- "cart_items"
1115
+ "addresses"
440
1116
  ],
441
- "summary": "Bulk insert cart_items",
1117
+ "summary": "Bulk insert addresses",
442
1118
  "requestBody": {
443
1119
  "content": {
444
1120
  "application/json": {
@@ -448,7 +1124,7 @@
448
1124
  "data": {
449
1125
  "type": "array",
450
1126
  "items": {
451
- "$ref": "#/components/schemas/Cart_items"
1127
+ "$ref": "#/components/schemas/Addresses"
452
1128
  }
453
1129
  }
454
1130
  }
@@ -464,9 +1140,9 @@
464
1140
  },
465
1141
  "put": {
466
1142
  "tags": [
467
- "cart_items"
1143
+ "addresses"
468
1144
  ],
469
- "summary": "Bulk update cart_items",
1145
+ "summary": "Bulk update addresses",
470
1146
  "requestBody": {
471
1147
  "content": {
472
1148
  "application/json": {
@@ -476,7 +1152,7 @@
476
1152
  "data": {
477
1153
  "type": "array",
478
1154
  "items": {
479
- "$ref": "#/components/schemas/Cart_items"
1155
+ "$ref": "#/components/schemas/Addresses"
480
1156
  }
481
1157
  }
482
1158
  }
@@ -492,9 +1168,9 @@
492
1168
  },
493
1169
  "delete": {
494
1170
  "tags": [
495
- "cart_items"
1171
+ "addresses"
496
1172
  ],
497
- "summary": "Bulk delete cart_items",
1173
+ "summary": "Bulk delete addresses",
498
1174
  "requestBody": {
499
1175
  "content": {
500
1176
  "application/json": {
@@ -519,15 +1195,15 @@
519
1195
  }
520
1196
  }
521
1197
  },
522
- "/api/cart_items/{cart_item_id}": {
1198
+ "/api/addresses/{address_id}": {
523
1199
  "get": {
524
1200
  "tags": [
525
- "cart_items"
1201
+ "addresses"
526
1202
  ],
527
- "summary": "Get cart_items by cart_item_id",
1203
+ "summary": "Get addresses by address_id",
528
1204
  "parameters": [
529
1205
  {
530
- "name": "cart_item_id",
1206
+ "name": "address_id",
531
1207
  "in": "path",
532
1208
  "required": true,
533
1209
  "schema": {
@@ -560,7 +1236,7 @@
560
1236
  "content": {
561
1237
  "application/json": {
562
1238
  "schema": {
563
- "$ref": "#/components/schemas/Cart_items"
1239
+ "$ref": "#/components/schemas/Addresses"
564
1240
  }
565
1241
  }
566
1242
  }
@@ -572,12 +1248,12 @@
572
1248
  },
573
1249
  "post": {
574
1250
  "tags": [
575
- "cart_items"
1251
+ "addresses"
576
1252
  ],
577
- "summary": "Insert a cart_items",
1253
+ "summary": "Insert a addresses",
578
1254
  "parameters": [
579
1255
  {
580
- "name": "cart_item_id",
1256
+ "name": "address_id",
581
1257
  "in": "path",
582
1258
  "required": true,
583
1259
  "schema": {
@@ -589,7 +1265,7 @@
589
1265
  "content": {
590
1266
  "application/json": {
591
1267
  "schema": {
592
- "$ref": "#/components/schemas/Cart_items"
1268
+ "$ref": "#/components/schemas/Addresses"
593
1269
  }
594
1270
  }
595
1271
  }
@@ -600,7 +1276,7 @@
600
1276
  "content": {
601
1277
  "application/json": {
602
1278
  "schema": {
603
- "$ref": "#/components/schemas/Cart_items"
1279
+ "$ref": "#/components/schemas/Addresses"
604
1280
  }
605
1281
  }
606
1282
  }
@@ -609,12 +1285,12 @@
609
1285
  },
610
1286
  "put": {
611
1287
  "tags": [
612
- "cart_items"
1288
+ "addresses"
613
1289
  ],
614
- "summary": "Update a cart_items",
1290
+ "summary": "Update a addresses",
615
1291
  "parameters": [
616
1292
  {
617
- "name": "cart_item_id",
1293
+ "name": "address_id",
618
1294
  "in": "path",
619
1295
  "required": true,
620
1296
  "schema": {
@@ -626,7 +1302,7 @@
626
1302
  "content": {
627
1303
  "application/json": {
628
1304
  "schema": {
629
- "$ref": "#/components/schemas/Cart_items"
1305
+ "$ref": "#/components/schemas/Addresses"
630
1306
  }
631
1307
  }
632
1308
  }
@@ -637,7 +1313,7 @@
637
1313
  "content": {
638
1314
  "application/json": {
639
1315
  "schema": {
640
- "$ref": "#/components/schemas/Cart_items"
1316
+ "$ref": "#/components/schemas/Addresses"
641
1317
  }
642
1318
  }
643
1319
  }
@@ -649,12 +1325,12 @@
649
1325
  },
650
1326
  "patch": {
651
1327
  "tags": [
652
- "cart_items"
1328
+ "addresses"
653
1329
  ],
654
- "summary": "Partial update a cart_items",
1330
+ "summary": "Partial update a addresses",
655
1331
  "parameters": [
656
1332
  {
657
- "name": "cart_item_id",
1333
+ "name": "address_id",
658
1334
  "in": "path",
659
1335
  "required": true,
660
1336
  "schema": {
@@ -677,7 +1353,7 @@
677
1353
  "content": {
678
1354
  "application/json": {
679
1355
  "schema": {
680
- "$ref": "#/components/schemas/Cart_items"
1356
+ "$ref": "#/components/schemas/Addresses"
681
1357
  }
682
1358
  }
683
1359
  }
@@ -689,12 +1365,12 @@
689
1365
  },
690
1366
  "delete": {
691
1367
  "tags": [
692
- "cart_items"
1368
+ "addresses"
693
1369
  ],
694
- "summary": "Delete a cart_items",
1370
+ "summary": "Delete a addresses",
695
1371
  "parameters": [
696
1372
  {
697
- "name": "cart_item_id",
1373
+ "name": "address_id",
698
1374
  "in": "path",
699
1375
  "required": true,
700
1376
  "schema": {
@@ -712,13 +1388,22 @@
712
1388
  }
713
1389
  }
714
1390
  },
715
- "/api/carts/": {
1391
+ "/api/carts/{cart_id}/cart_items/": {
716
1392
  "get": {
717
1393
  "tags": [
718
- "carts"
1394
+ "cart_items"
719
1395
  ],
720
- "summary": "List carts",
1396
+ "summary": "List cart_items",
721
1397
  "parameters": [
1398
+ {
1399
+ "name": "cart_id",
1400
+ "in": "path",
1401
+ "required": true,
1402
+ "schema": {
1403
+ "type": "string"
1404
+ },
1405
+ "description": "Carts foreign key"
1406
+ },
722
1407
  {
723
1408
  "name": "page",
724
1409
  "in": "query",
@@ -774,7 +1459,7 @@
774
1459
  "data": {
775
1460
  "type": "array",
776
1461
  "items": {
777
- "$ref": "#/components/schemas/Carts"
1462
+ "$ref": "#/components/schemas/Cart_items"
778
1463
  }
779
1464
  },
780
1465
  "count": {
@@ -789,9 +1474,9 @@
789
1474
  },
790
1475
  "post": {
791
1476
  "tags": [
792
- "carts"
1477
+ "cart_items"
793
1478
  ],
794
- "summary": "Bulk insert carts",
1479
+ "summary": "Bulk insert cart_items",
795
1480
  "requestBody": {
796
1481
  "content": {
797
1482
  "application/json": {
@@ -801,7 +1486,7 @@
801
1486
  "data": {
802
1487
  "type": "array",
803
1488
  "items": {
804
- "$ref": "#/components/schemas/Carts"
1489
+ "$ref": "#/components/schemas/Cart_items"
805
1490
  }
806
1491
  }
807
1492
  }
@@ -817,9 +1502,9 @@
817
1502
  },
818
1503
  "put": {
819
1504
  "tags": [
820
- "carts"
1505
+ "cart_items"
821
1506
  ],
822
- "summary": "Bulk update carts",
1507
+ "summary": "Bulk update cart_items",
823
1508
  "requestBody": {
824
1509
  "content": {
825
1510
  "application/json": {
@@ -829,7 +1514,7 @@
829
1514
  "data": {
830
1515
  "type": "array",
831
1516
  "items": {
832
- "$ref": "#/components/schemas/Carts"
1517
+ "$ref": "#/components/schemas/Cart_items"
833
1518
  }
834
1519
  }
835
1520
  }
@@ -845,9 +1530,9 @@
845
1530
  },
846
1531
  "delete": {
847
1532
  "tags": [
848
- "carts"
1533
+ "cart_items"
849
1534
  ],
850
- "summary": "Bulk delete carts",
1535
+ "summary": "Bulk delete cart_items",
851
1536
  "requestBody": {
852
1537
  "content": {
853
1538
  "application/json": {
@@ -872,17 +1557,26 @@
872
1557
  }
873
1558
  }
874
1559
  },
875
- "/api/carts/{cart_id}": {
1560
+ "/api/carts/{cart_id}/cart_items/{cart_item_id}": {
876
1561
  "get": {
877
1562
  "tags": [
878
- "carts"
1563
+ "cart_items"
879
1564
  ],
880
- "summary": "Get carts by cart_id",
1565
+ "summary": "Get cart_items by cart_item_id",
881
1566
  "parameters": [
882
1567
  {
883
1568
  "name": "cart_id",
884
1569
  "in": "path",
885
1570
  "required": true,
1571
+ "schema": {
1572
+ "type": "string"
1573
+ },
1574
+ "description": "Carts foreign key"
1575
+ },
1576
+ {
1577
+ "name": "cart_item_id",
1578
+ "in": "path",
1579
+ "required": true,
886
1580
  "schema": {
887
1581
  "type": "string"
888
1582
  }
@@ -913,7 +1607,7 @@
913
1607
  "content": {
914
1608
  "application/json": {
915
1609
  "schema": {
916
- "$ref": "#/components/schemas/Carts"
1610
+ "$ref": "#/components/schemas/Cart_items"
917
1611
  }
918
1612
  }
919
1613
  }
@@ -925,14 +1619,23 @@
925
1619
  },
926
1620
  "post": {
927
1621
  "tags": [
928
- "carts"
1622
+ "cart_items"
929
1623
  ],
930
- "summary": "Insert a carts",
1624
+ "summary": "Insert a cart_items",
931
1625
  "parameters": [
932
1626
  {
933
1627
  "name": "cart_id",
934
1628
  "in": "path",
935
1629
  "required": true,
1630
+ "schema": {
1631
+ "type": "string"
1632
+ },
1633
+ "description": "Carts foreign key"
1634
+ },
1635
+ {
1636
+ "name": "cart_item_id",
1637
+ "in": "path",
1638
+ "required": true,
936
1639
  "schema": {
937
1640
  "type": "string"
938
1641
  }
@@ -942,7 +1645,7 @@
942
1645
  "content": {
943
1646
  "application/json": {
944
1647
  "schema": {
945
- "$ref": "#/components/schemas/Carts"
1648
+ "$ref": "#/components/schemas/Cart_items"
946
1649
  }
947
1650
  }
948
1651
  }
@@ -953,7 +1656,7 @@
953
1656
  "content": {
954
1657
  "application/json": {
955
1658
  "schema": {
956
- "$ref": "#/components/schemas/Carts"
1659
+ "$ref": "#/components/schemas/Cart_items"
957
1660
  }
958
1661
  }
959
1662
  }
@@ -962,14 +1665,23 @@
962
1665
  },
963
1666
  "put": {
964
1667
  "tags": [
965
- "carts"
1668
+ "cart_items"
966
1669
  ],
967
- "summary": "Update a carts",
1670
+ "summary": "Update a cart_items",
968
1671
  "parameters": [
969
1672
  {
970
1673
  "name": "cart_id",
971
1674
  "in": "path",
972
1675
  "required": true,
1676
+ "schema": {
1677
+ "type": "string"
1678
+ },
1679
+ "description": "Carts foreign key"
1680
+ },
1681
+ {
1682
+ "name": "cart_item_id",
1683
+ "in": "path",
1684
+ "required": true,
973
1685
  "schema": {
974
1686
  "type": "string"
975
1687
  }
@@ -979,7 +1691,7 @@
979
1691
  "content": {
980
1692
  "application/json": {
981
1693
  "schema": {
982
- "$ref": "#/components/schemas/Carts"
1694
+ "$ref": "#/components/schemas/Cart_items"
983
1695
  }
984
1696
  }
985
1697
  }
@@ -990,7 +1702,7 @@
990
1702
  "content": {
991
1703
  "application/json": {
992
1704
  "schema": {
993
- "$ref": "#/components/schemas/Carts"
1705
+ "$ref": "#/components/schemas/Cart_items"
994
1706
  }
995
1707
  }
996
1708
  }
@@ -1002,14 +1714,23 @@
1002
1714
  },
1003
1715
  "patch": {
1004
1716
  "tags": [
1005
- "carts"
1717
+ "cart_items"
1006
1718
  ],
1007
- "summary": "Partial update a carts",
1719
+ "summary": "Partial update a cart_items",
1008
1720
  "parameters": [
1009
1721
  {
1010
1722
  "name": "cart_id",
1011
1723
  "in": "path",
1012
1724
  "required": true,
1725
+ "schema": {
1726
+ "type": "string"
1727
+ },
1728
+ "description": "Carts foreign key"
1729
+ },
1730
+ {
1731
+ "name": "cart_item_id",
1732
+ "in": "path",
1733
+ "required": true,
1013
1734
  "schema": {
1014
1735
  "type": "string"
1015
1736
  }
@@ -1030,7 +1751,7 @@
1030
1751
  "content": {
1031
1752
  "application/json": {
1032
1753
  "schema": {
1033
- "$ref": "#/components/schemas/Carts"
1754
+ "$ref": "#/components/schemas/Cart_items"
1034
1755
  }
1035
1756
  }
1036
1757
  }
@@ -1042,14 +1763,23 @@
1042
1763
  },
1043
1764
  "delete": {
1044
1765
  "tags": [
1045
- "carts"
1766
+ "cart_items"
1046
1767
  ],
1047
- "summary": "Delete a carts",
1768
+ "summary": "Delete a cart_items",
1048
1769
  "parameters": [
1049
1770
  {
1050
1771
  "name": "cart_id",
1051
1772
  "in": "path",
1052
1773
  "required": true,
1774
+ "schema": {
1775
+ "type": "string"
1776
+ },
1777
+ "description": "Carts foreign key"
1778
+ },
1779
+ {
1780
+ "name": "cart_item_id",
1781
+ "in": "path",
1782
+ "required": true,
1053
1783
  "schema": {
1054
1784
  "type": "string"
1055
1785
  }
@@ -1065,12 +1795,12 @@
1065
1795
  }
1066
1796
  }
1067
1797
  },
1068
- "/api/categories/": {
1798
+ "/api/carts/": {
1069
1799
  "get": {
1070
1800
  "tags": [
1071
- "categories"
1801
+ "carts"
1072
1802
  ],
1073
- "summary": "List categories",
1803
+ "summary": "List carts",
1074
1804
  "parameters": [
1075
1805
  {
1076
1806
  "name": "page",
@@ -1127,7 +1857,7 @@
1127
1857
  "data": {
1128
1858
  "type": "array",
1129
1859
  "items": {
1130
- "$ref": "#/components/schemas/Categories"
1860
+ "$ref": "#/components/schemas/Carts"
1131
1861
  }
1132
1862
  },
1133
1863
  "count": {
@@ -1142,9 +1872,9 @@
1142
1872
  },
1143
1873
  "post": {
1144
1874
  "tags": [
1145
- "categories"
1875
+ "carts"
1146
1876
  ],
1147
- "summary": "Bulk insert categories",
1877
+ "summary": "Bulk insert carts",
1148
1878
  "requestBody": {
1149
1879
  "content": {
1150
1880
  "application/json": {
@@ -1154,7 +1884,7 @@
1154
1884
  "data": {
1155
1885
  "type": "array",
1156
1886
  "items": {
1157
- "$ref": "#/components/schemas/Categories"
1887
+ "$ref": "#/components/schemas/Carts"
1158
1888
  }
1159
1889
  }
1160
1890
  }
@@ -1170,9 +1900,9 @@
1170
1900
  },
1171
1901
  "put": {
1172
1902
  "tags": [
1173
- "categories"
1903
+ "carts"
1174
1904
  ],
1175
- "summary": "Bulk update categories",
1905
+ "summary": "Bulk update carts",
1176
1906
  "requestBody": {
1177
1907
  "content": {
1178
1908
  "application/json": {
@@ -1182,7 +1912,7 @@
1182
1912
  "data": {
1183
1913
  "type": "array",
1184
1914
  "items": {
1185
- "$ref": "#/components/schemas/Categories"
1915
+ "$ref": "#/components/schemas/Carts"
1186
1916
  }
1187
1917
  }
1188
1918
  }
@@ -1198,9 +1928,9 @@
1198
1928
  },
1199
1929
  "delete": {
1200
1930
  "tags": [
1201
- "categories"
1931
+ "carts"
1202
1932
  ],
1203
- "summary": "Bulk delete categories",
1933
+ "summary": "Bulk delete carts",
1204
1934
  "requestBody": {
1205
1935
  "content": {
1206
1936
  "application/json": {
@@ -1225,15 +1955,15 @@
1225
1955
  }
1226
1956
  }
1227
1957
  },
1228
- "/api/categories/{category_id}": {
1958
+ "/api/carts/{cart_id}": {
1229
1959
  "get": {
1230
1960
  "tags": [
1231
- "categories"
1961
+ "carts"
1232
1962
  ],
1233
- "summary": "Get categories by category_id",
1963
+ "summary": "Get carts by cart_id",
1234
1964
  "parameters": [
1235
1965
  {
1236
- "name": "category_id",
1966
+ "name": "cart_id",
1237
1967
  "in": "path",
1238
1968
  "required": true,
1239
1969
  "schema": {
@@ -1266,7 +1996,7 @@
1266
1996
  "content": {
1267
1997
  "application/json": {
1268
1998
  "schema": {
1269
- "$ref": "#/components/schemas/Categories"
1999
+ "$ref": "#/components/schemas/Carts"
1270
2000
  }
1271
2001
  }
1272
2002
  }
@@ -1278,12 +2008,12 @@
1278
2008
  },
1279
2009
  "post": {
1280
2010
  "tags": [
1281
- "categories"
2011
+ "carts"
1282
2012
  ],
1283
- "summary": "Insert a categories",
2013
+ "summary": "Insert a carts",
1284
2014
  "parameters": [
1285
2015
  {
1286
- "name": "category_id",
2016
+ "name": "cart_id",
1287
2017
  "in": "path",
1288
2018
  "required": true,
1289
2019
  "schema": {
@@ -1295,7 +2025,7 @@
1295
2025
  "content": {
1296
2026
  "application/json": {
1297
2027
  "schema": {
1298
- "$ref": "#/components/schemas/Categories"
2028
+ "$ref": "#/components/schemas/Carts"
1299
2029
  }
1300
2030
  }
1301
2031
  }
@@ -1306,7 +2036,7 @@
1306
2036
  "content": {
1307
2037
  "application/json": {
1308
2038
  "schema": {
1309
- "$ref": "#/components/schemas/Categories"
2039
+ "$ref": "#/components/schemas/Carts"
1310
2040
  }
1311
2041
  }
1312
2042
  }
@@ -1315,12 +2045,12 @@
1315
2045
  },
1316
2046
  "put": {
1317
2047
  "tags": [
1318
- "categories"
2048
+ "carts"
1319
2049
  ],
1320
- "summary": "Update a categories",
2050
+ "summary": "Update a carts",
1321
2051
  "parameters": [
1322
2052
  {
1323
- "name": "category_id",
2053
+ "name": "cart_id",
1324
2054
  "in": "path",
1325
2055
  "required": true,
1326
2056
  "schema": {
@@ -1332,7 +2062,7 @@
1332
2062
  "content": {
1333
2063
  "application/json": {
1334
2064
  "schema": {
1335
- "$ref": "#/components/schemas/Categories"
2065
+ "$ref": "#/components/schemas/Carts"
1336
2066
  }
1337
2067
  }
1338
2068
  }
@@ -1343,7 +2073,7 @@
1343
2073
  "content": {
1344
2074
  "application/json": {
1345
2075
  "schema": {
1346
- "$ref": "#/components/schemas/Categories"
2076
+ "$ref": "#/components/schemas/Carts"
1347
2077
  }
1348
2078
  }
1349
2079
  }
@@ -1355,12 +2085,12 @@
1355
2085
  },
1356
2086
  "patch": {
1357
2087
  "tags": [
1358
- "categories"
2088
+ "carts"
1359
2089
  ],
1360
- "summary": "Partial update a categories",
2090
+ "summary": "Partial update a carts",
1361
2091
  "parameters": [
1362
2092
  {
1363
- "name": "category_id",
2093
+ "name": "cart_id",
1364
2094
  "in": "path",
1365
2095
  "required": true,
1366
2096
  "schema": {
@@ -1383,7 +2113,7 @@
1383
2113
  "content": {
1384
2114
  "application/json": {
1385
2115
  "schema": {
1386
- "$ref": "#/components/schemas/Categories"
2116
+ "$ref": "#/components/schemas/Carts"
1387
2117
  }
1388
2118
  }
1389
2119
  }
@@ -1395,12 +2125,12 @@
1395
2125
  },
1396
2126
  "delete": {
1397
2127
  "tags": [
1398
- "categories"
2128
+ "carts"
1399
2129
  ],
1400
- "summary": "Delete a categories",
2130
+ "summary": "Delete a carts",
1401
2131
  "parameters": [
1402
2132
  {
1403
- "name": "category_id",
2133
+ "name": "cart_id",
1404
2134
  "in": "path",
1405
2135
  "required": true,
1406
2136
  "schema": {
@@ -1418,12 +2148,12 @@
1418
2148
  }
1419
2149
  }
1420
2150
  },
1421
- "/api/coupons/": {
2151
+ "/api/categories/": {
1422
2152
  "get": {
1423
2153
  "tags": [
1424
- "coupons"
2154
+ "categories"
1425
2155
  ],
1426
- "summary": "List coupons",
2156
+ "summary": "List categories",
1427
2157
  "parameters": [
1428
2158
  {
1429
2159
  "name": "page",
@@ -1480,7 +2210,7 @@
1480
2210
  "data": {
1481
2211
  "type": "array",
1482
2212
  "items": {
1483
- "$ref": "#/components/schemas/Coupons"
2213
+ "$ref": "#/components/schemas/Categories"
1484
2214
  }
1485
2215
  },
1486
2216
  "count": {
@@ -1495,9 +2225,9 @@
1495
2225
  },
1496
2226
  "post": {
1497
2227
  "tags": [
1498
- "coupons"
2228
+ "categories"
1499
2229
  ],
1500
- "summary": "Bulk insert coupons",
2230
+ "summary": "Bulk insert categories",
1501
2231
  "requestBody": {
1502
2232
  "content": {
1503
2233
  "application/json": {
@@ -1507,7 +2237,7 @@
1507
2237
  "data": {
1508
2238
  "type": "array",
1509
2239
  "items": {
1510
- "$ref": "#/components/schemas/Coupons"
2240
+ "$ref": "#/components/schemas/Categories"
1511
2241
  }
1512
2242
  }
1513
2243
  }
@@ -1523,9 +2253,9 @@
1523
2253
  },
1524
2254
  "put": {
1525
2255
  "tags": [
1526
- "coupons"
2256
+ "categories"
1527
2257
  ],
1528
- "summary": "Bulk update coupons",
2258
+ "summary": "Bulk update categories",
1529
2259
  "requestBody": {
1530
2260
  "content": {
1531
2261
  "application/json": {
@@ -1535,7 +2265,7 @@
1535
2265
  "data": {
1536
2266
  "type": "array",
1537
2267
  "items": {
1538
- "$ref": "#/components/schemas/Coupons"
2268
+ "$ref": "#/components/schemas/Categories"
1539
2269
  }
1540
2270
  }
1541
2271
  }
@@ -1551,9 +2281,9 @@
1551
2281
  },
1552
2282
  "delete": {
1553
2283
  "tags": [
1554
- "coupons"
2284
+ "categories"
1555
2285
  ],
1556
- "summary": "Bulk delete coupons",
2286
+ "summary": "Bulk delete categories",
1557
2287
  "requestBody": {
1558
2288
  "content": {
1559
2289
  "application/json": {
@@ -1578,15 +2308,15 @@
1578
2308
  }
1579
2309
  }
1580
2310
  },
1581
- "/api/coupons/{coupon_id}": {
2311
+ "/api/categories/{category_id}": {
1582
2312
  "get": {
1583
2313
  "tags": [
1584
- "coupons"
2314
+ "categories"
1585
2315
  ],
1586
- "summary": "Get coupons by coupon_id",
2316
+ "summary": "Get categories by category_id",
1587
2317
  "parameters": [
1588
2318
  {
1589
- "name": "coupon_id",
2319
+ "name": "category_id",
1590
2320
  "in": "path",
1591
2321
  "required": true,
1592
2322
  "schema": {
@@ -1619,7 +2349,7 @@
1619
2349
  "content": {
1620
2350
  "application/json": {
1621
2351
  "schema": {
1622
- "$ref": "#/components/schemas/Coupons"
2352
+ "$ref": "#/components/schemas/Categories"
1623
2353
  }
1624
2354
  }
1625
2355
  }
@@ -1631,12 +2361,12 @@
1631
2361
  },
1632
2362
  "post": {
1633
2363
  "tags": [
1634
- "coupons"
2364
+ "categories"
1635
2365
  ],
1636
- "summary": "Insert a coupons",
2366
+ "summary": "Insert a categories",
1637
2367
  "parameters": [
1638
2368
  {
1639
- "name": "coupon_id",
2369
+ "name": "category_id",
1640
2370
  "in": "path",
1641
2371
  "required": true,
1642
2372
  "schema": {
@@ -1648,7 +2378,7 @@
1648
2378
  "content": {
1649
2379
  "application/json": {
1650
2380
  "schema": {
1651
- "$ref": "#/components/schemas/Coupons"
2381
+ "$ref": "#/components/schemas/Categories"
1652
2382
  }
1653
2383
  }
1654
2384
  }
@@ -1659,7 +2389,7 @@
1659
2389
  "content": {
1660
2390
  "application/json": {
1661
2391
  "schema": {
1662
- "$ref": "#/components/schemas/Coupons"
2392
+ "$ref": "#/components/schemas/Categories"
1663
2393
  }
1664
2394
  }
1665
2395
  }
@@ -1668,12 +2398,12 @@
1668
2398
  },
1669
2399
  "put": {
1670
2400
  "tags": [
1671
- "coupons"
2401
+ "categories"
1672
2402
  ],
1673
- "summary": "Update a coupons",
2403
+ "summary": "Update a categories",
1674
2404
  "parameters": [
1675
2405
  {
1676
- "name": "coupon_id",
2406
+ "name": "category_id",
1677
2407
  "in": "path",
1678
2408
  "required": true,
1679
2409
  "schema": {
@@ -1685,7 +2415,7 @@
1685
2415
  "content": {
1686
2416
  "application/json": {
1687
2417
  "schema": {
1688
- "$ref": "#/components/schemas/Coupons"
2418
+ "$ref": "#/components/schemas/Categories"
1689
2419
  }
1690
2420
  }
1691
2421
  }
@@ -1696,7 +2426,7 @@
1696
2426
  "content": {
1697
2427
  "application/json": {
1698
2428
  "schema": {
1699
- "$ref": "#/components/schemas/Coupons"
2429
+ "$ref": "#/components/schemas/Categories"
1700
2430
  }
1701
2431
  }
1702
2432
  }
@@ -1708,12 +2438,12 @@
1708
2438
  },
1709
2439
  "patch": {
1710
2440
  "tags": [
1711
- "coupons"
2441
+ "categories"
1712
2442
  ],
1713
- "summary": "Partial update a coupons",
2443
+ "summary": "Partial update a categories",
1714
2444
  "parameters": [
1715
2445
  {
1716
- "name": "coupon_id",
2446
+ "name": "category_id",
1717
2447
  "in": "path",
1718
2448
  "required": true,
1719
2449
  "schema": {
@@ -1736,7 +2466,7 @@
1736
2466
  "content": {
1737
2467
  "application/json": {
1738
2468
  "schema": {
1739
- "$ref": "#/components/schemas/Coupons"
2469
+ "$ref": "#/components/schemas/Categories"
1740
2470
  }
1741
2471
  }
1742
2472
  }
@@ -1748,12 +2478,12 @@
1748
2478
  },
1749
2479
  "delete": {
1750
2480
  "tags": [
1751
- "coupons"
2481
+ "categories"
1752
2482
  ],
1753
- "summary": "Delete a coupons",
2483
+ "summary": "Delete a categories",
1754
2484
  "parameters": [
1755
2485
  {
1756
- "name": "coupon_id",
2486
+ "name": "category_id",
1757
2487
  "in": "path",
1758
2488
  "required": true,
1759
2489
  "schema": {
@@ -1771,12 +2501,12 @@
1771
2501
  }
1772
2502
  }
1773
2503
  },
1774
- "/api/order_items/": {
2504
+ "/api/coupons/": {
1775
2505
  "get": {
1776
2506
  "tags": [
1777
- "order_items"
2507
+ "coupons"
1778
2508
  ],
1779
- "summary": "List order_items",
2509
+ "summary": "List coupons",
1780
2510
  "parameters": [
1781
2511
  {
1782
2512
  "name": "page",
@@ -1833,7 +2563,7 @@
1833
2563
  "data": {
1834
2564
  "type": "array",
1835
2565
  "items": {
1836
- "$ref": "#/components/schemas/Order_items"
2566
+ "$ref": "#/components/schemas/Coupons"
1837
2567
  }
1838
2568
  },
1839
2569
  "count": {
@@ -1848,9 +2578,9 @@
1848
2578
  },
1849
2579
  "post": {
1850
2580
  "tags": [
1851
- "order_items"
2581
+ "coupons"
1852
2582
  ],
1853
- "summary": "Bulk insert order_items",
2583
+ "summary": "Bulk insert coupons",
1854
2584
  "requestBody": {
1855
2585
  "content": {
1856
2586
  "application/json": {
@@ -1860,7 +2590,7 @@
1860
2590
  "data": {
1861
2591
  "type": "array",
1862
2592
  "items": {
1863
- "$ref": "#/components/schemas/Order_items"
2593
+ "$ref": "#/components/schemas/Coupons"
1864
2594
  }
1865
2595
  }
1866
2596
  }
@@ -1876,9 +2606,9 @@
1876
2606
  },
1877
2607
  "put": {
1878
2608
  "tags": [
1879
- "order_items"
2609
+ "coupons"
1880
2610
  ],
1881
- "summary": "Bulk update order_items",
2611
+ "summary": "Bulk update coupons",
1882
2612
  "requestBody": {
1883
2613
  "content": {
1884
2614
  "application/json": {
@@ -1888,7 +2618,7 @@
1888
2618
  "data": {
1889
2619
  "type": "array",
1890
2620
  "items": {
1891
- "$ref": "#/components/schemas/Order_items"
2621
+ "$ref": "#/components/schemas/Coupons"
1892
2622
  }
1893
2623
  }
1894
2624
  }
@@ -1904,9 +2634,9 @@
1904
2634
  },
1905
2635
  "delete": {
1906
2636
  "tags": [
1907
- "order_items"
2637
+ "coupons"
1908
2638
  ],
1909
- "summary": "Bulk delete order_items",
2639
+ "summary": "Bulk delete coupons",
1910
2640
  "requestBody": {
1911
2641
  "content": {
1912
2642
  "application/json": {
@@ -1931,15 +2661,15 @@
1931
2661
  }
1932
2662
  }
1933
2663
  },
1934
- "/api/order_items/{order_item_id}": {
2664
+ "/api/coupons/{coupon_id}": {
1935
2665
  "get": {
1936
2666
  "tags": [
1937
- "order_items"
2667
+ "coupons"
1938
2668
  ],
1939
- "summary": "Get order_items by order_item_id",
2669
+ "summary": "Get coupons by coupon_id",
1940
2670
  "parameters": [
1941
2671
  {
1942
- "name": "order_item_id",
2672
+ "name": "coupon_id",
1943
2673
  "in": "path",
1944
2674
  "required": true,
1945
2675
  "schema": {
@@ -1972,7 +2702,7 @@
1972
2702
  "content": {
1973
2703
  "application/json": {
1974
2704
  "schema": {
1975
- "$ref": "#/components/schemas/Order_items"
2705
+ "$ref": "#/components/schemas/Coupons"
1976
2706
  }
1977
2707
  }
1978
2708
  }
@@ -1984,12 +2714,12 @@
1984
2714
  },
1985
2715
  "post": {
1986
2716
  "tags": [
1987
- "order_items"
2717
+ "coupons"
1988
2718
  ],
1989
- "summary": "Insert a order_items",
2719
+ "summary": "Insert a coupons",
1990
2720
  "parameters": [
1991
2721
  {
1992
- "name": "order_item_id",
2722
+ "name": "coupon_id",
1993
2723
  "in": "path",
1994
2724
  "required": true,
1995
2725
  "schema": {
@@ -2001,7 +2731,7 @@
2001
2731
  "content": {
2002
2732
  "application/json": {
2003
2733
  "schema": {
2004
- "$ref": "#/components/schemas/Order_items"
2734
+ "$ref": "#/components/schemas/Coupons"
2005
2735
  }
2006
2736
  }
2007
2737
  }
@@ -2012,7 +2742,7 @@
2012
2742
  "content": {
2013
2743
  "application/json": {
2014
2744
  "schema": {
2015
- "$ref": "#/components/schemas/Order_items"
2745
+ "$ref": "#/components/schemas/Coupons"
2016
2746
  }
2017
2747
  }
2018
2748
  }
@@ -2021,12 +2751,12 @@
2021
2751
  },
2022
2752
  "put": {
2023
2753
  "tags": [
2024
- "order_items"
2754
+ "coupons"
2025
2755
  ],
2026
- "summary": "Update a order_items",
2756
+ "summary": "Update a coupons",
2027
2757
  "parameters": [
2028
2758
  {
2029
- "name": "order_item_id",
2759
+ "name": "coupon_id",
2030
2760
  "in": "path",
2031
2761
  "required": true,
2032
2762
  "schema": {
@@ -2038,7 +2768,7 @@
2038
2768
  "content": {
2039
2769
  "application/json": {
2040
2770
  "schema": {
2041
- "$ref": "#/components/schemas/Order_items"
2771
+ "$ref": "#/components/schemas/Coupons"
2042
2772
  }
2043
2773
  }
2044
2774
  }
@@ -2049,7 +2779,7 @@
2049
2779
  "content": {
2050
2780
  "application/json": {
2051
2781
  "schema": {
2052
- "$ref": "#/components/schemas/Order_items"
2782
+ "$ref": "#/components/schemas/Coupons"
2053
2783
  }
2054
2784
  }
2055
2785
  }
@@ -2061,12 +2791,12 @@
2061
2791
  },
2062
2792
  "patch": {
2063
2793
  "tags": [
2064
- "order_items"
2794
+ "coupons"
2065
2795
  ],
2066
- "summary": "Partial update a order_items",
2796
+ "summary": "Partial update a coupons",
2067
2797
  "parameters": [
2068
2798
  {
2069
- "name": "order_item_id",
2799
+ "name": "coupon_id",
2070
2800
  "in": "path",
2071
2801
  "required": true,
2072
2802
  "schema": {
@@ -2089,7 +2819,7 @@
2089
2819
  "content": {
2090
2820
  "application/json": {
2091
2821
  "schema": {
2092
- "$ref": "#/components/schemas/Order_items"
2822
+ "$ref": "#/components/schemas/Coupons"
2093
2823
  }
2094
2824
  }
2095
2825
  }
@@ -2101,12 +2831,12 @@
2101
2831
  },
2102
2832
  "delete": {
2103
2833
  "tags": [
2104
- "order_items"
2834
+ "coupons"
2105
2835
  ],
2106
- "summary": "Delete a order_items",
2836
+ "summary": "Delete a coupons",
2107
2837
  "parameters": [
2108
2838
  {
2109
- "name": "order_item_id",
2839
+ "name": "coupon_id",
2110
2840
  "in": "path",
2111
2841
  "required": true,
2112
2842
  "schema": {
@@ -2124,13 +2854,22 @@
2124
2854
  }
2125
2855
  }
2126
2856
  },
2127
- "/api/orders/": {
2857
+ "/api/orders/{order_id}/order_items/": {
2128
2858
  "get": {
2129
2859
  "tags": [
2130
- "orders"
2860
+ "order_items"
2131
2861
  ],
2132
- "summary": "List orders",
2862
+ "summary": "List order_items",
2133
2863
  "parameters": [
2864
+ {
2865
+ "name": "order_id",
2866
+ "in": "path",
2867
+ "required": true,
2868
+ "schema": {
2869
+ "type": "string"
2870
+ },
2871
+ "description": "Orders foreign key"
2872
+ },
2134
2873
  {
2135
2874
  "name": "page",
2136
2875
  "in": "query",
@@ -2186,7 +2925,7 @@
2186
2925
  "data": {
2187
2926
  "type": "array",
2188
2927
  "items": {
2189
- "$ref": "#/components/schemas/Orders"
2928
+ "$ref": "#/components/schemas/Order_items"
2190
2929
  }
2191
2930
  },
2192
2931
  "count": {
@@ -2201,9 +2940,9 @@
2201
2940
  },
2202
2941
  "post": {
2203
2942
  "tags": [
2204
- "orders"
2943
+ "order_items"
2205
2944
  ],
2206
- "summary": "Bulk insert orders",
2945
+ "summary": "Bulk insert order_items",
2207
2946
  "requestBody": {
2208
2947
  "content": {
2209
2948
  "application/json": {
@@ -2213,7 +2952,7 @@
2213
2952
  "data": {
2214
2953
  "type": "array",
2215
2954
  "items": {
2216
- "$ref": "#/components/schemas/Orders"
2955
+ "$ref": "#/components/schemas/Order_items"
2217
2956
  }
2218
2957
  }
2219
2958
  }
@@ -2229,9 +2968,9 @@
2229
2968
  },
2230
2969
  "put": {
2231
2970
  "tags": [
2232
- "orders"
2971
+ "order_items"
2233
2972
  ],
2234
- "summary": "Bulk update orders",
2973
+ "summary": "Bulk update order_items",
2235
2974
  "requestBody": {
2236
2975
  "content": {
2237
2976
  "application/json": {
@@ -2241,7 +2980,7 @@
2241
2980
  "data": {
2242
2981
  "type": "array",
2243
2982
  "items": {
2244
- "$ref": "#/components/schemas/Orders"
2983
+ "$ref": "#/components/schemas/Order_items"
2245
2984
  }
2246
2985
  }
2247
2986
  }
@@ -2257,9 +2996,9 @@
2257
2996
  },
2258
2997
  "delete": {
2259
2998
  "tags": [
2260
- "orders"
2999
+ "order_items"
2261
3000
  ],
2262
- "summary": "Bulk delete orders",
3001
+ "summary": "Bulk delete order_items",
2263
3002
  "requestBody": {
2264
3003
  "content": {
2265
3004
  "application/json": {
@@ -2284,17 +3023,26 @@
2284
3023
  }
2285
3024
  }
2286
3025
  },
2287
- "/api/orders/{order_id}": {
3026
+ "/api/orders/{order_id}/order_items/{order_item_id}": {
2288
3027
  "get": {
2289
3028
  "tags": [
2290
- "orders"
3029
+ "order_items"
2291
3030
  ],
2292
- "summary": "Get orders by order_id",
3031
+ "summary": "Get order_items by order_item_id",
2293
3032
  "parameters": [
2294
3033
  {
2295
3034
  "name": "order_id",
2296
3035
  "in": "path",
2297
3036
  "required": true,
3037
+ "schema": {
3038
+ "type": "string"
3039
+ },
3040
+ "description": "Orders foreign key"
3041
+ },
3042
+ {
3043
+ "name": "order_item_id",
3044
+ "in": "path",
3045
+ "required": true,
2298
3046
  "schema": {
2299
3047
  "type": "string"
2300
3048
  }
@@ -2325,7 +3073,7 @@
2325
3073
  "content": {
2326
3074
  "application/json": {
2327
3075
  "schema": {
2328
- "$ref": "#/components/schemas/Orders"
3076
+ "$ref": "#/components/schemas/Order_items"
2329
3077
  }
2330
3078
  }
2331
3079
  }
@@ -2337,14 +3085,23 @@
2337
3085
  },
2338
3086
  "post": {
2339
3087
  "tags": [
2340
- "orders"
3088
+ "order_items"
2341
3089
  ],
2342
- "summary": "Insert a orders",
3090
+ "summary": "Insert a order_items",
2343
3091
  "parameters": [
2344
3092
  {
2345
3093
  "name": "order_id",
2346
3094
  "in": "path",
2347
3095
  "required": true,
3096
+ "schema": {
3097
+ "type": "string"
3098
+ },
3099
+ "description": "Orders foreign key"
3100
+ },
3101
+ {
3102
+ "name": "order_item_id",
3103
+ "in": "path",
3104
+ "required": true,
2348
3105
  "schema": {
2349
3106
  "type": "string"
2350
3107
  }
@@ -2354,7 +3111,7 @@
2354
3111
  "content": {
2355
3112
  "application/json": {
2356
3113
  "schema": {
2357
- "$ref": "#/components/schemas/Orders"
3114
+ "$ref": "#/components/schemas/Order_items"
2358
3115
  }
2359
3116
  }
2360
3117
  }
@@ -2365,7 +3122,7 @@
2365
3122
  "content": {
2366
3123
  "application/json": {
2367
3124
  "schema": {
2368
- "$ref": "#/components/schemas/Orders"
3125
+ "$ref": "#/components/schemas/Order_items"
2369
3126
  }
2370
3127
  }
2371
3128
  }
@@ -2374,14 +3131,23 @@
2374
3131
  },
2375
3132
  "put": {
2376
3133
  "tags": [
2377
- "orders"
3134
+ "order_items"
2378
3135
  ],
2379
- "summary": "Update a orders",
3136
+ "summary": "Update a order_items",
2380
3137
  "parameters": [
2381
3138
  {
2382
3139
  "name": "order_id",
2383
3140
  "in": "path",
2384
3141
  "required": true,
3142
+ "schema": {
3143
+ "type": "string"
3144
+ },
3145
+ "description": "Orders foreign key"
3146
+ },
3147
+ {
3148
+ "name": "order_item_id",
3149
+ "in": "path",
3150
+ "required": true,
2385
3151
  "schema": {
2386
3152
  "type": "string"
2387
3153
  }
@@ -2391,7 +3157,7 @@
2391
3157
  "content": {
2392
3158
  "application/json": {
2393
3159
  "schema": {
2394
- "$ref": "#/components/schemas/Orders"
3160
+ "$ref": "#/components/schemas/Order_items"
2395
3161
  }
2396
3162
  }
2397
3163
  }
@@ -2402,7 +3168,7 @@
2402
3168
  "content": {
2403
3169
  "application/json": {
2404
3170
  "schema": {
2405
- "$ref": "#/components/schemas/Orders"
3171
+ "$ref": "#/components/schemas/Order_items"
2406
3172
  }
2407
3173
  }
2408
3174
  }
@@ -2414,14 +3180,23 @@
2414
3180
  },
2415
3181
  "patch": {
2416
3182
  "tags": [
2417
- "orders"
3183
+ "order_items"
2418
3184
  ],
2419
- "summary": "Partial update a orders",
3185
+ "summary": "Partial update a order_items",
2420
3186
  "parameters": [
2421
3187
  {
2422
3188
  "name": "order_id",
2423
3189
  "in": "path",
2424
3190
  "required": true,
3191
+ "schema": {
3192
+ "type": "string"
3193
+ },
3194
+ "description": "Orders foreign key"
3195
+ },
3196
+ {
3197
+ "name": "order_item_id",
3198
+ "in": "path",
3199
+ "required": true,
2425
3200
  "schema": {
2426
3201
  "type": "string"
2427
3202
  }
@@ -2442,7 +3217,7 @@
2442
3217
  "content": {
2443
3218
  "application/json": {
2444
3219
  "schema": {
2445
- "$ref": "#/components/schemas/Orders"
3220
+ "$ref": "#/components/schemas/Order_items"
2446
3221
  }
2447
3222
  }
2448
3223
  }
@@ -2454,14 +3229,23 @@
2454
3229
  },
2455
3230
  "delete": {
2456
3231
  "tags": [
2457
- "orders"
3232
+ "order_items"
2458
3233
  ],
2459
- "summary": "Delete a orders",
3234
+ "summary": "Delete a order_items",
2460
3235
  "parameters": [
2461
3236
  {
2462
3237
  "name": "order_id",
2463
3238
  "in": "path",
2464
3239
  "required": true,
3240
+ "schema": {
3241
+ "type": "string"
3242
+ },
3243
+ "description": "Orders foreign key"
3244
+ },
3245
+ {
3246
+ "name": "order_item_id",
3247
+ "in": "path",
3248
+ "required": true,
2465
3249
  "schema": {
2466
3250
  "type": "string"
2467
3251
  }
@@ -2477,12 +3261,12 @@
2477
3261
  }
2478
3262
  }
2479
3263
  },
2480
- "/api/payments/": {
3264
+ "/api/orders/": {
2481
3265
  "get": {
2482
3266
  "tags": [
2483
- "payments"
3267
+ "orders"
2484
3268
  ],
2485
- "summary": "List payments",
3269
+ "summary": "List orders",
2486
3270
  "parameters": [
2487
3271
  {
2488
3272
  "name": "page",
@@ -2539,7 +3323,7 @@
2539
3323
  "data": {
2540
3324
  "type": "array",
2541
3325
  "items": {
2542
- "$ref": "#/components/schemas/Payments"
3326
+ "$ref": "#/components/schemas/Orders"
2543
3327
  }
2544
3328
  },
2545
3329
  "count": {
@@ -2554,9 +3338,9 @@
2554
3338
  },
2555
3339
  "post": {
2556
3340
  "tags": [
2557
- "payments"
3341
+ "orders"
2558
3342
  ],
2559
- "summary": "Bulk insert payments",
3343
+ "summary": "Bulk insert orders",
2560
3344
  "requestBody": {
2561
3345
  "content": {
2562
3346
  "application/json": {
@@ -2566,7 +3350,7 @@
2566
3350
  "data": {
2567
3351
  "type": "array",
2568
3352
  "items": {
2569
- "$ref": "#/components/schemas/Payments"
3353
+ "$ref": "#/components/schemas/Orders"
2570
3354
  }
2571
3355
  }
2572
3356
  }
@@ -2582,9 +3366,9 @@
2582
3366
  },
2583
3367
  "put": {
2584
3368
  "tags": [
2585
- "payments"
3369
+ "orders"
2586
3370
  ],
2587
- "summary": "Bulk update payments",
3371
+ "summary": "Bulk update orders",
2588
3372
  "requestBody": {
2589
3373
  "content": {
2590
3374
  "application/json": {
@@ -2594,7 +3378,7 @@
2594
3378
  "data": {
2595
3379
  "type": "array",
2596
3380
  "items": {
2597
- "$ref": "#/components/schemas/Payments"
3381
+ "$ref": "#/components/schemas/Orders"
2598
3382
  }
2599
3383
  }
2600
3384
  }
@@ -2610,9 +3394,9 @@
2610
3394
  },
2611
3395
  "delete": {
2612
3396
  "tags": [
2613
- "payments"
3397
+ "orders"
2614
3398
  ],
2615
- "summary": "Bulk delete payments",
3399
+ "summary": "Bulk delete orders",
2616
3400
  "requestBody": {
2617
3401
  "content": {
2618
3402
  "application/json": {
@@ -2637,15 +3421,15 @@
2637
3421
  }
2638
3422
  }
2639
3423
  },
2640
- "/api/payments/{payment_id}": {
3424
+ "/api/orders/{order_id}": {
2641
3425
  "get": {
2642
3426
  "tags": [
2643
- "payments"
3427
+ "orders"
2644
3428
  ],
2645
- "summary": "Get payments by payment_id",
3429
+ "summary": "Get orders by order_id",
2646
3430
  "parameters": [
2647
3431
  {
2648
- "name": "payment_id",
3432
+ "name": "order_id",
2649
3433
  "in": "path",
2650
3434
  "required": true,
2651
3435
  "schema": {
@@ -2678,7 +3462,7 @@
2678
3462
  "content": {
2679
3463
  "application/json": {
2680
3464
  "schema": {
2681
- "$ref": "#/components/schemas/Payments"
3465
+ "$ref": "#/components/schemas/Orders"
2682
3466
  }
2683
3467
  }
2684
3468
  }
@@ -2690,12 +3474,12 @@
2690
3474
  },
2691
3475
  "post": {
2692
3476
  "tags": [
2693
- "payments"
3477
+ "orders"
2694
3478
  ],
2695
- "summary": "Insert a payments",
3479
+ "summary": "Insert a orders",
2696
3480
  "parameters": [
2697
3481
  {
2698
- "name": "payment_id",
3482
+ "name": "order_id",
2699
3483
  "in": "path",
2700
3484
  "required": true,
2701
3485
  "schema": {
@@ -2707,7 +3491,7 @@
2707
3491
  "content": {
2708
3492
  "application/json": {
2709
3493
  "schema": {
2710
- "$ref": "#/components/schemas/Payments"
3494
+ "$ref": "#/components/schemas/Orders"
2711
3495
  }
2712
3496
  }
2713
3497
  }
@@ -2718,7 +3502,7 @@
2718
3502
  "content": {
2719
3503
  "application/json": {
2720
3504
  "schema": {
2721
- "$ref": "#/components/schemas/Payments"
3505
+ "$ref": "#/components/schemas/Orders"
2722
3506
  }
2723
3507
  }
2724
3508
  }
@@ -2727,12 +3511,12 @@
2727
3511
  },
2728
3512
  "put": {
2729
3513
  "tags": [
2730
- "payments"
3514
+ "orders"
2731
3515
  ],
2732
- "summary": "Update a payments",
3516
+ "summary": "Update a orders",
2733
3517
  "parameters": [
2734
3518
  {
2735
- "name": "payment_id",
3519
+ "name": "order_id",
2736
3520
  "in": "path",
2737
3521
  "required": true,
2738
3522
  "schema": {
@@ -2744,7 +3528,7 @@
2744
3528
  "content": {
2745
3529
  "application/json": {
2746
3530
  "schema": {
2747
- "$ref": "#/components/schemas/Payments"
3531
+ "$ref": "#/components/schemas/Orders"
2748
3532
  }
2749
3533
  }
2750
3534
  }
@@ -2755,7 +3539,7 @@
2755
3539
  "content": {
2756
3540
  "application/json": {
2757
3541
  "schema": {
2758
- "$ref": "#/components/schemas/Payments"
3542
+ "$ref": "#/components/schemas/Orders"
2759
3543
  }
2760
3544
  }
2761
3545
  }
@@ -2767,12 +3551,12 @@
2767
3551
  },
2768
3552
  "patch": {
2769
3553
  "tags": [
2770
- "payments"
3554
+ "orders"
2771
3555
  ],
2772
- "summary": "Partial update a payments",
3556
+ "summary": "Partial update a orders",
2773
3557
  "parameters": [
2774
3558
  {
2775
- "name": "payment_id",
3559
+ "name": "order_id",
2776
3560
  "in": "path",
2777
3561
  "required": true,
2778
3562
  "schema": {
@@ -2795,7 +3579,7 @@
2795
3579
  "content": {
2796
3580
  "application/json": {
2797
3581
  "schema": {
2798
- "$ref": "#/components/schemas/Payments"
3582
+ "$ref": "#/components/schemas/Orders"
2799
3583
  }
2800
3584
  }
2801
3585
  }
@@ -2807,12 +3591,12 @@
2807
3591
  },
2808
3592
  "delete": {
2809
3593
  "tags": [
2810
- "payments"
3594
+ "orders"
2811
3595
  ],
2812
- "summary": "Delete a payments",
3596
+ "summary": "Delete a orders",
2813
3597
  "parameters": [
2814
3598
  {
2815
- "name": "payment_id",
3599
+ "name": "order_id",
2816
3600
  "in": "path",
2817
3601
  "required": true,
2818
3602
  "schema": {
@@ -2830,13 +3614,22 @@
2830
3614
  }
2831
3615
  }
2832
3616
  },
2833
- "/api/product_images/": {
3617
+ "/api/orders/{order_id}/payments/": {
2834
3618
  "get": {
2835
3619
  "tags": [
2836
- "product_images"
3620
+ "payments"
2837
3621
  ],
2838
- "summary": "List product_images",
3622
+ "summary": "List payments",
2839
3623
  "parameters": [
3624
+ {
3625
+ "name": "order_id",
3626
+ "in": "path",
3627
+ "required": true,
3628
+ "schema": {
3629
+ "type": "string"
3630
+ },
3631
+ "description": "Orders foreign key"
3632
+ },
2840
3633
  {
2841
3634
  "name": "page",
2842
3635
  "in": "query",
@@ -2892,7 +3685,7 @@
2892
3685
  "data": {
2893
3686
  "type": "array",
2894
3687
  "items": {
2895
- "$ref": "#/components/schemas/Product_images"
3688
+ "$ref": "#/components/schemas/Payments"
2896
3689
  }
2897
3690
  },
2898
3691
  "count": {
@@ -2907,9 +3700,9 @@
2907
3700
  },
2908
3701
  "post": {
2909
3702
  "tags": [
2910
- "product_images"
3703
+ "payments"
2911
3704
  ],
2912
- "summary": "Bulk insert product_images",
3705
+ "summary": "Bulk insert payments",
2913
3706
  "requestBody": {
2914
3707
  "content": {
2915
3708
  "application/json": {
@@ -2919,7 +3712,7 @@
2919
3712
  "data": {
2920
3713
  "type": "array",
2921
3714
  "items": {
2922
- "$ref": "#/components/schemas/Product_images"
3715
+ "$ref": "#/components/schemas/Payments"
2923
3716
  }
2924
3717
  }
2925
3718
  }
@@ -2935,9 +3728,9 @@
2935
3728
  },
2936
3729
  "put": {
2937
3730
  "tags": [
2938
- "product_images"
3731
+ "payments"
2939
3732
  ],
2940
- "summary": "Bulk update product_images",
3733
+ "summary": "Bulk update payments",
2941
3734
  "requestBody": {
2942
3735
  "content": {
2943
3736
  "application/json": {
@@ -2947,7 +3740,7 @@
2947
3740
  "data": {
2948
3741
  "type": "array",
2949
3742
  "items": {
2950
- "$ref": "#/components/schemas/Product_images"
3743
+ "$ref": "#/components/schemas/Payments"
2951
3744
  }
2952
3745
  }
2953
3746
  }
@@ -2963,9 +3756,9 @@
2963
3756
  },
2964
3757
  "delete": {
2965
3758
  "tags": [
2966
- "product_images"
3759
+ "payments"
2967
3760
  ],
2968
- "summary": "Bulk delete product_images",
3761
+ "summary": "Bulk delete payments",
2969
3762
  "requestBody": {
2970
3763
  "content": {
2971
3764
  "application/json": {
@@ -2990,15 +3783,24 @@
2990
3783
  }
2991
3784
  }
2992
3785
  },
2993
- "/api/product_images/{product_image_id}": {
3786
+ "/api/orders/{order_id}/payments/{payment_id}": {
2994
3787
  "get": {
2995
3788
  "tags": [
2996
- "product_images"
3789
+ "payments"
2997
3790
  ],
2998
- "summary": "Get product_images by product_image_id",
3791
+ "summary": "Get payments by payment_id",
2999
3792
  "parameters": [
3000
3793
  {
3001
- "name": "product_image_id",
3794
+ "name": "order_id",
3795
+ "in": "path",
3796
+ "required": true,
3797
+ "schema": {
3798
+ "type": "string"
3799
+ },
3800
+ "description": "Orders foreign key"
3801
+ },
3802
+ {
3803
+ "name": "payment_id",
3002
3804
  "in": "path",
3003
3805
  "required": true,
3004
3806
  "schema": {
@@ -3031,7 +3833,7 @@
3031
3833
  "content": {
3032
3834
  "application/json": {
3033
3835
  "schema": {
3034
- "$ref": "#/components/schemas/Product_images"
3836
+ "$ref": "#/components/schemas/Payments"
3035
3837
  }
3036
3838
  }
3037
3839
  }
@@ -3043,12 +3845,21 @@
3043
3845
  },
3044
3846
  "post": {
3045
3847
  "tags": [
3046
- "product_images"
3848
+ "payments"
3047
3849
  ],
3048
- "summary": "Insert a product_images",
3850
+ "summary": "Insert a payments",
3049
3851
  "parameters": [
3050
3852
  {
3051
- "name": "product_image_id",
3853
+ "name": "order_id",
3854
+ "in": "path",
3855
+ "required": true,
3856
+ "schema": {
3857
+ "type": "string"
3858
+ },
3859
+ "description": "Orders foreign key"
3860
+ },
3861
+ {
3862
+ "name": "payment_id",
3052
3863
  "in": "path",
3053
3864
  "required": true,
3054
3865
  "schema": {
@@ -3060,7 +3871,7 @@
3060
3871
  "content": {
3061
3872
  "application/json": {
3062
3873
  "schema": {
3063
- "$ref": "#/components/schemas/Product_images"
3874
+ "$ref": "#/components/schemas/Payments"
3064
3875
  }
3065
3876
  }
3066
3877
  }
@@ -3071,7 +3882,7 @@
3071
3882
  "content": {
3072
3883
  "application/json": {
3073
3884
  "schema": {
3074
- "$ref": "#/components/schemas/Product_images"
3885
+ "$ref": "#/components/schemas/Payments"
3075
3886
  }
3076
3887
  }
3077
3888
  }
@@ -3080,12 +3891,21 @@
3080
3891
  },
3081
3892
  "put": {
3082
3893
  "tags": [
3083
- "product_images"
3894
+ "payments"
3084
3895
  ],
3085
- "summary": "Update a product_images",
3896
+ "summary": "Update a payments",
3086
3897
  "parameters": [
3087
3898
  {
3088
- "name": "product_image_id",
3899
+ "name": "order_id",
3900
+ "in": "path",
3901
+ "required": true,
3902
+ "schema": {
3903
+ "type": "string"
3904
+ },
3905
+ "description": "Orders foreign key"
3906
+ },
3907
+ {
3908
+ "name": "payment_id",
3089
3909
  "in": "path",
3090
3910
  "required": true,
3091
3911
  "schema": {
@@ -3097,7 +3917,7 @@
3097
3917
  "content": {
3098
3918
  "application/json": {
3099
3919
  "schema": {
3100
- "$ref": "#/components/schemas/Product_images"
3920
+ "$ref": "#/components/schemas/Payments"
3101
3921
  }
3102
3922
  }
3103
3923
  }
@@ -3108,7 +3928,7 @@
3108
3928
  "content": {
3109
3929
  "application/json": {
3110
3930
  "schema": {
3111
- "$ref": "#/components/schemas/Product_images"
3931
+ "$ref": "#/components/schemas/Payments"
3112
3932
  }
3113
3933
  }
3114
3934
  }
@@ -3120,12 +3940,21 @@
3120
3940
  },
3121
3941
  "patch": {
3122
3942
  "tags": [
3123
- "product_images"
3943
+ "payments"
3124
3944
  ],
3125
- "summary": "Partial update a product_images",
3945
+ "summary": "Partial update a payments",
3126
3946
  "parameters": [
3127
3947
  {
3128
- "name": "product_image_id",
3948
+ "name": "order_id",
3949
+ "in": "path",
3950
+ "required": true,
3951
+ "schema": {
3952
+ "type": "string"
3953
+ },
3954
+ "description": "Orders foreign key"
3955
+ },
3956
+ {
3957
+ "name": "payment_id",
3129
3958
  "in": "path",
3130
3959
  "required": true,
3131
3960
  "schema": {
@@ -3148,7 +3977,7 @@
3148
3977
  "content": {
3149
3978
  "application/json": {
3150
3979
  "schema": {
3151
- "$ref": "#/components/schemas/Product_images"
3980
+ "$ref": "#/components/schemas/Payments"
3152
3981
  }
3153
3982
  }
3154
3983
  }
@@ -3160,12 +3989,21 @@
3160
3989
  },
3161
3990
  "delete": {
3162
3991
  "tags": [
3163
- "product_images"
3992
+ "payments"
3164
3993
  ],
3165
- "summary": "Delete a product_images",
3994
+ "summary": "Delete a payments",
3166
3995
  "parameters": [
3167
3996
  {
3168
- "name": "product_image_id",
3997
+ "name": "order_id",
3998
+ "in": "path",
3999
+ "required": true,
4000
+ "schema": {
4001
+ "type": "string"
4002
+ },
4003
+ "description": "Orders foreign key"
4004
+ },
4005
+ {
4006
+ "name": "payment_id",
3169
4007
  "in": "path",
3170
4008
  "required": true,
3171
4009
  "schema": {
@@ -3183,13 +4021,22 @@
3183
4021
  }
3184
4022
  }
3185
4023
  },
3186
- "/api/product_reviews/": {
4024
+ "/api/products/{product_id}/product_images/": {
3187
4025
  "get": {
3188
4026
  "tags": [
3189
- "product_reviews"
4027
+ "product_images"
3190
4028
  ],
3191
- "summary": "List product_reviews",
4029
+ "summary": "List product_images",
3192
4030
  "parameters": [
4031
+ {
4032
+ "name": "product_id",
4033
+ "in": "path",
4034
+ "required": true,
4035
+ "schema": {
4036
+ "type": "string"
4037
+ },
4038
+ "description": "Products foreign key"
4039
+ },
3193
4040
  {
3194
4041
  "name": "page",
3195
4042
  "in": "query",
@@ -3245,7 +4092,7 @@
3245
4092
  "data": {
3246
4093
  "type": "array",
3247
4094
  "items": {
3248
- "$ref": "#/components/schemas/Product_reviews"
4095
+ "$ref": "#/components/schemas/Product_images"
3249
4096
  }
3250
4097
  },
3251
4098
  "count": {
@@ -3260,9 +4107,9 @@
3260
4107
  },
3261
4108
  "post": {
3262
4109
  "tags": [
3263
- "product_reviews"
4110
+ "product_images"
3264
4111
  ],
3265
- "summary": "Bulk insert product_reviews",
4112
+ "summary": "Bulk insert product_images",
3266
4113
  "requestBody": {
3267
4114
  "content": {
3268
4115
  "application/json": {
@@ -3272,7 +4119,7 @@
3272
4119
  "data": {
3273
4120
  "type": "array",
3274
4121
  "items": {
3275
- "$ref": "#/components/schemas/Product_reviews"
4122
+ "$ref": "#/components/schemas/Product_images"
3276
4123
  }
3277
4124
  }
3278
4125
  }
@@ -3288,9 +4135,9 @@
3288
4135
  },
3289
4136
  "put": {
3290
4137
  "tags": [
3291
- "product_reviews"
4138
+ "product_images"
3292
4139
  ],
3293
- "summary": "Bulk update product_reviews",
4140
+ "summary": "Bulk update product_images",
3294
4141
  "requestBody": {
3295
4142
  "content": {
3296
4143
  "application/json": {
@@ -3300,7 +4147,7 @@
3300
4147
  "data": {
3301
4148
  "type": "array",
3302
4149
  "items": {
3303
- "$ref": "#/components/schemas/Product_reviews"
4150
+ "$ref": "#/components/schemas/Product_images"
3304
4151
  }
3305
4152
  }
3306
4153
  }
@@ -3316,9 +4163,9 @@
3316
4163
  },
3317
4164
  "delete": {
3318
4165
  "tags": [
3319
- "product_reviews"
4166
+ "product_images"
3320
4167
  ],
3321
- "summary": "Bulk delete product_reviews",
4168
+ "summary": "Bulk delete product_images",
3322
4169
  "requestBody": {
3323
4170
  "content": {
3324
4171
  "application/json": {
@@ -3343,15 +4190,24 @@
3343
4190
  }
3344
4191
  }
3345
4192
  },
3346
- "/api/product_reviews/{review_id}": {
4193
+ "/api/products/{product_id}/product_images/{product_image_id}": {
3347
4194
  "get": {
3348
4195
  "tags": [
3349
- "product_reviews"
4196
+ "product_images"
3350
4197
  ],
3351
- "summary": "Get product_reviews by review_id",
4198
+ "summary": "Get product_images by product_image_id",
3352
4199
  "parameters": [
3353
4200
  {
3354
- "name": "review_id",
4201
+ "name": "product_id",
4202
+ "in": "path",
4203
+ "required": true,
4204
+ "schema": {
4205
+ "type": "string"
4206
+ },
4207
+ "description": "Products foreign key"
4208
+ },
4209
+ {
4210
+ "name": "product_image_id",
3355
4211
  "in": "path",
3356
4212
  "required": true,
3357
4213
  "schema": {
@@ -3384,7 +4240,7 @@
3384
4240
  "content": {
3385
4241
  "application/json": {
3386
4242
  "schema": {
3387
- "$ref": "#/components/schemas/Product_reviews"
4243
+ "$ref": "#/components/schemas/Product_images"
3388
4244
  }
3389
4245
  }
3390
4246
  }
@@ -3396,12 +4252,21 @@
3396
4252
  },
3397
4253
  "post": {
3398
4254
  "tags": [
3399
- "product_reviews"
4255
+ "product_images"
3400
4256
  ],
3401
- "summary": "Insert a product_reviews",
4257
+ "summary": "Insert a product_images",
3402
4258
  "parameters": [
3403
4259
  {
3404
- "name": "review_id",
4260
+ "name": "product_id",
4261
+ "in": "path",
4262
+ "required": true,
4263
+ "schema": {
4264
+ "type": "string"
4265
+ },
4266
+ "description": "Products foreign key"
4267
+ },
4268
+ {
4269
+ "name": "product_image_id",
3405
4270
  "in": "path",
3406
4271
  "required": true,
3407
4272
  "schema": {
@@ -3413,7 +4278,7 @@
3413
4278
  "content": {
3414
4279
  "application/json": {
3415
4280
  "schema": {
3416
- "$ref": "#/components/schemas/Product_reviews"
4281
+ "$ref": "#/components/schemas/Product_images"
3417
4282
  }
3418
4283
  }
3419
4284
  }
@@ -3424,7 +4289,7 @@
3424
4289
  "content": {
3425
4290
  "application/json": {
3426
4291
  "schema": {
3427
- "$ref": "#/components/schemas/Product_reviews"
4292
+ "$ref": "#/components/schemas/Product_images"
3428
4293
  }
3429
4294
  }
3430
4295
  }
@@ -3433,12 +4298,21 @@
3433
4298
  },
3434
4299
  "put": {
3435
4300
  "tags": [
3436
- "product_reviews"
4301
+ "product_images"
3437
4302
  ],
3438
- "summary": "Update a product_reviews",
4303
+ "summary": "Update a product_images",
3439
4304
  "parameters": [
3440
4305
  {
3441
- "name": "review_id",
4306
+ "name": "product_id",
4307
+ "in": "path",
4308
+ "required": true,
4309
+ "schema": {
4310
+ "type": "string"
4311
+ },
4312
+ "description": "Products foreign key"
4313
+ },
4314
+ {
4315
+ "name": "product_image_id",
3442
4316
  "in": "path",
3443
4317
  "required": true,
3444
4318
  "schema": {
@@ -3450,7 +4324,7 @@
3450
4324
  "content": {
3451
4325
  "application/json": {
3452
4326
  "schema": {
3453
- "$ref": "#/components/schemas/Product_reviews"
4327
+ "$ref": "#/components/schemas/Product_images"
3454
4328
  }
3455
4329
  }
3456
4330
  }
@@ -3461,7 +4335,7 @@
3461
4335
  "content": {
3462
4336
  "application/json": {
3463
4337
  "schema": {
3464
- "$ref": "#/components/schemas/Product_reviews"
4338
+ "$ref": "#/components/schemas/Product_images"
3465
4339
  }
3466
4340
  }
3467
4341
  }
@@ -3473,12 +4347,21 @@
3473
4347
  },
3474
4348
  "patch": {
3475
4349
  "tags": [
3476
- "product_reviews"
4350
+ "product_images"
3477
4351
  ],
3478
- "summary": "Partial update a product_reviews",
4352
+ "summary": "Partial update a product_images",
3479
4353
  "parameters": [
3480
4354
  {
3481
- "name": "review_id",
4355
+ "name": "product_id",
4356
+ "in": "path",
4357
+ "required": true,
4358
+ "schema": {
4359
+ "type": "string"
4360
+ },
4361
+ "description": "Products foreign key"
4362
+ },
4363
+ {
4364
+ "name": "product_image_id",
3482
4365
  "in": "path",
3483
4366
  "required": true,
3484
4367
  "schema": {
@@ -3501,7 +4384,7 @@
3501
4384
  "content": {
3502
4385
  "application/json": {
3503
4386
  "schema": {
3504
- "$ref": "#/components/schemas/Product_reviews"
4387
+ "$ref": "#/components/schemas/Product_images"
3505
4388
  }
3506
4389
  }
3507
4390
  }
@@ -3513,12 +4396,21 @@
3513
4396
  },
3514
4397
  "delete": {
3515
4398
  "tags": [
3516
- "product_reviews"
4399
+ "product_images"
3517
4400
  ],
3518
- "summary": "Delete a product_reviews",
4401
+ "summary": "Delete a product_images",
3519
4402
  "parameters": [
3520
4403
  {
3521
- "name": "review_id",
4404
+ "name": "product_id",
4405
+ "in": "path",
4406
+ "required": true,
4407
+ "schema": {
4408
+ "type": "string"
4409
+ },
4410
+ "description": "Products foreign key"
4411
+ },
4412
+ {
4413
+ "name": "product_image_id",
3522
4414
  "in": "path",
3523
4415
  "required": true,
3524
4416
  "schema": {
@@ -3536,13 +4428,22 @@
3536
4428
  }
3537
4429
  }
3538
4430
  },
3539
- "/api/product_variants/": {
4431
+ "/api/products/{product_id}/product_reviews/": {
3540
4432
  "get": {
3541
4433
  "tags": [
3542
- "product_variants"
4434
+ "product_reviews"
3543
4435
  ],
3544
- "summary": "List product_variants",
4436
+ "summary": "List product_reviews",
3545
4437
  "parameters": [
4438
+ {
4439
+ "name": "product_id",
4440
+ "in": "path",
4441
+ "required": true,
4442
+ "schema": {
4443
+ "type": "string"
4444
+ },
4445
+ "description": "Products foreign key"
4446
+ },
3546
4447
  {
3547
4448
  "name": "page",
3548
4449
  "in": "query",
@@ -3598,7 +4499,7 @@
3598
4499
  "data": {
3599
4500
  "type": "array",
3600
4501
  "items": {
3601
- "$ref": "#/components/schemas/Product_variants"
4502
+ "$ref": "#/components/schemas/Product_reviews"
3602
4503
  }
3603
4504
  },
3604
4505
  "count": {
@@ -3613,9 +4514,9 @@
3613
4514
  },
3614
4515
  "post": {
3615
4516
  "tags": [
3616
- "product_variants"
4517
+ "product_reviews"
3617
4518
  ],
3618
- "summary": "Bulk insert product_variants",
4519
+ "summary": "Bulk insert product_reviews",
3619
4520
  "requestBody": {
3620
4521
  "content": {
3621
4522
  "application/json": {
@@ -3625,7 +4526,7 @@
3625
4526
  "data": {
3626
4527
  "type": "array",
3627
4528
  "items": {
3628
- "$ref": "#/components/schemas/Product_variants"
4529
+ "$ref": "#/components/schemas/Product_reviews"
3629
4530
  }
3630
4531
  }
3631
4532
  }
@@ -3641,9 +4542,9 @@
3641
4542
  },
3642
4543
  "put": {
3643
4544
  "tags": [
3644
- "product_variants"
4545
+ "product_reviews"
3645
4546
  ],
3646
- "summary": "Bulk update product_variants",
4547
+ "summary": "Bulk update product_reviews",
3647
4548
  "requestBody": {
3648
4549
  "content": {
3649
4550
  "application/json": {
@@ -3653,7 +4554,7 @@
3653
4554
  "data": {
3654
4555
  "type": "array",
3655
4556
  "items": {
3656
- "$ref": "#/components/schemas/Product_variants"
4557
+ "$ref": "#/components/schemas/Product_reviews"
3657
4558
  }
3658
4559
  }
3659
4560
  }
@@ -3669,9 +4570,9 @@
3669
4570
  },
3670
4571
  "delete": {
3671
4572
  "tags": [
3672
- "product_variants"
4573
+ "product_reviews"
3673
4574
  ],
3674
- "summary": "Bulk delete product_variants",
4575
+ "summary": "Bulk delete product_reviews",
3675
4576
  "requestBody": {
3676
4577
  "content": {
3677
4578
  "application/json": {
@@ -3696,15 +4597,24 @@
3696
4597
  }
3697
4598
  }
3698
4599
  },
3699
- "/api/product_variants/{variant_id}": {
4600
+ "/api/products/{product_id}/product_reviews/{review_id}": {
3700
4601
  "get": {
3701
4602
  "tags": [
3702
- "product_variants"
4603
+ "product_reviews"
3703
4604
  ],
3704
- "summary": "Get product_variants by variant_id",
4605
+ "summary": "Get product_reviews by review_id",
3705
4606
  "parameters": [
3706
4607
  {
3707
- "name": "variant_id",
4608
+ "name": "product_id",
4609
+ "in": "path",
4610
+ "required": true,
4611
+ "schema": {
4612
+ "type": "string"
4613
+ },
4614
+ "description": "Products foreign key"
4615
+ },
4616
+ {
4617
+ "name": "review_id",
3708
4618
  "in": "path",
3709
4619
  "required": true,
3710
4620
  "schema": {
@@ -3737,7 +4647,7 @@
3737
4647
  "content": {
3738
4648
  "application/json": {
3739
4649
  "schema": {
3740
- "$ref": "#/components/schemas/Product_variants"
4650
+ "$ref": "#/components/schemas/Product_reviews"
3741
4651
  }
3742
4652
  }
3743
4653
  }
@@ -3749,12 +4659,21 @@
3749
4659
  },
3750
4660
  "post": {
3751
4661
  "tags": [
3752
- "product_variants"
4662
+ "product_reviews"
3753
4663
  ],
3754
- "summary": "Insert a product_variants",
4664
+ "summary": "Insert a product_reviews",
3755
4665
  "parameters": [
3756
4666
  {
3757
- "name": "variant_id",
4667
+ "name": "product_id",
4668
+ "in": "path",
4669
+ "required": true,
4670
+ "schema": {
4671
+ "type": "string"
4672
+ },
4673
+ "description": "Products foreign key"
4674
+ },
4675
+ {
4676
+ "name": "review_id",
3758
4677
  "in": "path",
3759
4678
  "required": true,
3760
4679
  "schema": {
@@ -3766,7 +4685,7 @@
3766
4685
  "content": {
3767
4686
  "application/json": {
3768
4687
  "schema": {
3769
- "$ref": "#/components/schemas/Product_variants"
4688
+ "$ref": "#/components/schemas/Product_reviews"
3770
4689
  }
3771
4690
  }
3772
4691
  }
@@ -3777,7 +4696,7 @@
3777
4696
  "content": {
3778
4697
  "application/json": {
3779
4698
  "schema": {
3780
- "$ref": "#/components/schemas/Product_variants"
4699
+ "$ref": "#/components/schemas/Product_reviews"
3781
4700
  }
3782
4701
  }
3783
4702
  }
@@ -3786,12 +4705,21 @@
3786
4705
  },
3787
4706
  "put": {
3788
4707
  "tags": [
3789
- "product_variants"
4708
+ "product_reviews"
3790
4709
  ],
3791
- "summary": "Update a product_variants",
4710
+ "summary": "Update a product_reviews",
3792
4711
  "parameters": [
3793
4712
  {
3794
- "name": "variant_id",
4713
+ "name": "product_id",
4714
+ "in": "path",
4715
+ "required": true,
4716
+ "schema": {
4717
+ "type": "string"
4718
+ },
4719
+ "description": "Products foreign key"
4720
+ },
4721
+ {
4722
+ "name": "review_id",
3795
4723
  "in": "path",
3796
4724
  "required": true,
3797
4725
  "schema": {
@@ -3803,7 +4731,7 @@
3803
4731
  "content": {
3804
4732
  "application/json": {
3805
4733
  "schema": {
3806
- "$ref": "#/components/schemas/Product_variants"
4734
+ "$ref": "#/components/schemas/Product_reviews"
3807
4735
  }
3808
4736
  }
3809
4737
  }
@@ -3814,7 +4742,7 @@
3814
4742
  "content": {
3815
4743
  "application/json": {
3816
4744
  "schema": {
3817
- "$ref": "#/components/schemas/Product_variants"
4745
+ "$ref": "#/components/schemas/Product_reviews"
3818
4746
  }
3819
4747
  }
3820
4748
  }
@@ -3826,12 +4754,21 @@
3826
4754
  },
3827
4755
  "patch": {
3828
4756
  "tags": [
3829
- "product_variants"
4757
+ "product_reviews"
3830
4758
  ],
3831
- "summary": "Partial update a product_variants",
4759
+ "summary": "Partial update a product_reviews",
3832
4760
  "parameters": [
3833
4761
  {
3834
- "name": "variant_id",
4762
+ "name": "product_id",
4763
+ "in": "path",
4764
+ "required": true,
4765
+ "schema": {
4766
+ "type": "string"
4767
+ },
4768
+ "description": "Products foreign key"
4769
+ },
4770
+ {
4771
+ "name": "review_id",
3835
4772
  "in": "path",
3836
4773
  "required": true,
3837
4774
  "schema": {
@@ -3854,7 +4791,7 @@
3854
4791
  "content": {
3855
4792
  "application/json": {
3856
4793
  "schema": {
3857
- "$ref": "#/components/schemas/Product_variants"
4794
+ "$ref": "#/components/schemas/Product_reviews"
3858
4795
  }
3859
4796
  }
3860
4797
  }
@@ -3866,12 +4803,21 @@
3866
4803
  },
3867
4804
  "delete": {
3868
4805
  "tags": [
3869
- "product_variants"
4806
+ "product_reviews"
3870
4807
  ],
3871
- "summary": "Delete a product_variants",
4808
+ "summary": "Delete a product_reviews",
3872
4809
  "parameters": [
3873
4810
  {
3874
- "name": "variant_id",
4811
+ "name": "product_id",
4812
+ "in": "path",
4813
+ "required": true,
4814
+ "schema": {
4815
+ "type": "string"
4816
+ },
4817
+ "description": "Products foreign key"
4818
+ },
4819
+ {
4820
+ "name": "review_id",
3875
4821
  "in": "path",
3876
4822
  "required": true,
3877
4823
  "schema": {
@@ -3889,13 +4835,22 @@
3889
4835
  }
3890
4836
  }
3891
4837
  },
3892
- "/api/products/": {
4838
+ "/api/products/{product_id}/product_variants/": {
3893
4839
  "get": {
3894
4840
  "tags": [
3895
- "products"
4841
+ "product_variants"
3896
4842
  ],
3897
- "summary": "List products",
4843
+ "summary": "List product_variants",
3898
4844
  "parameters": [
4845
+ {
4846
+ "name": "product_id",
4847
+ "in": "path",
4848
+ "required": true,
4849
+ "schema": {
4850
+ "type": "string"
4851
+ },
4852
+ "description": "Products foreign key"
4853
+ },
3899
4854
  {
3900
4855
  "name": "page",
3901
4856
  "in": "query",
@@ -3951,7 +4906,7 @@
3951
4906
  "data": {
3952
4907
  "type": "array",
3953
4908
  "items": {
3954
- "$ref": "#/components/schemas/Products"
4909
+ "$ref": "#/components/schemas/Product_variants"
3955
4910
  }
3956
4911
  },
3957
4912
  "count": {
@@ -3966,9 +4921,9 @@
3966
4921
  },
3967
4922
  "post": {
3968
4923
  "tags": [
3969
- "products"
4924
+ "product_variants"
3970
4925
  ],
3971
- "summary": "Bulk insert products",
4926
+ "summary": "Bulk insert product_variants",
3972
4927
  "requestBody": {
3973
4928
  "content": {
3974
4929
  "application/json": {
@@ -3978,7 +4933,7 @@
3978
4933
  "data": {
3979
4934
  "type": "array",
3980
4935
  "items": {
3981
- "$ref": "#/components/schemas/Products"
4936
+ "$ref": "#/components/schemas/Product_variants"
3982
4937
  }
3983
4938
  }
3984
4939
  }
@@ -3994,9 +4949,9 @@
3994
4949
  },
3995
4950
  "put": {
3996
4951
  "tags": [
3997
- "products"
4952
+ "product_variants"
3998
4953
  ],
3999
- "summary": "Bulk update products",
4954
+ "summary": "Bulk update product_variants",
4000
4955
  "requestBody": {
4001
4956
  "content": {
4002
4957
  "application/json": {
@@ -4006,7 +4961,7 @@
4006
4961
  "data": {
4007
4962
  "type": "array",
4008
4963
  "items": {
4009
- "$ref": "#/components/schemas/Products"
4964
+ "$ref": "#/components/schemas/Product_variants"
4010
4965
  }
4011
4966
  }
4012
4967
  }
@@ -4022,9 +4977,9 @@
4022
4977
  },
4023
4978
  "delete": {
4024
4979
  "tags": [
4025
- "products"
4980
+ "product_variants"
4026
4981
  ],
4027
- "summary": "Bulk delete products",
4982
+ "summary": "Bulk delete product_variants",
4028
4983
  "requestBody": {
4029
4984
  "content": {
4030
4985
  "application/json": {
@@ -4049,17 +5004,26 @@
4049
5004
  }
4050
5005
  }
4051
5006
  },
4052
- "/api/products/{product_id}": {
5007
+ "/api/products/{product_id}/product_variants/{variant_id}": {
4053
5008
  "get": {
4054
5009
  "tags": [
4055
- "products"
5010
+ "product_variants"
4056
5011
  ],
4057
- "summary": "Get products by product_id",
5012
+ "summary": "Get product_variants by variant_id",
4058
5013
  "parameters": [
4059
5014
  {
4060
5015
  "name": "product_id",
4061
5016
  "in": "path",
4062
5017
  "required": true,
5018
+ "schema": {
5019
+ "type": "string"
5020
+ },
5021
+ "description": "Products foreign key"
5022
+ },
5023
+ {
5024
+ "name": "variant_id",
5025
+ "in": "path",
5026
+ "required": true,
4063
5027
  "schema": {
4064
5028
  "type": "string"
4065
5029
  }
@@ -4090,7 +5054,7 @@
4090
5054
  "content": {
4091
5055
  "application/json": {
4092
5056
  "schema": {
4093
- "$ref": "#/components/schemas/Products"
5057
+ "$ref": "#/components/schemas/Product_variants"
4094
5058
  }
4095
5059
  }
4096
5060
  }
@@ -4102,14 +5066,23 @@
4102
5066
  },
4103
5067
  "post": {
4104
5068
  "tags": [
4105
- "products"
5069
+ "product_variants"
4106
5070
  ],
4107
- "summary": "Insert a products",
5071
+ "summary": "Insert a product_variants",
4108
5072
  "parameters": [
4109
5073
  {
4110
5074
  "name": "product_id",
4111
5075
  "in": "path",
4112
5076
  "required": true,
5077
+ "schema": {
5078
+ "type": "string"
5079
+ },
5080
+ "description": "Products foreign key"
5081
+ },
5082
+ {
5083
+ "name": "variant_id",
5084
+ "in": "path",
5085
+ "required": true,
4113
5086
  "schema": {
4114
5087
  "type": "string"
4115
5088
  }
@@ -4119,7 +5092,7 @@
4119
5092
  "content": {
4120
5093
  "application/json": {
4121
5094
  "schema": {
4122
- "$ref": "#/components/schemas/Products"
5095
+ "$ref": "#/components/schemas/Product_variants"
4123
5096
  }
4124
5097
  }
4125
5098
  }
@@ -4130,7 +5103,7 @@
4130
5103
  "content": {
4131
5104
  "application/json": {
4132
5105
  "schema": {
4133
- "$ref": "#/components/schemas/Products"
5106
+ "$ref": "#/components/schemas/Product_variants"
4134
5107
  }
4135
5108
  }
4136
5109
  }
@@ -4139,14 +5112,23 @@
4139
5112
  },
4140
5113
  "put": {
4141
5114
  "tags": [
4142
- "products"
5115
+ "product_variants"
4143
5116
  ],
4144
- "summary": "Update a products",
5117
+ "summary": "Update a product_variants",
4145
5118
  "parameters": [
4146
5119
  {
4147
5120
  "name": "product_id",
4148
5121
  "in": "path",
4149
5122
  "required": true,
5123
+ "schema": {
5124
+ "type": "string"
5125
+ },
5126
+ "description": "Products foreign key"
5127
+ },
5128
+ {
5129
+ "name": "variant_id",
5130
+ "in": "path",
5131
+ "required": true,
4150
5132
  "schema": {
4151
5133
  "type": "string"
4152
5134
  }
@@ -4156,7 +5138,7 @@
4156
5138
  "content": {
4157
5139
  "application/json": {
4158
5140
  "schema": {
4159
- "$ref": "#/components/schemas/Products"
5141
+ "$ref": "#/components/schemas/Product_variants"
4160
5142
  }
4161
5143
  }
4162
5144
  }
@@ -4167,7 +5149,7 @@
4167
5149
  "content": {
4168
5150
  "application/json": {
4169
5151
  "schema": {
4170
- "$ref": "#/components/schemas/Products"
5152
+ "$ref": "#/components/schemas/Product_variants"
4171
5153
  }
4172
5154
  }
4173
5155
  }
@@ -4179,14 +5161,23 @@
4179
5161
  },
4180
5162
  "patch": {
4181
5163
  "tags": [
4182
- "products"
5164
+ "product_variants"
4183
5165
  ],
4184
- "summary": "Partial update a products",
5166
+ "summary": "Partial update a product_variants",
4185
5167
  "parameters": [
4186
5168
  {
4187
5169
  "name": "product_id",
4188
5170
  "in": "path",
4189
5171
  "required": true,
5172
+ "schema": {
5173
+ "type": "string"
5174
+ },
5175
+ "description": "Products foreign key"
5176
+ },
5177
+ {
5178
+ "name": "variant_id",
5179
+ "in": "path",
5180
+ "required": true,
4190
5181
  "schema": {
4191
5182
  "type": "string"
4192
5183
  }
@@ -4207,7 +5198,7 @@
4207
5198
  "content": {
4208
5199
  "application/json": {
4209
5200
  "schema": {
4210
- "$ref": "#/components/schemas/Products"
5201
+ "$ref": "#/components/schemas/Product_variants"
4211
5202
  }
4212
5203
  }
4213
5204
  }
@@ -4219,14 +5210,23 @@
4219
5210
  },
4220
5211
  "delete": {
4221
5212
  "tags": [
4222
- "products"
5213
+ "product_variants"
4223
5214
  ],
4224
- "summary": "Delete a products",
5215
+ "summary": "Delete a product_variants",
4225
5216
  "parameters": [
4226
5217
  {
4227
5218
  "name": "product_id",
4228
5219
  "in": "path",
4229
5220
  "required": true,
5221
+ "schema": {
5222
+ "type": "string"
5223
+ },
5224
+ "description": "Products foreign key"
5225
+ },
5226
+ {
5227
+ "name": "variant_id",
5228
+ "in": "path",
5229
+ "required": true,
4230
5230
  "schema": {
4231
5231
  "type": "string"
4232
5232
  }
@@ -4242,12 +5242,12 @@
4242
5242
  }
4243
5243
  }
4244
5244
  },
4245
- "/api/shipments/": {
5245
+ "/api/products/": {
4246
5246
  "get": {
4247
5247
  "tags": [
4248
- "shipments"
5248
+ "products"
4249
5249
  ],
4250
- "summary": "List shipments",
5250
+ "summary": "List products",
4251
5251
  "parameters": [
4252
5252
  {
4253
5253
  "name": "page",
@@ -4304,7 +5304,7 @@
4304
5304
  "data": {
4305
5305
  "type": "array",
4306
5306
  "items": {
4307
- "$ref": "#/components/schemas/Shipments"
5307
+ "$ref": "#/components/schemas/Products"
4308
5308
  }
4309
5309
  },
4310
5310
  "count": {
@@ -4319,9 +5319,9 @@
4319
5319
  },
4320
5320
  "post": {
4321
5321
  "tags": [
4322
- "shipments"
5322
+ "products"
4323
5323
  ],
4324
- "summary": "Bulk insert shipments",
5324
+ "summary": "Bulk insert products",
4325
5325
  "requestBody": {
4326
5326
  "content": {
4327
5327
  "application/json": {
@@ -4331,7 +5331,7 @@
4331
5331
  "data": {
4332
5332
  "type": "array",
4333
5333
  "items": {
4334
- "$ref": "#/components/schemas/Shipments"
5334
+ "$ref": "#/components/schemas/Products"
4335
5335
  }
4336
5336
  }
4337
5337
  }
@@ -4347,9 +5347,9 @@
4347
5347
  },
4348
5348
  "put": {
4349
5349
  "tags": [
4350
- "shipments"
5350
+ "products"
4351
5351
  ],
4352
- "summary": "Bulk update shipments",
5352
+ "summary": "Bulk update products",
4353
5353
  "requestBody": {
4354
5354
  "content": {
4355
5355
  "application/json": {
@@ -4359,7 +5359,7 @@
4359
5359
  "data": {
4360
5360
  "type": "array",
4361
5361
  "items": {
4362
- "$ref": "#/components/schemas/Shipments"
5362
+ "$ref": "#/components/schemas/Products"
4363
5363
  }
4364
5364
  }
4365
5365
  }
@@ -4375,9 +5375,9 @@
4375
5375
  },
4376
5376
  "delete": {
4377
5377
  "tags": [
4378
- "shipments"
5378
+ "products"
4379
5379
  ],
4380
- "summary": "Bulk delete shipments",
5380
+ "summary": "Bulk delete products",
4381
5381
  "requestBody": {
4382
5382
  "content": {
4383
5383
  "application/json": {
@@ -4402,15 +5402,15 @@
4402
5402
  }
4403
5403
  }
4404
5404
  },
4405
- "/api/shipments/{shipment_id}": {
5405
+ "/api/products/{product_id}": {
4406
5406
  "get": {
4407
5407
  "tags": [
4408
- "shipments"
5408
+ "products"
4409
5409
  ],
4410
- "summary": "Get shipments by shipment_id",
5410
+ "summary": "Get products by product_id",
4411
5411
  "parameters": [
4412
5412
  {
4413
- "name": "shipment_id",
5413
+ "name": "product_id",
4414
5414
  "in": "path",
4415
5415
  "required": true,
4416
5416
  "schema": {
@@ -4443,7 +5443,7 @@
4443
5443
  "content": {
4444
5444
  "application/json": {
4445
5445
  "schema": {
4446
- "$ref": "#/components/schemas/Shipments"
5446
+ "$ref": "#/components/schemas/Products"
4447
5447
  }
4448
5448
  }
4449
5449
  }
@@ -4455,12 +5455,12 @@
4455
5455
  },
4456
5456
  "post": {
4457
5457
  "tags": [
4458
- "shipments"
5458
+ "products"
4459
5459
  ],
4460
- "summary": "Insert a shipments",
5460
+ "summary": "Insert a products",
4461
5461
  "parameters": [
4462
5462
  {
4463
- "name": "shipment_id",
5463
+ "name": "product_id",
4464
5464
  "in": "path",
4465
5465
  "required": true,
4466
5466
  "schema": {
@@ -4472,7 +5472,7 @@
4472
5472
  "content": {
4473
5473
  "application/json": {
4474
5474
  "schema": {
4475
- "$ref": "#/components/schemas/Shipments"
5475
+ "$ref": "#/components/schemas/Products"
4476
5476
  }
4477
5477
  }
4478
5478
  }
@@ -4483,7 +5483,7 @@
4483
5483
  "content": {
4484
5484
  "application/json": {
4485
5485
  "schema": {
4486
- "$ref": "#/components/schemas/Shipments"
5486
+ "$ref": "#/components/schemas/Products"
4487
5487
  }
4488
5488
  }
4489
5489
  }
@@ -4492,12 +5492,12 @@
4492
5492
  },
4493
5493
  "put": {
4494
5494
  "tags": [
4495
- "shipments"
5495
+ "products"
4496
5496
  ],
4497
- "summary": "Update a shipments",
5497
+ "summary": "Update a products",
4498
5498
  "parameters": [
4499
5499
  {
4500
- "name": "shipment_id",
5500
+ "name": "product_id",
4501
5501
  "in": "path",
4502
5502
  "required": true,
4503
5503
  "schema": {
@@ -4509,7 +5509,7 @@
4509
5509
  "content": {
4510
5510
  "application/json": {
4511
5511
  "schema": {
4512
- "$ref": "#/components/schemas/Shipments"
5512
+ "$ref": "#/components/schemas/Products"
4513
5513
  }
4514
5514
  }
4515
5515
  }
@@ -4520,7 +5520,7 @@
4520
5520
  "content": {
4521
5521
  "application/json": {
4522
5522
  "schema": {
4523
- "$ref": "#/components/schemas/Shipments"
5523
+ "$ref": "#/components/schemas/Products"
4524
5524
  }
4525
5525
  }
4526
5526
  }
@@ -4532,12 +5532,12 @@
4532
5532
  },
4533
5533
  "patch": {
4534
5534
  "tags": [
4535
- "shipments"
5535
+ "products"
4536
5536
  ],
4537
- "summary": "Partial update a shipments",
5537
+ "summary": "Partial update a products",
4538
5538
  "parameters": [
4539
5539
  {
4540
- "name": "shipment_id",
5540
+ "name": "product_id",
4541
5541
  "in": "path",
4542
5542
  "required": true,
4543
5543
  "schema": {
@@ -4560,7 +5560,7 @@
4560
5560
  "content": {
4561
5561
  "application/json": {
4562
5562
  "schema": {
4563
- "$ref": "#/components/schemas/Shipments"
5563
+ "$ref": "#/components/schemas/Products"
4564
5564
  }
4565
5565
  }
4566
5566
  }
@@ -4572,12 +5572,12 @@
4572
5572
  },
4573
5573
  "delete": {
4574
5574
  "tags": [
4575
- "shipments"
5575
+ "products"
4576
5576
  ],
4577
- "summary": "Delete a shipments",
5577
+ "summary": "Delete a products",
4578
5578
  "parameters": [
4579
5579
  {
4580
- "name": "shipment_id",
5580
+ "name": "product_id",
4581
5581
  "in": "path",
4582
5582
  "required": true,
4583
5583
  "schema": {
@@ -4595,13 +5595,22 @@
4595
5595
  }
4596
5596
  }
4597
5597
  },
4598
- "/api/users/": {
5598
+ "/api/orders/{order_id}/shipments/": {
4599
5599
  "get": {
4600
5600
  "tags": [
4601
- "users"
5601
+ "shipments"
4602
5602
  ],
4603
- "summary": "List users",
5603
+ "summary": "List shipments",
4604
5604
  "parameters": [
5605
+ {
5606
+ "name": "order_id",
5607
+ "in": "path",
5608
+ "required": true,
5609
+ "schema": {
5610
+ "type": "string"
5611
+ },
5612
+ "description": "Orders foreign key"
5613
+ },
4605
5614
  {
4606
5615
  "name": "page",
4607
5616
  "in": "query",
@@ -4657,7 +5666,7 @@
4657
5666
  "data": {
4658
5667
  "type": "array",
4659
5668
  "items": {
4660
- "$ref": "#/components/schemas/Users"
5669
+ "$ref": "#/components/schemas/Shipments"
4661
5670
  }
4662
5671
  },
4663
5672
  "count": {
@@ -4672,9 +5681,9 @@
4672
5681
  },
4673
5682
  "post": {
4674
5683
  "tags": [
4675
- "users"
5684
+ "shipments"
4676
5685
  ],
4677
- "summary": "Bulk insert users",
5686
+ "summary": "Bulk insert shipments",
4678
5687
  "requestBody": {
4679
5688
  "content": {
4680
5689
  "application/json": {
@@ -4684,7 +5693,7 @@
4684
5693
  "data": {
4685
5694
  "type": "array",
4686
5695
  "items": {
4687
- "$ref": "#/components/schemas/Users"
5696
+ "$ref": "#/components/schemas/Shipments"
4688
5697
  }
4689
5698
  }
4690
5699
  }
@@ -4700,9 +5709,9 @@
4700
5709
  },
4701
5710
  "put": {
4702
5711
  "tags": [
4703
- "users"
5712
+ "shipments"
4704
5713
  ],
4705
- "summary": "Bulk update users",
5714
+ "summary": "Bulk update shipments",
4706
5715
  "requestBody": {
4707
5716
  "content": {
4708
5717
  "application/json": {
@@ -4712,7 +5721,7 @@
4712
5721
  "data": {
4713
5722
  "type": "array",
4714
5723
  "items": {
4715
- "$ref": "#/components/schemas/Users"
5724
+ "$ref": "#/components/schemas/Shipments"
4716
5725
  }
4717
5726
  }
4718
5727
  }
@@ -4728,9 +5737,9 @@
4728
5737
  },
4729
5738
  "delete": {
4730
5739
  "tags": [
4731
- "users"
5740
+ "shipments"
4732
5741
  ],
4733
- "summary": "Bulk delete users",
5742
+ "summary": "Bulk delete shipments",
4734
5743
  "requestBody": {
4735
5744
  "content": {
4736
5745
  "application/json": {
@@ -4755,15 +5764,24 @@
4755
5764
  }
4756
5765
  }
4757
5766
  },
4758
- "/api/users/{user_id}": {
5767
+ "/api/orders/{order_id}/shipments/{shipment_id}": {
4759
5768
  "get": {
4760
5769
  "tags": [
4761
- "users"
5770
+ "shipments"
4762
5771
  ],
4763
- "summary": "Get users by user_id",
5772
+ "summary": "Get shipments by shipment_id",
4764
5773
  "parameters": [
4765
5774
  {
4766
- "name": "user_id",
5775
+ "name": "order_id",
5776
+ "in": "path",
5777
+ "required": true,
5778
+ "schema": {
5779
+ "type": "string"
5780
+ },
5781
+ "description": "Orders foreign key"
5782
+ },
5783
+ {
5784
+ "name": "shipment_id",
4767
5785
  "in": "path",
4768
5786
  "required": true,
4769
5787
  "schema": {
@@ -4796,7 +5814,7 @@
4796
5814
  "content": {
4797
5815
  "application/json": {
4798
5816
  "schema": {
4799
- "$ref": "#/components/schemas/Users"
5817
+ "$ref": "#/components/schemas/Shipments"
4800
5818
  }
4801
5819
  }
4802
5820
  }
@@ -4808,12 +5826,21 @@
4808
5826
  },
4809
5827
  "post": {
4810
5828
  "tags": [
4811
- "users"
5829
+ "shipments"
4812
5830
  ],
4813
- "summary": "Insert a users",
5831
+ "summary": "Insert a shipments",
4814
5832
  "parameters": [
4815
5833
  {
4816
- "name": "user_id",
5834
+ "name": "order_id",
5835
+ "in": "path",
5836
+ "required": true,
5837
+ "schema": {
5838
+ "type": "string"
5839
+ },
5840
+ "description": "Orders foreign key"
5841
+ },
5842
+ {
5843
+ "name": "shipment_id",
4817
5844
  "in": "path",
4818
5845
  "required": true,
4819
5846
  "schema": {
@@ -4825,7 +5852,7 @@
4825
5852
  "content": {
4826
5853
  "application/json": {
4827
5854
  "schema": {
4828
- "$ref": "#/components/schemas/Users"
5855
+ "$ref": "#/components/schemas/Shipments"
4829
5856
  }
4830
5857
  }
4831
5858
  }
@@ -4836,7 +5863,7 @@
4836
5863
  "content": {
4837
5864
  "application/json": {
4838
5865
  "schema": {
4839
- "$ref": "#/components/schemas/Users"
5866
+ "$ref": "#/components/schemas/Shipments"
4840
5867
  }
4841
5868
  }
4842
5869
  }
@@ -4845,12 +5872,21 @@
4845
5872
  },
4846
5873
  "put": {
4847
5874
  "tags": [
4848
- "users"
5875
+ "shipments"
4849
5876
  ],
4850
- "summary": "Update a users",
5877
+ "summary": "Update a shipments",
4851
5878
  "parameters": [
4852
5879
  {
4853
- "name": "user_id",
5880
+ "name": "order_id",
5881
+ "in": "path",
5882
+ "required": true,
5883
+ "schema": {
5884
+ "type": "string"
5885
+ },
5886
+ "description": "Orders foreign key"
5887
+ },
5888
+ {
5889
+ "name": "shipment_id",
4854
5890
  "in": "path",
4855
5891
  "required": true,
4856
5892
  "schema": {
@@ -4862,7 +5898,7 @@
4862
5898
  "content": {
4863
5899
  "application/json": {
4864
5900
  "schema": {
4865
- "$ref": "#/components/schemas/Users"
5901
+ "$ref": "#/components/schemas/Shipments"
4866
5902
  }
4867
5903
  }
4868
5904
  }
@@ -4873,7 +5909,7 @@
4873
5909
  "content": {
4874
5910
  "application/json": {
4875
5911
  "schema": {
4876
- "$ref": "#/components/schemas/Users"
5912
+ "$ref": "#/components/schemas/Shipments"
4877
5913
  }
4878
5914
  }
4879
5915
  }
@@ -4885,12 +5921,21 @@
4885
5921
  },
4886
5922
  "patch": {
4887
5923
  "tags": [
4888
- "users"
5924
+ "shipments"
4889
5925
  ],
4890
- "summary": "Partial update a users",
5926
+ "summary": "Partial update a shipments",
4891
5927
  "parameters": [
4892
5928
  {
4893
- "name": "user_id",
5929
+ "name": "order_id",
5930
+ "in": "path",
5931
+ "required": true,
5932
+ "schema": {
5933
+ "type": "string"
5934
+ },
5935
+ "description": "Orders foreign key"
5936
+ },
5937
+ {
5938
+ "name": "shipment_id",
4894
5939
  "in": "path",
4895
5940
  "required": true,
4896
5941
  "schema": {
@@ -4913,7 +5958,7 @@
4913
5958
  "content": {
4914
5959
  "application/json": {
4915
5960
  "schema": {
4916
- "$ref": "#/components/schemas/Users"
5961
+ "$ref": "#/components/schemas/Shipments"
4917
5962
  }
4918
5963
  }
4919
5964
  }
@@ -4925,12 +5970,21 @@
4925
5970
  },
4926
5971
  "delete": {
4927
5972
  "tags": [
4928
- "users"
5973
+ "shipments"
4929
5974
  ],
4930
- "summary": "Delete a users",
5975
+ "summary": "Delete a shipments",
4931
5976
  "parameters": [
4932
5977
  {
4933
- "name": "user_id",
5978
+ "name": "order_id",
5979
+ "in": "path",
5980
+ "required": true,
5981
+ "schema": {
5982
+ "type": "string"
5983
+ },
5984
+ "description": "Orders foreign key"
5985
+ },
5986
+ {
5987
+ "name": "shipment_id",
4934
5988
  "in": "path",
4935
5989
  "required": true,
4936
5990
  "schema": {
@@ -5304,6 +6358,105 @@
5304
6358
  },
5305
6359
  "components": {
5306
6360
  "schemas": {
6361
+ "Users": {
6362
+ "type": "object",
6363
+ "properties": {
6364
+ "user_id": {
6365
+ "type": "integer",
6366
+ "description": "Primary key"
6367
+ },
6368
+ "email": {
6369
+ "type": "string"
6370
+ },
6371
+ "phone": {
6372
+ "type": "string"
6373
+ },
6374
+ "password_hash": {
6375
+ "type": "string"
6376
+ },
6377
+ "name": {
6378
+ "type": "string"
6379
+ },
6380
+ "unique_attribute": {
6381
+ "type": "string"
6382
+ },
6383
+ "tenant_id": {
6384
+ "type": "integer"
6385
+ },
6386
+ "role_id": {
6387
+ "type": "integer"
6388
+ },
6389
+ "attributes": {
6390
+ "type": "object"
6391
+ }
6392
+ },
6393
+ "required": [
6394
+ "email",
6395
+ "password_hash",
6396
+ "name",
6397
+ "unique_attribute",
6398
+ "role_id"
6399
+ ]
6400
+ },
6401
+ "Tenants": {
6402
+ "type": "object",
6403
+ "properties": {
6404
+ "tenant_id": {
6405
+ "type": "integer",
6406
+ "description": "Primary key"
6407
+ },
6408
+ "name": {
6409
+ "type": "string"
6410
+ },
6411
+ "slug": {
6412
+ "type": "string"
6413
+ },
6414
+ "attributes": {
6415
+ "type": "object"
6416
+ }
6417
+ },
6418
+ "required": [
6419
+ "name",
6420
+ "slug"
6421
+ ]
6422
+ },
6423
+ "Roles": {
6424
+ "type": "object",
6425
+ "properties": {
6426
+ "role_id": {
6427
+ "type": "integer",
6428
+ "description": "Primary key"
6429
+ },
6430
+ "tenant_id": {
6431
+ "type": "integer"
6432
+ },
6433
+ "name": {
6434
+ "type": "string"
6435
+ }
6436
+ },
6437
+ "required": [
6438
+ "name"
6439
+ ]
6440
+ },
6441
+ "RolePermission": {
6442
+ "type": "object",
6443
+ "properties": {
6444
+ "role_permission_id": {
6445
+ "type": "integer",
6446
+ "description": "Primary key"
6447
+ },
6448
+ "role_id": {
6449
+ "type": "integer"
6450
+ },
6451
+ "permission": {
6452
+ "type": "object"
6453
+ }
6454
+ },
6455
+ "required": [
6456
+ "role_id",
6457
+ "permission"
6458
+ ]
6459
+ },
5307
6460
  "Addresses": {
5308
6461
  "type": "object",
5309
6462
  "properties": {
@@ -5815,39 +6968,6 @@
5815
6968
  "status"
5816
6969
  ]
5817
6970
  },
5818
- "Users": {
5819
- "type": "object",
5820
- "properties": {
5821
- "user_id": {
5822
- "type": "integer",
5823
- "description": "Primary key"
5824
- },
5825
- "name": {
5826
- "type": "string"
5827
- },
5828
- "email": {
5829
- "type": "string"
5830
- },
5831
- "password_hash": {
5832
- "type": "string"
5833
- },
5834
- "phone": {
5835
- "type": "string"
5836
- },
5837
- "avatar_url": {
5838
- "type": "string"
5839
- },
5840
- "role": {
5841
- "type": "string"
5842
- }
5843
- },
5844
- "required": [
5845
- "name",
5846
- "email",
5847
- "password_hash",
5848
- "role"
5849
- ]
5850
- },
5851
6971
  "Wishlists": {
5852
6972
  "type": "object",
5853
6973
  "properties": {
@@ -5867,6 +6987,14 @@
5867
6987
  "product_id"
5868
6988
  ]
5869
6989
  }
6990
+ },
6991
+ "securitySchemes": {
6992
+ "sessionAuth": {
6993
+ "type": "apiKey",
6994
+ "in": "cookie",
6995
+ "name": "connect.sid",
6996
+ "description": "Session cookie authentication"
6997
+ }
5870
6998
  }
5871
6999
  }
5872
7000
  }