@redocly/openapi-core 0.0.0-snapshot.1769016804 → 0.0.0-snapshot.1769072908

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 (41) hide show
  1. package/lib/oas-types.d.ts +190 -0
  2. package/lib/oas-types.d.ts.map +1 -1
  3. package/lib/types/arazzo.d.ts.map +1 -1
  4. package/lib/types/arazzo.js +210 -44
  5. package/lib/types/arazzo.js.map +1 -1
  6. package/lib/types/asyncapi2.d.ts.map +1 -1
  7. package/lib/types/asyncapi2.js +385 -57
  8. package/lib/types/asyncapi2.js.map +1 -1
  9. package/lib/types/asyncapi3.d.ts.map +1 -1
  10. package/lib/types/asyncapi3.js +228 -47
  11. package/lib/types/asyncapi3.js.map +1 -1
  12. package/lib/types/index.d.ts +18 -2
  13. package/lib/types/index.d.ts.map +1 -1
  14. package/lib/types/index.js +4 -2
  15. package/lib/types/index.js.map +1 -1
  16. package/lib/types/oas2.d.ts +22 -0
  17. package/lib/types/oas2.d.ts.map +1 -1
  18. package/lib/types/oas3.d.ts +44 -0
  19. package/lib/types/oas3.d.ts.map +1 -1
  20. package/lib/types/oas3.js +345 -70
  21. package/lib/types/oas3.js.map +1 -1
  22. package/lib/types/oas3_1.d.ts +46 -0
  23. package/lib/types/oas3_1.d.ts.map +1 -1
  24. package/lib/types/oas3_1.js +38 -29
  25. package/lib/types/oas3_1.js.map +1 -1
  26. package/lib/types/oas3_2.d.ts +46 -0
  27. package/lib/types/oas3_2.d.ts.map +1 -1
  28. package/lib/types/oas3_2.js +101 -23
  29. package/lib/types/oas3_2.js.map +1 -1
  30. package/lib/types/openrpc.d.ts +32 -0
  31. package/lib/types/openrpc.d.ts.map +1 -1
  32. package/lib/types/openrpc.js +215 -46
  33. package/lib/types/openrpc.js.map +1 -1
  34. package/lib/types/overlay.d.ts.map +1 -1
  35. package/lib/types/overlay.js +34 -7
  36. package/lib/types/overlay.js.map +1 -1
  37. package/lib/types/redocly-yaml.d.ts +1 -1
  38. package/lib/types/redocly-yaml.d.ts.map +1 -1
  39. package/lib/types/redocly-yaml.js +150 -38
  40. package/lib/types/redocly-yaml.js.map +1 -1
  41. package/package.json +1 -1
package/lib/types/oas3.js CHANGED
@@ -17,70 +17,129 @@ const Root = {
17
17
  },
18
18
  required: ['openapi', 'paths', 'info'],
19
19
  extensionsPrefix: 'x-',
20
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/openapi#openapi',
21
+ description: 'REQUIRED. This string MUST be the semantic version number of the OpenAPI Specification version that the OpenAPI document uses. The openapi field SHOULD be used by tooling specifications and clients to interpret the OpenAPI document. This is not related to the API info.version string.',
20
22
  };
21
23
  const Tag = {
22
24
  properties: {
23
- name: { type: 'string' },
24
- description: { type: 'string' },
25
+ name: {
26
+ type: 'string',
27
+ description: 'REQUIRED. The name of the tag.',
28
+ },
29
+ description: {
30
+ type: 'string',
31
+ description: 'A description for the tag.',
32
+ },
25
33
  externalDocs: 'ExternalDocs',
26
34
  'x-traitTag': { type: 'boolean' },
27
35
  'x-displayName': { type: 'string' },
28
36
  },
29
37
  required: ['name'],
30
38
  extensionsPrefix: 'x-',
39
+ description: `The Tag Object represents a tag used by the OAS. It is not mandatory to have a tag object per tag used by the OAS but each tag object can contain additional metadata.`,
40
+ documentationLink: `https://spec.openapis.org/oas/v3.1.0#tag-object`,
31
41
  };
32
42
  const TagGroup = {
33
43
  properties: {
34
- name: { type: 'string' },
35
- tags: { type: 'array', items: { type: 'string' } },
44
+ name: {
45
+ type: 'string',
46
+ description: 'The display name for the tag, used in the navigation bar and as a section heading.',
47
+ },
48
+ tags: {
49
+ type: 'array',
50
+ description: 'List of tags to include in this group.',
51
+ items: { type: 'string' },
52
+ },
36
53
  },
37
54
  extensionsPrefix: 'x-',
55
+ description: 'The x-tagGroups extension is used at the top level of an OpenAPI description.',
56
+ documentationLink: 'https://redocly.com/docs/realm/content/api-docs/openapi-extensions/x-tag-groups#taggroup-object',
38
57
  };
39
58
  const ExternalDocs = {
40
59
  properties: {
41
- description: { type: 'string' },
42
- url: { type: 'string' },
60
+ description: {
61
+ type: 'string',
62
+ description: 'A description of the target documentation. Used as the link anchor text in Redocly. If not provided, the url is used as the link anchor text.',
63
+ },
64
+ url: {
65
+ type: 'string',
66
+ description: 'REQUIRED. The URL for the target documentation.',
67
+ },
43
68
  },
44
69
  required: ['url'],
45
70
  extensionsPrefix: 'x-',
71
+ description: 'Additional external documentation for this operation.',
72
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/external-docs',
46
73
  };
47
74
  const Server = {
48
75
  properties: {
49
- url: { type: 'string' },
50
- description: { type: 'string' },
76
+ url: {
77
+ type: 'string',
78
+ description: 'REQUIRED. A URL to the target host. This URL supports Server Variables and MAY be relative, to indicate that the host location is relative to the location where the OpenAPI document is being served. Variable substitutions are made when a variable is named in { curly braces }.',
79
+ },
80
+ description: {
81
+ type: 'string',
82
+ description: 'An optional string describing the host designated by the URL.',
83
+ },
51
84
  variables: 'ServerVariablesMap',
52
85
  },
53
86
  required: ['url'],
54
87
  extensionsPrefix: 'x-',
88
+ description: 'A server object to be used by the target operation.',
55
89
  };
56
90
  const ServerVariable = {
57
91
  properties: {
58
92
  enum: {
59
93
  type: 'array',
60
94
  items: { type: 'string' },
95
+ description: 'An enumeration of string values to be used if the substitution options are from a limited set. The array MUST NOT be empty. If defined, the array MUST contain the default value.',
96
+ },
97
+ default: {
98
+ type: 'string',
99
+ description: `REQUIRED. The default value to use for substitution, which SHALL be sent if an alternate value is not supplied. Note this behavior is different than the Schema Object's treatment of default values, because in those cases parameter values are optional. If the enum is defined, the value MUST exist in the enum's values.`,
100
+ },
101
+ description: {
102
+ type: 'string',
103
+ description: 'An optional description for the server variable.',
61
104
  },
62
- default: { type: 'string' },
63
- description: { type: 'string' },
64
105
  },
65
106
  required: ['default'],
66
107
  extensionsPrefix: 'x-',
108
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/server-variables#server-variables',
109
+ description: 'Server variables are used when you need to make a substitution into the server URL such as when the subdomain is unique per tenant.',
67
110
  };
68
111
  const SecurityRequirement = {
69
112
  properties: {},
70
113
  additionalProperties: { type: 'array', items: { type: 'string' } },
114
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/security#security-requirement-object',
115
+ description: 'A declaration of which security mechanisms can be used across the API. The list of values includes alternative security requirement objects that can be used. Only one of the security requirement objects need to be satisfied to authorize a request. Individual operations can override this definition. To make security optional, an empty security requirement ({}) can be included in the array.',
71
116
  };
72
117
  const Info = {
73
118
  properties: {
74
- title: { type: 'string' },
75
- version: { type: 'string' },
76
- description: { type: 'string' },
77
- termsOfService: { type: 'string' },
119
+ title: {
120
+ type: 'string',
121
+ description: 'REQUIRED. The title of the API.',
122
+ },
123
+ version: {
124
+ type: 'string',
125
+ description: 'REQUIRED. The version of the OpenAPI document (which is distinct from the OpenAPI Specification version or the API implementation version).',
126
+ },
127
+ description: {
128
+ type: 'string',
129
+ description: 'RECOMMENDED. A description of the API (Markdown may be used).',
130
+ },
131
+ termsOfService: {
132
+ type: 'string',
133
+ description: 'A URL to the Terms of Service for the API.',
134
+ },
78
135
  contact: 'Contact',
79
136
  license: 'License',
80
137
  'x-logo': 'Logo',
81
138
  },
82
139
  required: ['title', 'version'],
83
140
  extensionsPrefix: 'x-',
141
+ description: 'REQUIRED. Provides metadata about the API. The metadata MAY be used by tooling as required.',
142
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/info#info',
84
143
  };
85
144
  const Logo = {
86
145
  properties: {
@@ -89,38 +148,72 @@ const Logo = {
89
148
  backgroundColor: { type: 'string' },
90
149
  href: { type: 'string' },
91
150
  },
151
+ documentationLink: 'https://redocly.com/docs-legacy/api-reference-docs/specification-extensions/x-logo#x-logo',
152
+ description: 'A commonly used specification extension containing the information about the API logo.',
92
153
  };
93
154
  const Contact = {
94
155
  properties: {
95
- name: { type: 'string' },
96
- url: { type: 'string' },
97
- email: { type: 'string' },
156
+ name: {
157
+ type: 'string',
158
+ description: 'The identifying name of the contact person or organization.',
159
+ },
160
+ url: {
161
+ type: 'string',
162
+ description: 'The URL pointing to the contact information.',
163
+ },
164
+ email: {
165
+ type: 'string',
166
+ description: 'The email address of the contact person or organization.',
167
+ },
98
168
  },
99
169
  extensionsPrefix: 'x-',
170
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/contact',
171
+ description: 'The contact information for the exposed API.',
100
172
  };
101
173
  const License = {
102
174
  properties: {
103
- name: { type: 'string' },
104
- url: { type: 'string' },
175
+ name: {
176
+ type: 'string',
177
+ description: 'REQUIRED. The license name used for the API.',
178
+ },
179
+ url: {
180
+ type: 'string',
181
+ description: 'The URL pointing to the contact information.',
182
+ },
105
183
  },
106
184
  required: ['name'],
107
185
  extensionsPrefix: 'x-',
186
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/license#license',
187
+ description: 'The license information for the exposed API.',
108
188
  };
109
189
  const Paths = {
110
190
  properties: {},
111
191
  additionalProperties: (_value, key) => key.startsWith('/') ? 'PathItem' : undefined,
192
+ description: 'The Paths Object is a map of a paths to the path item object. A path starts with a /.',
193
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/paths#paths-object',
112
194
  };
113
195
  const WebhooksMap = {
114
196
  properties: {},
115
197
  additionalProperties: () => 'PathItem',
198
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/webhooks#types',
116
199
  };
117
200
  const PathItem = {
118
201
  properties: {
119
- $ref: { type: 'string' }, // TODO: verify special $ref handling for Path Item
202
+ $ref: {
203
+ type: 'string',
204
+ description: 'Allows for a referenced definition of this path item. The referenced structure MUST be in the form of a Path Item Object. In case a Path Item Object field appears both in the defined object and the referenced object, the behavior is undefined. See the rules for resolving Relative References.',
205
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/reference',
206
+ }, // TODO: verify special $ref handling for Path Item
120
207
  servers: 'ServerList',
121
208
  parameters: 'ParameterList',
122
- summary: { type: 'string' },
123
- description: { type: 'string' },
209
+ summary: {
210
+ type: 'string',
211
+ description: 'An optional, string summary, intended to apply to all operations in this path.',
212
+ },
213
+ description: {
214
+ type: 'string',
215
+ description: 'An optional, string description, intended to apply to all operations in this path.',
216
+ },
124
217
  get: 'Operation',
125
218
  put: 'Operation',
126
219
  post: 'Operation',
@@ -131,20 +224,47 @@ const PathItem = {
131
224
  trace: 'Operation',
132
225
  },
133
226
  extensionsPrefix: 'x-',
227
+ description: 'Describes the operations available on a single path. A Path Item MAY be empty, due to ACL constraints. The path itself is still exposed to the documentation viewer but they will not know which operations and parameters are available.',
228
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/path-item#path-item-object',
134
229
  };
135
230
  const Parameter = {
136
231
  properties: {
137
- name: { type: 'string' },
138
- in: { enum: ['query', 'header', 'path', 'cookie'] },
139
- description: { type: 'string' },
140
- required: { type: 'boolean' },
141
- deprecated: { type: 'boolean' },
142
- allowEmptyValue: { type: 'boolean' },
232
+ name: {
233
+ type: 'string',
234
+ description: 'REQUIRED. The name of the parameter. Parameter names are case sensitive.',
235
+ },
236
+ in: {
237
+ enum: ['query', 'header', 'path', 'cookie'],
238
+ description: 'REQUIRED. The location of the parameter. Possible values are "query", "header", "path", or "cookie".',
239
+ },
240
+ description: {
241
+ type: 'string',
242
+ description: 'A brief description of the parameter. This could contain examples of use.',
243
+ },
244
+ required: {
245
+ type: 'boolean',
246
+ description: 'Determines whether this parameter is mandatory. If the parameter location is "path", this property is REQUIRED and its value MUST be true. Otherwise, the property MAY be included and its default value is false.',
247
+ },
248
+ deprecated: {
249
+ type: 'boolean',
250
+ description: 'Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. Default value is false.',
251
+ },
252
+ allowEmptyValue: {
253
+ type: 'boolean',
254
+ description: 'Sets the ability to pass empty-valued parameters. This is valid only for query parameters and allows sending a parameter with an empty value. Default value is false. If style is used, and if behavior is n/a (cannot be serialized), the value of allowEmptyValue SHALL be ignored. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a later revision.',
255
+ },
143
256
  style: {
144
257
  enum: ['form', 'simple', 'label', 'matrix', 'spaceDelimited', 'pipeDelimited', 'deepObject'],
258
+ description: 'Describes how the parameter value will be serialized depending on the type of the parameter value. Default values (based on value of in): for query - form; for path - simple; for header - simple; for cookie - form.',
259
+ },
260
+ explode: {
261
+ type: 'boolean',
262
+ description: 'When this is true, parameter values of type array or object generate separate parameters for each value of the array or key-value pair of the map. For other types of parameters this property has no effect. When style is form, the default value is true. For all other styles, the default value is false.',
263
+ },
264
+ allowReserved: {
265
+ type: 'boolean',
266
+ description: `Determines whether the parameter value SHOULD allow reserved characters, as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without percent-encoding. This property only applies to parameters with an in value of query. The default value is false.`,
145
267
  },
146
- explode: { type: 'boolean' },
147
- allowReserved: { type: 'boolean' },
148
268
  schema: 'Schema',
149
269
  example: { isExample: true },
150
270
  examples: 'ExamplesMap',
@@ -153,17 +273,32 @@ const Parameter = {
153
273
  required: ['name', 'in'],
154
274
  requiredOneOf: ['schema', 'content'],
155
275
  extensionsPrefix: 'x-',
276
+ description: 'Describes a request parameter, which excludes the request body. A unique parameter is defined by a unique combination of the name and in values.',
277
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/parameter',
156
278
  };
157
279
  const Operation = {
158
280
  properties: {
159
281
  tags: {
160
282
  type: 'array',
161
283
  items: { type: 'string' },
284
+ description: 'A list of tags for API documentation control. Tags can be used for logical grouping of operations by resources or any other qualifier.',
285
+ },
286
+ summary: {
287
+ type: 'string',
288
+ description: 'A short summary of what the operation does.',
289
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/operation#summary',
290
+ },
291
+ description: {
292
+ type: 'string',
293
+ description: 'A verbose explanation of the operation behavior.',
294
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/operation#description',
162
295
  },
163
- summary: { type: 'string' },
164
- description: { type: 'string' },
165
296
  externalDocs: 'ExternalDocs',
166
- operationId: { type: 'string' },
297
+ operationId: {
298
+ type: 'string',
299
+ description: 'The operationId is path segment or path fragment in deep links to a specific operation.',
300
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/operation#operationid',
301
+ },
167
302
  parameters: 'ParameterList',
168
303
  security: 'SecurityRequirementList',
169
304
  servers: 'ServerList',
@@ -177,6 +312,8 @@ const Operation = {
177
312
  },
178
313
  required: ['responses'],
179
314
  extensionsPrefix: 'x-',
315
+ description: `The Operation Object describes a single API operation on a path, including its parameters, responses, and request body (if applicable). Each path can support more than one operation, but those operations must be unique. A unique operation is a combination of a path and an HTTP method, so two GET or two POST methods for the same path are not allowed.`,
316
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/operation',
180
317
  };
181
318
  const XCodeSample = {
182
319
  properties: {
@@ -184,76 +321,130 @@ const XCodeSample = {
184
321
  label: { type: 'string' },
185
322
  source: { type: 'string' },
186
323
  },
324
+ documentationLink: 'https://redocly.com/docs/realm/content/api-docs/openapi-extensions/x-code-samples',
325
+ description: 'Code samples are snippets of code shown alongside API operations in reference documentation, giving users a quick way to start to interact with an API from their own code. The x-codeSamples addition to OpenAPI allows you to add or override any existing code samples for a particular language or endpoint.',
187
326
  };
188
327
  const RequestBody = {
189
328
  properties: {
190
- description: { type: 'string' },
191
- required: { type: 'boolean' },
329
+ description: {
330
+ type: 'string',
331
+ description: 'A brief description of the request body. This could contain examples of use.',
332
+ },
333
+ required: {
334
+ type: 'boolean',
335
+ description: 'Determines if the request body is required in the request. Defaults to false.',
336
+ },
192
337
  content: 'MediaTypesMap',
193
338
  },
194
339
  required: ['content'],
195
340
  extensionsPrefix: 'x-',
341
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/request-body',
342
+ description: 'The request body is defined inside of operations (including paths and webhooks). The request body can also be defined inside of the named requestBodies object in components.',
196
343
  };
197
344
  const MediaTypesMap = {
198
345
  properties: {},
199
346
  additionalProperties: 'MediaType',
347
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/media-type#types',
200
348
  };
201
349
  const MediaType = {
202
350
  properties: {
203
351
  schema: 'Schema',
204
- example: { isExample: true },
352
+ example: {
353
+ isExample: true,
354
+ description: 'Example of the media type. The example object SHOULD be in the correct format as specified by the media type. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema.',
355
+ },
205
356
  examples: 'ExamplesMap',
206
357
  encoding: 'EncodingMap',
207
358
  },
208
359
  extensionsPrefix: 'x-',
360
+ description: 'The Media Type Object is one of the important building blocks of OpenAPI.',
361
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/media-type',
209
362
  };
210
363
  const Example = {
211
364
  properties: {
212
- value: { resolvable: false },
365
+ value: {
366
+ resolvable: false,
367
+ description: 'Embedded literal example. The value field and externalValue field are mutually exclusive. To represent examples of media types that cannot naturally represented in JSON or YAML, use a string value to contain the example, escaping where necessary.',
368
+ },
213
369
  summary: { type: 'string' },
214
- description: { type: 'string' },
215
- externalValue: { type: 'string' },
370
+ description: { type: 'string', description: 'Long description for the example.' },
371
+ externalValue: {
372
+ type: 'string',
373
+ description: 'A URL that points to the literal example. This provides the capability to reference examples that cannot easily be included in JSON or YAML documents. The value field and externalValue field are mutually exclusive.',
374
+ },
216
375
  },
217
376
  extensionsPrefix: 'x-',
377
+ description: 'Example of the media type. The example object SHOULD be in the correct format as specified by the media type. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema which contains an example, the example value SHALL override the example provided by the schema.',
378
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/example',
218
379
  };
219
380
  const Encoding = {
220
381
  properties: {
221
- contentType: { type: 'string' },
382
+ contentType: {
383
+ type: 'string',
384
+ description: `The Content-Type for encoding a specific property. Default value depends on the property type: for string with format being binary – application/octet-stream; for other primitive types – text/plain; for object - application/json; for array – the default is defined based on the inner type. The value can be a specific media type (e.g. application/json), a wildcard media type (e.g. image/*), or a comma-separated list of the two types.`,
385
+ },
222
386
  headers: 'HeadersMap',
223
387
  style: {
224
388
  enum: ['form', 'simple', 'label', 'matrix', 'spaceDelimited', 'pipeDelimited', 'deepObject'],
389
+ description: 'Describes how a specific property value will be serialized depending on its type. See Parameter Object for details on the style property. The behavior follows the same values as query parameters, including default values. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded.',
390
+ },
391
+ explode: {
392
+ type: 'boolean',
393
+ description: 'When this is true, property values of type array or object generate separate parameters for each value of the array, or key-value-pair of the map. For other types of properties this property has no effect. When style is form, the default value is true. For all other styles, the default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded.',
394
+ },
395
+ allowReserved: {
396
+ type: 'boolean',
397
+ description: `Determines whether the parameter value SHOULD allow reserved characters, as defined by [RFC3986] Section 2.2 :/?#[]@!$&'()*+,;= to be included without percent-encoding. The default value is false. This property SHALL be ignored if the request body media type is not application/x-www-form-urlencoded.`,
225
398
  },
226
- explode: { type: 'boolean' },
227
- allowReserved: { type: 'boolean' },
228
399
  },
229
400
  extensionsPrefix: 'x-',
401
+ description: 'A single encoding definition applied to a single schema property.',
402
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/encoding#types',
230
403
  };
231
404
  const EnumDescriptions = {
232
405
  properties: {},
233
406
  additionalProperties: { type: 'string' },
407
+ description: 'The enum (short for "enumeration") fields in OpenAPI allow you to restrict the value of a field to a list of allowed values. These values need to be short and machine-readable, but that can make them harder for humans to parse and work with.',
408
+ documentationLink: 'https://redocly.com/docs/realm/content/api-docs/openapi-extensions/x-enum-descriptions',
234
409
  };
235
410
  const Header = {
236
411
  properties: {
237
- description: { type: 'string' },
238
- required: { type: 'boolean' },
412
+ description: {
413
+ type: 'string',
414
+ description: 'A brief description of the parameter. This could contain examples of use. CommonMark syntax MAY be used for rich text representation.',
415
+ },
416
+ required: {
417
+ type: 'boolean',
418
+ description: 'Determines whether this parameter is mandatory. Its default value is false.',
419
+ },
239
420
  deprecated: { type: 'boolean' },
240
- allowEmptyValue: { type: 'boolean' },
421
+ allowEmptyValue: {
422
+ type: 'boolean',
423
+ description: 'Specifies that a parameter is deprecated and SHOULD be transitioned out of usage. Default value is false.',
424
+ },
241
425
  style: {
242
426
  enum: ['form', 'simple', 'label', 'matrix', 'spaceDelimited', 'pipeDelimited', 'deepObject'],
243
427
  },
244
428
  explode: { type: 'boolean' },
245
429
  allowReserved: { type: 'boolean' },
246
430
  schema: 'Schema',
247
- example: { isExample: true },
431
+ example: {
432
+ isExample: true,
433
+ description: `Example of the header's potential value. The example SHOULD match the specified schema and encoding properties if present. The example field is mutually exclusive of the examples field. Furthermore, if referencing a schema that contains an example, the example value SHALL override the example provided by the schema. To represent examples of media types that cannot naturally be represented in JSON or YAML, a string value can contain the example with escaping where necessary.`,
434
+ },
248
435
  examples: 'ExamplesMap',
249
436
  content: 'MediaTypesMap',
250
437
  },
251
438
  requiredOneOf: ['schema', 'content'],
252
439
  extensionsPrefix: 'x-',
440
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/header#header-object',
441
+ description: 'The header object is used to describe a response header in the headers map.',
253
442
  };
254
443
  const Responses = {
255
444
  properties: { default: 'Response' },
256
445
  additionalProperties: (_v, key) => responseCodeRegexp.test(key) ? 'Response' : undefined,
446
+ description: 'The list of possible responses as they are returned from executing this operation.',
447
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/named-responses',
257
448
  };
258
449
  const Response = {
259
450
  properties: {
@@ -261,28 +452,45 @@ const Response = {
261
452
  headers: 'HeadersMap',
262
453
  content: 'MediaTypesMap',
263
454
  links: 'LinksMap',
264
- 'x-summary': { type: 'string' },
455
+ 'x-summary': {
456
+ type: 'string',
457
+ documentationLink: 'https://redocly.com/docs/realm/content/api-docs/openapi-extensions/x-summary#openapi-extension-x-summary',
458
+ description: 'Use x-summary to add a short custom text to describe the response in the API documentation.',
459
+ },
265
460
  },
266
461
  required: ['description'],
267
462
  extensionsPrefix: 'x-',
463
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/response',
464
+ description: 'The response object describes a single response in the Responses Map.',
268
465
  };
269
466
  const Link = {
270
467
  properties: {
271
- operationRef: { type: 'string' },
272
- operationId: { type: 'string' },
468
+ operationRef: {
469
+ type: 'string',
470
+ description: 'A relative or absolute reference to an OAS operation. This field is mutually exclusive of the operationId field, and MUST point to an Operation Object. Relative operationRef values MAY be used to locate an existing Operation Object in the OpenAPI definition.',
471
+ },
472
+ operationId: {
473
+ type: 'string',
474
+ description: 'The name of an existing, resolvable OAS operation, as defined with a unique operationId. This field is mutually exclusive of the operationRef field.',
475
+ },
273
476
  parameters: null, // TODO: figure out how to describe/validate this
274
477
  requestBody: null, // TODO: figure out how to describe/validate this
275
- description: { type: 'string' },
478
+ description: { type: 'string', description: 'A description of the link.' },
276
479
  server: 'Server',
277
480
  },
278
481
  extensionsPrefix: 'x-',
482
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/links',
483
+ description: 'The Link object represents a possible design-time link for a response. The presence of a link does not guarantee the caller’s ability to successfully invoke it, rather it provides a known relationship and traversal mechanism between responses and other operations.',
279
484
  };
280
485
  // draft-00
281
486
  const Schema = {
282
487
  properties: {
283
488
  externalDocs: 'ExternalDocs',
284
489
  discriminator: 'Discriminator',
285
- title: { type: 'string' },
490
+ title: {
491
+ type: 'string',
492
+ description: 'Value MUST be a string. Multiple types via an array are not supported.',
493
+ },
286
494
  multipleOf: { type: 'number', minimum: 0 },
287
495
  maximum: { type: 'number' },
288
496
  minimum: { type: 'number' },
@@ -290,7 +498,10 @@ const Schema = {
290
498
  exclusiveMinimum: { type: 'boolean' },
291
499
  maxLength: { type: 'integer', minimum: 0 },
292
500
  minLength: { type: 'integer', minimum: 0 },
293
- pattern: { type: 'string' },
501
+ pattern: {
502
+ type: 'string',
503
+ description: '(This string SHOULD be a valid regular expression, according to the Ecma-262 Edition 5.1 regular expression dialect)',
504
+ },
294
505
  maxItems: { type: 'integer', minimum: 0 },
295
506
  minItems: { type: 'integer', minimum: 0 },
296
507
  uniqueItems: { type: 'boolean' },
@@ -300,10 +511,17 @@ const Schema = {
300
511
  enum: { type: 'array' },
301
512
  type: {
302
513
  enum: ['object', 'array', 'string', 'number', 'integer', 'boolean'],
514
+ description: 'Value MUST be a string. Multiple types via an array are not supported.',
303
515
  },
304
- allOf: listOf('Schema'),
305
- anyOf: listOf('Schema'),
306
- oneOf: listOf('Schema'),
516
+ allOf: listOf('Schema', {
517
+ description: 'Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema.',
518
+ }),
519
+ anyOf: listOf('Schema', {
520
+ description: 'Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema.',
521
+ }),
522
+ oneOf: listOf('Schema', {
523
+ description: 'Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema.',
524
+ }),
307
525
  not: 'Schema',
308
526
  properties: 'SchemaProperties',
309
527
  items: (value) => {
@@ -322,8 +540,14 @@ const Schema = {
322
540
  return 'Schema';
323
541
  }
324
542
  },
325
- description: { type: 'string' },
326
- format: { type: 'string' },
543
+ description: {
544
+ type: 'string',
545
+ description: 'CommonMark syntax MAY be used for rich text representation.',
546
+ },
547
+ format: {
548
+ type: 'string',
549
+ description: `See Data Type Formats for further details. While relying on JSON Schema's defined formats, the OAS offers a few additional predefined formats.`,
550
+ },
327
551
  default: null,
328
552
  nullable: { type: 'boolean' },
329
553
  readOnly: { type: 'boolean' },
@@ -336,6 +560,8 @@ const Schema = {
336
560
  'x-explicitMappingOnly': { type: 'boolean' },
337
561
  },
338
562
  extensionsPrefix: 'x-',
563
+ description: 'The schema defining the content of the request, response, or parameter.',
564
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/schemas',
339
565
  };
340
566
  const Xml = {
341
567
  properties: {
@@ -346,6 +572,7 @@ const Xml = {
346
572
  wrapped: { type: 'boolean' },
347
573
  },
348
574
  extensionsPrefix: 'x-',
575
+ description: 'This MAY be used only on properties schemas. It has no effect on root schemas. Adds additional metadata to describe the XML representation of this property.',
349
576
  };
350
577
  const SchemaProperties = {
351
578
  properties: {},
@@ -361,14 +588,20 @@ const DiscriminatorMapping = {
361
588
  return { type: 'string' };
362
589
  }
363
590
  },
591
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/discriminator#types',
364
592
  };
365
593
  const Discriminator = {
366
594
  properties: {
367
- propertyName: { type: 'string' },
595
+ propertyName: {
596
+ type: 'string',
597
+ description: 'REQUIRED. The name of the property in the payload that will hold the discriminator value.',
598
+ },
368
599
  mapping: 'DiscriminatorMapping',
369
600
  },
370
601
  required: ['propertyName'],
371
602
  extensionsPrefix: 'x-',
603
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/discriminator#discriminator-object',
604
+ description: 'When request bodies or response payloads may be one of a number of different schemas, a discriminator object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the document of an alternative schema based on the value associated with it.',
372
605
  };
373
606
  const Components = {
374
607
  properties: {
@@ -383,6 +616,7 @@ const Components = {
383
616
  callbacks: 'NamedCallbacks',
384
617
  },
385
618
  extensionsPrefix: 'x-',
619
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/components#components',
386
620
  };
387
621
  const ImplicitFlow = {
388
622
  properties: {
@@ -392,6 +626,7 @@ const ImplicitFlow = {
392
626
  },
393
627
  required: ['authorizationUrl', 'scopes'],
394
628
  extensionsPrefix: 'x-',
629
+ description: 'Configuration for the OAuth Implicit flow.',
395
630
  };
396
631
  const PasswordFlow = {
397
632
  properties: {
@@ -401,6 +636,7 @@ const PasswordFlow = {
401
636
  },
402
637
  required: ['tokenUrl', 'scopes'],
403
638
  extensionsPrefix: 'x-',
639
+ description: 'Object Configuration for the OAuth Resource Owner Password flow.',
404
640
  };
405
641
  const ClientCredentials = {
406
642
  properties: {
@@ -410,6 +646,7 @@ const ClientCredentials = {
410
646
  },
411
647
  required: ['tokenUrl', 'scopes'],
412
648
  extensionsPrefix: 'x-',
649
+ description: 'Configuration for the OAuth Client Credentials flow. Previously called application in OpenAPI 2.0.',
413
650
  };
414
651
  const AuthorizationCode = {
415
652
  properties: {
@@ -428,6 +665,7 @@ const AuthorizationCode = {
428
665
  },
429
666
  required: ['authorizationUrl', 'tokenUrl', 'scopes'],
430
667
  extensionsPrefix: 'x-',
668
+ description: 'Configuration for the OAuth Authorization Code flow. Previously called accessCode in OpenAPI 2.0.',
431
669
  };
432
670
  const OAuth2Flows = {
433
671
  properties: {
@@ -437,17 +675,40 @@ const OAuth2Flows = {
437
675
  authorizationCode: 'AuthorizationCode',
438
676
  },
439
677
  extensionsPrefix: 'x-',
678
+ description: 'Configuration details for a supported OAuth Flow.',
440
679
  };
441
680
  const SecurityScheme = {
442
681
  properties: {
443
- type: { enum: ['apiKey', 'http', 'oauth2', 'openIdConnect'] },
444
- description: { type: 'string' },
445
- name: { type: 'string' },
446
- in: { type: 'string', enum: ['query', 'header', 'cookie'] },
447
- scheme: { type: 'string' },
448
- bearerFormat: { type: 'string' },
682
+ type: {
683
+ enum: ['apiKey', 'http', 'oauth2', 'openIdConnect'],
684
+ description: 'REQUIRED. The type of the security scheme. Valid values are "apiKey", "http", "oauth2", "openIdConnect".',
685
+ },
686
+ description: {
687
+ type: 'string',
688
+ description: 'A short description for security scheme.',
689
+ },
690
+ name: {
691
+ type: 'string',
692
+ description: 'REQUIRED. The name of the header, query or cookie parameter to be used.',
693
+ },
694
+ in: {
695
+ type: 'string',
696
+ enum: ['query', 'header', 'cookie'],
697
+ description: 'REQUIRED. The location of the API key. Valid values are "query", "header" or "cookie".',
698
+ },
699
+ scheme: {
700
+ type: 'string',
701
+ description: 'A short description for security scheme.',
702
+ },
703
+ bearerFormat: {
704
+ type: 'string',
705
+ description: 'A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes.',
706
+ },
449
707
  flows: 'OAuth2Flows',
450
- openIdConnectUrl: { type: 'string' },
708
+ openIdConnectUrl: {
709
+ type: 'string',
710
+ description: 'REQUIRED. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL.',
711
+ },
451
712
  'x-defaultClientId': { type: 'string' },
452
713
  },
453
714
  required(value) {
@@ -485,18 +746,28 @@ const XUsePkce = {
485
746
  disableManualConfiguration: { type: 'boolean' },
486
747
  hideClientSecretInput: { type: 'boolean' },
487
748
  },
749
+ description: 'The x-usePkce allows you to enable Proof Key for Code Exchange (PKCE) for the Oauth2 or OpenID Connect authorization code flow in the Replay.',
750
+ documentationLink: 'https://redocly.com/docs/realm/content/api-docs/openapi-extensions/x-use-pkce#openapi-extension-x-usepkce',
488
751
  };
489
752
  export const Oas3Types = {
490
753
  Root,
491
754
  Tag,
492
- TagList: listOf('Tag'),
755
+ TagList: listOf('Tag', {
756
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/tags',
757
+ description: `A list of tags used by the document with additional metadata. The order of the tags can be used to reflect on their order by the parsing tools. Not all tags that are used by the Operation Object must be declared. The tags that are not declared MAY be organized randomly or based on the tools' logic. Each tag name in the list MUST be unique.`,
758
+ }),
493
759
  TagGroups: listOf('TagGroup'),
494
760
  TagGroup,
495
761
  ExternalDocs,
496
762
  Server,
497
- ServerList: listOf('Server'),
763
+ ServerList: listOf('Server', {
764
+ description: 'A list of servers available to the API.',
765
+ documentationLink: 'https://redocly.com/learn/openapi/openapi-visual-reference/servers#servers',
766
+ }),
498
767
  ServerVariable,
499
- ServerVariablesMap: mapOf('ServerVariable'),
768
+ ServerVariablesMap: mapOf('ServerVariable', {
769
+ description: `A map between a variable name and its value. The value is used for substitution in the server's URL template.`,
770
+ }),
500
771
  SecurityRequirement,
501
772
  SecurityRequirementList: listOf('SecurityRequirement'),
502
773
  Info,
@@ -505,9 +776,13 @@ export const Oas3Types = {
505
776
  Paths,
506
777
  PathItem,
507
778
  Parameter,
508
- ParameterList: listOf('Parameter'),
779
+ ParameterList: listOf('Parameter', {
780
+ description: 'A list of parameters that are applicable for this operation. If a parameter is already defined at the Path Item, the new definition will override it but can never remove it. The list MUST NOT include duplicated parameters. A unique parameter is defined by a combination of a name and location. The list can use the Reference Object to link to parameters that are defined at the OpenAPI Object’s components/parameters.',
781
+ }),
509
782
  Operation,
510
- Callback: mapOf('PathItem'),
783
+ Callback: mapOf('PathItem', {
784
+ description: 'https://redocly.com/learn/openapi/openapi-visual-reference/callbacks#callback-object',
785
+ }),
511
786
  CallbacksMap: mapOf('Callback'),
512
787
  RequestBody,
513
788
  MediaTypesMap,