zod-codegen 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/.github/ISSUE_TEMPLATE/bug_report.yml +93 -0
  2. package/.github/ISSUE_TEMPLATE/feature_request.yml +70 -0
  3. package/.github/PULL_REQUEST_TEMPLATE.md +87 -0
  4. package/.github/dependabot.yml +76 -0
  5. package/.github/workflows/ci.yml +143 -0
  6. package/.github/workflows/release.yml +65 -0
  7. package/.husky/commit-msg +2 -0
  8. package/.husky/pre-commit +5 -0
  9. package/.lintstagedrc.json +4 -0
  10. package/.nvmrc +1 -0
  11. package/.prettierrc.json +7 -0
  12. package/.releaserc.json +159 -0
  13. package/CHANGELOG.md +24 -0
  14. package/CONTRIBUTING.md +274 -0
  15. package/LICENCE +201 -0
  16. package/README.md +263 -0
  17. package/SECURITY.md +108 -0
  18. package/codecov.yml +29 -0
  19. package/commitlint.config.mjs +28 -0
  20. package/dist/scripts/update-manifest.js +31 -0
  21. package/dist/src/assets/manifest.json +5 -0
  22. package/dist/src/cli.js +60 -0
  23. package/dist/src/generator.js +55 -0
  24. package/dist/src/http/fetch-client.js +141 -0
  25. package/dist/src/interfaces/code-generator.js +1 -0
  26. package/dist/src/interfaces/file-reader.js +1 -0
  27. package/dist/src/polyfills/fetch.js +18 -0
  28. package/dist/src/services/code-generator.service.js +419 -0
  29. package/dist/src/services/file-reader.service.js +25 -0
  30. package/dist/src/services/file-writer.service.js +32 -0
  31. package/dist/src/services/import-builder.service.js +45 -0
  32. package/dist/src/services/type-builder.service.js +42 -0
  33. package/dist/src/types/http.js +10 -0
  34. package/dist/src/types/openapi.js +173 -0
  35. package/dist/src/utils/error-handler.js +11 -0
  36. package/dist/src/utils/execution-time.js +3 -0
  37. package/dist/src/utils/manifest.js +9 -0
  38. package/dist/src/utils/reporter.js +15 -0
  39. package/dist/src/utils/signal-handler.js +12 -0
  40. package/dist/src/utils/tty.js +3 -0
  41. package/dist/tests/integration/cli.test.js +25 -0
  42. package/dist/tests/unit/generator.test.js +29 -0
  43. package/dist/vitest.config.js +38 -0
  44. package/eslint.config.mjs +33 -0
  45. package/package.json +102 -0
  46. package/samples/openapi.json +1 -0
  47. package/samples/saris-openapi.json +7122 -0
  48. package/samples/swagger-petstore.yaml +802 -0
  49. package/samples/swagger-saris.yaml +3585 -0
  50. package/samples/test-logical.yaml +50 -0
  51. package/scripts/update-manifest.js +31 -0
  52. package/scripts/update-manifest.ts +47 -0
  53. package/src/assets/manifest.json +5 -0
  54. package/src/cli.ts +68 -0
  55. package/src/generator.ts +61 -0
  56. package/src/http/fetch-client.ts +181 -0
  57. package/src/interfaces/code-generator.ts +25 -0
  58. package/src/interfaces/file-reader.ts +15 -0
  59. package/src/polyfills/fetch.ts +26 -0
  60. package/src/services/code-generator.service.ts +775 -0
  61. package/src/services/file-reader.service.ts +29 -0
  62. package/src/services/file-writer.service.ts +36 -0
  63. package/src/services/import-builder.service.ts +64 -0
  64. package/src/services/type-builder.service.ts +77 -0
  65. package/src/types/http.ts +35 -0
  66. package/src/types/openapi.ts +202 -0
  67. package/src/utils/error-handler.ts +13 -0
  68. package/src/utils/execution-time.ts +3 -0
  69. package/src/utils/manifest.ts +17 -0
  70. package/src/utils/reporter.ts +16 -0
  71. package/src/utils/signal-handler.ts +14 -0
  72. package/src/utils/tty.ts +3 -0
  73. package/tests/integration/cli.test.ts +29 -0
  74. package/tests/unit/generator.test.ts +36 -0
  75. package/tsconfig.json +44 -0
  76. package/vitest.config.ts +39 -0
@@ -0,0 +1,802 @@
1
+ openapi: 3.0.3
2
+ info:
3
+ title: Swagger Petstore - OpenAPI 3.0
4
+ description: |-
5
+ This is a sample Pet Store Server based on the OpenAPI 3.0 specification. You can find out more about
6
+ Swagger at [https://swagger.io](https://swagger.io). In the third iteration of the pet store, we've switched to the design first approach!
7
+ You can now help us improve the API whether it's by making changes to the definition itself or to the code.
8
+ That way, with time, we can improve the API in general, and expose some of the new features in OAS3.
9
+
10
+ _If you're looking for the Swagger 2.0/OAS 2.0 version of Petstore, then click [here](https://editor.swagger.io/?url=https://petstore.swagger.io/v2/swagger.yaml). Alternatively, you can load via the `Edit > Load Petstore OAS 2.0` menu option!_
11
+
12
+ Some useful links:
13
+ - [The Pet Store repository](https://github.com/swagger-api/swagger-petstore)
14
+ - [The source API definition for the Pet Store](https://github.com/swagger-api/swagger-petstore/blob/master/src/main/resources/openapi.yaml)
15
+ termsOfService: http://swagger.io/terms/
16
+ contact:
17
+ email: apiteam@swagger.io
18
+ license:
19
+ name: Apache 2.0
20
+ url: http://www.apache.org/licenses/LICENSE-2.0.html
21
+ version: 1.0.11
22
+ externalDocs:
23
+ description: Find out more about Swagger
24
+ url: http://swagger.io
25
+ servers:
26
+ - url: https://petstore3.swagger.io/api/v3
27
+ tags:
28
+ - name: pet
29
+ description: Everything about your Pets
30
+ externalDocs:
31
+ description: Find out more
32
+ url: http://swagger.io
33
+ - name: store
34
+ description: Access to Petstore orders
35
+ externalDocs:
36
+ description: Find out more about our store
37
+ url: http://swagger.io
38
+ - name: user
39
+ description: Operations about user
40
+ paths:
41
+ /pet:
42
+ put:
43
+ tags:
44
+ - pet
45
+ summary: Update an existing pet
46
+ description: Update an existing pet by Id
47
+ operationId: updatePet
48
+ requestBody:
49
+ description: Update an existent pet in the store
50
+ content:
51
+ application/json:
52
+ schema:
53
+ $ref: '#/components/schemas/Pet'
54
+ application/xml:
55
+ schema:
56
+ $ref: '#/components/schemas/Pet'
57
+ application/x-www-form-urlencoded:
58
+ schema:
59
+ $ref: '#/components/schemas/Pet'
60
+ required: true
61
+ responses:
62
+ '200':
63
+ description: Successful operation
64
+ content:
65
+ application/json:
66
+ schema:
67
+ $ref: '#/components/schemas/Pet'
68
+ application/xml:
69
+ schema:
70
+ $ref: '#/components/schemas/Pet'
71
+ '400':
72
+ description: Invalid ID supplied
73
+ '404':
74
+ description: Pet not found
75
+ '405':
76
+ description: Validation exception
77
+ security:
78
+ - petstore_auth:
79
+ - write:pets
80
+ - read:pets
81
+ post:
82
+ tags:
83
+ - pet
84
+ summary: Add a new pet to the store
85
+ description: Add a new pet to the store
86
+ operationId: addPet
87
+ requestBody:
88
+ description: Create a new pet in the store
89
+ content:
90
+ application/json:
91
+ schema:
92
+ $ref: '#/components/schemas/Pet'
93
+ application/xml:
94
+ schema:
95
+ $ref: '#/components/schemas/Pet'
96
+ application/x-www-form-urlencoded:
97
+ schema:
98
+ $ref: '#/components/schemas/Pet'
99
+ required: true
100
+ responses:
101
+ '200':
102
+ description: Successful operation
103
+ content:
104
+ application/json:
105
+ schema:
106
+ $ref: '#/components/schemas/Pet'
107
+ application/xml:
108
+ schema:
109
+ $ref: '#/components/schemas/Pet'
110
+ '405':
111
+ description: Invalid input
112
+ security:
113
+ - petstore_auth:
114
+ - write:pets
115
+ - read:pets
116
+ /pet/findByStatus:
117
+ get:
118
+ tags:
119
+ - pet
120
+ summary: Finds Pets by status
121
+ description: Multiple status values can be provided with comma separated strings
122
+ operationId: findPetsByStatus
123
+ parameters:
124
+ - name: status
125
+ in: query
126
+ description: Status values that need to be considered for filter
127
+ required: false
128
+ explode: true
129
+ schema:
130
+ type: string
131
+ default: available
132
+ enum:
133
+ - available
134
+ - pending
135
+ - sold
136
+ responses:
137
+ '200':
138
+ description: successful operation
139
+ content:
140
+ application/json:
141
+ schema:
142
+ type: array
143
+ items:
144
+ $ref: '#/components/schemas/Pet'
145
+ application/xml:
146
+ schema:
147
+ type: array
148
+ items:
149
+ $ref: '#/components/schemas/Pet'
150
+ '400':
151
+ description: Invalid status value
152
+ security:
153
+ - petstore_auth:
154
+ - write:pets
155
+ - read:pets
156
+ /pet/findByTags:
157
+ get:
158
+ tags:
159
+ - pet
160
+ summary: Finds Pets by tags
161
+ description: Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
162
+ operationId: findPetsByTags
163
+ parameters:
164
+ - name: tags
165
+ in: query
166
+ description: Tags to filter by
167
+ required: false
168
+ explode: true
169
+ schema:
170
+ type: array
171
+ items:
172
+ type: string
173
+ responses:
174
+ '200':
175
+ description: successful operation
176
+ content:
177
+ application/json:
178
+ schema:
179
+ type: array
180
+ items:
181
+ $ref: '#/components/schemas/Pet'
182
+ application/xml:
183
+ schema:
184
+ type: array
185
+ items:
186
+ $ref: '#/components/schemas/Pet'
187
+ '400':
188
+ description: Invalid tag value
189
+ security:
190
+ - petstore_auth:
191
+ - write:pets
192
+ - read:pets
193
+ /pet/{petId}:
194
+ get:
195
+ tags:
196
+ - pet
197
+ summary: Find pet by ID
198
+ description: Returns a single pet
199
+ operationId: getPetById
200
+ parameters:
201
+ - name: petId
202
+ in: path
203
+ description: ID of pet to return
204
+ required: true
205
+ schema:
206
+ type: integer
207
+ format: int64
208
+ responses:
209
+ '200':
210
+ description: successful operation
211
+ content:
212
+ application/json:
213
+ schema:
214
+ $ref: '#/components/schemas/Pet'
215
+ application/xml:
216
+ schema:
217
+ $ref: '#/components/schemas/Pet'
218
+ '400':
219
+ description: Invalid ID supplied
220
+ '404':
221
+ description: Pet not found
222
+ security:
223
+ - api_key: []
224
+ - petstore_auth:
225
+ - write:pets
226
+ - read:pets
227
+ post:
228
+ tags:
229
+ - pet
230
+ summary: Updates a pet in the store with form data
231
+ description: ''
232
+ operationId: updatePetWithForm
233
+ parameters:
234
+ - name: petId
235
+ in: path
236
+ description: ID of pet that needs to be updated
237
+ required: true
238
+ schema:
239
+ type: integer
240
+ format: int64
241
+ - name: name
242
+ in: query
243
+ description: Name of pet that needs to be updated
244
+ schema:
245
+ type: string
246
+ - name: status
247
+ in: query
248
+ description: Status of pet that needs to be updated
249
+ schema:
250
+ type: string
251
+ responses:
252
+ '405':
253
+ description: Invalid input
254
+ security:
255
+ - petstore_auth:
256
+ - write:pets
257
+ - read:pets
258
+ delete:
259
+ tags:
260
+ - pet
261
+ summary: Deletes a pet
262
+ description: delete a pet
263
+ operationId: deletePet
264
+ parameters:
265
+ - name: api_key
266
+ in: header
267
+ description: ''
268
+ required: false
269
+ schema:
270
+ type: string
271
+ - name: petId
272
+ in: path
273
+ description: Pet id to delete
274
+ required: true
275
+ schema:
276
+ type: integer
277
+ format: int64
278
+ responses:
279
+ '400':
280
+ description: Invalid pet value
281
+ security:
282
+ - petstore_auth:
283
+ - write:pets
284
+ - read:pets
285
+ /pet/{petId}/uploadImage:
286
+ post:
287
+ tags:
288
+ - pet
289
+ summary: uploads an image
290
+ description: ''
291
+ operationId: uploadFile
292
+ parameters:
293
+ - name: petId
294
+ in: path
295
+ description: ID of pet to update
296
+ required: true
297
+ schema:
298
+ type: integer
299
+ format: int64
300
+ - name: additionalMetadata
301
+ in: query
302
+ description: Additional Metadata
303
+ required: false
304
+ schema:
305
+ type: string
306
+ requestBody:
307
+ content:
308
+ application/octet-stream:
309
+ schema:
310
+ type: string
311
+ format: binary
312
+ responses:
313
+ '200':
314
+ description: successful operation
315
+ content:
316
+ application/json:
317
+ schema:
318
+ $ref: '#/components/schemas/ApiResponse'
319
+ security:
320
+ - petstore_auth:
321
+ - write:pets
322
+ - read:pets
323
+ /store/inventory:
324
+ get:
325
+ tags:
326
+ - store
327
+ summary: Returns pet inventories by status
328
+ description: Returns a map of status codes to quantities
329
+ operationId: getInventory
330
+ responses:
331
+ '200':
332
+ description: successful operation
333
+ content:
334
+ application/json:
335
+ schema:
336
+ type: object
337
+ additionalProperties:
338
+ type: integer
339
+ format: int32
340
+ security:
341
+ - api_key: []
342
+ /store/order:
343
+ post:
344
+ tags:
345
+ - store
346
+ summary: Place an order for a pet
347
+ description: Place a new order in the store
348
+ operationId: placeOrder
349
+ requestBody:
350
+ content:
351
+ application/json:
352
+ schema:
353
+ $ref: '#/components/schemas/Order'
354
+ application/xml:
355
+ schema:
356
+ $ref: '#/components/schemas/Order'
357
+ application/x-www-form-urlencoded:
358
+ schema:
359
+ $ref: '#/components/schemas/Order'
360
+ responses:
361
+ '200':
362
+ description: successful operation
363
+ content:
364
+ application/json:
365
+ schema:
366
+ $ref: '#/components/schemas/Order'
367
+ '405':
368
+ description: Invalid input
369
+ /store/order/{orderId}:
370
+ get:
371
+ tags:
372
+ - store
373
+ summary: Find purchase order by ID
374
+ description: For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions.
375
+ operationId: getOrderById
376
+ parameters:
377
+ - name: orderId
378
+ in: path
379
+ description: ID of order that needs to be fetched
380
+ required: true
381
+ schema:
382
+ type: integer
383
+ format: int64
384
+ responses:
385
+ '200':
386
+ description: successful operation
387
+ content:
388
+ application/json:
389
+ schema:
390
+ $ref: '#/components/schemas/Order'
391
+ application/xml:
392
+ schema:
393
+ $ref: '#/components/schemas/Order'
394
+ '400':
395
+ description: Invalid ID supplied
396
+ '404':
397
+ description: Order not found
398
+ delete:
399
+ tags:
400
+ - store
401
+ summary: Delete purchase order by ID
402
+ description: For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
403
+ operationId: deleteOrder
404
+ parameters:
405
+ - name: orderId
406
+ in: path
407
+ description: ID of the order that needs to be deleted
408
+ required: true
409
+ schema:
410
+ type: integer
411
+ format: int64
412
+ responses:
413
+ '400':
414
+ description: Invalid ID supplied
415
+ '404':
416
+ description: Order not found
417
+ /user:
418
+ post:
419
+ tags:
420
+ - user
421
+ summary: Create user
422
+ description: This can only be done by the logged in user.
423
+ operationId: createUser
424
+ requestBody:
425
+ description: Created user object
426
+ content:
427
+ application/json:
428
+ schema:
429
+ $ref: '#/components/schemas/User'
430
+ application/xml:
431
+ schema:
432
+ $ref: '#/components/schemas/User'
433
+ application/x-www-form-urlencoded:
434
+ schema:
435
+ $ref: '#/components/schemas/User'
436
+ responses:
437
+ default:
438
+ description: successful operation
439
+ content:
440
+ application/json:
441
+ schema:
442
+ $ref: '#/components/schemas/User'
443
+ application/xml:
444
+ schema:
445
+ $ref: '#/components/schemas/User'
446
+ /user/createWithList:
447
+ post:
448
+ tags:
449
+ - user
450
+ summary: Creates list of users with given input array
451
+ description: Creates list of users with given input array
452
+ operationId: createUsersWithListInput
453
+ requestBody:
454
+ content:
455
+ application/json:
456
+ schema:
457
+ type: array
458
+ items:
459
+ $ref: '#/components/schemas/User'
460
+ responses:
461
+ '200':
462
+ description: Successful operation
463
+ content:
464
+ application/json:
465
+ schema:
466
+ $ref: '#/components/schemas/User'
467
+ application/xml:
468
+ schema:
469
+ $ref: '#/components/schemas/User'
470
+ default:
471
+ description: successful operation
472
+ /user/login:
473
+ get:
474
+ tags:
475
+ - user
476
+ summary: Logs user into the system
477
+ description: ''
478
+ operationId: loginUser
479
+ parameters:
480
+ - name: username
481
+ in: query
482
+ description: The user name for login
483
+ required: false
484
+ schema:
485
+ type: string
486
+ - name: password
487
+ in: query
488
+ description: The password for login in clear text
489
+ required: false
490
+ schema:
491
+ type: string
492
+ responses:
493
+ '200':
494
+ description: successful operation
495
+ headers:
496
+ X-Rate-Limit:
497
+ description: calls per hour allowed by the user
498
+ schema:
499
+ type: integer
500
+ format: int32
501
+ X-Expires-After:
502
+ description: date in UTC when token expires
503
+ schema:
504
+ type: string
505
+ format: date-time
506
+ content:
507
+ application/xml:
508
+ schema:
509
+ type: string
510
+ application/json:
511
+ schema:
512
+ type: string
513
+ '400':
514
+ description: Invalid username/password supplied
515
+ /user/logout:
516
+ get:
517
+ tags:
518
+ - user
519
+ summary: Logs out current logged in user session
520
+ description: ''
521
+ operationId: logoutUser
522
+ parameters: []
523
+ responses:
524
+ default:
525
+ description: successful operation
526
+ /user/{username}:
527
+ get:
528
+ tags:
529
+ - user
530
+ summary: Get user by user name
531
+ description: ''
532
+ operationId: getUserByName
533
+ parameters:
534
+ - name: username
535
+ in: path
536
+ description: 'The name that needs to be fetched. Use user1 for testing. '
537
+ required: true
538
+ schema:
539
+ type: string
540
+ responses:
541
+ '200':
542
+ description: successful operation
543
+ content:
544
+ application/json:
545
+ schema:
546
+ $ref: '#/components/schemas/User'
547
+ application/xml:
548
+ schema:
549
+ $ref: '#/components/schemas/User'
550
+ '400':
551
+ description: Invalid username supplied
552
+ '404':
553
+ description: User not found
554
+ put:
555
+ tags:
556
+ - user
557
+ summary: Update user
558
+ description: This can only be done by the logged in user.
559
+ operationId: updateUser
560
+ parameters:
561
+ - name: username
562
+ in: path
563
+ description: name that need to be deleted
564
+ required: true
565
+ schema:
566
+ type: string
567
+ requestBody:
568
+ description: Update an existent user in the store
569
+ content:
570
+ application/json:
571
+ schema:
572
+ $ref: '#/components/schemas/User'
573
+ application/xml:
574
+ schema:
575
+ $ref: '#/components/schemas/User'
576
+ application/x-www-form-urlencoded:
577
+ schema:
578
+ $ref: '#/components/schemas/User'
579
+ responses:
580
+ default:
581
+ description: successful operation
582
+ delete:
583
+ tags:
584
+ - user
585
+ summary: Delete user
586
+ description: This can only be done by the logged in user.
587
+ operationId: deleteUser
588
+ parameters:
589
+ - name: username
590
+ in: path
591
+ description: The name that needs to be deleted
592
+ required: true
593
+ schema:
594
+ type: string
595
+ responses:
596
+ '400':
597
+ description: Invalid username supplied
598
+ '404':
599
+ description: User not found
600
+ components:
601
+ schemas:
602
+ Order:
603
+ type: object
604
+ properties:
605
+ id:
606
+ type: integer
607
+ format: int64
608
+ example: 10
609
+ petId:
610
+ type: integer
611
+ format: int64
612
+ example: 198772
613
+ quantity:
614
+ type: integer
615
+ format: int32
616
+ example: 7
617
+ shipDate:
618
+ type: string
619
+ format: date-time
620
+ status:
621
+ type: string
622
+ description: Order Status
623
+ example: approved
624
+ enum:
625
+ - placed
626
+ - approved
627
+ - delivered
628
+ complete:
629
+ type: boolean
630
+ xml:
631
+ name: order
632
+ Customer:
633
+ type: object
634
+ properties:
635
+ id:
636
+ type: integer
637
+ format: int64
638
+ example: 100000
639
+ username:
640
+ type: string
641
+ example: fehguy
642
+ address:
643
+ type: array
644
+ xml:
645
+ name: addresses
646
+ wrapped: true
647
+ items:
648
+ $ref: '#/components/schemas/Address'
649
+ xml:
650
+ name: customer
651
+ Address:
652
+ type: object
653
+ properties:
654
+ street:
655
+ type: string
656
+ example: 437 Lytton
657
+ city:
658
+ type: string
659
+ example: Palo Alto
660
+ state:
661
+ type: string
662
+ example: CA
663
+ zip:
664
+ type: string
665
+ example: '94301'
666
+ xml:
667
+ name: address
668
+ Category:
669
+ type: object
670
+ properties:
671
+ id:
672
+ type: integer
673
+ format: int64
674
+ example: 1
675
+ name:
676
+ type: string
677
+ example: Dogs
678
+ xml:
679
+ name: category
680
+ User:
681
+ type: object
682
+ properties:
683
+ id:
684
+ type: integer
685
+ format: int64
686
+ example: 10
687
+ username:
688
+ type: string
689
+ example: theUser
690
+ firstName:
691
+ type: string
692
+ example: John
693
+ lastName:
694
+ type: string
695
+ example: James
696
+ email:
697
+ type: string
698
+ example: john@email.com
699
+ password:
700
+ type: string
701
+ example: '12345'
702
+ phone:
703
+ type: string
704
+ example: '12345'
705
+ userStatus:
706
+ type: integer
707
+ description: User Status
708
+ format: int32
709
+ example: 1
710
+ xml:
711
+ name: user
712
+ Tag:
713
+ type: object
714
+ properties:
715
+ id:
716
+ type: integer
717
+ format: int64
718
+ name:
719
+ type: string
720
+ xml:
721
+ name: tag
722
+ Pet:
723
+ required:
724
+ - name
725
+ - photoUrls
726
+ type: object
727
+ properties:
728
+ id:
729
+ type: integer
730
+ format: int64
731
+ example: 10
732
+ name:
733
+ type: string
734
+ example: doggie
735
+ category:
736
+ $ref: '#/components/schemas/Category'
737
+ photoUrls:
738
+ type: array
739
+ xml:
740
+ wrapped: true
741
+ items:
742
+ type: string
743
+ xml:
744
+ name: photoUrl
745
+ tags:
746
+ type: array
747
+ xml:
748
+ wrapped: true
749
+ items:
750
+ $ref: '#/components/schemas/Tag'
751
+ status:
752
+ type: string
753
+ description: pet status in the store
754
+ enum:
755
+ - available
756
+ - pending
757
+ - sold
758
+ xml:
759
+ name: pet
760
+ ApiResponse:
761
+ type: object
762
+ properties:
763
+ code:
764
+ type: integer
765
+ format: int32
766
+ type:
767
+ type: string
768
+ message:
769
+ type: string
770
+ xml:
771
+ name: '##default'
772
+ requestBodies:
773
+ Pet:
774
+ description: Pet object that needs to be added to the store
775
+ content:
776
+ application/json:
777
+ schema:
778
+ $ref: '#/components/schemas/Pet'
779
+ application/xml:
780
+ schema:
781
+ $ref: '#/components/schemas/Pet'
782
+ UserArray:
783
+ description: List of user object
784
+ content:
785
+ application/json:
786
+ schema:
787
+ type: array
788
+ items:
789
+ $ref: '#/components/schemas/User'
790
+ securitySchemes:
791
+ petstore_auth:
792
+ type: oauth2
793
+ flows:
794
+ implicit:
795
+ authorizationUrl: https://petstore3.swagger.io/oauth/authorize
796
+ scopes:
797
+ write:pets: modify pets in your account
798
+ read:pets: read your pets
799
+ api_key:
800
+ type: apiKey
801
+ name: api_key
802
+ in: header