blob: 95935ace1477c2bc2b02433af48fbeb4217d563c [file] [log] [blame]
Marcel van Lohuizen3c437bd2020-04-01 18:19:30 +02001// OpenAPI title.
2
3$version: "v1alpha1"
4
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +01005T :: {
6 shared: int
7}
8T :: {} | {
Marcel van Lohuizen95fcc282019-06-25 17:37:06 +02009 exact: string
10} | {
11 regex: string
12}
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +010013T :: {} | {
14 count: int
15} | {
16 amount: int
17}
18T :: {
19 shared2: int
20}
Marcel van Lohuizen95fcc282019-06-25 17:37:06 +020021
Marcel van Lohuizen7e4dc222019-10-08 13:14:34 +020022MyInt :: int
Marcel van Lohuizen95fcc282019-06-25 17:37:06 +020023
Marcel van Lohuizen3c437bd2020-04-01 18:19:30 +020024Foo :: {
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +010025 include: T
26 exclude: [...T]
Marcel van Lohuizen95fcc282019-06-25 17:37:06 +020027 count: MyInt
28}
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +010029
30Incompatible :: {
31 shared: int
32} | {
33 shared: int
34 extra1: int
35} | {
36 shared: int
37 extra2: int
38}
39
40WithMap :: {
41 shared: [string]: int
42} | {
43 shared: [string]: int
44 extra: int
45} | {
46 shared: string // incompatible
47 extra: int
48}
49
50Embed :: {
51 a?: int
52
53 close({}) |
Marcel van Lohuizened90d002020-03-30 17:18:12 +020054 close({b: T}) |
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +010055 close({c: int})
56
Marcel van Lohuizened90d002020-03-30 17:18:12 +020057 T :: {b?: int}
58
59 close({}) |
60 close({d: T}) |
61 close({e: int})
62
Marcel van Lohuizeneac3ea22020-03-19 09:55:11 +010063 // TODO: maybe support builtin to write this as
64 // oneof({},
65 // {b: int},
66 // {c: int})
67}