From 73b37cfbdf5c3345167948efa31180372f46b0b3 Mon Sep 17 00:00:00 2001
From: Jueun Park <jueun-park98>
Date: Fri, 13 Aug 2021 02:50:09 +0900
Subject: [PATCH] edit

---
 .../6.8/executionHistory/executionHistory.bin | Bin 722809 -> 789512 bytes
 .../executionHistory/executionHistory.lock    | Bin 17 -> 17 bytes
 .gradle/6.8/fileHashes/fileHashes.bin         | Bin 77065 -> 77065 bytes
 .gradle/6.8/fileHashes/fileHashes.lock        | Bin 17 -> 17 bytes
 .../6.8/fileHashes/resourceHashesCache.bin    | Bin 35429 -> 35565 bytes
 .gradle/6.8/javaCompile/classAnalysis.bin     | Bin 1024870 -> 1030992 bytes
 .gradle/6.8/javaCompile/jarAnalysis.bin       | Bin 194086 -> 224345 bytes
 .gradle/6.8/javaCompile/javaCompile.lock      | Bin 17 -> 17 bytes
 .gradle/6.8/javaCompile/taskHistory.bin       | Bin 26101 -> 29049 bytes
 .../buildOutputCleanup.lock                   | Bin 17 -> 17 bytes
 .idea/jarRepositories.xml                     |  10 +-
 .idea/runConfigurations.xml                   |  10 +
 .../inf/st/openapi/ast/ComponentsObject.class | Bin 37693 -> 39911 bytes
 .../inf/st/openapi/ast/OpenAPIObject.class    | Bin 24441 -> 24441 bytes
 .../inf/st/openapi/ast/OperationObject.class  | Bin 30050 -> 30050 bytes
 .../ast/SecurityRequirementObject.class       | Bin 9040 -> 9040 bytes
 .../java/test/openapi/OpenAPIMain_test.class  | Bin 4239 -> 4381 bytes
 .../classes/openapi.OpenAPIMain_test.html     | 789 +++++++++++-------
 build/reports/tests/test/index.html           |   8 +-
 .../reports/tests/test/packages/openapi.html  |   6 +-
 .../test/TEST-openapi.OpenAPIMain_test.xml    | 787 ++++++++++-------
 build/test-results/test/binary/output.bin     |   8 +-
 build/test-results/test/binary/output.bin.idx | Bin 36 -> 36 bytes
 build/test-results/test/binary/results.bin    | Bin 47491 -> 45107 bytes
 .../inf/st/openapi/ast/CallbackObject.java    |   2 +-
 .../inf/st/openapi/ast/ComponentsObject.java  | 128 ++-
 .../st/openapi/ast/DiscriminatorObject.java   |   2 +-
 .../inf/st/openapi/ast/EncodingObject.java    |   2 +-
 .../inf/st/openapi/ast/ExampleObject.java     |   2 +-
 .../ast/ExternalDocumentationObject.java      |   2 +-
 .../inf/st/openapi/ast/HeaderObject.java      |   2 +-
 .../inf/st/openapi/ast/LinkObject.java        |   2 +-
 .../inf/st/openapi/ast/MediaTypeObject.java   |   2 +-
 .../inf/st/openapi/ast/OAuthFlowObject.java   |   2 +-
 .../inf/st/openapi/ast/OAuthFlowsObject.java  |   2 +-
 .../inf/st/openapi/ast/OpenAPIObject.java     |   2 +-
 .../inf/st/openapi/ast/OperationObject.java   |   4 +-
 .../inf/st/openapi/ast/ParameterObject.java   |   2 +-
 .../inf/st/openapi/ast/PathItemObject.java    |   2 +-
 .../inf/st/openapi/ast/PathsObject.java       |   2 +-
 .../inf/st/openapi/ast/RequestBodyObject.java |   2 +-
 .../inf/st/openapi/ast/ResponseObject.java    |   2 +-
 .../inf/st/openapi/ast/SchemaObject.java      |   2 +-
 .../ast/SecurityRequirementObject.java        |   4 +-
 .../st/openapi/ast/SecuritySchemeObject.java  |   2 +-
 .../inf/st/openapi/ast/TagObject.java         |   2 +-
 .../inf/st/openapi/ast/XmlObject.java         |   2 +-
 src/main/jastadd/Composer.jadd                |   4 +-
 src/test/java/openapi/OpenAPIMain_test.java   |  71 +-
 49 files changed, 1176 insertions(+), 693 deletions(-)
 create mode 100644 .idea/runConfigurations.xml

diff --git a/.gradle/6.8/executionHistory/executionHistory.bin b/.gradle/6.8/executionHistory/executionHistory.bin
index 578eed2b6fdac147d9bb45b5cb33fed0d7cd69c4..28161c506bbac8060af90b4fcba16b85aa53ca6b 100644
GIT binary patch
delta 13234
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

delta 6593
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
J{Ngg?1pqUnwx9q2

diff --git a/.gradle/6.8/executionHistory/executionHistory.lock b/.gradle/6.8/executionHistory/executionHistory.lock
index 9bee3b29920b079f9b289e6c793065ad3fb5cd0a..a2bc912533e2328ece478f35a818485edc0b0a4c 100644
GIT binary patch
literal 17
VcmZQp+O{L7ZHdZl1~6cm2mmvp1ik<O

literal 17
VcmZQp+O{L7ZHdZl1~6c$2LLmW1gro6

diff --git a/.gradle/6.8/fileHashes/fileHashes.bin b/.gradle/6.8/fileHashes/fileHashes.bin
index 977f9a8f0862b9dd489c0a0b802fd99629602aed..9c5388a790971d71e5f2b99fa048737f453af634 100644
GIT binary patch
delta 6102
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

delta 6192
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

diff --git a/.gradle/6.8/fileHashes/fileHashes.lock b/.gradle/6.8/fileHashes/fileHashes.lock
index 12703db1a21433004859d86380296af021db54c8..b57969720434e7ce82c07409867525c8cd05733f 100644
GIT binary patch
literal 17
VcmZP;t>XHyYn^sA0~lPK0st-F1poj5

literal 17
VcmZP;t>XHyYn^sA0~nkQ1pqCW1ib(N

diff --git a/.gradle/6.8/fileHashes/resourceHashesCache.bin b/.gradle/6.8/fileHashes/resourceHashesCache.bin
index 16c44a6fd91e32ce5545224b118c4c5e53fcecb9..fd3ea33b8171bd5a5c4f44071656a2f9aec627a9 100644
GIT binary patch
delta 145
zcmaDlh3V~7rVS<%jNdk!N_4XF_gbl|oLF4M00v#{o43jea0y&Kq^|9JaK<;VAVb&b
z&3n~1@C#@k-0|k`fv4A@qN$rx%>()Qk9b80>NWa71y@d9>*mCyuQ*Zh!)8Yh6{pGi
kQGAnSGnFQL=edZ~i3+^m?(^pJKgI(S?L3R485kJk0Cn>+ZU6uP

delta 47
zcmaDmmFejerVS<%jGs1}N_4Vrz9!4gwfU?13jWPo%{}=ii@94e=^fmt7{IvM(L==v
E0L!cqkN^Mx

diff --git a/.gradle/6.8/javaCompile/classAnalysis.bin b/.gradle/6.8/javaCompile/classAnalysis.bin
index f41e7078d3b8d782741f69b48835bdbb720224da..961ff2cf4facbcc056d561330af1253f96669b5e 100644
GIT binary patch
delta 526
zcmaEM%<jTByM`9V7N!>F7M2#)7Pc1lEga|D7}>U8XycGz6FB*bK}kIGU@8L$@Nb;C
z{Xq}MK@R@2XIzwYH#`9eGVm`>+dg9|$6`*#h3z@>IofmPbGGNq=W5TH&)uFgpJ#i{
zeBPT;jH27!e(_FZ=8v@I<aRqK1JSwW`}T8xc{xS-_deh)=apOs5#6q}{hSb=7bBAt
z=SD>ivFQnoye!+pwD^ACU}W4L#LRz^i@$kZoXo|CM<D8Vs%>Afl4B>=_R|vllb9Ga
zH!8jmhiFPN=4UD3HD+Mo>|kKvYyjcuiF-K>r+;|G%fhHUedB)~gX#MVxpbx%)p03K
zf6&4yGQDsouiEqt4xH@MFKpxGo-X}{S84hNJ5JW=f2MKrO>dgbsW|;WIw!~UpLKkE
z)2BV;v4V&_5aHyQ?jz30H$AnUUvc^a5l-Rh4vf48(-OE8rpv$N)S7;96|e2|rHs7#
z(+dvqmQ5FY$fGg+gFG+WboO#CrRfvS^KwtW^OpC-^lwW+R^)REO`pGuQ)jwE4L{rT
zm9_ke(*^7}*{1iX@bXRnTF<XKeSZ)q+w_{(yhhVMzUEP$u2{vTIK3f?i)DJHHy_{h
ziEnt~r+<CQV+wIz!cJbX>9ucpjkeFM=U>Uh#M!&O(3;nbYrFCy-am}nUH<Z^GXVfK
CnYnZT

delta 160
zcmccc&F<MTyM`9V7N!>F7M2#)7Pc1lEga|D7+JPoXycGz+t$mmlVkhEsT{L784I^B
zW9BdA+HTCpzk#bgaSKO#;ug;K#4R8;cYER%p6!WSc%Qg33U7D&#XFIC@;&47?P>pb
zJ4Lp$3-dWLGD+UtsAwTJJ)x18WqX(w-|riY4BLa4`A>pPbmC<c+^G0Ne4+sdL`9M@
HKT81s6tOvA

diff --git a/.gradle/6.8/javaCompile/jarAnalysis.bin b/.gradle/6.8/javaCompile/jarAnalysis.bin
index b31271d7572229ccf5ba276ee78bf66e92513fdc..7d2315b661df6d6c38b82d3e04178f6350a23381 100644
GIT binary patch
delta 420
zcmZ4XhWq9X-VG)ajGU8AB~}Qq*;ZWNv|Dj90|+pEQ=5EMLYwjBM#UfE8x0J^n;kvc
z9X%MgJ9;oZU8`iwz)+^ez)+?H!UCCJ)>K|t`hMyE8+#UOD@>1NU|@JS{a^r-*z^ZG
zn3T7db1`id-tIPqiHAiXWTo#*se--wtUk=5hdx;gOf6(o+n%Sy#Kp3G(j2B176B8p
zFeiqb_2x5wo_cnn@_+2)iw_j1A2`UwvfX<j(-by=3(SQNmkK<zk&SK2pH^|hVsc=e
z;&y=*Obv_z)%{Z+$S_^yTc|4C{73lN!O4jy6sK>v#3ZzRr!i9z({|T2Oez+PFQ*6O
zF}X7_E!n>D3DaywX2vCq(|w;Y=`*u0VccH(jLDY~BzNjLQ#%tg^Ag7C)+J1>V8+1`
zCJ~U-n^#On!D=?XVNzfgC}Cn;!pKm@#3;wW1!7L$UCDHZwT+R9amn=cAD9lZ^@Es<
z)AK(vT@kVXsbH{VV%o&Gh>^h-q(;An$(?l#NX_)VPfRr|VN8rmw!f=kl3`{l(+2<v
C+LYJ;

delta 42
zcmcb4gLl~*?hPgqj2x3qC00!SDxu7Haiii7@r?!^;?0g8?T#Ld+Z{cao~{J|aN7`&

diff --git a/.gradle/6.8/javaCompile/javaCompile.lock b/.gradle/6.8/javaCompile/javaCompile.lock
index 1bba057008af179ce830711b58ed7fb4948a2c0a..8b44fc3ceecb34ca671771eb52178222328016f0 100644
GIT binary patch
literal 17
VcmZS9_jn)L_pnKx0Svev0{}2Y1iSzM

literal 17
VcmZS9_jn)L_pnKx0Sve<001yC1gQW3

diff --git a/.gradle/6.8/javaCompile/taskHistory.bin b/.gradle/6.8/javaCompile/taskHistory.bin
index a6564b9ffc4f7bcceeb1b65326caf3d3960aed7a..99307cdee3f6555b42b38071fa8ffe44b56fab9a 100644
GIT binary patch
delta 869
zcmex*n(^l&#t9;t%nV@Q;mE+ioCRhwc&}z)V0j5)NA)r=aAz<uFj#IhydyqYQbJ2A
z_3M8qU`lxWX=XbMD@19)l+Cdcb{1?bPZ$_jo=j#8^qI`!BO>vG$=NC<v^ce>IL0w0
zH#0A@xTGktB)@3#24Abm30~5ZWny9_Ug1+@;F~3Jj2WjX2P8h>(|y3NNa8wf1uBzs
z{BtGF;ZqQsoHDsQK!)+-<crCAlMBMwHt!9!5a2atVBoH1VBjtW;mHdF;wS%%@)OAX
zvZnIF()UaM-`KNQTVZ<a<hVdD4Ij@?F`elf*co{y3Ob!yluA^XJjU%N&B;4rN(Ma8
zUgCD3%H;TjdVKK$QouFYB3xo}eInarhr|SlFZfLZDQ=K>k6)3(<b6r01S3-dPsplF
d_K&QTxPi}_bt!ogZ}2Jbk7S!1lRAU30RT?)O-%p*

delta 160
zcmezQi1F)b#t9;_OblS);mE+ioCRhw1WaLI;QYzJz@WR)@rL-s0D;Mp5?WGGz5k(r
zDdF*_ne8mB5Y^tRH^)lYS+H@wU|`^UF?nHt$7HWGaYnw$3j=%v1(f`m7bzYzxiaJX
zjicGedNxenpXMcSc-FSr_ul!nhSc?@M}OXVZt}+H6Pq9S{AAj!n(&=vb3s%qHvkYP
BKREyZ

diff --git a/.gradle/buildOutputCleanup/buildOutputCleanup.lock b/.gradle/buildOutputCleanup/buildOutputCleanup.lock
index a76284bd4d4ee23b805a84c64b901e2d6a71edaf..35921eb3e9cb942ecd2192520720ec3d50fae849 100644
GIT binary patch
literal 17
UcmZRMRkTpz>bjrL00!(l03YfC(EtDd

literal 17
UcmZRMRkTpz>bjrL00wNI03gl-wg3PC

diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 1389d519..0d2a28b0 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -11,6 +11,11 @@
       <option name="name" value="MavenRepo" />
       <option name="url" value="https://repo.maven.apache.org/maven2/" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="MavenLocal" />
+      <option name="name" value="MavenLocal" />
+      <option name="url" value="file:/$MAVEN_REPOSITORY$/" />
+    </remote-repository>
     <remote-repository>
       <option name="id" value="central" />
       <option name="name" value="Maven Central repository" />
@@ -21,10 +26,5 @@
       <option name="name" value="JBoss Community repository" />
       <option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
     </remote-repository>
-    <remote-repository>
-      <option name="id" value="MavenLocal" />
-      <option name="name" value="MavenLocal" />
-      <option name="url" value="file:/$MAVEN_REPOSITORY$/" />
-    </remote-repository>
   </component>
 </project>
\ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 00000000..797acea5
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>
\ No newline at end of file
diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ComponentsObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/ComponentsObject.class
index f0fd01158db0d9b78c0a7858551166bb9ca2db0f..e3bbe940cd9c2ac51301c412c9b717414b0df463 100644
GIT binary patch
literal 39911
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
Rj5%tYjO&@D88@hL0stzIo?rj~

literal 37693
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

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OpenAPIObject.class
index a390b6e8f684e182024b8bdc6f740b86029f6b5e..60f683849850efe2080cb1ed809e0ec9cf2ab753 100644
GIT binary patch
delta 25
hcmeylkMZX|#tp27Y^ixAj0^>n56aqXb~iNA0|1H92~7Y1

delta 25
hcmeylkMZX|#tp27Y<a0Aj0^>n56aqXb~iNA0|1HI2~7Y1

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/OperationObject.class
index bee6b00a7fbcb24224de0896065465999e5cc1c1..0bbd8da78e8e73243a3cec3809999e10864ca61a 100644
GIT binary patch
delta 17
YcmaF#it*7a#tpjGOsRRB^{tJq08C^D5&!@I

delta 17
YcmaF#it*7a#tpjGOnIrB^{tJq08DKM5&!@I

diff --git a/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.class b/build/classes/java/main/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.class
index 0c652bfd67c91cff87fdde6a9e80eadc0d44e6d8..4cd345b3d65b9c0b247223eeb26a2fd2f0ed8242 100644
GIT binary patch
delta 16
XcmccMcEN2!JmX}2X4cIqjBgYHI#>oQ

delta 15
WcmccMcEN2!JR?(H>gGho_lf{DuLd^&

diff --git a/build/classes/java/test/openapi/OpenAPIMain_test.class b/build/classes/java/test/openapi/OpenAPIMain_test.class
index bf83408b1c106687ff6afc0f214d339be1daf312..b75eda80f274e24ffc35036c0c64c7f36a853f3b 100644
GIT binary patch
delta 1957
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

delta 1708
zcmbQM)UQ~7>ff$?3=9k=4ClBQj2YtD84|b{m>A+Y7!uhTlGquNxfs|$yc7_f3L?_D
z7+4w7*%>mp7%~~MxEQh-a@ZMixfpyH^0*lIK{ELq3<X>aLLg=#7lSCs&>}7dafWyh
zr<jwWgrSs!p^Sr}oQt7iVy(0%6GJ1&;3f`+W-f*nhE{flHZF#Ch7K+U9)?aXh8Tt}
zkd@saqKAv2m!S_N*3ZE(0i<gp2g4*ThRF<5*cqlyyplC}8>92&k6fCQzcV^;a-?PE
zr1~Z1rcR#EC~m=4UX)pqTExg8;**tFmZ+bZukV(blNt^dwPs{sORXpfEy`hJ;DgBL
zrIzT22KiV|wqcYKVNNW_WMtqCE=f$z_Dw7ZNleN~-Mp14gOS;U!E~|@w}}E*X>mbG
zzFt;wejX!(5T*^2Kd{Is@apNOr{?J<7G&zCR_OCE%wd?z!!VCwJ`aNl!vaPIiODjI
z5((@K3wan8F)U_hSi-}wlwlbo0}rxsJPgYj<})(LB8&Oum$>DZ=B2n+B&QaXWP+R^
z>6~AhlcJE9U!stcpO~WH73}Y)016O=$$MGUCM&Rr@$xXNU|7k{u!@IaHN%?8T&xP}
zj0{Zbdh85qc^K9)EMR9?&%>~RVIvR2CWg)I3|n{@wlZwvVc5>FV{$aBA{P(CPKI3|
zFYKP&$*PvWhlgP=!#+j^0kFGr67$magG-7s^U~QF_VX|tU^vLb5W*13!*B@X+rtbC
zco>c_n6fh*<zYC+aGZzX1j9*21}=~zixtxHixfZxpJHSXP)ICFRY=K9OG_<E%`36u
zVrMwb!*GV->|{nZQC>*6KqG3h58I8&e>hxpMKm-aF^J>{Yeoi94NOtZu*t94dpOwB
zQ%gW;VR9))`(_7DJ|<!I%;K=boXiwP24)S-C`JYuji||vyfTwla_^GoE6EQiN-Zg=
zg!qq<ffbyx7#UcTbMlK*Cnxgko~+9|Uzmr%m;nTs85kK%7)%)$8O$c%=M}3rXJBAp
zV_;-pV31|7U|?Y20kc^dEE%jA7#J8CtQkxhm>J9%7?|W3SQ$7O7#Ov8GcZMNXJGad
zVzFY`&A=MDn}IEII|I8A$2JB|NtSI4oZA?<wli>Bu?q2QW8eje@L91jTCq#A9b*vL
z&A=Zi$+nF_U^|1L75nmf20pL|3z#d(ew;ymH-iw|NMRHsMfUGz5RKf<ASTJSn?XEs
zJA(wvHU>#6j!g_wFgHlUGziH+9I}l;R+3`}gPf1{4hDJO9SjPR9NQQa{a{+^8Q6uC
zwlQ$(Zevj1#-Or|fomIs><$J69b`oe>_V#OYP58=F{pveQj=t1-pioAgF#~(gQg@a
zNO&8A);0!hN!D!)IvW`n7?>GAfgHsk#=yX!%)r5*!ob6z%Am=h&S1(=ufbr!pvhp%
zpvB<Fpu-T!pvMr$pwCdnV9YRq!GvKwgE_-i1}lbL47Lo18SEJDGuSgcXK-L-W^iVd
zWN>3tWpHQIV(<XRTnr?3pfR_Vp^U+X!IpuMVHZOogB^oC0}}%WqcVd7gCheo0}rD-
zgA;=@14})FCL<Gr3xg{ID}yP+HwHHbcLp{F3x>}O9t@rg><kkaW;1v(*fVf2cr!3C
z$TKkiXYga-U}xZAU|?rpVrNiiXJBP#@L^}*XJFt`VDM#NVBlh4Ven({X9!>jWC(($
zu3!cR1{P43V_*WMC5Gh;EDWp+3=G!w+B!QJbgfuGsYGukgPzVd1}*Jv3|g@G)Q5z-
zfsi3IVznUAx`V+85wt=KEDQ_`-VE#v{tWyK0Ss0QLEsQEf!F~J5e5cphA@V3aQe1p
zh+qh3U;<S&)(nvhQ4Gus><lIh(G1}XEMT8<FfjgMuwrM30egvsfsw(FfsrAWfq{XE
GAr1f>I&Av@

diff --git a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
index d1a377b1..d09c33d3 100644
--- a/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
+++ b/build/reports/tests/test/classes/openapi.OpenAPIMain_test.html
@@ -41,7 +41,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.371s</div>
+<div class="counter">0.342s</div>
 <p>duration</p>
 </div>
 </td>
@@ -76,73 +76,153 @@
 <a name="test()"></a>
 <h3 class="failures">test()</h3>
 <span class="code">
-<pre>org.opentest4j.AssertionFailedError: JSONs for uspto.json are different:
+<pre>org.opentest4j.AssertionFailedError: JSONs for link-example.json are different:
 [ {
-  &quot;op&quot; : &quot;replace&quot;,
-  &quot;path&quot; : &quot;/paths/~1{dataset}~1{version}~1records/post/responses/200/content/application~1json/schema/items/additionalProperties&quot;,
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/content/application~1json/schema/items/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;userRepository&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;userRepositories&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;pullRequestMerge&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/required&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/schema/enum&quot;,
+  &quot;value&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/responses/200/content/application~1json/schema/items/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/links&quot;,
   &quot;value&quot; : {
-    &quot;type&quot; : &quot;object&quot;
+    &quot;repositoryPullRequests&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;
+    }
   }
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/UserRepositories/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/UserRepository/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/PullRequestMerge/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/RepositoryPullRequests/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/author/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/repository/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
 }, {
   &quot;op&quot; : &quot;add&quot;,
-  &quot;path&quot; : &quot;/paths/~1/get/responses/200/content/application~1json/schema/$ref&quot;,
-  &quot;value&quot; : &quot;#/components/schemas/dataSetList&quot;
+  &quot;path&quot; : &quot;/components/schemas/repository/properties/owner/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
 } ] ==&gt; expected: &lt;{
-  &quot;openapi&quot; : &quot;3.0.1&quot;,
+  &quot;openapi&quot; : &quot;3.0.0&quot;,
   &quot;info&quot; : {
-    &quot;contact&quot; : {
-      &quot;email&quot; : &quot;developer@uspto.gov&quot;,
-      &quot;name&quot; : &quot;Open Data Portal&quot;,
-      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;
-    },
-    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,
-    &quot;title&quot; : &quot;USPTO Data Set API&quot;,
+    &quot;title&quot; : &quot;Link Example&quot;,
     &quot;version&quot; : &quot;1.0.0&quot;
   },
-  &quot;servers&quot; : [ {
-    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,
-    &quot;variables&quot; : {
-      &quot;scheme&quot; : {
-        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,
-        &quot;default&quot; : &quot;https&quot;,
-        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]
-      }
-    }
-  } ],
-  &quot;tags&quot; : [ {
-    &quot;name&quot; : &quot;metadata&quot;,
-    &quot;description&quot; : &quot;Find out about the data sets&quot;
-  }, {
-    &quot;name&quot; : &quot;search&quot;,
-    &quot;description&quot; : &quot;Search a data set&quot;
-  } ],
   &quot;paths&quot; : {
-    &quot;/&quot; : {
+    &quot;/2.0/users/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getUserByName&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;The User&quot;,
+            &quot;links&quot; : {
+              &quot;userRepositories&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;
+              }
+            },
+            &quot;content&quot; : {
+              &quot;application/json&quot; : {
+                &quot;schema&quot; : {
+                  &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;List available data sets&quot;,
-        &quot;operationId&quot; : &quot;list-data-sets&quot;,
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;Returns a list of data sets&quot;,
+            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,
+            &quot;links&quot; : {
+              &quot;userRepository&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;example&quot; : {
-                  &quot;total&quot; : 2,
-                  &quot;apis&quot; : [ {
-                    &quot;apiKey&quot; : &quot;oa_citations&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;
-                  }, {
-                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;
-                  } ]
-                },
                 &quot;schema&quot; : {
-                  &quot;$ref&quot; : &quot;#/components/schemas/dataSetList&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : {
+                    &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
+                  }
                 }
               }
             }
@@ -150,48 +230,78 @@
         }
       }
     },
-    &quot;/{dataset}/{version}/fields&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,
-        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,
-        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,
+        &quot;operationId&quot; : &quot;getRepository&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Name of the dataset.&quot;,
-          &quot;example&quot; : &quot;oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
         }, {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;example&quot; : &quot;v1&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;slug&quot;
         } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,
+            &quot;description&quot; : &quot;The repository&quot;,
+            &quot;links&quot; : {
+              &quot;repositoryPullRequests&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;,
+            &quot;enum&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]
+          },
+          &quot;in&quot; : &quot;query&quot;,
+          &quot;name&quot; : &quot;state&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;an array of pull request objects&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : {
+                    &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;
+                  }
                 }
               }
             }
@@ -199,114 +309,150 @@
         }
       }
     },
-    &quot;/{dataset}/{version}/records&quot; : {
-      &quot;post&quot; : {
-        &quot;tags&quot; : [ &quot;search&quot; ],
-        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,
-        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,
-        &quot;operationId&quot; : &quot;perform-search&quot;,
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;v1&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;username&quot;
         }, {
-          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;oa_citations&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
         } ],
-        &quot;requestBody&quot; : {
-          &quot;content&quot; : {
-            &quot;application/x-www-form-urlencoded&quot; : {
-              &quot;schema&quot; : {
-                &quot;properties&quot; : {
-                  &quot;criteria&quot; : {
-                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,
-                    &quot;type&quot; : &quot;string&quot;,
-                    &quot;default&quot; : &quot;*:*&quot;
-                  },
-                  &quot;start&quot; : {
-                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 0
-                  },
-                  &quot;rows&quot; : {
-                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 100
-                  }
-                },
-                &quot;type&quot; : &quot;object&quot;,
-                &quot;required&quot; : [ &quot;criteria&quot; ]
-              }
-            }
-          }
-        },
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;successful operation&quot;,
+            &quot;description&quot; : &quot;a pull request object&quot;,
+            &quot;links&quot; : {
+              &quot;pullRequestMerge&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;array&quot;,
-                  &quot;items&quot; : {
-                    &quot;type&quot; : &quot;object&quot;,
-                    &quot;additionalProperties&quot; : {
-                      &quot;type&quot; : &quot;object&quot;
-                    }
-                  }
+                  &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {
+      &quot;post&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;204&quot; : {
+            &quot;description&quot; : &quot;the PR was successfully merged&quot;
           }
         }
       }
     }
   },
   &quot;components&quot; : {
+    &quot;links&quot; : {
+      &quot;UserRepositories&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/username&quot;
+        }
+      },
+      &quot;UserRepository&quot; : {
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;
+        }
+      },
+      &quot;RepositoryPullRequests&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;
+        }
+      },
+      &quot;PullRequestMerge&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/author/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,
+          &quot;pid&quot; : &quot;$response.body#/id&quot;
+        }
+      }
+    },
     &quot;schemas&quot; : {
-      &quot;dataSetList&quot; : {
+      &quot;user&quot; : {
         &quot;properties&quot; : {
-          &quot;total&quot; : {
+          &quot;username&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;uuid&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;repository&quot; : {
+        &quot;properties&quot; : {
+          &quot;slug&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;owner&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;pullrequest&quot; : {
+        &quot;properties&quot; : {
+          &quot;id&quot; : {
             &quot;type&quot; : &quot;integer&quot;
           },
-          &quot;apis&quot; : {
-            &quot;type&quot; : &quot;array&quot;,
-            &quot;items&quot; : {
-              &quot;properties&quot; : {
-                &quot;apiKey&quot; : {
-                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiVersionNumber&quot; : {
-                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiUrl&quot; : {
-                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiDocumentationUrl&quot; : {
-                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                }
-              },
-              &quot;type&quot; : &quot;object&quot;
-            }
+          &quot;title&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;repository&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
+          },
+          &quot;author&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
           }
         },
         &quot;type&quot; : &quot;object&quot;
@@ -314,150 +460,163 @@
     }
   }
 }&gt; but was: &lt;{
-  &quot;openapi&quot; : &quot;3.0.1&quot;,
+  &quot;openapi&quot; : &quot;3.0.0&quot;,
   &quot;info&quot; : {
-    &quot;contact&quot; : {
-      &quot;email&quot; : &quot;developer@uspto.gov&quot;,
-      &quot;name&quot; : &quot;Open Data Portal&quot;,
-      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;
-    },
-    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,
-    &quot;title&quot; : &quot;USPTO Data Set API&quot;,
+    &quot;title&quot; : &quot;Link Example&quot;,
     &quot;version&quot; : &quot;1.0.0&quot;
   },
-  &quot;servers&quot; : [ {
-    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,
-    &quot;variables&quot; : {
-      &quot;scheme&quot; : {
-        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,
-        &quot;default&quot; : &quot;https&quot;,
-        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]
-      }
-    }
-  } ],
-  &quot;tags&quot; : [ {
-    &quot;name&quot; : &quot;metadata&quot;,
-    &quot;description&quot; : &quot;Find out about the data sets&quot;
-  }, {
-    &quot;name&quot; : &quot;search&quot;,
-    &quot;description&quot; : &quot;Search a data set&quot;
-  } ],
   &quot;paths&quot; : {
-    &quot;/{dataset}/{version}/records&quot; : {
-      &quot;post&quot; : {
-        &quot;tags&quot; : [ &quot;search&quot; ],
-        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,
-        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,
-        &quot;operationId&quot; : &quot;perform-search&quot;,
+    &quot;/2.0/repositories/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;required&quot; : true,
-          &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;v1&quot;
-          },
-          &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
-        }, {
-          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;oa_citations&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
         } ],
-        &quot;requestBody&quot; : {
-          &quot;content&quot; : {
-            &quot;application/x-www-form-urlencoded&quot; : {
-              &quot;schema&quot; : {
-                &quot;properties&quot; : {
-                  &quot;criteria&quot; : {
-                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,
-                    &quot;type&quot; : &quot;string&quot;,
-                    &quot;default&quot; : &quot;*:*&quot;
-                  },
-                  &quot;start&quot; : {
-                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 0
-                  },
-                  &quot;rows&quot; : {
-                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 100
-                  }
-                },
-                &quot;type&quot; : &quot;object&quot;,
-                &quot;required&quot; : [ &quot;criteria&quot; ]
-              }
-            }
-          }
-        },
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;successful operation&quot;,
+            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
                   &quot;type&quot; : &quot;array&quot;,
-                  &quot;items&quot; : {
-                    &quot;type&quot; : &quot;object&quot;,
-                    &quot;additionalProperties&quot; : false
-                  }
+                  &quot;items&quot; : { }
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/users/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getUserByName&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;The User&quot;,
+            &quot;content&quot; : {
+              &quot;application/json&quot; : {
+                &quot;schema&quot; : { }
+              }
+            }
           }
         }
       }
     },
-    &quot;/{dataset}/{version}/fields&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,
-        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,
-        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,
+        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Name of the dataset.&quot;,
-          &quot;example&quot; : &quot;oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
         }, {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;example&quot; : &quot;v1&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;pid&quot;
         } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,
+            &quot;description&quot; : &quot;a pull request object&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
-                }
+                &quot;schema&quot; : { }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {
+      &quot;post&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;204&quot; : {
+            &quot;description&quot; : &quot;the PR was successfully merged&quot;
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : false,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;query&quot;,
+          &quot;name&quot; : &quot;state&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;an array of pull request objects&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : { }
                 }
               }
             }
@@ -465,30 +624,29 @@
         }
       }
     },
-    &quot;/&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;List available data sets&quot;,
-        &quot;operationId&quot; : &quot;list-data-sets&quot;,
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;Returns a list of data sets&quot;,
+            &quot;description&quot; : &quot;The repository&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;example&quot; : {
-                  &quot;total&quot; : 2,
-                  &quot;apis&quot; : [ {
-                    &quot;apiKey&quot; : &quot;oa_citations&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;
-                  }, {
-                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;
-                  } ]
-                },
                 &quot;schema&quot; : { }
               }
             }
@@ -498,37 +656,70 @@
     }
   },
   &quot;components&quot; : {
+    &quot;links&quot; : {
+      &quot;UserRepositories&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/username&quot;
+        }
+      },
+      &quot;UserRepository&quot; : {
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;
+        }
+      },
+      &quot;PullRequestMerge&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;pid&quot; : &quot;$response.body#/id&quot;,
+          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/author/username&quot;
+        }
+      },
+      &quot;RepositoryPullRequests&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;
+        }
+      }
+    },
     &quot;schemas&quot; : {
-      &quot;dataSetList&quot; : {
+      &quot;pullrequest&quot; : {
         &quot;properties&quot; : {
-          &quot;total&quot; : {
+          &quot;author&quot; : { },
+          &quot;id&quot; : {
             &quot;type&quot; : &quot;integer&quot;
           },
-          &quot;apis&quot; : {
-            &quot;type&quot; : &quot;array&quot;,
-            &quot;items&quot; : {
-              &quot;properties&quot; : {
-                &quot;apiKey&quot; : {
-                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiUrl&quot; : {
-                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiDocumentationUrl&quot; : {
-                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiVersionNumber&quot; : {
-                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                }
-              },
-              &quot;type&quot; : &quot;object&quot;
-            }
+          &quot;title&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;repository&quot; : { }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;repository&quot; : {
+        &quot;properties&quot; : {
+          &quot;owner&quot; : { },
+          &quot;slug&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;user&quot; : {
+        &quot;properties&quot; : {
+          &quot;uuid&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;username&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           }
         },
         &quot;type&quot; : &quot;object&quot;
@@ -540,8 +731,8 @@
 	at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
 	at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
 	at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1135)
-	at openapi.OpenAPIMain_test.compareJson(OpenAPIMain_test.java:80)
-	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:67)
+	at openapi.OpenAPIMain_test.compareJson(OpenAPIMain_test.java:89)
+	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:75)
 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
@@ -573,7 +764,7 @@
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
@@ -583,7 +774,7 @@
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
@@ -631,7 +822,7 @@
 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
-	at java.base/java.lang.Thread.run(Thread.java:834)
+	at java.base/java.lang.Thread.run(Thread.java:829)
 </pre>
 </span>
 </div>
@@ -648,7 +839,7 @@
 </thead>
 <tr>
 <td class="failures">test()</td>
-<td class="failures">0.371s</td>
+<td class="failures">0.342s</td>
 <td class="failures">failed</td>
 </tr>
 </table>
@@ -656,7 +847,13 @@
 <div id="tab2" class="tab">
 <h2>Standard output</h2>
 <span class="code">
-<pre>Loading expression DSL file 'uspto.json'.
+<pre>Loading expression DSL file 'api-with-examples.json'.
+Is the source object valid? : true
+Is the generated object valid? : true
+Loading expression DSL file 'callback-example.json'.
+Is the source object valid? : true
+Is the generated object valid? : true
+Loading expression DSL file 'link-example.json'.
 Is the source object valid? : true
 Is the generated object valid? : true
 </pre>
@@ -670,7 +867,7 @@ Is the generated object valid? : true
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 10. 오후 2:11:46</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 13. 오전 2:47:54</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/index.html b/build/reports/tests/test/index.html
index 03f9286f..58d49c46 100644
--- a/build/reports/tests/test/index.html
+++ b/build/reports/tests/test/index.html
@@ -38,7 +38,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.371s</div>
+<div class="counter">0.342s</div>
 <p>duration</p>
 </div>
 </td>
@@ -97,7 +97,7 @@
 <td>1</td>
 <td>1</td>
 <td>0</td>
-<td>0.371s</td>
+<td>0.342s</td>
 <td class="failures">0%</td>
 </tr>
 </tbody>
@@ -124,7 +124,7 @@
 <td>1</td>
 <td>1</td>
 <td>0</td>
-<td>0.371s</td>
+<td>0.342s</td>
 <td class="failures">0%</td>
 </tr>
 </tbody>
@@ -138,7 +138,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 10. 오후 2:11:46</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 13. 오전 2:47:54</p>
 </div>
 </div>
 </body>
diff --git a/build/reports/tests/test/packages/openapi.html b/build/reports/tests/test/packages/openapi.html
index fa355808..df5098e8 100644
--- a/build/reports/tests/test/packages/openapi.html
+++ b/build/reports/tests/test/packages/openapi.html
@@ -40,7 +40,7 @@
 </td>
 <td>
 <div class="infoBox" id="duration">
-<div class="counter">0.371s</div>
+<div class="counter">0.342s</div>
 <p>duration</p>
 </div>
 </td>
@@ -95,7 +95,7 @@
 <td>1</td>
 <td>1</td>
 <td>0</td>
-<td>0.371s</td>
+<td>0.342s</td>
 <td class="failures">0%</td>
 </tr>
 </table>
@@ -108,7 +108,7 @@
 <input id="line-wrapping-toggle" type="checkbox" autocomplete="off"/>
 </label>
 </div>Generated by 
-<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 10. 오후 2:11:46</p>
+<a href="http://www.gradle.org">Gradle 6.8</a> at 2021. 8. 13. 오전 2:47:54</p>
 </div>
 </div>
 </body>
diff --git a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
index 5ae4ef9a..8febe0ad 100644
--- a/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
+++ b/build/test-results/test/TEST-openapi.OpenAPIMain_test.xml
@@ -1,74 +1,154 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="1" errors="0" timestamp="2021-08-10T05:11:45" hostname="DESKTOP-5DL2OO8" time="0.371">
+<testsuite name="openapi.OpenAPIMain_test" tests="1" skipped="0" failures="1" errors="0" timestamp="2021-08-12T17:47:54" hostname="DESKTOP-RAH69DT" time="0.342">
   <properties/>
-  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.371">
-    <failure message="org.opentest4j.AssertionFailedError: JSONs for uspto.json are different:&#10;[ {&#13;&#10;  &quot;op&quot; : &quot;replace&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~1{dataset}~1{version}~1records/post/responses/200/content/application~1json/schema/items/additionalProperties&quot;,&#13;&#10;  &quot;value&quot; : {&#13;&#10;    &quot;type&quot; : &quot;object&quot;&#13;&#10;  }&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~1/get/responses/200/content/application~1json/schema/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/dataSetList&quot;&#13;&#10;} ] ==&gt; expected: &lt;{&#13;&#10;  &quot;openapi&quot; : &quot;3.0.1&quot;,&#13;&#10;  &quot;info&quot; : {&#13;&#10;    &quot;contact&quot; : {&#13;&#10;      &quot;email&quot; : &quot;developer@uspto.gov&quot;,&#13;&#10;      &quot;name&quot; : &quot;Open Data Portal&quot;,&#13;&#10;      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;&#13;&#10;    },&#13;&#10;    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,&#13;&#10;    &quot;title&quot; : &quot;USPTO Data Set API&quot;,&#13;&#10;    &quot;version&quot; : &quot;1.0.0&quot;&#13;&#10;  },&#13;&#10;  &quot;servers&quot; : [ {&#13;&#10;    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,&#13;&#10;    &quot;variables&quot; : {&#13;&#10;      &quot;scheme&quot; : {&#13;&#10;        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,&#13;&#10;        &quot;default&quot; : &quot;https&quot;,&#13;&#10;        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]&#13;&#10;      }&#13;&#10;    }&#13;&#10;  } ],&#13;&#10;  &quot;tags&quot; : [ {&#13;&#10;    &quot;name&quot; : &quot;metadata&quot;,&#13;&#10;    &quot;description&quot; : &quot;Find out about the data sets&quot;&#13;&#10;  }, {&#13;&#10;    &quot;name&quot; : &quot;search&quot;,&#13;&#10;    &quot;description&quot; : &quot;Search a data set&quot;&#13;&#10;  } ],&#13;&#10;  &quot;paths&quot; : {&#13;&#10;    &quot;/&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;metadata&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;List available data sets&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;list-data-sets&quot;,&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;Returns a list of data sets&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;example&quot; : {&#13;&#10;                  &quot;total&quot; : 2,&#13;&#10;                  &quot;apis&quot; : [ {&#13;&#10;                    &quot;apiKey&quot; : &quot;oa_citations&quot;,&#13;&#10;                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,&#13;&#10;                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,&#13;&#10;                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;&#13;&#10;                  }, {&#13;&#10;                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,&#13;&#10;                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,&#13;&#10;                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,&#13;&#10;                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;&#13;&#10;                  } ]&#13;&#10;                },&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;$ref&quot; : &quot;#/components/schemas/dataSetList&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/{dataset}/{version}/fields&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;metadata&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,&#13;&#10;        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;description&quot; : &quot;Name of the dataset.&quot;,&#13;&#10;          &quot;example&quot; : &quot;oa_citations&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;dataset&quot;&#13;&#10;        }, {&#13;&#10;          &quot;description&quot; : &quot;Version of the dataset.&quot;,&#13;&#10;          &quot;example&quot; : &quot;v1&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;version&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          },&#13;&#10;          &quot;404&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/{dataset}/{version}/records&quot; : {&#13;&#10;      &quot;post&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;search&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,&#13;&#10;        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;perform-search&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;description&quot; : &quot;Version of the dataset.&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;,&#13;&#10;            &quot;default&quot; : &quot;v1&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;version&quot;&#13;&#10;        }, {&#13;&#10;          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;,&#13;&#10;            &quot;default&quot; : &quot;oa_citations&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;dataset&quot;&#13;&#10;        } ],&#13;&#10;        &quot;requestBody&quot; : {&#13;&#10;          &quot;content&quot; : {&#13;&#10;            &quot;application/x-www-form-urlencoded&quot; : {&#13;&#10;              &quot;schema&quot; : {&#13;&#10;                &quot;properties&quot; : {&#13;&#10;                  &quot;criteria&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;string&quot;,&#13;&#10;                    &quot;default&quot; : &quot;*:*&quot;&#13;&#10;                  },&#13;&#10;                  &quot;start&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;integer&quot;,&#13;&#10;                    &quot;default&quot; : 0&#13;&#10;                  },&#13;&#10;                  &quot;rows&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;integer&quot;,&#13;&#10;                    &quot;default&quot; : 100&#13;&#10;                  }&#13;&#10;                },&#13;&#10;                &quot;type&quot; : &quot;object&quot;,&#13;&#10;                &quot;required&quot; : [ &quot;criteria&quot; ]&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;successful operation&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : {&#13;&#10;                    &quot;type&quot; : &quot;object&quot;,&#13;&#10;                    &quot;additionalProperties&quot; : {&#13;&#10;                      &quot;type&quot; : &quot;object&quot;&#13;&#10;                    }&#13;&#10;                  }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          },&#13;&#10;          &quot;404&quot; : {&#13;&#10;            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    }&#13;&#10;  },&#13;&#10;  &quot;components&quot; : {&#13;&#10;    &quot;schemas&quot; : {&#13;&#10;      &quot;dataSetList&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;total&quot; : {&#13;&#10;            &quot;type&quot; : &quot;integer&quot;&#13;&#10;          },&#13;&#10;          &quot;apis&quot; : {&#13;&#10;            &quot;type&quot; : &quot;array&quot;,&#13;&#10;            &quot;items&quot; : {&#13;&#10;              &quot;properties&quot; : {&#13;&#10;                &quot;apiKey&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiVersionNumber&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiUrl&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,&#13;&#10;                  &quot;format&quot; : &quot;uriref&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiDocumentationUrl&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,&#13;&#10;                  &quot;format&quot; : &quot;uriref&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              },&#13;&#10;              &quot;type&quot; : &quot;object&quot;&#13;&#10;            }&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      }&#13;&#10;    }&#13;&#10;  }&#13;&#10;}&gt; but was: &lt;{&#13;&#10;  &quot;openapi&quot; : &quot;3.0.1&quot;,&#13;&#10;  &quot;info&quot; : {&#13;&#10;    &quot;contact&quot; : {&#13;&#10;      &quot;email&quot; : &quot;developer@uspto.gov&quot;,&#13;&#10;      &quot;name&quot; : &quot;Open Data Portal&quot;,&#13;&#10;      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;&#13;&#10;    },&#13;&#10;    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,&#13;&#10;    &quot;title&quot; : &quot;USPTO Data Set API&quot;,&#13;&#10;    &quot;version&quot; : &quot;1.0.0&quot;&#13;&#10;  },&#13;&#10;  &quot;servers&quot; : [ {&#13;&#10;    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,&#13;&#10;    &quot;variables&quot; : {&#13;&#10;      &quot;scheme&quot; : {&#13;&#10;        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,&#13;&#10;        &quot;default&quot; : &quot;https&quot;,&#13;&#10;        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]&#13;&#10;      }&#13;&#10;    }&#13;&#10;  } ],&#13;&#10;  &quot;tags&quot; : [ {&#13;&#10;    &quot;name&quot; : &quot;metadata&quot;,&#13;&#10;    &quot;description&quot; : &quot;Find out about the data sets&quot;&#13;&#10;  }, {&#13;&#10;    &quot;name&quot; : &quot;search&quot;,&#13;&#10;    &quot;description&quot; : &quot;Search a data set&quot;&#13;&#10;  } ],&#13;&#10;  &quot;paths&quot; : {&#13;&#10;    &quot;/{dataset}/{version}/records&quot; : {&#13;&#10;      &quot;post&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;search&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,&#13;&#10;        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;perform-search&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;description&quot; : &quot;Version of the dataset.&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;,&#13;&#10;            &quot;default&quot; : &quot;v1&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;version&quot;&#13;&#10;        }, {&#13;&#10;          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;,&#13;&#10;            &quot;default&quot; : &quot;oa_citations&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;dataset&quot;&#13;&#10;        } ],&#13;&#10;        &quot;requestBody&quot; : {&#13;&#10;          &quot;content&quot; : {&#13;&#10;            &quot;application/x-www-form-urlencoded&quot; : {&#13;&#10;              &quot;schema&quot; : {&#13;&#10;                &quot;properties&quot; : {&#13;&#10;                  &quot;criteria&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;string&quot;,&#13;&#10;                    &quot;default&quot; : &quot;*:*&quot;&#13;&#10;                  },&#13;&#10;                  &quot;start&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;integer&quot;,&#13;&#10;                    &quot;default&quot; : 0&#13;&#10;                  },&#13;&#10;                  &quot;rows&quot; : {&#13;&#10;                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,&#13;&#10;                    &quot;type&quot; : &quot;integer&quot;,&#13;&#10;                    &quot;default&quot; : 100&#13;&#10;                  }&#13;&#10;                },&#13;&#10;                &quot;type&quot; : &quot;object&quot;,&#13;&#10;                &quot;required&quot; : [ &quot;criteria&quot; ]&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;successful operation&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : {&#13;&#10;                    &quot;type&quot; : &quot;object&quot;,&#13;&#10;                    &quot;additionalProperties&quot; : false&#13;&#10;                  }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          },&#13;&#10;          &quot;404&quot; : {&#13;&#10;            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/{dataset}/{version}/fields&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;metadata&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,&#13;&#10;        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;description&quot; : &quot;Name of the dataset.&quot;,&#13;&#10;          &quot;example&quot; : &quot;oa_citations&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;dataset&quot;&#13;&#10;        }, {&#13;&#10;          &quot;description&quot; : &quot;Version of the dataset.&quot;,&#13;&#10;          &quot;example&quot; : &quot;v1&quot;,&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;version&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          },&#13;&#10;          &quot;404&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;tags&quot; : [ &quot;metadata&quot; ],&#13;&#10;        &quot;summary&quot; : &quot;List available data sets&quot;,&#13;&#10;        &quot;operationId&quot; : &quot;list-data-sets&quot;,&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;Returns a list of data sets&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;example&quot; : {&#13;&#10;                  &quot;total&quot; : 2,&#13;&#10;                  &quot;apis&quot; : [ {&#13;&#10;                    &quot;apiKey&quot; : &quot;oa_citations&quot;,&#13;&#10;                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,&#13;&#10;                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,&#13;&#10;                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;&#13;&#10;                  }, {&#13;&#10;                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,&#13;&#10;                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,&#13;&#10;                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,&#13;&#10;                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;&#13;&#10;                  } ]&#13;&#10;                },&#13;&#10;                &quot;schema&quot; : { }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    }&#13;&#10;  },&#13;&#10;  &quot;components&quot; : {&#13;&#10;    &quot;schemas&quot; : {&#13;&#10;      &quot;dataSetList&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;total&quot; : {&#13;&#10;            &quot;type&quot; : &quot;integer&quot;&#13;&#10;          },&#13;&#10;          &quot;apis&quot; : {&#13;&#10;            &quot;type&quot; : &quot;array&quot;,&#13;&#10;            &quot;items&quot; : {&#13;&#10;              &quot;properties&quot; : {&#13;&#10;                &quot;apiKey&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiUrl&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,&#13;&#10;                  &quot;format&quot; : &quot;uriref&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiDocumentationUrl&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,&#13;&#10;                  &quot;format&quot; : &quot;uriref&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                },&#13;&#10;                &quot;apiVersionNumber&quot; : {&#13;&#10;                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,&#13;&#10;                  &quot;type&quot; : &quot;string&quot;&#13;&#10;                }&#13;&#10;              },&#13;&#10;              &quot;type&quot; : &quot;object&quot;&#13;&#10;            }&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      }&#13;&#10;    }&#13;&#10;  }&#13;&#10;}&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: JSONs for uspto.json are different:
+  <testcase name="test()" classname="openapi.OpenAPIMain_test" time="0.342">
+    <failure message="org.opentest4j.AssertionFailedError: JSONs for link-example.json are different:&#10;[ {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/content/application~1json/schema/items/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/links&quot;,&#13;&#10;  &quot;value&quot; : {&#13;&#10;    &quot;userRepository&quot; : {&#13;&#10;      &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;&#13;&#10;    }&#13;&#10;  }&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/content/application~1json/schema/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/links&quot;,&#13;&#10;  &quot;value&quot; : {&#13;&#10;    &quot;userRepositories&quot; : {&#13;&#10;      &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;&#13;&#10;    }&#13;&#10;  }&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/content/application~1json/schema/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/links&quot;,&#13;&#10;  &quot;value&quot; : {&#13;&#10;    &quot;pullRequestMerge&quot; : {&#13;&#10;      &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;&#13;&#10;    }&#13;&#10;  }&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;remove&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/required&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/schema/enum&quot;,&#13;&#10;  &quot;value&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/responses/200/content/application~1json/schema/items/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/content/application~1json/schema/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/links&quot;,&#13;&#10;  &quot;value&quot; : {&#13;&#10;    &quot;repositoryPullRequests&quot; : {&#13;&#10;      &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;&#13;&#10;    }&#13;&#10;  }&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;remove&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/links/UserRepositories/operationRef&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;remove&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/links/UserRepository/operationRef&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;remove&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/links/PullRequestMerge/operationRef&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;remove&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/links/RepositoryPullRequests/operationRef&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/author/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/repository/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;}, {&#13;&#10;  &quot;op&quot; : &quot;add&quot;,&#13;&#10;  &quot;path&quot; : &quot;/components/schemas/repository/properties/owner/$ref&quot;,&#13;&#10;  &quot;value&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;} ] ==&gt; expected: &lt;{&#13;&#10;  &quot;openapi&quot; : &quot;3.0.0&quot;,&#13;&#10;  &quot;info&quot; : {&#13;&#10;    &quot;title&quot; : &quot;Link Example&quot;,&#13;&#10;    &quot;version&quot; : &quot;1.0.0&quot;&#13;&#10;  },&#13;&#10;  &quot;paths&quot; : {&#13;&#10;    &quot;/2.0/users/{username}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getUserByName&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The User&quot;,&#13;&#10;            &quot;links&quot; : {&#13;&#10;              &quot;userRepositories&quot; : {&#13;&#10;                &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;&#13;&#10;              }&#13;&#10;            },&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;$ref&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,&#13;&#10;            &quot;links&quot; : {&#13;&#10;              &quot;userRepository&quot; : {&#13;&#10;                &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;&#13;&#10;              }&#13;&#10;            },&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : {&#13;&#10;                    &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;                  }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepository&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The repository&quot;,&#13;&#10;            &quot;links&quot; : {&#13;&#10;              &quot;repositoryPullRequests&quot; : {&#13;&#10;                &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;&#13;&#10;              }&#13;&#10;            },&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;,&#13;&#10;            &quot;enum&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;query&quot;,&#13;&#10;          &quot;name&quot; : &quot;state&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;an array of pull request objects&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : {&#13;&#10;                    &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;&#13;&#10;                  }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;pid&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;a pull request object&quot;,&#13;&#10;            &quot;links&quot; : {&#13;&#10;              &quot;pullRequestMerge&quot; : {&#13;&#10;                &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;&#13;&#10;              }&#13;&#10;            },&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {&#13;&#10;      &quot;post&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;mergePullRequest&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;pid&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;204&quot; : {&#13;&#10;            &quot;description&quot; : &quot;the PR was successfully merged&quot;&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    }&#13;&#10;  },&#13;&#10;  &quot;components&quot; : {&#13;&#10;    &quot;links&quot; : {&#13;&#10;      &quot;UserRepositories&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;username&quot; : &quot;$response.body#/username&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;UserRepository&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepository&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/slug&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;RepositoryPullRequests&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/slug&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;PullRequestMerge&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;mergePullRequest&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;username&quot; : &quot;$response.body#/author/username&quot;,&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,&#13;&#10;          &quot;pid&quot; : &quot;$response.body#/id&quot;&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;schemas&quot; : {&#13;&#10;      &quot;user&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;username&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;uuid&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      },&#13;&#10;      &quot;repository&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;slug&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;owner&quot; : {&#13;&#10;            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      },&#13;&#10;      &quot;pullrequest&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;id&quot; : {&#13;&#10;            &quot;type&quot; : &quot;integer&quot;&#13;&#10;          },&#13;&#10;          &quot;title&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;repository&quot; : {&#13;&#10;            &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;&#13;&#10;          },&#13;&#10;          &quot;author&quot; : {&#13;&#10;            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      }&#13;&#10;    }&#13;&#10;  }&#13;&#10;}&gt; but was: &lt;{&#13;&#10;  &quot;openapi&quot; : &quot;3.0.0&quot;,&#13;&#10;  &quot;info&quot; : {&#13;&#10;    &quot;title&quot; : &quot;Link Example&quot;,&#13;&#10;    &quot;version&quot; : &quot;1.0.0&quot;&#13;&#10;  },&#13;&#10;  &quot;paths&quot; : {&#13;&#10;    &quot;/2.0/repositories/{username}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : { }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/users/{username}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getUserByName&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The User&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : { }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;pid&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;a pull request object&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : { }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {&#13;&#10;      &quot;post&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;mergePullRequest&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;pid&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;204&quot; : {&#13;&#10;            &quot;description&quot; : &quot;the PR was successfully merged&quot;&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : false,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;query&quot;,&#13;&#10;          &quot;name&quot; : &quot;state&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;an array of pull request objects&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : {&#13;&#10;                  &quot;type&quot; : &quot;array&quot;,&#13;&#10;                  &quot;items&quot; : { }&#13;&#10;                }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;/2.0/repositories/{username}/{slug}&quot; : {&#13;&#10;      &quot;get&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepository&quot;,&#13;&#10;        &quot;parameters&quot; : [ {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;username&quot;&#13;&#10;        }, {&#13;&#10;          &quot;required&quot; : true,&#13;&#10;          &quot;schema&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;in&quot; : &quot;path&quot;,&#13;&#10;          &quot;name&quot; : &quot;slug&quot;&#13;&#10;        } ],&#13;&#10;        &quot;responses&quot; : {&#13;&#10;          &quot;200&quot; : {&#13;&#10;            &quot;description&quot; : &quot;The repository&quot;,&#13;&#10;            &quot;content&quot; : {&#13;&#10;              &quot;application/json&quot; : {&#13;&#10;                &quot;schema&quot; : { }&#13;&#10;              }&#13;&#10;            }&#13;&#10;          }&#13;&#10;        }&#13;&#10;      }&#13;&#10;    }&#13;&#10;  },&#13;&#10;  &quot;components&quot; : {&#13;&#10;    &quot;links&quot; : {&#13;&#10;      &quot;UserRepositories&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,&#13;&#10;        &quot;operationRef&quot; : &quot;&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;username&quot; : &quot;$response.body#/username&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;UserRepository&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getRepository&quot;,&#13;&#10;        &quot;operationRef&quot; : &quot;&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/slug&quot;,&#13;&#10;          &quot;username&quot; : &quot;$response.body#/owner/username&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;PullRequestMerge&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;mergePullRequest&quot;,&#13;&#10;        &quot;operationRef&quot; : &quot;&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;pid&quot; : &quot;$response.body#/id&quot;,&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,&#13;&#10;          &quot;username&quot; : &quot;$response.body#/author/username&quot;&#13;&#10;        }&#13;&#10;      },&#13;&#10;      &quot;RepositoryPullRequests&quot; : {&#13;&#10;        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,&#13;&#10;        &quot;operationRef&quot; : &quot;&quot;,&#13;&#10;        &quot;parameters&quot; : {&#13;&#10;          &quot;slug&quot; : &quot;$response.body#/slug&quot;,&#13;&#10;          &quot;username&quot; : &quot;$response.body#/owner/username&quot;&#13;&#10;        }&#13;&#10;      }&#13;&#10;    },&#13;&#10;    &quot;schemas&quot; : {&#13;&#10;      &quot;pullrequest&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;author&quot; : { },&#13;&#10;          &quot;id&quot; : {&#13;&#10;            &quot;type&quot; : &quot;integer&quot;&#13;&#10;          },&#13;&#10;          &quot;title&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;repository&quot; : { }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      },&#13;&#10;      &quot;repository&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;owner&quot; : { },&#13;&#10;          &quot;slug&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      },&#13;&#10;      &quot;user&quot; : {&#13;&#10;        &quot;properties&quot; : {&#13;&#10;          &quot;uuid&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          },&#13;&#10;          &quot;username&quot; : {&#13;&#10;            &quot;type&quot; : &quot;string&quot;&#13;&#10;          }&#13;&#10;        },&#13;&#10;        &quot;type&quot; : &quot;object&quot;&#13;&#10;      }&#13;&#10;    }&#13;&#10;  }&#13;&#10;}&gt;" type="org.opentest4j.AssertionFailedError">org.opentest4j.AssertionFailedError: JSONs for link-example.json are different:
 [ {
-  &quot;op&quot; : &quot;replace&quot;,
-  &quot;path&quot; : &quot;/paths/~1{dataset}~1{version}~1records/post/responses/200/content/application~1json/schema/items/additionalProperties&quot;,
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/content/application~1json/schema/items/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;userRepository&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1users~1{username}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;userRepositories&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests~1{pid}/get/responses/200/links&quot;,
+  &quot;value&quot; : {
+    &quot;pullRequestMerge&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;
+    }
+  }
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/required&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/parameters/2/schema/enum&quot;,
+  &quot;value&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}~1pullrequests/get/responses/200/content/application~1json/schema/items/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/pullrequest&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/content/application~1json/schema/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/paths/~12.0~1repositories~1{username}~1{slug}/get/responses/200/links&quot;,
   &quot;value&quot; : {
-    &quot;type&quot; : &quot;object&quot;
+    &quot;repositoryPullRequests&quot; : {
+      &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;
+    }
   }
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/UserRepositories/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/UserRepository/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/PullRequestMerge/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;remove&quot;,
+  &quot;path&quot; : &quot;/components/links/RepositoryPullRequests/operationRef&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/author/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
+}, {
+  &quot;op&quot; : &quot;add&quot;,
+  &quot;path&quot; : &quot;/components/schemas/pullrequest/properties/repository/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/repository&quot;
 }, {
   &quot;op&quot; : &quot;add&quot;,
-  &quot;path&quot; : &quot;/paths/~1/get/responses/200/content/application~1json/schema/$ref&quot;,
-  &quot;value&quot; : &quot;#/components/schemas/dataSetList&quot;
+  &quot;path&quot; : &quot;/components/schemas/repository/properties/owner/$ref&quot;,
+  &quot;value&quot; : &quot;#/components/schemas/user&quot;
 } ] ==&gt; expected: &lt;{
-  &quot;openapi&quot; : &quot;3.0.1&quot;,
+  &quot;openapi&quot; : &quot;3.0.0&quot;,
   &quot;info&quot; : {
-    &quot;contact&quot; : {
-      &quot;email&quot; : &quot;developer@uspto.gov&quot;,
-      &quot;name&quot; : &quot;Open Data Portal&quot;,
-      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;
-    },
-    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,
-    &quot;title&quot; : &quot;USPTO Data Set API&quot;,
+    &quot;title&quot; : &quot;Link Example&quot;,
     &quot;version&quot; : &quot;1.0.0&quot;
   },
-  &quot;servers&quot; : [ {
-    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,
-    &quot;variables&quot; : {
-      &quot;scheme&quot; : {
-        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,
-        &quot;default&quot; : &quot;https&quot;,
-        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]
-      }
-    }
-  } ],
-  &quot;tags&quot; : [ {
-    &quot;name&quot; : &quot;metadata&quot;,
-    &quot;description&quot; : &quot;Find out about the data sets&quot;
-  }, {
-    &quot;name&quot; : &quot;search&quot;,
-    &quot;description&quot; : &quot;Search a data set&quot;
-  } ],
   &quot;paths&quot; : {
-    &quot;/&quot; : {
+    &quot;/2.0/users/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getUserByName&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;The User&quot;,
+            &quot;links&quot; : {
+              &quot;userRepositories&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/UserRepositories&quot;
+              }
+            },
+            &quot;content&quot; : {
+              &quot;application/json&quot; : {
+                &quot;schema&quot; : {
+                  &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
+                }
+              }
+            }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;List available data sets&quot;,
-        &quot;operationId&quot; : &quot;list-data-sets&quot;,
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;Returns a list of data sets&quot;,
+            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,
+            &quot;links&quot; : {
+              &quot;userRepository&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/UserRepository&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;example&quot; : {
-                  &quot;total&quot; : 2,
-                  &quot;apis&quot; : [ {
-                    &quot;apiKey&quot; : &quot;oa_citations&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;
-                  }, {
-                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;
-                  } ]
-                },
                 &quot;schema&quot; : {
-                  &quot;$ref&quot; : &quot;#/components/schemas/dataSetList&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : {
+                    &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
+                  }
                 }
               }
             }
@@ -76,48 +156,78 @@
         }
       }
     },
-    &quot;/{dataset}/{version}/fields&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,
-        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,
-        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,
+        &quot;operationId&quot; : &quot;getRepository&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Name of the dataset.&quot;,
-          &quot;example&quot; : &quot;oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
         }, {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;example&quot; : &quot;v1&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;slug&quot;
         } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,
+            &quot;description&quot; : &quot;The repository&quot;,
+            &quot;links&quot; : {
+              &quot;repositoryPullRequests&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/RepositoryPullRequests&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;,
+            &quot;enum&quot; : [ &quot;open&quot;, &quot;merged&quot;, &quot;declined&quot; ]
+          },
+          &quot;in&quot; : &quot;query&quot;,
+          &quot;name&quot; : &quot;state&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;an array of pull request objects&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : {
+                    &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;
+                  }
                 }
               }
             }
@@ -125,114 +235,150 @@
         }
       }
     },
-    &quot;/{dataset}/{version}/records&quot; : {
-      &quot;post&quot; : {
-        &quot;tags&quot; : [ &quot;search&quot; ],
-        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,
-        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,
-        &quot;operationId&quot; : &quot;perform-search&quot;,
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;v1&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;username&quot;
         }, {
-          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;oa_citations&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
         } ],
-        &quot;requestBody&quot; : {
-          &quot;content&quot; : {
-            &quot;application/x-www-form-urlencoded&quot; : {
-              &quot;schema&quot; : {
-                &quot;properties&quot; : {
-                  &quot;criteria&quot; : {
-                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,
-                    &quot;type&quot; : &quot;string&quot;,
-                    &quot;default&quot; : &quot;*:*&quot;
-                  },
-                  &quot;start&quot; : {
-                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 0
-                  },
-                  &quot;rows&quot; : {
-                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 100
-                  }
-                },
-                &quot;type&quot; : &quot;object&quot;,
-                &quot;required&quot; : [ &quot;criteria&quot; ]
-              }
-            }
-          }
-        },
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;successful operation&quot;,
+            &quot;description&quot; : &quot;a pull request object&quot;,
+            &quot;links&quot; : {
+              &quot;pullRequestMerge&quot; : {
+                &quot;$ref&quot; : &quot;#/components/links/PullRequestMerge&quot;
+              }
+            },
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;array&quot;,
-                  &quot;items&quot; : {
-                    &quot;type&quot; : &quot;object&quot;,
-                    &quot;additionalProperties&quot; : {
-                      &quot;type&quot; : &quot;object&quot;
-                    }
-                  }
+                  &quot;$ref&quot; : &quot;#/components/schemas/pullrequest&quot;
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {
+      &quot;post&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;204&quot; : {
+            &quot;description&quot; : &quot;the PR was successfully merged&quot;
           }
         }
       }
     }
   },
   &quot;components&quot; : {
+    &quot;links&quot; : {
+      &quot;UserRepositories&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/username&quot;
+        }
+      },
+      &quot;UserRepository&quot; : {
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;
+        }
+      },
+      &quot;RepositoryPullRequests&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;
+        }
+      },
+      &quot;PullRequestMerge&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/author/username&quot;,
+          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,
+          &quot;pid&quot; : &quot;$response.body#/id&quot;
+        }
+      }
+    },
     &quot;schemas&quot; : {
-      &quot;dataSetList&quot; : {
+      &quot;user&quot; : {
         &quot;properties&quot; : {
-          &quot;total&quot; : {
+          &quot;username&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;uuid&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;repository&quot; : {
+        &quot;properties&quot; : {
+          &quot;slug&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;owner&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;pullrequest&quot; : {
+        &quot;properties&quot; : {
+          &quot;id&quot; : {
             &quot;type&quot; : &quot;integer&quot;
           },
-          &quot;apis&quot; : {
-            &quot;type&quot; : &quot;array&quot;,
-            &quot;items&quot; : {
-              &quot;properties&quot; : {
-                &quot;apiKey&quot; : {
-                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiVersionNumber&quot; : {
-                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiUrl&quot; : {
-                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiDocumentationUrl&quot; : {
-                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                }
-              },
-              &quot;type&quot; : &quot;object&quot;
-            }
+          &quot;title&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;repository&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/repository&quot;
+          },
+          &quot;author&quot; : {
+            &quot;$ref&quot; : &quot;#/components/schemas/user&quot;
           }
         },
         &quot;type&quot; : &quot;object&quot;
@@ -240,150 +386,163 @@
     }
   }
 }&gt; but was: &lt;{
-  &quot;openapi&quot; : &quot;3.0.1&quot;,
+  &quot;openapi&quot; : &quot;3.0.0&quot;,
   &quot;info&quot; : {
-    &quot;contact&quot; : {
-      &quot;email&quot; : &quot;developer@uspto.gov&quot;,
-      &quot;name&quot; : &quot;Open Data Portal&quot;,
-      &quot;url&quot; : &quot;https://developer.uspto.gov&quot;
-    },
-    &quot;description&quot; : &quot;The Data Set API (DSAPI) allows the public users to discover and search USPTO exported data sets. This is a generic API that allows USPTO users to make any CSV based data files searchable through API. With the help of GET call, it returns the list of data fields that are searchable. With the help of POST call, data can be fetched based on the filters on the field names. Please note that POST call is used to search the actual data. The reason for the POST call is that it allows users to specify any complex search criteria without worry about the GET size limitations as well as encoding of the input parameters.&quot;,
-    &quot;title&quot; : &quot;USPTO Data Set API&quot;,
+    &quot;title&quot; : &quot;Link Example&quot;,
     &quot;version&quot; : &quot;1.0.0&quot;
   },
-  &quot;servers&quot; : [ {
-    &quot;url&quot; : &quot;{scheme}://developer.uspto.gov/ds-api&quot;,
-    &quot;variables&quot; : {
-      &quot;scheme&quot; : {
-        &quot;description&quot; : &quot;The Data Set API is accessible via https and http&quot;,
-        &quot;default&quot; : &quot;https&quot;,
-        &quot;enum&quot; : [ &quot;https&quot;, &quot;http&quot; ]
-      }
-    }
-  } ],
-  &quot;tags&quot; : [ {
-    &quot;name&quot; : &quot;metadata&quot;,
-    &quot;description&quot; : &quot;Find out about the data sets&quot;
-  }, {
-    &quot;name&quot; : &quot;search&quot;,
-    &quot;description&quot; : &quot;Search a data set&quot;
-  } ],
   &quot;paths&quot; : {
-    &quot;/{dataset}/{version}/records&quot; : {
-      &quot;post&quot; : {
-        &quot;tags&quot; : [ &quot;search&quot; ],
-        &quot;summary&quot; : &quot;Provides search capability for the data set with the given search criteria.&quot;,
-        &quot;description&quot; : &quot;This API is based on Solr/Lucene Search. The data is indexed using SOLR. This GET API returns the list of all the searchable field names that are in the Solr Index. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the Solr/Lucene Syntax. Please refer https://lucene.apache.org/core/3_6_2/queryparsersyntax.html#Overview for the query syntax. List of field names that are searchable can be determined using above GET api.&quot;,
-        &quot;operationId&quot; : &quot;perform-search&quot;,
+    &quot;/2.0/repositories/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;required&quot; : true,
-          &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;v1&quot;
-          },
-          &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
-        }, {
-          &quot;description&quot; : &quot;Name of the dataset. In this case, the default value is oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
-            &quot;type&quot; : &quot;string&quot;,
-            &quot;default&quot; : &quot;oa_citations&quot;
+            &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
         } ],
-        &quot;requestBody&quot; : {
-          &quot;content&quot; : {
-            &quot;application/x-www-form-urlencoded&quot; : {
-              &quot;schema&quot; : {
-                &quot;properties&quot; : {
-                  &quot;criteria&quot; : {
-                    &quot;description&quot; : &quot;Uses Lucene Query Syntax in the format of propertyName:value, propertyName:[num1 TO num2] and date range format: propertyName:[yyyyMMdd TO yyyyMMdd]. In the response please see the 'docs' element which has the list of record objects. Each record structure would consist of all the fields and their corresponding values.&quot;,
-                    &quot;type&quot; : &quot;string&quot;,
-                    &quot;default&quot; : &quot;*:*&quot;
-                  },
-                  &quot;start&quot; : {
-                    &quot;description&quot; : &quot;Starting record number. Default value is 0.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 0
-                  },
-                  &quot;rows&quot; : {
-                    &quot;description&quot; : &quot;Specify number of rows to be returned. If you run the search with default values, in the response you will see 'numFound' attribute which will tell the number of records available in the dataset.&quot;,
-                    &quot;type&quot; : &quot;integer&quot;,
-                    &quot;default&quot; : 100
-                  }
-                },
-                &quot;type&quot; : &quot;object&quot;,
-                &quot;required&quot; : [ &quot;criteria&quot; ]
-              }
-            }
-          }
-        },
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;successful operation&quot;,
+            &quot;description&quot; : &quot;repositories owned by the supplied user&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
                   &quot;type&quot; : &quot;array&quot;,
-                  &quot;items&quot; : {
-                    &quot;type&quot; : &quot;object&quot;,
-                    &quot;additionalProperties&quot; : false
-                  }
+                  &quot;items&quot; : { }
                 }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/users/{username}&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getUserByName&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;No matching record found for the given criteria.&quot;
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;The User&quot;,
+            &quot;content&quot; : {
+              &quot;application/json&quot; : {
+                &quot;schema&quot; : { }
+              }
+            }
           }
         }
       }
     },
-    &quot;/{dataset}/{version}/fields&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;Provides the general information about the API and the list of fields that can be used to query the dataset.&quot;,
-        &quot;description&quot; : &quot;This GET API returns the list of all the searchable field names that are in the oa_citations. Please see the 'fields' attribute which returns an array of field names. Each field or a combination of fields can be searched using the syntax options shown below.&quot;,
-        &quot;operationId&quot; : &quot;list-searchable-fields&quot;,
+        &quot;operationId&quot; : &quot;getPullRequestsById&quot;,
         &quot;parameters&quot; : [ {
-          &quot;description&quot; : &quot;Name of the dataset.&quot;,
-          &quot;example&quot; : &quot;oa_citations&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;dataset&quot;
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
         }, {
-          &quot;description&quot; : &quot;Version of the dataset.&quot;,
-          &quot;example&quot; : &quot;v1&quot;,
           &quot;required&quot; : true,
           &quot;schema&quot; : {
             &quot;type&quot; : &quot;string&quot;
           },
           &quot;in&quot; : &quot;path&quot;,
-          &quot;name&quot; : &quot;version&quot;
+          &quot;name&quot; : &quot;pid&quot;
         } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;The dataset API for the given version is found and it is accessible to consume.&quot;,
+            &quot;description&quot; : &quot;a pull request object&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
-                }
+                &quot;schema&quot; : { }
               }
             }
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests/{pid}/merge&quot; : {
+      &quot;post&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           },
-          &quot;404&quot; : {
-            &quot;description&quot; : &quot;The combination of dataset name and version is not found in the system or it is not published yet to be consumed by public.&quot;,
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;pid&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;204&quot; : {
+            &quot;description&quot; : &quot;the PR was successfully merged&quot;
+          }
+        }
+      }
+    },
+    &quot;/2.0/repositories/{username}/{slug}/pullrequests&quot; : {
+      &quot;get&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        }, {
+          &quot;required&quot; : false,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;query&quot;,
+          &quot;name&quot; : &quot;state&quot;
+        } ],
+        &quot;responses&quot; : {
+          &quot;200&quot; : {
+            &quot;description&quot; : &quot;an array of pull request objects&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
                 &quot;schema&quot; : {
-                  &quot;type&quot; : &quot;string&quot;
+                  &quot;type&quot; : &quot;array&quot;,
+                  &quot;items&quot; : { }
                 }
               }
             }
@@ -391,30 +550,29 @@
         }
       }
     },
-    &quot;/&quot; : {
+    &quot;/2.0/repositories/{username}/{slug}&quot; : {
       &quot;get&quot; : {
-        &quot;tags&quot; : [ &quot;metadata&quot; ],
-        &quot;summary&quot; : &quot;List available data sets&quot;,
-        &quot;operationId&quot; : &quot;list-data-sets&quot;,
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;parameters&quot; : [ {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;username&quot;
+        }, {
+          &quot;required&quot; : true,
+          &quot;schema&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;in&quot; : &quot;path&quot;,
+          &quot;name&quot; : &quot;slug&quot;
+        } ],
         &quot;responses&quot; : {
           &quot;200&quot; : {
-            &quot;description&quot; : &quot;Returns a list of data sets&quot;,
+            &quot;description&quot; : &quot;The repository&quot;,
             &quot;content&quot; : {
               &quot;application/json&quot; : {
-                &quot;example&quot; : {
-                  &quot;total&quot; : 2,
-                  &quot;apis&quot; : [ {
-                    &quot;apiKey&quot; : &quot;oa_citations&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/oa_citations/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/oa_citations.json&quot;
-                  }, {
-                    &quot;apiKey&quot; : &quot;cancer_moonshot&quot;,
-                    &quot;apiVersionNumber&quot; : &quot;v1&quot;,
-                    &quot;apiUrl&quot; : &quot;https://developer.uspto.gov/ds-api/cancer_moonshot/v1/fields&quot;,
-                    &quot;apiDocumentationUrl&quot; : &quot;https://developer.uspto.gov/ds-api-docs/index.html?url=https://developer.uspto.gov/ds-api/swagger/docs/cancer_moonshot.json&quot;
-                  } ]
-                },
                 &quot;schema&quot; : { }
               }
             }
@@ -424,37 +582,70 @@
     }
   },
   &quot;components&quot; : {
+    &quot;links&quot; : {
+      &quot;UserRepositories&quot; : {
+        &quot;operationId&quot; : &quot;getRepositoriesByOwner&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;username&quot; : &quot;$response.body#/username&quot;
+        }
+      },
+      &quot;UserRepository&quot; : {
+        &quot;operationId&quot; : &quot;getRepository&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;
+        }
+      },
+      &quot;PullRequestMerge&quot; : {
+        &quot;operationId&quot; : &quot;mergePullRequest&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;pid&quot; : &quot;$response.body#/id&quot;,
+          &quot;slug&quot; : &quot;$response.body#/repository/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/author/username&quot;
+        }
+      },
+      &quot;RepositoryPullRequests&quot; : {
+        &quot;operationId&quot; : &quot;getPullRequestsByRepository&quot;,
+        &quot;operationRef&quot; : &quot;&quot;,
+        &quot;parameters&quot; : {
+          &quot;slug&quot; : &quot;$response.body#/slug&quot;,
+          &quot;username&quot; : &quot;$response.body#/owner/username&quot;
+        }
+      }
+    },
     &quot;schemas&quot; : {
-      &quot;dataSetList&quot; : {
+      &quot;pullrequest&quot; : {
         &quot;properties&quot; : {
-          &quot;total&quot; : {
+          &quot;author&quot; : { },
+          &quot;id&quot; : {
             &quot;type&quot; : &quot;integer&quot;
           },
-          &quot;apis&quot; : {
-            &quot;type&quot; : &quot;array&quot;,
-            &quot;items&quot; : {
-              &quot;properties&quot; : {
-                &quot;apiKey&quot; : {
-                  &quot;description&quot; : &quot;To be used as a dataset parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiUrl&quot; : {
-                  &quot;description&quot; : &quot;The URL describing the dataset's fields&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiDocumentationUrl&quot; : {
-                  &quot;description&quot; : &quot;A URL to the API console for each API&quot;,
-                  &quot;format&quot; : &quot;uriref&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                },
-                &quot;apiVersionNumber&quot; : {
-                  &quot;description&quot; : &quot;To be used as a version parameter value&quot;,
-                  &quot;type&quot; : &quot;string&quot;
-                }
-              },
-              &quot;type&quot; : &quot;object&quot;
-            }
+          &quot;title&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;repository&quot; : { }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;repository&quot; : {
+        &quot;properties&quot; : {
+          &quot;owner&quot; : { },
+          &quot;slug&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          }
+        },
+        &quot;type&quot; : &quot;object&quot;
+      },
+      &quot;user&quot; : {
+        &quot;properties&quot; : {
+          &quot;uuid&quot; : {
+            &quot;type&quot; : &quot;string&quot;
+          },
+          &quot;username&quot; : {
+            &quot;type&quot; : &quot;string&quot;
           }
         },
         &quot;type&quot; : &quot;object&quot;
@@ -466,8 +657,8 @@
 	at org.junit.jupiter.api.AssertionUtils.failNotEqual(AssertionUtils.java:62)
 	at org.junit.jupiter.api.AssertEquals.assertEquals(AssertEquals.java:182)
 	at org.junit.jupiter.api.Assertions.assertEquals(Assertions.java:1135)
-	at openapi.OpenAPIMain_test.compareJson(OpenAPIMain_test.java:80)
-	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:67)
+	at openapi.OpenAPIMain_test.compareJson(OpenAPIMain_test.java:89)
+	at openapi.OpenAPIMain_test.test(OpenAPIMain_test.java:75)
 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
@@ -499,7 +690,7 @@
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
@@ -509,7 +700,7 @@
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84)
-	at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
+	at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
 	at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
 	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143)
 	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
@@ -557,10 +748,16 @@
 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
-	at java.base/java.lang.Thread.run(Thread.java:834)
+	at java.base/java.lang.Thread.run(Thread.java:829)
 </failure>
   </testcase>
-  <system-out><![CDATA[Loading expression DSL file 'uspto.json'.
+  <system-out><![CDATA[Loading expression DSL file 'api-with-examples.json'.
+Is the source object valid? : true
+Is the generated object valid? : true
+Loading expression DSL file 'callback-example.json'.
+Is the source object valid? : true
+Is the generated object valid? : true
+Loading expression DSL file 'link-example.json'.
 Is the source object valid? : true
 Is the generated object valid? : true
 ]]></system-out>
diff --git a/build/test-results/test/binary/output.bin b/build/test-results/test/binary/output.bin
index 79960daf..0365021c 100644
--- a/build/test-results/test/binary/output.bin
+++ b/build/test-results/test/binary/output.bin
@@ -1,3 +1,9 @@
-+Loading expression DSL file 'uspto.json'.
+7Loading expression DSL file 'api-with-examples.json'.
+$Is the source object valid? : true
+'Is the generated object valid? : true
+6Loading expression DSL file 'callback-example.json'.
+$Is the source object valid? : true
+'Is the generated object valid? : true
+2Loading expression DSL file 'link-example.json'.
 $Is the source object valid? : true
 'Is the generated object valid? : true
diff --git a/build/test-results/test/binary/output.bin.idx b/build/test-results/test/binary/output.bin.idx
index 1ea36ce12fcdab3f36bc26c99688c3f03dec79dc..58ba046e6bca8a95c0f12c61be96602a7f2d7b6b 100644
GIT binary patch
literal 36
ScmZQ%Vq|1M0gRRZ(EtFDWDsxw

literal 36
RcmZQ%Vq|1M1>yhE0052<5KRC8

diff --git a/build/test-results/test/binary/results.bin b/build/test-results/test/binary/results.bin
index 0ee2879098ca6986fe4716d993e7d832fa6b5ddf..edc20fbccd949f0289a3c76d87dc22222cd4e5ae 100644
GIT binary patch
literal 45107
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

literal 47491
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

diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/CallbackObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/CallbackObject.java
index 26246023..701d5736 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/CallbackObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/CallbackObject.java
@@ -31,7 +31,7 @@ public class CallbackObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:450
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:514
    */
   public static CallbackObject parseCallback(Callback callback){
         CallbackObject callbackObject = new CallbackObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ComponentsObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ComponentsObject.java
index 172c19d3..8025c0e6 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ComponentsObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ComponentsObject.java
@@ -87,30 +87,54 @@ public class ComponentsObject extends ASTNode<ASTNode> implements Cloneable {
         if( components.getSchemas() != null ){
         JastAddList<SchemasTuple> schemasTuples = new JastAddList<>();
         for( String key : components.getSchemas().keySet() ){
-        SchemaObjectTuple schemaObjectTuple = new SchemaObjectTuple();
-        schemaObjectTuple.setName( key );
-        schemaObjectTuple.setSchemaObject( SchemaObject.parseSchema(components.getSchema(key)) );
-        schemasTuples.add(schemaObjectTuple);
+        if( components.getSchema(key).isRef() ){
+        SchemaReferenceTuple schema = new SchemaReferenceTuple();
+        schema.setName(key);
+        schema.setRef(components.getSchema(key).getRef());
+        schemasTuples.add(schema);
+        }
+        else {
+        SchemaObjectTuple schema = new SchemaObjectTuple();
+        schema.setName(key);
+        schema.setSchemaObject(SchemaObject.parseSchema(components.getSchema(key)));
+        schemasTuples.add(schema);
+        }
         }
         componentsObject.setSchemasTupleList(schemasTuples);
         }
         if( components.getResponses() != null ){
         JastAddList<ResponsesTuple> responsesTuples = new JastAddList<>();
         for( String key : components.getResponses().keySet() ){
-        ResponseObjectTuple responseObjectTuple = new ResponseObjectTuple();
-        responseObjectTuple.setName( key );
-        responseObjectTuple.setResponseObject( ResponseObject.parseResponse(components.getResponse(key)) );
-        responsesTuples.add(responseObjectTuple);
+        if( components.getResponse(key).isRef() ){
+        ResponseReferenceTuple response = new ResponseReferenceTuple();
+        response.setName(key);
+        response.setRef(components.getResponse(key).getRef());
+        responsesTuples.add(response);
+        }
+        else {
+        ResponseObjectTuple response = new ResponseObjectTuple();
+        response.setName(key);
+        response.setResponseObject(ResponseObject.parseResponse(components.getResponse(key)));
+        responsesTuples.add(response);
+        }
         }
         componentsObject.setResponsesTupleList(responsesTuples);
         }
         if( components.getParameters() != null ){
         JastAddList<ParameterTuple> parameterTuples = new JastAddList<>();
         for( String key : components.getParameters().keySet() ){
-        ParameterObjectTuple parameterObjectTuple = new ParameterObjectTuple();
-        parameterObjectTuple.setName( key );
-        parameterObjectTuple.setParameterObject( ParameterObject.parseParameter(components.getParameter(key)) );
-        parameterTuples.add(parameterObjectTuple);
+        if( components.getParameter(key).isRef() ){
+        ParameterReferenceTuple parameter = new ParameterReferenceTuple();
+        parameter.setName(key);
+        parameter.setRef(components.getParameter(key).getRef());
+        parameterTuples.add(parameter);
+        }
+        else {
+        ParameterObjectTuple parameter = new ParameterObjectTuple();
+        parameter.setName(key);
+        parameter.setParameterObject(ParameterObject.parseParameter(components.getParameter(key)));
+        parameterTuples.add(parameter);
+        }
         }
         componentsObject.setParameterTupleList(parameterTuples);
         }
@@ -127,50 +151,90 @@ public class ComponentsObject extends ASTNode<ASTNode> implements Cloneable {
         if( components.getRequestBodies() != null ){
         JastAddList<RequestBodiesTuple> requestBodiesTuples = new JastAddList<>();
         for( String key : components.getRequestBodies().keySet() ){
-        RequestBodyObjectTuple requestBodyObjectTuple = new RequestBodyObjectTuple();
-        requestBodyObjectTuple.setName( key );
-        requestBodyObjectTuple.setRequestBodyObject( RequestBodyObject.parseRequestBody(components.getRequestBody(key)) );
-        requestBodiesTuples.add(requestBodyObjectTuple);
+        if( components.getRequestBody(key).isRef() ){
+        RequestBodyReferenceTuple requestBody = new RequestBodyReferenceTuple();
+        requestBody.setName(key);
+        requestBody.setRef(components.getRequestBody(key).getRef());
+        requestBodiesTuples.add(requestBody);
+        }
+        else {
+        RequestBodyObjectTuple requestBody = new RequestBodyObjectTuple();
+        requestBody.setName(key);
+        requestBody.setRequestBodyObject(RequestBodyObject.parseRequestBody(components.getRequestBody(key)));
+        requestBodiesTuples.add(requestBody);
+        }
         }
         componentsObject.setRequestBodiesTupleList(requestBodiesTuples);
         }
         if( components.getHeaders() != null ){
         JastAddList<HeadersTuple> headersTuples = new JastAddList<>();
         for( String key : components.getHeaders().keySet() ){
-        HeaderObjectTuple headerObjectTuple = new HeaderObjectTuple();
-        headerObjectTuple.setName( key );
-        headerObjectTuple.setHeaderObject( HeaderObject.parseHeader(components.getHeader(key)) );
-        headersTuples.add(headerObjectTuple);
+        if( components.getHeader(key).isRef() ){
+        HeaderReferenceTuple header = new HeaderReferenceTuple();
+        header.setName(key);
+        header.setRef(components.getHeader(key).getRef());
+        headersTuples.add(header);
+        }
+        else {
+        HeaderObjectTuple header = new HeaderObjectTuple();
+        header.setName(key);
+        header.setHeaderObject(HeaderObject.parseHeader(components.getHeader(key)));
+        headersTuples.add(header);
+        }
         }
         componentsObject.setHeadersTupleList(headersTuples);
         }
         if( components.getSecuritySchemes() != null ){
         JastAddList<SecuritySchemesTuple> securitySchemesTuples = new JastAddList<>();
         for( String key : components.getSecuritySchemes().keySet() ){
-        SecuritySchemeObjectTuple securitySchemeObjectTuple = new SecuritySchemeObjectTuple();
-        securitySchemeObjectTuple.setName( key );
-        securitySchemeObjectTuple.setSecuritySchemeObject( SecuritySchemeObject.parseSecurityScheme(components.getSecurityScheme(key)) );
-        securitySchemesTuples.add(securitySchemeObjectTuple);
+        if( components.getSecurityScheme(key).isRef() ){
+        SecuritySchemeReferenceTuple securityScheme = new SecuritySchemeReferenceTuple();
+        securityScheme.setName(key);
+        securityScheme.setRef(components.getSecurityScheme(key).getRef());
+        securitySchemesTuples.add(securityScheme);
+        }
+        else {
+        SecuritySchemeObjectTuple securityScheme = new SecuritySchemeObjectTuple();
+        securityScheme.setName(key);
+        securityScheme.setSecuritySchemeObject(SecuritySchemeObject.parseSecurityScheme(components.getSecurityScheme(key)));
+        securitySchemesTuples.add(securityScheme);
+        }
         }
         componentsObject.setSecuritySchemesTupleList(securitySchemesTuples);
         }
         if( components.getLinks() != null ){
         JastAddList<LinksTuple> linksTuples = new JastAddList<>();
         for( String key : components.getLinks().keySet() ){
-        LinkObjectTuple linkObjectTuple = new LinkObjectTuple();
-        linkObjectTuple.setName( key );
-        linkObjectTuple.setLinkObject( LinkObject.parseLink(components.getLink(key)) );
-        linksTuples.add(linkObjectTuple);
+        if( components.getLink(key).isRef() ){
+        LinkReferenceTuple link = new LinkReferenceTuple();
+        link.setName(key);
+        link.setRef(components.getLink(key).getRef());
+        linksTuples.add(link);
+        }
+        else {
+        LinkObjectTuple link = new LinkObjectTuple();
+        link.setName(key);
+        link.setLinkObject(LinkObject.parseLink(components.getLink(key)));
+        linksTuples.add(link);
+        }
         }
         componentsObject.setLinksTupleList(linksTuples);
         }
         if( components.getCallbacks() != null ){
         JastAddList<CallbacksTuple> callbacksTuples = new JastAddList<>();
         for( String key : components.getCallbacks().keySet() ){
-        CallbackObjectTuple callbackObjectTuple = new CallbackObjectTuple();
-        callbackObjectTuple.setName( key );
-        callbackObjectTuple.setCallbackObject( CallbackObject.parseCallback(components.getCallback(key)) );
-        callbacksTuples.add(callbackObjectTuple);
+        if( components.getCallback(key).isRef() ){
+        CallbackReferenceTuple callback = new CallbackReferenceTuple();
+        callback.setName(key);
+        callback.setRef(components.getLink(key).getRef());
+        callbacksTuples.add(callback);
+        }
+        else {
+        CallbackObjectTuple callback = new CallbackObjectTuple();
+        callback.setName(key);
+        callback.setCallbackObject(CallbackObject.parseCallback(components.getCallback(key)));
+        callbacksTuples.add(callback);
+        }
         }
         componentsObject.setCallbacksTupleList(callbacksTuples);
         }
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/DiscriminatorObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/DiscriminatorObject.java
index e06ee032..6867aae5 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/DiscriminatorObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/DiscriminatorObject.java
@@ -33,7 +33,7 @@ public class DiscriminatorObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:653
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:717
    */
   public static DiscriminatorObject parseDiscriminator (Discriminator discriminator) {
         DiscriminatorObject discriminatorObject = new DiscriminatorObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/EncodingObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/EncodingObject.java
index e38ce2f4..9398b46d 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/EncodingObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/EncodingObject.java
@@ -37,7 +37,7 @@ public class EncodingObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:411
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:475
    */
   public static EncodingObject parseEncoding(EncodingProperty encodingProperty){
         EncodingObject encodingObject = new EncodingObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ExampleObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ExampleObject.java
index 3a8615bb..862d11bd 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ExampleObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ExampleObject.java
@@ -33,7 +33,7 @@ public class ExampleObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:461
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:525
    */
   public static ExampleObject parseExample(Example example){
         ExampleObject exampleObject = new ExampleObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ExternalDocumentationObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ExternalDocumentationObject.java
index 811bc27d..466b4f51 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ExternalDocumentationObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ExternalDocumentationObject.java
@@ -28,7 +28,7 @@ public class ExternalDocumentationObject extends ASTNode<ASTNode> implements Clo
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:331
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:395
    */
   public static ExternalDocumentationObject parseExternalDocs(ExternalDocs externalDocs){
         ExternalDocumentationObject externalDocumentationObject = new ExternalDocumentationObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/HeaderObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/HeaderObject.java
index f6191a9f..88fcbf8f 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/HeaderObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/HeaderObject.java
@@ -49,7 +49,7 @@ public class HeaderObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:495
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:559
    */
   public static HeaderObject parseHeader(Header header){
         HeaderObject headerObject = new HeaderObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/LinkObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/LinkObject.java
index efd18cfc..714f5cdd 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/LinkObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/LinkObject.java
@@ -39,7 +39,7 @@ public class LinkObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:476
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:540
    */
   public static LinkObject parseLink(Link link){
         LinkObject linkObject = new LinkObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/MediaTypeObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/MediaTypeObject.java
index db454b4a..31449486 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/MediaTypeObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/MediaTypeObject.java
@@ -41,7 +41,7 @@ public class MediaTypeObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:392
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:456
    */
   public static MediaTypeObject parseMediaType(MediaType mediaType){
         MediaTypeObject mediaTypeObject = new MediaTypeObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowObject.java
index ec98aff4..599f6a61 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowObject.java
@@ -34,7 +34,7 @@ public class OAuthFlowObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:731
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:795
    */
   public static OAuthFlowObject parseOAuthFlow(OAuthFlow oAuthFlow){
         OAuthFlowObject oAuthFlowObject = new OAuthFlowObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowsObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowsObject.java
index 01b96bdd..d16afb3d 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowsObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OAuthFlowsObject.java
@@ -33,7 +33,7 @@ public class OAuthFlowsObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:707
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:771
    */
   public static OAuthFlowsObject parseOAuthFlows(OAuthFlows oAuthFlows){
         OAuthFlowsObject oAuthFlowsObject = new OAuthFlowsObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
index a71bc424..13e13134 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OpenAPIObject.java
@@ -40,7 +40,7 @@ public class OpenAPIObject extends ASTNode<ASTNode> implements Cloneable {
         if( openAPIObject.getNumSecurityRequirementObject() != 0 ){
         List<SecurityRequirement> securityRequirements = new ArrayList<>();
         for( SecurityRequirementObject s : openAPIObject.getSecurityRequirementObjects() )
-        securityRequirements.add( SecurityRequirementObject.composeSecurityRequiremnet( s ) );
+        securityRequirements.add( SecurityRequirementObject.composeSecurityRequirement( s ) );
         api3.setSecurityRequirements(securityRequirements);
         }
         if( openAPIObject.getNumTagObject() != 0 ){
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
index 2c98ffaa..d6247991 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/OperationObject.java
@@ -54,7 +54,7 @@ public class OperationObject extends ASTNode<ASTNode> implements Cloneable {
         //    operation.setDeprecated( (boolean) operationObject.getDeprecatedBoolean().getDeprecatedBoolean() );
         if( operationObject.getNumSecurityRequirementObject() != 0 ){
         for( SecurityRequirementObject s : operationObject.getSecurityRequirementObjects() )
-        operation.addSecurityRequirement( SecurityRequirementObject.composeSecurityRequiremnet(s) );
+        operation.addSecurityRequirement( SecurityRequirementObject.composeSecurityRequirement(s) );
         }
         if( operationObject.getNumServerObject() != 0 ){
         for( ServerObject s : operationObject.getServerObjects() )
@@ -65,7 +65,7 @@ public class OperationObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:272
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:336
    */
   public static OperationObject parseOperation(Operation operation){
         OperationObject operationObject = new OperationObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
index 95fdda9a..b697fa64 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ParameterObject.java
@@ -57,7 +57,7 @@ public class ParameterObject extends Param implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:341
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:405
    */
   public static ParameterObject parseParameter(Parameter parameter){
         ParameterObject parameterObject = new ParameterObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathItemObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathItemObject.java
index 0e66a431..41c0325d 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathItemObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathItemObject.java
@@ -51,7 +51,7 @@ public class PathItemObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:211
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:275
    */
   public static PathItemObject parsePath(Path path){
         PathItemObject pathItemObject = new PathItemObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
index 3d95b06b..19d32136 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/PathsObject.java
@@ -15,7 +15,7 @@ import java.util.*;
 public class PathsObject extends ASTNode<ASTNode> implements Cloneable {
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:200
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:264
    */
   public static PathsObject parsePaths(OpenApi3 api3){
         PathsObject pathsObject = new PathsObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/RequestBodyObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/RequestBodyObject.java
index 1c94dfa1..f354390d 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/RequestBodyObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/RequestBodyObject.java
@@ -33,7 +33,7 @@ public class RequestBodyObject extends RequestBody implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:377
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:441
    */
   public static RequestBodyObject parseRequestBody(org.openapi4j.parser.model.v3.RequestBody requestBody){
         RequestBodyObject requestBodyObject = new RequestBodyObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/ResponseObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/ResponseObject.java
index 2866be59..1dd9e16e 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/ResponseObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/ResponseObject.java
@@ -44,7 +44,7 @@ public class ResponseObject extends HTTPStatusCode implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:429
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:493
    */
   public static ResponseObject parseResponse(Response response){
         ResponseObject responseObject = new ResponseObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
index c0769034..edf5a834 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SchemaObject.java
@@ -107,7 +107,7 @@ public class SchemaObject extends Schema implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:537
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:601
    */
   public static SchemaObject parseSchema (org.openapi4j.parser.model.v3.Schema schema) {
         SchemaObject schemaObject = new SchemaObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.java
index 92ae5d03..14251c8c 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SecurityRequirementObject.java
@@ -17,7 +17,7 @@ public class SecurityRequirementObject extends ASTNode<ASTNode> implements Clone
    * @aspect Composer
    * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Composer.jadd:660
    */
-  public static SecurityRequirement composeSecurityRequiremnet (SecurityRequirementObject securityRequirementObject){
+  public static SecurityRequirement composeSecurityRequirement (SecurityRequirementObject securityRequirementObject){
         SecurityRequirement securityRequirement = new SecurityRequirement();
 
         if( securityRequirementObject.getNumSecurityRequirementTuple() != 0 ){
@@ -35,7 +35,7 @@ public class SecurityRequirementObject extends ASTNode<ASTNode> implements Clone
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:745
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:809
    */
   public static SecurityRequirementObject parseSecurityRequirement(SecurityRequirement securityRequirement){
         SecurityRequirementObject securityRequirementObject = new SecurityRequirementObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/SecuritySchemeObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/SecuritySchemeObject.java
index f5eebfa2..c4749a9e 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/SecuritySchemeObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/SecuritySchemeObject.java
@@ -36,7 +36,7 @@ public class SecuritySchemeObject extends ASTNode<ASTNode> implements Cloneable
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:687
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:751
    */
   public static SecuritySchemeObject parseSecurityScheme(SecurityScheme securityScheme){
         SecuritySchemeObject securitySchemeObject = new SecuritySchemeObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/TagObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/TagObject.java
index c65a67c4..eab434db 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/TagObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/TagObject.java
@@ -31,7 +31,7 @@ public class TagObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:524
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:588
    */
   public static TagObject parseTag(org.openapi4j.parser.model.v3.Tag tag){
         TagObject tagObject = new TagObject();
diff --git a/src/gen/java/de/tudresden/inf/st/openapi/ast/XmlObject.java b/src/gen/java/de/tudresden/inf/st/openapi/ast/XmlObject.java
index c182ff43..4aa1d8cf 100644
--- a/src/gen/java/de/tudresden/inf/st/openapi/ast/XmlObject.java
+++ b/src/gen/java/de/tudresden/inf/st/openapi/ast/XmlObject.java
@@ -35,7 +35,7 @@ public class XmlObject extends ASTNode<ASTNode> implements Cloneable {
         }
   /**
    * @aspect Parser
-   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:670
+   * @declaredat E:\\bachelor-thesis\\SigTest\\bachelor-thesis-jastadd\\src\\main\\jastadd\\Parser.jrag:734
    */
   public static XmlObject parseXml (Xml xml) {
         XmlObject xmlObject = new XmlObject();
diff --git a/src/main/jastadd/Composer.jadd b/src/main/jastadd/Composer.jadd
index b0b9f232..295ebdd1 100644
--- a/src/main/jastadd/Composer.jadd
+++ b/src/main/jastadd/Composer.jadd
@@ -30,7 +30,7 @@ aspect Composer {
         if( openAPIObject.getNumSecurityRequirementObject() != 0 ){
         List<SecurityRequirement> securityRequirements = new ArrayList<>();
         for( SecurityRequirementObject s : openAPIObject.getSecurityRequirementObjects() )
-        securityRequirements.add( SecurityRequirementObject.composeSecurityRequiremnet( s ) );
+        securityRequirements.add( SecurityRequirementObject.composeSecurityRequirement( s ) );
         api3.setSecurityRequirements(securityRequirements);
         }
         if( openAPIObject.getNumTagObject() != 0 ){
@@ -252,7 +252,7 @@ public static Operation OperationObject.composeOperation (OperationObject operat
         //    operation.setDeprecated( (boolean) operationObject.getDeprecatedBoolean().getDeprecatedBoolean() );
         if( operationObject.getNumSecurityRequirementObject() != 0 ){
         for( SecurityRequirementObject s : operationObject.getSecurityRequirementObjects() )
-        operation.addSecurityRequirement( SecurityRequirementObject.composeSecurityRequiremnet(s) );
+        operation.addSecurityRequirement( SecurityRequirementObject.composeSecurityRequirement(s) );
         }
         if( operationObject.getNumServerObject() != 0 ){
         for( ServerObject s : operationObject.getServerObjects() )
diff --git a/src/test/java/openapi/OpenAPIMain_test.java b/src/test/java/openapi/OpenAPIMain_test.java
index 18662146..2e7b4a59 100644
--- a/src/test/java/openapi/OpenAPIMain_test.java
+++ b/src/test/java/openapi/OpenAPIMain_test.java
@@ -20,6 +20,7 @@ import java.net.URL;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.List;
 
 import org.junit.jupiter.api.Test;
 import org.opentest4j.TestAbortedException;
@@ -32,43 +33,51 @@ public class OpenAPIMain_test {
     public void test() throws IOException, ResolutionException, ValidationException, EncodeException {
         OpenAPIObject openApi;
         OpenApi3 api3;
-        ValidationResults results = new ValidationResults();
-        String fileName = "uspto.json";
-        FileWriter writer = new FileWriter("./gen-api-ex/" + fileName);
-
-        URL expUrl = OpenAPIMain_test.class.getClassLoader().getResource(fileName);
-        File file = null;
-        if (expUrl != null) {
-            file = new File(expUrl.getFile());
-        } else {
-            file = new File(fileName);
-        }
-        if (file == null) {
-            throw new FileNotFoundException("Could not load JSON file " + fileName);
-        }
+        ValidationResults results;
+        List<String> filenames = new ArrayList<>();
+
+        File resource = new File("./src/main/resources");
+
+        for( File file : resource.listFiles() )
+            filenames.add(file.getName());
 
-        // parsed openAPI object with openapi4j
-        OpenApi3 api = new OpenApi3Parser().parse(expUrl, new ArrayList<>(), true);
-        System.out.println("Loading expression DSL file '" + fileName + "'.");
+        for( String file : filenames ){
+            URL expUrl = OpenAPIMain_test.class.getClassLoader().getResource(file);
 
-        // openAPI object is integrated in JastAdd grammar
-        openApi = OpenAPIObject.parseOpenAPI(api);
+            /*
+            File file = null;
+            if (expUrl != null) {
+                file = new File(expUrl.getFile());
+            } else {
+                file = new File(fileName);
+            }
+            if (file == null) {
+                throw new FileNotFoundException("Could not load JSON file " + fileName);
+            }*/
 
-        // composed openAPI object, it is expected to be equivalent to parsed source object
-        api3 = OpenAPIObject.composeOpenAPI(openApi);
+            // parsed openAPI object with openapi4j
+            OpenApi3 api = new OpenApi3Parser().parse(expUrl, new ArrayList<>(), true);
+            System.out.println("Loading expression DSL file '" + file + "'.");
 
-        // check, if the composed openAPI object is valid
-        results = OpenApi3Validator.instance().validate(api);
-        System.out.println("Is the source object valid? : " + results.isValid());
-        results = OpenApi3Validator.instance().validate(api3);
-        System.out.println("Is the generated object valid? : " + results.isValid());
+            // openAPI object is integrated in JastAdd grammar
+            openApi = OpenAPIObject.parseOpenAPI(api);
 
-        // compare if api (source object) is equivalent to api3 (generated object)
-        compareJson(api3.toNode(), api.toNode(), Paths.get(fileName));
+            // composed openAPI object, it is expected to be equivalent to parsed source object
+            api3 = OpenAPIObject.composeOpenAPI(openApi);
 
-        // save the generated object
-        writer.write(api3.toNode().toPrettyString());
-        writer.close();
+            // check, if the composed openAPI object is valid
+            results = OpenApi3Validator.instance().validate(api);
+            System.out.println("Is the source object valid? : " + results.isValid());
+            results = OpenApi3Validator.instance().validate(api3);
+            System.out.println("Is the generated object valid? : " + results.isValid());
+
+            // compare if api (source object) is equivalent to api3 (generated object)
+            compareJson(api3.toNode(), api.toNode(), Paths.get(file));
+
+            // save the generated object
+            //writer.write(api3.toNode().toPrettyString());
+            //writer.close();
+        }
     }
 
     protected void compareJson(JsonNode expectedNode, JsonNode actualNode, Path path) throws IOException {
-- 
GitLab