-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathopenapi.libsonnet
111 lines (102 loc) · 3.1 KB
/
openapi.libsonnet
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// Copyright (c) 2020, Cody Opel <[email protected]>
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md
{
//callback:: import 'objects/callback.libsonnet',
components::
import 'objects/components.libsonnet',
contact::
import 'objects/contact.libsonnet',
discriminator::
import 'objects/discriminator.libsonnet',
encoding::
import 'objects/encoding.libsonnet',
example::
import 'objects/example.libsonnet',
externaldocs::
import 'objects/external-documentation.libsonnet',
header::
import 'objects/header.libsonnet',
info::
import 'objects/info.libsonnet',
license::
import 'objects/license.libsonnet',
link::
import 'objects/link.libsonnet',
mediatype::
import 'objects/media-type.libsonnet',
oauthflow::
import 'objects/oauth-flow.libsonnet',
oauthflows::
import 'objects/oauth-flows.libsonnet',
operation::
import 'objects/operation.libsonnet',
parameter::
import 'objects/parameter.libsonnet',
pathitem::
import 'objects/path-item.libsonnet',
reference::
import 'objects/reference.libsonnet',
requestbody::
import 'objects/request-body.libsonnet',
response::
import 'objects/response.libsonnet',
schema::
import 'objects/schema.libsonnet',
securityrequirement::
import 'objects/security-requirement.libsonnet',
securityscheme::
import 'objects/security-scheme.libsonnet',
server::
import 'objects/server.libsonnet',
servervariable::
import 'objects/server-variable.libsonnet',
tag::
import 'objects/tag.libsonnet',
xml::
import 'objects/xml.libsonnet',
// https://swagger.io/specification/#oasObject
// TODO: Spec exts
new():: {
openapi: '3.0.3',
Info(infoObject):: self {
assert std.isObject(infoObject),
info: infoObject,
},
Server(serverObject):: self {
assert std.isObject(serverObject),
servers+: [serverObject],
},
Path(pathItemObject):: self {
assert std.isObject(pathItemObject),
paths+: pathItemObject,
},
Component(componentsObject):: self {
assert std.isObject(componentsObject),
components+: componentsObject,
},
Security(securityRequirementObject):: self {
assert std.isObject(securityRequirementObject),
security+: [securityRequirementObject],
},
Tag(tagObject):: self {
assert std.isObject(tagObject),
tags+: [tagObject],
},
ExternalDocs(externalDocsObject):: self {
assert std.isObject(externalDocsObject),
externalDocs: externalDocsObject,
},
},
}